2017-10-06 186 views
-2

我想從我的其他域獲取一些字段的值。 其他域名網站有一個登錄頁面。我正在瀏覽器中成功登錄,並調用了file_get_contents()函數,但它仍然返回我登錄頁面的HTML。CURL成功登錄重定向到登錄頁面

我想要在URL中傳遞的頁面的HTML。

這裏是添加cookie文件

$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); 

第二請求登錄

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); 

後,任何人都可以PLZ建議我如何繞過登錄頁面和訪問頁面的HTML後,我的代碼。

+0

服務器上的'file_get_contents()'與瀏覽器中的登錄/會話完全無關。您需要在服務器上使用cURL登錄遠程服務器,然後以登錄用戶身份登錄頁面。 – jeroen

回答

0

我做成功登錄的瀏覽器

...所以現在瀏覽器可以訪問登錄後的頁面。

和調用file_get_contents()函數

你的PHP程序不是瀏覽器。它無法訪問登錄後的頁面。

您需要使用您從PHP製作的HTTP請求進行登錄(然後存儲任何登錄系統期望您發送的每個請求......可能是cookie)。

+0

是的,有道理。我會嘗試這個。謝謝 –

+0

嘿昆汀。我做了同樣的PLZ看到我更新的代碼。 hee在隨後的請求中發送一個cookie,但仍然將它重定向到一個登錄頁面。 –