php cURL cookie保存为空
问题描述:
我使用cURL进行了成功的连接,但我试图下载一个文件,但它不工作。我知道这是cookie,因为当我打开下载的文件时,它包含授权的必需消息。初始身份验证正在运行。任何想法php cURL cookie保存为空
// Create a curl handle to a non-existing location
$ch = curl_init('https://xxxx/');
// curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
// ENABLE HTTP POST
curl_setopt ($ch, CURLOPT_POST, 1);
// SET POST PARAMETERS : FORM VALUES FOR EACH FIELD
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'user=xxx&password=xxx');
// IMITATE CLASSIC BROWSER'S BEHAVIOUR : HANDLE COOKIES
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
$fp = fopen("status.xml", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
if(curl_exec($ch) === false)
{
echo 'Curl error: ' . curl_error($ch);
}
else
{
echo 'Operation completed without any errors';
}
curl_close($ch);
fclose($fp);
答
CURLOPT_COOKIEFILE
是阅读饼干,CURLOPT_COOKIEJAR
是写作。
curl_setopt ($ch, CURLOPT_COOKIEJAR, '/path/to/cookie.txt');
请确保您有完整路径,Cookie文件,并有权写入
答
饼干信息只保存到文件句柄关闭后,喜欢它的说明书上说:
CURLOPT_COOKIEJAR =>将所有内部cookie保存到句柄关闭时的文件名,例如在调用curl_close之后。
Manual: curl_setopt 此外,你可能需要考虑到这一点:
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
其实我得到它的工作,但奇怪的事情正在发生。下载的文件包含登录页面,而不是我想要下载的xml文件。我究竟做错了什么。谢谢 – user1019144 2012-03-28 21:50:23
如果有时工作,有时不工作,这意味着它与您试图获取数据的服务器有关。我不能说任何话。分析它,看看你丢失了什么 – safarov 2012-03-28 21:52:37
如果你不使用cookie,你删除'CURLOPT_COOKIEFILE'行 – safarov 2012-03-28 21:53:47