2011-11-01 263 views
0

這就是我想要實現: 我不能用真實URL的,所以我會用網站A.com和B.comPHP捲曲登錄的Cookie

  1. 從第一頁A.com我展示一個登錄表單,然後我使用CURL將值提交給域B,登錄並獲取cookie名稱
  2. 然後,我使用正確的信息和cookie名稱設置標題
  3. 將頁面重定向到B.com/welcome.php使用PHP定位功能

我的問題是,我總是得到錯誤:您的會話已過期。請再次登錄。 如果我使用CURL登錄並獲取cookie,然後使用CURL來顯示它的工作頁面。

捲曲部分工作正常,下面的代碼會導致會話過期錯誤」

header ('Host: B.com\n'); 
header ('User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:7.0.1) Gecko/20100101 Firefox/7.0.1\n'); 
header ('Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8\n'); 
header ('Accept-Language: en-gb,en;q=0.5\n'); 
header ('Accept-Encoding: gzip, deflate\n'); 
header ('Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7\n'); 
header ('Referer: http://B.com/\n'); 
header ('Content-type: application/x-www-form-urlencoded\n'); 
header ('location: B.com/welcome.php'); 

我使用這些頭的原因是因爲這正是從火狐發送,當我手動登錄到頁面。

感謝您的幫助

+2

您不能從A.com爲* site B.com設置cookie *。 Cookie只能針對該域中的任何給定域設置。這沒有解決辦法。幾乎所有瀏覽器默認都會阻止[第三方Cookie](http://en.wikipedia.org/wiki/HTTP_cookie#Third-party_cookie),這需要客戶端明確允許。 – DaveRandom

+0

我不禁懷疑這將用於惡意目的。 – 2011-11-01 11:04:29

+0

我不想設置第三方cookie,我通過curl創建cookie,獲取cookie值,然後通過位置傳遞值,因此從理論上講,PHP服務器應該讀取cookie值並說我有一個會話該ID請繼續... – Alfonso

回答

0

顯然,你的瀏覽器不具有相同的cookie存儲是捲曲的用途,所以當從瀏覽器的cookie信息的頁面檢查也不會發現它是什麼期待。如果你想此登錄在瀏覽器中工作之前,您需要先在瀏覽器中設置Cookie,然後才能轉到歡迎頁面。