我在PHP中使用了CURL,请查看以下代码
frame
之后我打开了$cookie = "cookies.txt";
file_put_contents($cookie, "");
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
文件,因为存储了cookie。
现在我如何阅读该文件以获取所需内容。
我尝试使用cookies.txt
readfile
读取文件,但根本没用,这些只是返回空字符串。
请帮帮我。
提前致谢
答案 0 :(得分:1)
CURL在会话结束时将cookie写入文件。您的问题可能是您在CURL编写Cookie之前访问了Cookie文件。
可能的解决方法是在尝试从cookie文件中读取之前结束CURL会话:
curl_easy_cleanup($ch);
...
$cookie_text = file_get_contents("cookies.txt");
作为一个干净的替代方案,只需直接从响应中获取Cookie,而无需通过cookies.txt
文件。下面的代码会将cookie放在一个数组中:
preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $response, $matches);
$cookies = array();
foreach($matches[1] as $item) {
parse_str($item, $cookie);
$cookies = array_merge($cookies, $cookie);
}
从此accepted answer获取的代码: