2011-12-18 20 views
1

これはこのフォーラムでの私の最初の質問ですが、それは前に私がそれに対する答えを見つけるのを助けました。 PHPとCURLを使用して自分のアカウントに自動的にログインしようとしています。PHP CURL自動ログイン

私はPHPに慣れていませんが、今まではウェブページに接続する必要があるたびに、投稿や投稿をしたり、リダイレクトに従ったりしていました。

問題は、私がログインしようとしているアカウントにユーザー/パスワードページがあり、その後に記憶に残る単語ページがあり、そこに私の記憶に残る単語からいくつかの文字を入力する必要があるということです。

私は最初のページを渡して、2番目のページを取得して、記憶に残る単語の文字を入力する必要がありますが、私がそれをしようとしているとき(つまり2番目の投稿)は動作しません。 - ログインにリダイレクトされます。再び。

今、私は何が問題なのかを調査しようとしましたが、なぜ私はまだ動作していないのか分かりません。 JSESSIONIDは通常のログイン時にサーバーによって渡され、JSESSIONIDが変更されたときにJSESSIONIDが変更されます。私が使用しています:

curl_setopt($this->curl, CURLOPT_COOKIEFILE, 'cookie.txt'); 
curl_setopt($this->curl, CURLOPT_COOKIEJAR, 'cookie.txt'); 

しかし、私はそれが空だと、それが作成されてから変更されていないファイルを確認してください。 Amdはい、ファイルを書き込むことができます(777の権利があります)。

これが問題なのかどうかわかりませんが、私は答えを探していました。私は別のものを試しましたが、何も働かなかったのです。だから、どんな考えも高く評価されます。

ありがとうございました

+0

あなたのスクリプトは、あなたが思っている作業ディレクトリから実行されていることを100%確認しましたか? ['getcwd()'](http://php.net/manual/en/function.getcwd.php)で再度チェックし、ファイルが実際にPHPによって 'var_dump(is_writable( 'cookie.txt) ')); '。応答のヘッダーを取得し、実際にいくつかのクッキーを受け取ったことを確認するには、 'curl_setopt($ this-> curl、CURLOPT_HEADER、TRUE);'も実行する必要があります。 – DaveRandom

+0

私は書き込み可能であり、それがテストであればあなたのコマンドを実行しました。真を返します。ヘッダーに関しては、私がサーバーからの要求を行っているときに、FirefoxからLive Http Headersプラグインを使用しているため、いくつかのクッキーが使用されていると確信しています。それでもファイルサイズは0Bで、最後に変更された日付は作成日時です。もし私がseconsのポストをしているときにヘッダを印刷したら、Array:[0] => HTTP/1.1 302 Found [1] => Set-Cookie:iApply-PROD-COOKIE = R1294003214 – user1104866

+0

だから@DaveRandomいくつかのクッキーは設定されていますが、それらのすべてではありませんが、私が通常ログインするとJSESSIONIDは同じままですが、2番目のPOSTは見つけられず、新しいリクエストを作成するようです。 – user1104866

答えて

0

ここに私が作品を確認できる例があります。これは、cookieJarファイルのフルパスを示し、スクリプトの実行場所から完全なパスを取得するので、ほとんどのOSで動作するはずです。

<?PHP 
$cookiepath = __DIR__.DIRECTORY_SEPARATOR.'cookieJar.txt'; 
echo "Saving cookies to: $cookiepath\n"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL, "http://www.google.com"); 
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; rv:11.0) Gecko/20100101 Firefox/11.0'); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiepath); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiepath); 
curl_setopt($ch, CURLOPT_HEADER ,1); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER ,1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION ,1); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
$data = curl_exec($ch); 
?> 
関連する問題