0

データの配列をサーバーに渡し、サーバーからの応答も取得する必要があります.受信したものをprint_rしようとしているclientside.phpで未定義の変数エラーが発生しています..サーバー側で応答を取得して送信するにはどうすればよいですか追加情報とともにクライアント側に戻ります..これを実現するためにcurl関数を使用しています..

私のclientside.php

 $url = "http://some_ip_address/../../../../serverside.php";
    //$abc is variable which contains all data in array format 
    $abc;
    $post_data = array('data' => serialize($abc)); 
    $ch = curl_init();
        curl_setopt($ch, CURLOPT_POST,1);
        curl_setopt($ch, CURLOPT_POSTFIELDS,$post_data);
        curl_setopt($ch, CURLOPT_URL,$url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
        if(curl_exec($ch) === false) {
        echo 0;
        } else {
        echo 1;
        }


$output= curl_exec($ch);
echo $output;
curl_close ($ch);

私のServerside.phpは次のようになります

print_r($_POST['data']);

次のエラーが表示されます

*Notice: Undefined index: data* 
4

3 に答える 3

1

http_build_query() を試してください:

curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));

curl_exec を 2 回呼び出さないでください。

client.php

$url = "http://some_ip_address/../../../../serverside.php";
//$abc is variable which contains all data in array format 
$abc;
$post_data = array('data' => serialize($abc)); 
$ch = curl_init();

curl_setopt($ch, CURLOPT_POST,1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);

$output= curl_exec($ch);
echo $output;
curl_close ($ch);

サーバーサイド.php:

 print_r($_REQUEST);
于 2013-04-10T07:48:31.423 に答える
0

オプションに関するcurl_setoptのPHPドキュメントから:CURLOPT_POSTFIELDS

"値が配列の場合、Content-Type ヘッダーはmultipart/form-dataに設定されます。 "

配列を値として使用しているため、有効な HTTP クエリ文字列を作成するhttp_build_query()か (を使用)、正しいコンテンツ タイプを設定する必要があります。

于 2013-04-10T07:51:55.283 に答える
0

変更してみてください:

$post_data = array('data' => serialize($abc));

の中へ

$post_data = "data=" . urlencode(serialize($abc));

編集:また、この回答を準備することもできます: application/x-www-form-urlencoded または multipart/form-data?

edit2: Andrey が最初の curl_exec() を削除することについて言ったことを忘れないでください。だから削除:

if(curl_exec($ch) === false) {
  echo 0;
} else {
  echo 1;
}
于 2013-04-10T08:58:53.457 に答える