Curl仅适用于不在php中的终端

时间:2016-08-23 18:22:03

标签: php curl cookies

只是一个简单的脚本卷曲到一个网站,为我的爱好项目采取一些数据。在终端它完美的工作,但与PHP它根本不起作用。我认为这与cookies有关

$ ch = curl_init();

curl_setopt($ch, CURLOPT_URL, "http://www.pokemongomap.info/includes/mapdata.php"); 

curl_setopt($ch,CURLOPT_POST, true);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch,CURLOPT_POSTFIELDS, 'fromlat=52.352772543694165&tolat=52.353516320168715&fromlng=6.672205448722025&tolng=6.6761080628386935&fpoke=1&fgym=1');      
curl_setopt($ch,CURLOPT_HTTPHEADER, array(     
                'Pragma: no-cache',
                'Origin: http://www.pokemongomap.info', 
                'Accept-Encoding: gzip, deflate',
                'Accept-Language: nl-NL,nl;q=0.8,en-US;q=0.6,en;q=0.4', 
                'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36', 
                'Content-Type: application/x-www-form-urlencoded; charset=UTF-8', 
                'Accept: application/json, text/javascript, */*; q=0.01', 
                'Cache-Control: no-cache', 
                'Cookie: PHPSESSID=5q2naanh8gj85utl2m96erjfa3; __atssc=reddit%3B1; cookieconsent_dismissed=yes; __atuvc=4%7C33%2C1%7C34; _ga=GA1.2.1355385211.1471162927; latlngzoom=19[##split##]52.35314443349598[##split##]6.674156755780354', 
                'X-Requested-With: XMLHttpRequest', 
                'Connection: keep-alive', 
                'Referer: http://www.pokemongomap.info/'
        ));


curl_setopt($ch, CURLOPT_VERBOSE, true);



$output = curl_exec($ch);
if ($output === FALSE) {
    printf("cUrl error (#%d): %s<br>\n", curl_errno($ch),
           htmlspecialchars(curl_error($ch)));
}

curl_close($ch);    
var_dump($output);

返回 string(145)“ ] D )j Ûi Ѡ+4 z d紨)=qW +G Am~ f;c 6v ^ nG uJF ǜ ǜ{ T .9 s = m9G GFU % [ / r3| l# 7 1H)“

使用json_decode时返回NULL。

1 个答案:

答案 0 :(得分:1)

根据PHP manual for curl_setopt,第二个参数应该是int或常量选项。请尝试以下代码:

flags = int("18573628", 16)
mask = int("00070000", 16)
result = flags & mask

print(hex(result))
=> '0x70000'

我还更改了你的最终执行以获取curl错误和curl_info,因为你使用的是详细模式,它将有助于定义你的请求有什么问题。