php curl cookie不保存,PHP CURL将cookie保存到cookiejar中,但不使用它

我有一个PHP脚本,它使用CURL登录到具有简单登录页面的站点.它向站点发送初始请求并查看它是否已登录(由于cookie)或登录页面是否出现 – 如果已登录 – 请登录.

但是,最近我注意到每次脚本运行时都不会登录.使用VERBOSE深入跳入标题表示COOKIEFILE / COOKIEJAR中的cookie从未使用过,只有站点为该特定会话接收的cookie .如果我在运行过程中手动将cookie添加到cookiejar(以前的工作) – 它不再起作用,因为COOKIEFILE中的cookie实际上并未使用.

这在本地和生产服务器上都会发生,这意味着它似乎不是系统问题.我为其他登录页面创建了具有相同结果的测试版本.

我使用cookie文件的完整路径(使用cookie更新,只是不使用)并使用curl_close().

以下是CURL函数:

private function curlPage($url, $postParameters) {

$ch = curl_init();

curl_setopt($ch, CURLOPT_POST, TRUE);

curl_setopt($ch, CURLOPT_POSTFIELDS, $postParameters);

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__.'/cookie.txt');

curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__.'/cookie.txt');

curl_setopt($ch, CURLOPT_ENCODING, '');

curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE);

curl_setopt($ch, CURLOPT_FOLLOWLOCATION, TRUE);

curl_setopt($ch, CURLOPT_POSTREDIR, 3);

if ($this->verbose == 1) curl_setopt($ch, CURLOPT_VERBOSE, TRUE);

curl_setopt($ch, CURLOPT_TIMEOUT, $this->defaultTimeout);

curl_setopt($ch, CURLOPT_USERAGENT, $this->useragent);

$pageResponse = curl_exec($ch);

curl_close($ch);

return $pageResponse;

}

以下是CURL请求对主页的详细响应,它应该检查它是否已登录.由于该站点是客户端,我对其进行了编辑.

* Rebuilt URL to: *********

* Hostname was NOT found in DNS cache

* Trying : *********...

* Connected to : ********* (*********) port 80 (#0)

> GET / HTTP/1.1

User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_10_3) AppleWebKit/600.6.3 (KHTML, like Gecko) Version/8.0.6 Safari/600.6.3

Host: *********

Accept: */*

< HTTP/1.1 200 OK

< Date: Wed, 20 Jul 2016 20:42:22 GMT

< Content-Type: text/html

< Transfer-Encoding: chunked

< Connection: keep-alive

< Keep-Alive: timeout=15

< Vary: Accept-Encoding

< Expires: Mon, 26 Jul 1980 00:00:00 GMT

< Pragma: no-cache

< Cache-Control: no-cache, no-store, must-revalidate

* Server ********* is not blacklisted

< Server: *********

<

可以看出 – 尽管有COOKIEFILE可用,但看不到cookie.

任何帮助将受到高度赞赏.

解决方法:

首先,您必须确保__DIR__具有写入权限.

第二个运行代码时.您可以检查cookie.txt文件是否已创建.

第三个你必须为所有会话使用一个cookie.所以受害者知道你已经登录了.

并尝试我的来源

$cookies = tempnam('/tmp','cookie.txt');

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookies);

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookies);

标签:php,cookies,curl

来源: https://codeday.me/bug/20191009/1877477.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值