php cURL没有收到数据

时间:2013-04-12 20:32:09

标签: php

我有一个页面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'];

2 个答案:

答案 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。