【问题标题】:ajax request with php curl带有 php curl 的 ajax 请求
【发布时间】:2014-05-06 10:09:46
【问题描述】:

我有 0 次 curl 经验,我想运行一个请求,该请求将在 php 中返回一个 json 正文。

使用 firefox firbug 我可以复制 curl 命令,它看起来像这样

curl 'http://*****.com/index.php/home/search/keyword/c815f2fec5?value=keyworkd' -H 
'Host: *****.com' -H 
'User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0' -H
'Accept: */*' -H 
'Accept-Language: en-US,en;q=0.5' -H 
'Accept-Encoding: gzip, deflate' -H
'X-Requested-With: XMLHttpRequest' -H 
'Referer: http://****.com/' -H
'Cookie: _ga=GA1.2.373422434.1399222050; PHPSESSID=l8sf036kjaijt6cjvcqnu992l4'

我可以用 php 模拟这样的请求吗?

【问题讨论】:

  • 你不能(理智地)在 PHP 中使用 cURL 命令行。您需要使用 PHP-cURL API 重写它。手册是here。
  • 是的,我知道!,我正在询问编写此类请求的 php 代码

标签: php ajax curl


【解决方案1】:

当然可以,无需过多赘述,仅根据您有限的信息:

<?php
    $c = curl_init('http://*****.com/index.php/home/search/keyword/c815f2fec5?value=keyworkd');                 
    curl_setopt($c, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);         
    curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);     
    curl_setopt($c, CURLOPT_COOKIE, 
    '_ga=GA1.2.373422434.1399222050; PHPSESSID=l8sf036kjaijt6cjvcqnu992l4');
    curl_setopt($c, CURLOPT_REFERER, 'http://****.com/');
    $z = curl_getinfo($c);
    $s = curl_exec($c);
    curl_close($c);  
?>

编辑:该死的,虽然它是 POST 而不是 COOKIE,但已修复。 Edit2:带有 cookie 文件。

<?php
    $cookie_file = "cookie.txt"; //remember to check if it exists
    $c = curl_init('http://*****.com/index.php/home/search/keyword/c815f2fec5?value=keyworkd');                 
    curl_setopt($c, CURLOPT_USERAGENT, "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:29.0) Gecko/20100101 Firefox/29.0");
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1);         
    curl_setopt($c, CURLOPT_FOLLOWLOCATION, 1);     
    curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_file);
    curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_file);
    curl_setopt($c, CURLOPT_REFERER, 'http://****.com/');
    $z = curl_getinfo($c);
    $s = curl_exec($c);
    curl_close($c);  
?>

【讨论】:

  • 谢谢 :),你能解释一下 cookie 和 phpsessID 值是从哪里来的吗?我必须包括它们还是我可以让服务器自己弄清楚?
  • 来自您的信息。您可以使用文件来存储 cookie 而不是提供它。见编辑。
猜你喜欢
  • 2011-03-07
  • 2016-06-14
  • 2011-10-30
  • 1970-01-01
  • 1970-01-01
  • 2015-06-24
  • 2023-03-15
  • 2016-06-11
  • 1970-01-01
相关资源
最近更新 更多