晚上好!PHP:在正常的網絡瀏覽器上使用已登錄的cURL會話
我在PHP中創建了一個CURL調用遠程主機登錄頁面的腳本。 在通過cookiejar opt和cookiefile選擇登錄並保持會話之後,我使用相同的CURL連接處理程序登錄到需要上載的即時下一頁。 完成後,我得到了完整的會話參數,我可以從網站調用任何我想要的頁面,但是在捲曲中!
這個想法是,這個腳本使用CURL,最終需要使用CURL會話重定向到遠程主機的那些頁面之一,但這是不可能的,因爲從curl你不能顯示結果爲重定向頁面。
所以我嘗試了很多選擇。他們都沒有工作。
模式:在本地服務器上
- PHP腳本。
- 調用domain.com/loggin.php(創建curl ch)
- 保持curl會話cookie.txt文件。
- 使用相同的ch調用domain.com/loggin_2.php(非關閉的最後一個)。
- 完全登錄到遠程站點。
- 回到PHP腳本。需要重定向到domain.com/index.php,這需要使用完整登錄過程填充的會話變量。
那該怎麼辦?
1)完成登錄後,閱讀cookies.txt文件以獲取PHPSESSID。 然後嘗試使用setcookie()或通過頭(「Set-cookie:...」)並立即使用頭(「Location:domain.com/index.php」)。
不起作用。
2)通過Ajax調用最後的document.cookie =嘗試同樣的事情...
不工作。
3)添加第三個cURL調用到我的遠程主機中的一個文件,打印一個JSONED $ _SESSION。 (foreach()... $ _ SESSION [$ c] = $ v)獲取它在我的PHP腳本,解碼它並通過foreach加載到我的本地會話。 在此foreach之前添加了session_start()。並立即,一個標題(「Loaction:domain.com/index.php」)。
不起作用。
4)在標題(「Loaction:domain.com/index.php」)前添加了一個session_write_close()。
不起作用。
所以我真的不知道如何使用CURL會話。
我試過通過Web Developer Firefox插件手動修復PHPSESSID。我寫下了curl生成的會話ID。它完美的作品。所以,應該可以通過腳本修復我的PHP腳本!但我不能!
請給我一隻手!
謝謝!
也許我需要更徹底地閱讀,但您是否嘗試了** CURLOPT_FOLLOWLOCATION ** [CURL選項](http://us.php.net/manual/en/function.curl-setopt.php)? – quickshiftin 2012-02-01 02:21:50