2010-09-23 84 views
26

我可以发送一个字符串或另一条信息到另一个.php文件,而不用通过[不通过GET,但是通过POST符合我所知的]而不使用表单来暴露[发送没有表格的POST数据

+3

听起来像是你需要使用会话。 – Gazler 2010-09-23 17:23:10

+1

目前还不完全清楚你将数据发送到哪里。是服务器到服务器还是服务器到服务器还是服务器到不同服务器? – buggedcom 2010-09-23 17:26:21

+0

好吧,我把它从一个文件传递到另一个文件在同一台服务器上 – Samuel 2010-09-23 17:28:44

回答

21

如果您不想让您的数据能够被用户看到,使用PHP会话。

用户仍然可以访问(和操作)发布请求中的数据。

签出this tutorial PHP会话。

+1

这不是一个好的解决方案,如果作者接受这是一个解决方法。还会话更容易劫持比手动请求(即通过“中间人”攻击) – 2010-09-23 18:17:32

+1

为什么这是一个不好的解决方案?也许塞缪尔的过程是这样的,劫持会议不是问题。真正解决会话劫持(以不显眼的方式)的唯一方法是对所有与会话相关的请求使用SSL。如果Samuel担心数据泄漏,他应该使用SSL。 – 2010-09-23 18:30:43

+2

@zolex,拦截邮件数据有什么困难?使用WireShark运行的咖啡店就是你需要劫持POST数据的地方。使用cookies和发布数据重新创建请求,并且您很好。如果你认为会议是一个糟糕的解决方案,那么SSL是唯一的好方案。 – riwalk 2010-09-24 18:44:59

15

如果您不想使用表单,则可以使用AJAX发送POST请求。

使用jQuery $.post方法也很简单:

$.post('/foo.php', { key1: 'value1', key2: 'value2' }, function(result) { 
    alert('successfully posted key1=value1&key2=value2 to foo.php'); 
}); 
+0

我该怎么做? – Samuel 2010-09-23 17:25:52

+0

这就是javascript。 AJAX =异步Javascript和XML – Gazler 2010-09-23 17:26:57

+0

@Samuel,现在如果你说没有JavaScript被允许,那么事情变得不可能:-) – 2010-09-23 17:29:16

5

看看PHP文档的功能,您可以发送后使用它们reqeust。

fsockopen() 
fputs() 

或简单地使用一个类似一个Zend_Http_Client其也基于套接字conenctions。

还发现了一个neat example使用谷歌...

8

与SESSION,而不是post发送数据。

session_start(); 
$_SESSION['foo'] = "bar"; 

你在哪里收到的请求时,如果你绝对需要POST数据(一些奇怪的逻辑)的页面,你可以在一开始做这个somwhere:

$_POST['foo'] = $_SESSION['foo']; 

POST数据将是有效的就像使用POST发送一样。

然后销毁会话(或者如果您需要该会话用​​于其他目的,则只需取消设置字段)。

破坏会话或取消设置字段很重要,因为与POST不同,SESSION将保持有效,直到您明确销毁它或直到浏览器会话结束为止。如果你不这样做,你可以观察到一些奇怪的结果。例如:您使用sesson过滤一些数据。用户打开过滤器并获取过滤的数据。过了一段时间,他回到页面,期望过滤器被重置,但不是:他仍然看到过滤的数据。

1

只需使用: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:我的回答类似的问题: