PHP Curl - Session已经过期


PHP Curl - Session has expired

我正在尝试使用CURL登录到远程站点,但我只是不断得到错误信息,您的会话已过期,请重新登录

$username="xxxxxx"; 
$password="yyyyyyyy"; 
$url="https://remotesite.com/my.activation.php3"; 
$cookie="cookie.txt"; 
$postdata = "username=".$username."&password=".$password; 
$ch = curl_init(); 
curl_setopt ($ch, CURLOPT_URL, $url); 
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6"); 
curl_setopt ($ch, CURLOPT_TIMEOUT, 60); 
curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 0); 
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt ($ch, CURLOPT_COOKIEJAR, $cookie); 
curl_setopt ($ch, CURLOPT_REFERER, $url); 
curl_setopt ($ch, CURLOPT_POSTFIELDS, $postdata); 
curl_setopt ($ch, CURLOPT_POST, 1); 
// check for errors before close
$result = curl_exec($ch);
echo $result;
curl_close($ch);

cookie文件是可写的,并且有东西正在被写入。有什么办法能让会议继续下去吗?

确保您使用了正确的CURLOPT_COOKIE*选项。

CURLOPT_COOKIEJAR -在句柄关闭时保存所有内部cookie 的文件名,例如在调用curl_close之后。

CURLOPT_COOKIE -在HTTP请求中使用的"Cookie: "报头的内容。请注意,多个cookie以分号后跟空格分隔(例如,"fruit=apple;颜色=红")

CURLOPT_COOKIEFILE - cookie数据所在文件的名称。cookie文件可以是Netscape格式,也可以是普通的http样式的头文件。如果名称是空字符串,则不加载cookie,但仍然启用cookie处理。


另外,启用CURLOPT_VERBOSE可能有助于调试cURL。

使用curl_setopt ($ch, CURLOPT_COOKIESESSION, TRUE);