发送没有表格的POST数据
这不是一个好的解决方案,如果作者接受这是一个解决方法。还会话更容易劫持比手动请求(即通过“中间人”攻击) – 2010-09-23 18:17:32
为什么这是一个不好的解决方案?也许塞缪尔的过程是这样的,劫持会议不是问题。真正解决会话劫持(以不显眼的方式)的唯一方法是对所有与会话相关的请求使用SSL。如果Samuel担心数据泄漏,他应该使用SSL。 – 2010-09-23 18:30:43
@zolex,拦截邮件数据有什么困难?使用WireShark运行的咖啡店就是你需要劫持POST数据的地方。使用cookies和发布数据重新创建请求,并且您很好。如果你认为会议是一个糟糕的解决方案,那么SSL是唯一的好方案。 – riwalk 2010-09-24 18:44:59
如果您不想使用表单,则可以使用AJAX发送POST请求。
使用jQuery $.post方法也很简单:
$.post('/foo.php', { key1: 'value1', key2: 'value2' }, function(result) {
alert('successfully posted key1=value1&key2=value2 to foo.php');
});
看看PHP文档的功能,您可以发送后使用它们reqeust。
fsockopen()
fputs()
或简单地使用一个类似一个Zend_Http_Client其也基于套接字conenctions。
还发现了一个neat example使用谷歌...
与SESSION,而不是post发送数据。
session_start();
$_SESSION['foo'] = "bar";
你在哪里收到的请求时,如果你绝对需要POST数据(一些奇怪的逻辑)的页面,你可以在一开始做这个somwhere:
$_POST['foo'] = $_SESSION['foo'];
POST数据将是有效的就像使用POST发送一样。
然后销毁会话(或者如果您需要该会话用于其他目的,则只需取消设置字段)。
破坏会话或取消设置字段很重要,因为与POST不同,SESSION将保持有效,直到您明确销毁它或直到浏览器会话结束为止。如果你不这样做,你可以观察到一些奇怪的结果。例如:您使用sesson过滤一些数据。用户打开过滤器并获取过滤的数据。过了一段时间,他回到页面,期望过滤器被重置,但不是:他仍然看到过滤的数据。
只需使用:file_get_contents()
// building array of variables
$content = http_build_query(array(
'username' => 'value',
'password' => 'value'
));
// creating the context change POST to GET if that is relevant
$context = stream_context_create(array(
'http' => array(
'method' => 'POST',
'content' => $content,)));
$result = file_get_contents('http://www.example.com/page.php', null, $context);
//dumping the reuslt
var_dump($result);
Reference:我的回答类似的问题:
听起来像是你需要使用会话。 – Gazler 2010-09-23 17:23:10
目前还不完全清楚你将数据发送到哪里。是服务器到服务器还是服务器到服务器还是服务器到不同服务器? – buggedcom 2010-09-23 17:26:21
好吧,我把它从一个文件传递到另一个文件在同一台服务器上 – Samuel 2010-09-23 17:28:44