我運行一個網站,它可以通過不同的域到達後可供選擇:domainname.de,domainname.ch,domainname.at,domainname.es等...PHP會話有時不能傳遞到另一個域
當我的客戶想要支付我們的付款頁面,當然這是https保護。由於服務器的限制,我只能擁有一個SSL證書,我只能將其放在一個域名中:domainname-secure.com。
因爲我收取不同的價格,我需要知道用戶屬於哪個域,所以當重定向到domainname-secure.com時,我將域(例如domainname.de)保存在會話變量$_SESSION['domain_default']
中,並通過添加session_id=[session_id]
作爲get參數。
然後我檢查我採取$_GET['session_id']
和運行後續命令對domainname-secure.com提供的會話:
session_id($_GET['session_id']);
session_start();
當我測試它自己,它工作完全正常,但我做一個日誌當有人進入domainname-secure.com並且沒有設置$_SESSION['domain_default']
時輸入。
這種情況每天發生幾次,但我真的不知道爲什麼這樣做不起作用!我從很多不同的鏈接一次又一次地測試它,但對我來說它工作得很好。
你們有些人可以想象爲什麼它有時不起作用嗎?
將會話ID傳遞到另一個域是不是「好」或不安全,並且在重定向後它不總是可讀的?
我知道你很難確定一個錯誤,但我正在尋找一些有關會話的知識問題,或者是一個提示如何以更好的方式做到這一點?
您的服務器設置是否包含suhosin補丁集? – complex857
爲什麼不直接將域添加到數據庫中的用戶?那麼你不需要這個不必要的複雜設置。 – jeroen
@jeroen他想要獲取他存儲在'$ _SESSION'中的數據。這就是爲什麼他通過get來傳遞session_id。我假設他從原始域以外的'$ _SESSION'變量獲得了一些其他信息。否則,他可以將域名放在'$ _GET'參數中。 –