0

我必须将一组数据传递给服务器并从服务器获取响应..我在 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 两次:

客户端.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选项:

"如果 value 是一个数组,则 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?

编辑2:请不要忘记安德烈所说的关于删除第一个 curl_exec() 因为你不应该有两次!所以删除:

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