我正在尝试使用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文件是可写的,有些东西正在写入。我可以尝试保持会话的任何想法吗?
答案 0 :(得分:1)
确保您使用CURLOPT_COOKIE*
CURLOPT_COOKIEJAR
。
CURLOPT_COOKIE
- 手柄关闭时保存所有内部Cookie 的文件名,例如在调用curl_close之后。
CURLOPT_COOKIEFILE
- 要在HTTP请求中使用的“Cookie:”标头的内容。请注意,多个cookie用分号后跟一个空格分隔(例如“fruit = apple; color = red”)
CURLOPT_VERBOSE
- 包含Cookie数据的文件的名称。 cookie文件可以是Netscape格式,也可以是转储到文件中的普通HTTP样式的标头。如果名称为空字符串,则不会加载cookie,但仍会启用cookie处理。
此外,在调试cURL时启用{{1}}可能会有所帮助。
答案 1 :(得分:0)
使用curl_setopt ($ch, CURLOPT_COOKIESESSION, TRUE);