2016-04-07 2 views
0

ウェブサイトにログインするPHPスクリプトを作成しようとしています。ログイン後にURL情報を返すためにCURLOPT_RETURNTRANSFERを使用し、特定の一致についてこのデータを解析します。ログアウトしてサイトに再度ログインしなくても、returntransferデータを更新する方法があるかどうかを知りたいですか?現時点では、私は完全にログアウトしてから、ログインしてreturntransferで新しいhttp文字列を取得する必要があります。私はPHPとcURLを初めて使っているので、この質問があいまいであれば私を許してください。以下はサンプルコードですが、フラグに基づいて、flagがtrueに設定されるまでループし続けます。POST /ログイン後のcURLとURLの最新表示

<?php 


if(isset($_POST['userName'])) 
    { 


     $cookie_file_path = "cookie.txt";  
     $data = array('Username' => $_POST['userName'],'Password' =>$_POST['userPassword']); 
     $agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7"; 
     $reffer = "https://someurl/Login.aspx?action=login"; 
     $ch = curl_init(); 
     curl_setopt($ch, CURLOPT_URL,"https://someurl/Login.aspx?action=login"); 
     curl_setopt($ch, CURLOPT_USERAGENT, $agent); 
     curl_setopt($ch, CURLOPT_HEADER, 1); 
     curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_fie_path); 
     curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
     curl_setopt($ch,CURLOPT_REFERER,$reffer); 
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
     curl_setopt($ch,CURLOPT_POST,1); 
     curl_setopt($ch, CURLOPT_POSTFIELDS,$data); 
     $html= curl_exec($ch); 

     echo $html; 

     curl_close($ch); 

     $flagOfFound=0; 
     do { 
     //process the message 

     //...... 
     //set $flagOfFound = true of there is match 
     //else 
     //refresh message/http returntransfer while still logged in 

     }   
     while ($flagOfFound == 0); 

    } 

?> 

答えて

0

ちょうどあなたがこれらの要求を行う際に任意のクッキーを保存/保管しないでログアウトしてサイト

に再度ログインする必要はありません。それだけです

curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_fie_path); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie_file_path); 

これらの行を削除します。

+0

応答Federicoに感謝します。 Cookieを保存しないと、.aspページを更新すると、自動的にログアウトされないため、再度ログインする必要はありませんか?このスクリプトが実際にやろうとしていることは、httpデータを解析して特定のURLを検索し、ログインしているユーザーを選択することです。 –

関連する問題