2011-01-25 43 views
2

我已經使用.htaccess完成了從www.abc.comwww.def.com的重定向。使用htaccess重定向後無法檢索PHP會話

重定向是成功的,但我有一個問題,即Cookie和會話只能訪問使用def.com訪問網站時訪問。 從abc.com進行檢查時,會話將會丟失。

如何複製或閱讀def.com的會話?

請幫幫我。

+0

這很難 - 如果你能解釋爲什麼你做了這個重新定向,爲什麼你需要訪問會話數據,我們或許能找到一個替代方案,如果沒有下面的答案適合。 – 2011-01-25 10:50:35

回答

0

好吧,你不能簡單地做到這一點。也許看到this post

0

包含會話ID(因此,您的整個會話)的cookie只在創建它的域上有效。因此,當您更改域名時,Cookie不再可用。要解決此問題,您可以將會話ID發送到新域(這不是很安全,但您可能不在乎),然後爲該域創建新的cookie和會話。

0

這被稱爲「跨站點腳本」(XSS),很多人都非常努力地工作,以確保你想要的是不可能的。如果您確實找到了解決辦法,請務必告訴我們,因爲那將是一次重大的安全漏洞。

+1

-1這不叫做跨站腳本。 – Gumbo 2011-01-25 09:55:16

0

當您可以從兩臺服務器訪問會話數據存儲時,只能在兩個域上共享相同的會話。根據session data storage type and location,您可能需要編寫您的own session storage handler

除此之外,還需要確保兩個域都使用相同的會話ID。如果您想使用Cookie作爲會話ID,則只能在域名共享公用超級域名時使用,因此它們是域名的子域名,例如foo.example.combar.example。 com分享超級域名example.com。在這種情況下,您需要adjust the session cookie parameterdomain並將其設置爲值爲.example.com超級域example.com

否則,就像您的示例中,域名僅作爲頂級超級域名共享com,您不能使用cookie(首先)。但是,您可以使用URL將會話ID從一個域傳輸到另一個域。要做到這一點,您需要啓用session.use_trans_sid並禁用session.use_only_cookies(至少在重定向目標域上),並將會話ID附加到從一個域指向另一個域的每個URL(這裏您可以使用SID常量)。