php curl如何读取一个页面后再把传过来的cookie保存在服务器上?

php curl如何读取一个页面后再把传过来的cookie保存在服务器上?,第1张

curl的easy接口中提供了5个与cookie有关的option,其中,CURLOPT_COOKIEFILE,CURLOPT_COOKIEJAR,CURLOPT_COOKIELIST都会打开curl的cookie引擎,使得curl在收到http response时解析header field中的cookie。

设置CURLOPT_COOKIEFILE会使curl下一次发请求时从指定的文件中读取cookie。

设置CURLOPT_COOKIEJAR会使curl在调用 curl_easy_cleanup的时候把cookie保存到指定的文件中。

设置CURLOPT_COOKIELIST会把指定的cookie字符串列表加入easy handle维护的cookie列表中。每个cookie字符串要么符合HTTP response header的"Set-Cookie: NAME=VALUE..."格式,CURLOPT_COOKIE用于设置一个分号分隔的“NAME=VALUE”列表,用于在HTTP request header中设置Cookie header。

用 CURLOPT_HTTPHEADER 把那个 COOKIE 加上就可以了。

首先你得检查使用 CURLOPT_COOKIEJAR 后,是否保存了 COOKIE,注意只有调用了 curl_easy_cleanup 后才会保存。其次,在使用 CURLOPT_COOKIEFILE 时,你需要检查读取的文件中是否有 COOKIE 信息,你可以进入源码调试下,在处理 CURLOPT_COOKIEFILE 时,libcurl 是否读取到了你设置的 COOKIE。

另外 HTTP Response Header 中的 Expires 跟 SESSION 无关,它是用来表示响应的缓存有效期的。

使用curl

CURLOPT_COOKIE 设定HTTP请求中"Cookie: "部分的内容。多个cookie用分号分隔,分号后带一个空格(例如, "fruit=applecolour=red")。

CURLOPT_COOKIEFILE 包含cookie数据的文件名,cookie文件的格式可以是Netscape格式,或者只是纯HTTP头部信息存入文件。

CURLOPT_COOKIEJAR 连接结束后保存cookie信息的文件。

$ch = curl_init()

curl_setopt($ch, CURLOPT_URL, $url) // 请求的地址

curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiesfile) // 连接结束后保存cookie信息的文件

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiesfile) // 请求时发送的cookie信息文件

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1)

curl_exec($ch)

curl_close($ch)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11454401.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存