0

a.phpcURL を使用してデータをページに投稿するページがあり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

2 つの php スクリプトがありますが、ブラウザーに関する限り、それらは実際には接続されていません。結局のところ、Web はステートレスであることを意図していました。あなたの 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 に答える