0

我正在尝试使用 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 文件是可写的,并且正在写入一些内容。有什么想法可以让会议继续进行吗?

4

2 回答 2

1

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

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

CURLOPT_COOKIE- HTTP 请求中使用的“Cookie:”标头的内容。请注意,多个 cookie 用分号后跟空格分隔(例如,“fruit=apple; colour=red”)

CURLOPT_COOKIEFILE-包含 cookie 数据的文件的名称。cookie 文件可以是 Netscape 格式,或者只是转储到文件中的普通 HTTP 样式的标头。如果名称为空字符串,则不加载任何 cookie,但仍启用 cookie 处理。


此外,CURLOPT_VERBOSE在调试 cURL 时启用可能会有所帮助。

于 2013-03-04T19:36:22.723 回答
0

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

于 2013-10-07T08:36:17.823 回答