Php 菲律宾';t接收数据

Php 菲律宾';t接收数据,php,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_

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

那是因为这个电话:

header('location:b.php');

重新定位到
b.php
,但没有任何
$\u POST
数据。

您有两个php脚本,但就浏览器而言,它们并没有真正连接起来。毕竟,网络本来是无状态的。 您的a.php很可能会成功地发布到b.php

但是
头('location:b.php')行调用b.php,不带任何参数

为了使a.php更加通用,我更改了
curl\u setopt($ch,CURLOPT\u 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);
}

curl post和头重定向将计为两个单独的http请求,这意味着echo不会输出任何内容,因为重定向上没有发布任何内容。你可以添加一个
错误日志($\u POST['firstname'])
,你应该在错误日志中看到curl的值。那么我如何将数据传递到b页面呢?你可以使用GET:
标题('location:b.php?foo=bar')
。我实际上有一个注册页面->检查数据页面->协议页面,在我的检查数据页面中有if语句。如果所有数据都正确,它将发布到协议页面,也许使用会话更好。让用户完成发布。我以前使用过会话,但它会导致服务器加载更多吗?