2017-01-24 8 views
0

私はウェブサイトにログインし、ユーザがログインするためにログインする必要がある(潜在的に複数の)ウェブページにナビゲートするPHPスクリプトを作成しようとしています。私は正常にcURLを使用してログインしたと思いますが、ログインした後にファイルの内容を読み取るために "ログインしたままにする"方法がわかりません。私の問題は同じクッキーファイルを使用することと関係していますが、これは私が現在持っているものです:ログイン後にhtmlを読むPHPスクリプト

<? 
//login form action url 
$url="https://randomwebsite.com/users/sign_in"; 
$postinfo = "utf8=%E2%9C%93&authenticity_token=ncgU2234iEMObg3334d3Iag%2BPBrmEerybFZ3X2fvVsUTmpjkPDQMgteeGlVDxFRfHjmHbvIYaTchvM2psKFzI%2BAHIpCw%3D%3D&user%5Botp_attempt%5D=step_1&user%5Blocale%5D=en&user%5Blogin%5D=randomuser&user%5Bpassword%5D=123456"; 

$cookie_file_path = "cookies1.txt"; 

$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HEADER, false); 
curl_setopt($ch, CURLOPT_NOBODY, false); 
curl_setopt($ch, CURLOPT_URL, $url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); 

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

//set the cookie the site has for certain features, this is optional 
curl_setopt($ch, CURLOPT_COOKIE, "cookiename=0"); 
curl_setopt($ch, CURLOPT_USERAGENT, 
    "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.12) Gecko/20050915 Firefox/1.0.7"); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($ch, CURLOPT_REFERER, $url); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 0); 

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, $postinfo); 
$curlexecresponse = curl_exec($ch); 
//echo("\ncurlexecresponse: " . $curlexecresponse); 

// Now that we're logged in we can finally read the web pages we want to... 
$url2 = "url to members only page"; 
curl_setopt($ch, CURLOPT_URL, $url2); 
curl_setopt($ch, CURLOPT_POST, 0); 

$data = curl_exec($ch); 

echo("\n\n data is: " . $data); // this is empty 

curl_close($ch); 
?> 

ログインした後に、どのページでHTMLを読むことができますか?

+0

もしこのヘルプはhttp://stackoverflow.com/questions/13020404/keeping-session-alive-with-curl-and見ます-php – webDev

+0

Guzzleを使用すると、これはずっと簡単になる可能性があります。 – aalaap

答えて

0

あなたには、ログインした後、すべてのリクエストにクッキーを送信する必要があります。

$url2 = "url to members only page"; 
//Add this line 
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie_file_path); 
curl_setopt($ch, CURLOPT_URL, $url2); 
curl_setopt($ch, CURLOPT_POST, 0); 
+0

何らかの理由で、あなたが言及した行を追加した後でも、curl_exec()応答がまだ空に戻っています – user2804881

+0

ちょっと私の行のカールオブジェクトが間違っていたことに気付きました。私は答えを編集しました。 –

+0

まだ何も戻ってこない場合は、「echo curl_error($ ch)」を実行して、エラーがスローされているかどうかを確認してください。 –

関連する問題