我有一个页面a.php
,它使用cURL将数据发布到b.php
页面。
但是,当页眉为b.php
时,我没有收到任何POST数据。
这是我的代码:
$data=array();
$data['firstname']='A';
$data['lastname']='B';
$post_str='';
foreach($data as $key=>$value){
$post_str.=$key.'='.urlencode($value).'&';
}
$post_str=substr($post_str, 0, -1);//Remove last & from loop
$ch=curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://localhost/b.php');
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_str);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);
$response=curl_exec($ch);
curl_close($ch);
header('location:b.php');
b.php页面
echo $_POST['firstname'];
答案 0 :(得分:1)
那是因为这个电话:
header('location:b.php');
重新定位到b.php
,不含任何$_POST
数据。
答案 1 :(得分:0)
你有两个php脚本,但就浏览器而言,它们并没有真正连接。毕竟,网络本来是无国籍的。 您的a.php很可能成功发布到b.php。
但是header('location:b.php');
行在没有任何参数的情况下调用b.php。
为了使a.php更通用,我改变了
curl_setopt($ch, CURLOPT_URL, 'http://localhost/b.php');
到:
curl_setopt($ch, CURLOPT_URL, $_SERVER['SERVER_NAME'].'/b.php');
b.php需要记录然后显示结果:
<?
// if called without POST data, dump the last POST,
// otherwise record the POST in a file
$filename = 'temp_data.txt';
if (count($_POST) == 0) {
if (file_exists($filename)) {
// dump recorded results
echo "<pre>\n";
readfile($filename);
echo "</pre>\n";
} else {
echo 'No file available.';
}
} else {
// record results:
$fp = fopen($filename, 'w');
fwrite($fp, print_r($_POST, true));
fclose($fp);
}
打开a.php,然后在浏览器中打开b.php。