【问题标题】:curl_setopt_array throwing warning messagecurl_setopt_array 抛出警告消息
【发布时间】:2013-06-06 05:38:15
【问题描述】:

我正在尝试通过 cURL 登录网站并让它返回给我的实际页面。到目前为止,我只能通过反馈链接和此错误获取页面的页脚:

警告:curl_setopt_array() [function.curl-setopt-array]:数组键 必须是第 18 行的 CURLOPT 常量或等效整数值

加载中

第 18 行是“);”在 curl 数组的末尾

到目前为止,我已经能够弄清楚,如果我只是在我的浏览器中的 url 中输入带有 access_token 的网站名称,我将自动登录,所以我试图让 cURL 来模拟它。

<?php
$ckfile ='  __utma=173730677.1410450142.1370837396.1370843059.4; __utmz=173730677.1370843059.4.3.utmcsr=web.com|utmccn=(referral)|utmcmd=referral|utmcct=/ou; __utma=64278953.892306882.1370766510.1370838026.4; __utmz=64278953.4.3.utmcsr=.com|utmccn=(referral)|utmcmd=referral|utmcct=/signin; __utmc=64278953; __utmc=173730677; __utmb=173730677.5.10.1370843059; __utmb=64278953.1.10';

$ch = curl_init();
curl_setopt_array(
    $ch,
    array(
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_URL => 'https://web.com',
    CURLOPT_COOKIEFILE=> $ckfile,
    CURLOPT_USERAGENT =>'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0',
    CURLOPT_GET=> true,
    CURLOPT_REFERER => 'https://.com/signin',
    CURLOPT_GETFIELDS=>'#access_token=',
    CURLOPT_RETURNTRANSFER => true  
    )
);

$response = curl_exec($ch);
curl_close($ch);    

echo '<pre>';
print_r($response);
?>

【问题讨论】:

  • 我的错误第 18 行是 );在最后

标签: php cookies curl syntax-error


【解决方案1】:

CURLOPT_GETCURLOPT_GETFIELDS 不是 cURL 的有效选项。 POST 可能存在这些选项,但GET 不存在这些选项。只需将查询字符串添加到 URL。

另外,请确保所有选项都设置为 cURL 期望的设置。 CURLOPT_COOKIEFILE 应设置为文件名,而不是 cookie 值字符串。你想要CURLOPT_COOKIE

curl_setopt_array($ch, array(
    CURLOPT_SSL_VERIFYPEER => false,
    CURLOPT_URL => 'https://web.com?access_token=abc',
    CURLOPT_COOKIE=> $ckfile,
    CURLOPT_USERAGENT =>'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0',
    CURLOPT_REFERER => 'https://web.com/signin',
    CURLOPT_RETURNTRANSFER => true  
));

有关所有选项,请参阅 PHP cURL 文档:http://php.net/manual/en/function.curl-setopt.php

【讨论】:

  • 我得到了完全相同的结果:/
  • 确保您没有任何无效的 cURL 选项。您是否同时删除了CURLOPT_GETCURLOPT_GETFIELDS
  • 另外,您错误地使用了CURLOPT_COOKIEFILE。检查我更新的答案。
  • 哦,我的糟糕,我离开了 curl_get 现在我没有收到错误,而是一个带有页脚链接的空白页面。我希望能够看到我的代码是否正确?此外,我刚刚检查了实时 http 标头,结果发现当我登录时我登录了 10 个不同的站点,我应该为每个站点设置一个 curl 吗?
  • 检查页面来源,浏览器可能正在渲染返回的 HTML 数据。提示:你忘记了&lt;/pre&gt;
猜你喜欢
  • 2015-08-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-07
  • 2017-08-24
  • 1970-01-01
  • 2021-01-19
  • 1970-01-01
相关资源
最近更新 更多