簡體   English   中英

CURL 成功登錄重定向到登錄頁面

[英]CURL successful login redirecting to login page again

我正在嘗試從我的其他域中獲取某些字段的值。 另一個域站點有一個登錄頁面。 我在瀏覽器中成功登錄並調用了 file_get_contents() 函數,但它仍然返回我的登錄頁面 HTML。

我想要我在 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);

任何人都可以建議我如何繞過登錄頁面並訪問頁面的 HTML。

我在瀏覽器中成功登錄

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

和調用 file_get_contents()

您的 PHP 程序不是瀏覽器。 它無權訪問登錄后面的頁面。

您需要使用從 PHP 發出的 HTTP 請求登錄(然后存儲登錄系統希望您隨每個請求發回的任何內容……可能是 cookie)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM