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-ハンドルが閉じられたとき(たとえば、curl_closeの呼び出し後)にすべての内部Cookieを保存するファイルの名前。

CURLOPT_COOKIE-HTTPリクエストで使用される「Cookie:」ヘッダーの内容。複数のCookieは、セミコロンとそれに続くスペースで区切られていることに注意してください(例: "fruit = apple; colour = red")

CURLOPT_COOKIEFILE-Cookieデータを含むファイルの名前。Cookieファイルは、Netscape形式にすることも、ファイルにダンプされた単なるHTTPスタイルのヘッダーにすることもできます。名前が空の文字列の場合、Cookieは読み込まれませんが、Cookieの処理は引き続き有効です。


さらに、CURLOPT_VERBOSEcURLをデバッグするときに、有効にすることが役立つ場合があります。

于 2013-03-04T19:36:22.723 に答える
0

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

于 2013-10-07T08:36:17.823 に答える