是否有任何简单的方法使用PHP来发送屏幕上显示的表单,而不是编写脚本来传递所有值?

时间:2011-04-13 09:36:32

标签: php email forms

想知道是否有办法使用PHP通过表单发送各种“屏幕截图”?

不是将值传递给要在其处理和格式化的脚本,而是按照屏幕上显示的方式发送表单?

理想情况下,没有浏览器窗口,只是实际的网页本身,类似于Fireshot插件可以让您截取并保存它。

3 个答案:

答案 0 :(得分:2)

没有办法做到这一点,至少在纯PHP中没有。

在某些时候可能会将当前文档的屏幕截图转换为<canvas>元素,并将该元素发送到服务器。但就目前而言,据我所知,在任何浏览器中都没有这个API。

编辑:似乎有一种方法可以使用Flash,但我不确定使用的技术here是否可用作开源。见Can you take a "screenshot" of the page using Canvas?

答案 1 :(得分:1)

没有。你不能在没有安装任何额外插件的情况下截取用户浏览器的屏幕截图,即使这样,PHP也无法与之相关。

答案 2 :(得分:0)

下面的方法不会拍摄快照(如其他人所说,这是不可能的),但这是在用户单击快照按钮时捕获表单状态的“方法”。这不是生产代码,这只是解决它的一种可能方式。我再次强调,这不是一个真正的快照,但将实现一个similer目的。

您可以让jQuery通过POST将完成的HTML表单和字段发送到PHP脚本,该脚本解释HTML并呈现/保存它。

// Some javascript file
$('#save_button').click(function(e) {
$.ajax({
   type: "POST",
   url: "save_form.php",
   data: "data=" + $('#form_id').html(),
   success: function(msg){
     alert("saved: " + msg );
   }
 });
});

然后在PHP文件save_form.php中(你想要以某种方式识别快照,自动增加一个值,或者从ajax请求中发送一个id(时间戳,ip等)

<?php
// connect to db
// bla bla bla - you would obviously clean the POST data before insertion

$result = mysql_query("INSERT INTO snapshots (html_source) VALUES ({$_POST['data']})");

// test result etc
// no you have the html stored, which you can view below

?>

最后有一个渲染器,比如snapshot_render.php

<?php
// you would make a request based on an id
$result = mysql_query("SELECT html_source FROM snapshots LIMIT 1");

$row = mysql_fetch_array($result);
echo $row['html_source'];

?>