首頁 >後端開發 >php教程 >php curl获取不到返回值

php curl获取不到返回值

WBOY
WBOY原創
2016-06-20 09:37:032976瀏覽

服务器端函数
function order_kb(){
    $expressodd[0]['odd']='560860393435';
    $expressoddjson = json_encode($expressodd);
    return $expressoddjson;
}

客户端请求php文件
$post_data = array () ;
$url = 'http://www.test.com/index.php?m=user&a=order_kb' ;
$o = "" ;
foreach ($post_data as $k=>$v)
{
    $o.="$k=".urlencode($v)."&";
}
$data=substr($o,0,-1);
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER,0);
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
$result = curl_exec($ch);
curl_close($curl);
print_r(json_decode($result,TRUE));
print_r(json_decode($result,TRUE)[0]['odd']);//打印出来看结果
?>
为什么得不到返回值?打印出来是空白的页面


回复讨论(解决方案)

这个网站在第一次访问时会执行如下 js 代码

function setCookie(c_name, value, expiredays) {            document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + expiredays) + ";path=/";}function getHostUri() {            var loc = document.location;                    return loc.toString();}var exdate=new Date();exdate.setDate(exdate.getDate()+1);setCookie('DOAAuthReferrer', document.referrer, exdate.toUTCString());setCookie('DOADFgsjnrSFgsg329gaFGa3ggs9434sgSGS43tsgSHSG35', '#e25d0c3c68dea6df48ffe0664f9d86d24c31ff1d#FLBN#1467097484#1739593330#', 'Tue, 28 Jun 2016 07:04:44 GMT');try {      location.reload(true);  } catch (err1) {      try {          location.reload();      } catch (err2) {      	location.href = getHostUri();      }  }
如果你不能模拟执行的话,那么肯定是获取不到真正的数据的

这个网站在第一次访问时会执行如下 js 代码

function setCookie(c_name, value, expiredays) {            document.cookie = c_name + "=" + escape(value) + ((expiredays==null) ? "" : ";expires=" + expiredays) + ";path=/";}function getHostUri() {            var loc = document.location;                    return loc.toString();}var exdate=new Date();exdate.setDate(exdate.getDate()+1);setCookie('DOAAuthReferrer', document.referrer, exdate.toUTCString());setCookie('DOADFgsjnrSFgsg329gaFGa3ggs9434sgSGS43tsgSHSG35', '#e25d0c3c68dea6df48ffe0664f9d86d24c31ff1d#FLBN#1467097484#1739593330#', 'Tue, 28 Jun 2016 07:04:44 GMT');try {      location.reload(true);  } catch (err1) {      try {          location.reload();      } catch (err2) {      	location.href = getHostUri();      }  }
如果你不能模拟执行的话,那么肯定是获取不到真正的数据的

那个网址是我随便写的

那你就太无聊了

那你就太无聊了

实际请求$url = 'http://www.danhaoxia.com/index.php?m=user&a=order_kb' ;   麻烦看下

$url = 'http://www.danhaoxia.com/index.php?m=user&a=order_kb' ;echo file_get_contents($url);


有 BOM 头不说,根本就没有 json 的影子

$url = 'http://www.danhaoxia.com/index.php?m=user&a=order_kb' ;echo file_get_contents($url);


有 BOM 头不说,根本就没有 json 的影子

刚学PHP,服务器端返回值上面做处理吗?

$url = 'http://www.danhaoxia.com/index.php?m=user&a=order_kb' ;echo file_get_contents($url);


有 BOM 头不说,根本就没有 json 的影子

那个应该是我刚在服务器那边加的打印内容的测试 ,现在去掉了

$url = 'http://www.danhaoxia.com/index.php?m=user&a=order_kb' ;echo file_get_contents($url);


有 BOM 头不说,根本就没有 json 的影子


服务器端函数
function order_kb(){    $expressodd[0]['odd']='560860393435';    $expressoddjson = json_encode($expressodd);    return $expressoddjson;}

去是去掉了,但是也只剩下了 BOM 头了
你是怎么调用 order_kb 函数的?

去是去掉了,但是也只剩下了 BOM 头了
你是怎么调用 order_kb 函数的?


客户端请求php文件
<?php$post_data = array () ;$url = 'http://www.test.com/index.php?m=user&a=order_kb' ;$o = "" ;foreach ($post_data as $k=>$v){    $o.="$k=".urlencode($v)."&";}$data=substr($o,0,-1);$ch = curl_init();curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER,0);curl_setopt($ch, CURLOPT_URL,$url);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);$result = curl_exec($ch);curl_close($curl);print_r(json_decode($result,TRUE));print_r(json_decode($result,TRUE)[0]['odd']);//打印出来看结果?>

去是去掉了,但是也只剩下了 BOM 头了
你是怎么调用 order_kb 函数的?


客户端请求PHP文件
<?php$post_data = array () ;$url = 'http://www.danhaoxia.com/index.php?m=user&a=order_kb' ;$o = "" ;foreach ($post_data as $k=>$v){    $o.="$k=".urlencode($v)."&";}$data=substr($o,0,-1);$ch = curl_init();curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);curl_setopt($ch, CURLOPT_HEADER,0);curl_setopt($ch, CURLOPT_URL,$url);curl_setopt($ch, CURLOPT_POSTFIELDS, $data);$result = curl_exec($ch);curl_close($curl);print_r(json_decode($result,TRUE));print_r(json_decode($result,TRUE)[0]['odd']);//打印出来看结果?>

order_kb 不是服务端的函数吗?你是怎么调用的?

order_kb 不是服务端的函数吗?你是怎么调用的?


用thinkphp框架,http://www.danhaoxia.com/index.php?m=user&a=order_kb这句URL就可以调用到那函数

但他并没有返回数据,你没有开启 ajax 模式吧?

但他并没有返回数据,你没有开启 ajax 模式吧?

没有,就是不知道为什么return的值会取不到

你没有开启 ajax 模式,order_kb 的返回值怎么会输出?
你都不看手册的吗?

你没有开启 ajax 模式,order_kb 的返回值怎么会输出?
你都不看手册的吗?

怎么开?刚学,都不懂
陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn