簡體   English   中英

PHP:在普通的Web瀏覽器上使用登錄的cURL會話

[英]PHP: use logged-in cURL session on normal web browser

晚上好!

我在PHP中有一個腳本,可以對遠程主機登錄頁面進行CURL調用。 登錄並通過cookiejar opt和cookiefile opt保持會話后,我使用相同的CURL連接處理程序登錄到下一個需要上傳的頁面。 完成后,我獲得了完整的會話參數,並且可以從站點中調用任何我想要的頁面,但是在CURL中!

想法是,此腳本使用CURL,最終需要使用CURL會話重定向到遠程主機中的那些頁面之一,但這是不可能的,因為從curl您無法將結果顯示為重定向頁面。

所以我嘗試了很多選擇。 em根本不起作用。

架構:

  • 本地服務器上的PHP腳本。
  • 調用domain.com/loggin.php(創建curl ch)
  • 將curl會話保持在cookie.txt文件上。
  • 使用相同的ch調用domain.com/loggin_2.php(未關閉最后一個)。
  • 已完全登錄到遠程站點。
  • 回到PHP腳本。 需要重定向到domain.com/index.php,這需要使用完整的登錄過程填充Session變量。

那該怎么辦?

1)完全登錄后,閱讀cookies.txt文件以獲取PHPSESSID。 然后嘗試使用setcookie()或通過header(“ Set-cookie:...”)以及之后立即使用header(“ Location:domain.com/index.php”)。

不起作用

2)通過ajax調用並最終document.cookie = ...

不起作用

3)向我的遠程主機中的文件添加第三個cURL調用,將打印JSONED $ _SESSION。 將其獲取到我的PHP腳本中,對其進行解碼並通過任何數組值上的foreach加載到我的本地會話中(foreach()... $ _ SESSION [$ c] = $ v)。 在此foreach之前添加了session_start()。 緊隨其后的是標題(“ Loaction:domain.com/index.php”)。

不起作用

4)在標頭(“位置:domain.com/index.php”)之前添加了一個session_write_close()。

不起作用

所以我真的不知道如何使用CURL會話。

我試圖通過Web Developer Firefox插件手動修復PHPSESSID。 我記下了curl生成的會話ID。 完美的作品。 因此,應該可以通過在我的PHP腳本上編寫腳本來修復它! 但是我不能!

請幫幫我!

謝謝!

我可能有點迷路,但我想我明白。 您可以使用CURLOPT_HEADER進行一些調試(將包含當前重定向的頁面信息)和CURLOPT_FOLLOWLOCATION,如下所示:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://domain.com/login.php');
curl_setopt($ch, CURLOPT_HEADER, 1);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

我也用

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

以字符串形式返回,這對於調試或解析非常有用。

暫無
暫無

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

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