我有以下代码正在执行HTTP / POST以登录Web表单。网站返回的Cookie存储在cookies.txt
文件中。
$ch = curl_init();
$opts = array(
CURLOPT_URL=> $projectUrl,
CURLOPT_POST=> true,
CURLOPT_FOLLOWLOCATION=> true,
CURLOPT_RETURNTRANSFER=> true,
CURLOPT_COOKIEJAR=> 'cookies.txt',
CURLOPT_POSTFIELDS=> http_build_query($data),
);
curl_setopt_array($ch, $opts);
$ret = curl_exec($ch);
curl_close($ch);
我已确认登录成功(因为$ret
的值是表单背后页面的内容。
接下来,我有一些代码可以解析curl编写的cookie文件,并为每个cookie执行set_cookie
。
据我所知,这只是PHPSESSION cookie。
$cookies = parseCookieFile('cookies.txt');
foreach($cookies as $c) {
if(!setcookie($c["name"], $c["value"], $c["expires"], $c["path"], $c["domain"], $c["secure"])) {
echo "ERROR: Could not write cookie {$c["name"]}<br />";
}
}
我的希望是,在后端完成所有这些操作后,我将能够浏览到我登录的网站,它会检测会话cookie并传递给我。
不幸的是,事实并非如此。我刚回到登录表单。
为什么这不起作用会有一些愚蠢/明显的原因吗?