2012-01-30 87 views
2

晚上好!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腳本!但我不能!

請給我一隻手!

謝謝!

+0

也許我需要更徹底地閱讀,但您是否嘗試了** CURLOPT_FOLLOWLOCATION ** [CURL選項](http://us.php.net/manual/en/function.curl-setopt.php)? – quickshiftin 2012-02-01 02:21:50

回答

0

我可能已經迷失了一些,但我想我明白了。 可以使用 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); 

返回一個字符串,這是更爲用於調試或解析。

相關問題