在PHP标头中发布值

时间:2010-06-09 05:59:50

标签: php header

我想从我的网站向远程网页发送一些数据。实际上它可以通过形式隐藏变量来实现。但出于安全原因,我想在标题中设置为post变量,然后发送到该网页。我使用这段代码

$post_data = 'var1=123&var2=456';

$content_length = strlen($post_data);

header('POST http://localhost/testing/test.php HTTP/1.1');

header('Host: localhost');

header('Connection: close');

header('Content-type: application/x-www-form-urlencoded');

header('Content-length: ' . $content_length); 

header($post_data);

但我的代码无法正常运行。 帮助我...

4 个答案:

答案 0 :(得分:2)

POST数据构成HTTP请求的主体,它不是标头,并且头方法用于制作HTTP 响应

来自PHP的

askapache has an example of making a POST request使用curl库。

答案 1 :(得分:2)

您正试图将请求标题放入回复。客户只是不知道如何处理它。

你想要达到的目标是不可能的。

你要完成的任务是什么?可以有另一种方式。

答案 2 :(得分:1)

如果您尝试向远程服务器发布请求,则需要使用cUrl之类的工具。这是一个例子:

// Create a curl handle to a non-existing location
$ch = curl_init('http://localhost/testing/test.php');

// Set options
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

// Execute
$page = curl_exec($ch); 

或者,如果您真的想将数据放入标题中,可以使用以下内容设置自定义标题:

curl_setopt($ch, CURLOPT_HTTPHEADER, array('field: value', 'field2: value') );

答案 3 :(得分:1)

重定向POST标头的唯一方法是HTTP 1.1 Redirect with 307/308

307临时重定向

header('HTTP/1.1 307 Redirect');
header('Location: target.php', false, 307);

308永久重定向

header('HTTP/1.1 308 Redirect');
header('Location: target.php', false, 308);

!!!只有在重定向代码以这种方式设置2次时才能在PHP中工作! 如果你只做第二行。 PHP进行了正常的302重定向。

由于安全原因,客户端会从浏览器获取一条消息是否接受此重定向。