我正在编写一个获取验证码的函数,当然它需要保持会话。我正在使用cookie文件进行curl并将其用于每个请求,但它不起作用。当我查看cookie文件时,我发现每次调用该函数时PHPSESSID都会改变。我怎么能解决它?
这是我的代码
<?php
function fetch_captcha($url, $cookie_file = false, $user_agent = DEFAULT_USER_AGENT, $timeout = 10) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_VERBOSE, true);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
if ($cookie_file) {
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
curl_setopt($curl, CURLOPT_COOKIEJAR, $cookie_file);
curl_setopt($curl, CURLOPT_COOKIEFILE, $cookie_file);
}
curl_setopt($curl, CURLOPT_USERAGENT, $user_agent);
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, $timeout);
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
答案 0 :(得分:1)
不要使用:
curl_setopt($curl, CURLOPT_COOKIESESSION, true);
PHPSESSID
是会话cookie,此选项会导致每个cURL
调用启动一个新会话,因此它会忽略文件中的所有会话cookie。