2017-10-06 27 views
-2

他のドメインからいくつかのフィールドの値を取得しようとしています。 他のドメインサイトにログインページがあります。私はブラウザで正常にログインし、file_get_contents()関数を呼び出していますが、それでも私はログインページのHTMLを返しています。CURLログインに成功しましたログインページに再度リダイレクト

URLに渡しているページのHTMLが欲しいです。ここで

は私のコードでは、ログイン

curl_setopt($ch, CURLOPT_URL, 'https://www.mydomain.lcl/dashboard'); 
curl_setopt($ch, CURLOPT_POST, 0); 
curl_setopt($ch, CURLOPT_COOKIEJAR, dirname(__FILE__) . '/cookie.txt'); 
curl_setopt($ch, CURLOPT_COOKIEFILE, dirname(__FILE__) . '/cookie.txt'); 
$result = curl_exec($ch); 

後の2番目のリクエストは、誰もがplzのログインページをバイパスし、ページのHTMLにアクセスする方法を私はお勧めでき

$COOKIEFILE = dirname(__FILE__) . '/cookie.txt'; 
$formFields['username'] = 'XXXXXX'; 
$formFields['password'] = 'XXXXXX'; 
$ch = curl_init(); 

// set some options on the handle 
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_RETURNTRANSFER, true); 
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1); 
curl_setopt($ch, CURLOPT_COOKIEJAR, $COOKIEFILE); 
curl_setopt($ch, CURLOPT_COOKIEFILE, $COOKIEFILE); 
curl_setopt($ch, CURLOPT_HEADER, 0); 
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 120); 
curl_setopt($ch, CURLOPT_TIMEOUT, 120); 
curl_setopt($ch, CURLOPT_URL, 'https://www.mydomain.lcl/login'); 
curl_setopt($ch, CURLOPT_POST, 1); 
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($formFields)); 
$data = curl_exec($ch); 

クッキーファイルを追加した後です。

+0

サーバー上の 'file_get_contents()'は、ブラウザのログイン/セッションとは完全に無関係です。サーバー上でcURLを使用してリモートサーバーにログインし、そのページをログインしているユーザーとして取得する必要があります。 – jeroen

答えて

0

私は今ブラウザがログイン後ろのページにアクセスすることができます...ブラウザ

で成功したログインをしています。

とのfile_get_contents()を呼び出す

あなたのPHPプログラムは、ブラウザではありません。ログイン後のページにアクセスすることはできません。

PHPから作成したHTTPリクエストを使用してログインする必要があります(そして、ログインシステムがリクエストごとに返すと思われるものを保存します...おそらくクッキー)。

+0

はい、意味があります。私はこれを試してみる。ありがとうございました –

+0

ねえクエンティン。私は同じコードを私の更新されたコードを参照してくださいでした。その後のリクエストでCookieを送信しても、ログインページにリダイレクトされます。 –

関連する問題