Php fopen不工作:为什么$u POST为空?
我有两个文件active.php和passive.php。 如前所述,我希望active.php在没有用户交互的情况下将数据发布到passive.php . 如果我的代码有效,那么$\u POST数组最终应该包含'Name'=>'johndoe' 我的领航员告诉我的是空的。我做错了什么 我完全知道,有一些解决方案使用解释的Javascript或解释的cURL,但这个问题是专门关于PHP-only方法的,所以请不要这样做 发布任何涉及Javascript或cURL的评论或回答 passive.php的内容:Php fopen不工作:为什么$u POST为空?,php,post,Php,Post,我有两个文件active.php和passive.php。 如前所述,我希望active.php在没有用户交互的情况下将数据发布到passive.php . 如果我的代码有效,那么$\u POST数组最终应该包含'Name'=>'johndoe' 我的领航员告诉我的是空的。我做错了什么 我完全知道,有一些解决方案使用解释的Javascript或解释的cURL,但这个问题是专门关于PHP-only方法的,所以请不要这样做 发布任何涉及Javascript或cURL的评论或回答 passive.ph
<?php
var_dump($_POST);
?>
active.php的内容:
<?php
$post_data=array('Name'=>'John Doe');
$url='http://localhost:8888/passive.php';
$params = array('http' => array(
'method' => 'POST',
'content' => $post_data
));
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
$response = @stream_get_contents($fp);
fclose($fp);
var_dump($response);
?>
在PHP手册页面上,排名最高的注释解释了如何使用流执行POST操作。正如上面评论中提到的,您只是缺少一个标题
$post_data=array('Name'=>'John Doe');
$url='http://localhost:8888/passive.php';
$params = array(
'http' => array
(
'method' => 'POST',
'header'=>"Content-Type: application/x-www-form-urlencoded",
'content' => $post_data
)
);
$ctx = stream_context_create($params);
$fp = fopen($url, 'rb', false, $ctx);
$response = stream_get_contents($fp);
可能要尝试向流上下文添加标题您的解决方案不完整,在我的计算机上无法运行,但在您链接到的页面上,我发现了另一个提示:用http_build_query$post_数据替换$post_数据。在我的计算机上,将此与标题结合使用是可行的。谢谢你的间接帮助help@WarrenBeadus-很高兴它已分类,可能会有所帮助: