2012-03-05 5 views
0

curlを使用してURL、ユーザー名、パスワードを使用してウェブサイトにログインしました。主な質問は、応答を取り戻し、サイトがログインしているかどうかをPHPスクリプトに保存したいのですか?curlを使用したログインのレスポンスの保存?

ログインやログインに失敗した場合は、PHPスクリプトが主な質問ですか?私は何を追加するか教えてください下のスクリプトを与えている?特定のパターン/文字列は(curl_exec($ch)に保存された)対応している場合は、事前に

おかげ

<?php 

$cookiefile = tempnam("/tmp", "cookies"); 

$login_url='**********'; 


$login_post_url='*********'; 


$username = "*****"; 
$password = "*****"; 

$agent="Mozilla/5.0 (Windows NT 5.1; rv:10.0.2) Gecko/20100101 Firefox/10.0.2 "; 


$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$login_url); 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
$result = curl_exec ($ch); 


curl_close ($ch); 



$postfields = array(
     'j_username' => $username, 
     'j_password' => $password, 
    ); 

$reffer = $login_url; 
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_URL,$login_post_url); 
curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, 
     http_build_query($postfields)); 

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 

curl_setopt($ch, CURLOPT_REFERER, $reffer); 


curl_setopt($ch, CURLOPT_COOKIEFILE, $cookiefile); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookiefile); 


curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 

$result = curl_exec ($ch); 
echo $result; 

curl_close ($ch); 


unlink($cookiefile); 
?> 
+0

'[...]が主な質問ですか?それは分かりません。 –

答えて

1

はちょうどstrpos(...)またはpreg_match(...)に確認してください。

その後、使用しているクッキーの名前を保存するだけで、このスクリプトを再度実行しているときに後で再度ログインする必要はありません。

、あなたが言うことができる、のは、テキスト(応答の一部)がLogin successfulあるとしましょう:

$login_successful = strpos($response, "Login successful") !== FALSE; 

またはあなたが助け場合、感度

$login_successful = strpos(strtolower($response), "login successful") !== FALSE; 

希望を気にしない場合を!

+0

私はスクリプトを追加しました。何をすべきか教えていただけますか? – kanwarpal

+0

これはかなりオープンな質問です。私はあなたが達成したいことを正確には知らない。より多くの情報を提供してください(どのコードを持っていますか、達成したいことが何であるか)、私はあなたを助けることができます。 – Stefan

+0

Stefan N、上記のコードを追加しました。実際には、私が行ったサイトにログインしたいが、成功したか失敗したかのように変数に応答を格納したいときは、それぞれログインできるかどうかを確認する。 – kanwarpal

0

HTTP/401認可を参照し、フォームにPOSTの代わりにcurlを使用してログインすると、失敗した場合はHTTP/401を、成功した場合はHTTP/200を取得します。

"curl"がPHPスクリプトによって駆動される場合は、HTTPリクエストをpearからHTTPリクエストを使用してPHP内で直接開始することをお勧めします。

+0

私はスクリプトを追加しました。何をすべきか教えてくれますか? – kanwarpal

1

ログインやログインが失敗した場合の主な質問は何ですか?

これは、成功すると、付随するHTTPコードとともにブール値で格納する必要があります。

EDIT:ログイン時

あなたは第二のcURLの呼び出しでこれを使用することができます

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); 
$loginSuccess = $httpCode >= 200 && $httpCode < 400; 

これは、ログイン後にもリダイレクトを受け入れます。

+0

スクリプトを追加しました。何をすべきか教えていただけますか? – kanwarpal

+0

私の更新を見る... –

関連する問題