0

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

2 回答 2

1

那是因为这个电话:

header('location:b.php');

重新定位到b.php 没有任何$_POST数据。

于 2013-04-12T20:37:45.340 回答
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。

于 2013-04-12T21:14:26.837 回答