使用cURL -维护cookie &会话等


Using cURL - maintain cookies & sessions, etc

假设我请求使用cURL登录一个站点。

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URLs["sign_in"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cj.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cj.txt");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $pData);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_REFERER, $URLs["home"]);
curl_exec($ch);
curl_close($ch);

现在,假设我发出另一个请求来获取另一个页面。我怎样才能保持同样的会话?在我的下一个请求中,我有(在前一个代码中)存活的cookie ?我试过这个,不工作:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $URLs["enter"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cj.txt");
curl_setopt($ch, CURLOPT_COOKIEFILE, "cj.txt");
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_REFERER, $URLs["home"]);
$data = curl_exec($ch);
curl_close($ch);

BTW,这些都在同一个PHP文件中。

任何想法?提前感谢!

对我有用

检查您是否有cj.txt可写的权限。或者,如果cj.txt不存在,请确保您有创建它的权限(我相信是目录执行权限)。