2013-02-01 30 views
1

我的網站使用PHP會話跟蹤登錄的用戶。每個頁面都有session_start();正確實施,但在鉻時,我把www。來自域名的它不使用會話變量。當我把它換回沒有www。它再次正常工作,所以變量不會被取消設置,而只是不被使用。PHP會話變量丟失了www或沒有

在Firefox中奇怪的是它是相反的。萬維網。工作,沒有沒有。有沒有解決的辦法?我遇到了麻煩,因爲我使用PayPal重定向到我的網站,我不能讓我的用戶直接註銷並返回。

+3

'www'在會話cookie來講方面diferent用'無www'。你應該選擇一個。這就是爲什麼像SO這樣的網站強迫他們的訪客去除www。而且,在不同的(子)域上擁有兩個完全相同的網站並不是一個好習慣。 – rlatief

+0

聽起來像會話cookie被設置爲在特定域下運行。我實際上並不知道如何完成,但您可以檢查會話cookie設置。無論是這樣或每次只能從'www'(或back)重定向 –

回答

7

www.example.comexample.com是不一樣的網站。他們通常是,但只是按慣例。 www.example.comexample.com

爲此子站點,上example.com設置Cookie不會在www.example.com,反之亦然使用,因爲這將是不安全的假設他們是同樣的事情。

您可以通過允許會話cookie通過設置php.ini中session.cookie_domain.example.com上的所有子域工作,以及主域名覆蓋此行爲在一定程度上(用你自己的域名代替,當然)

+0

可以通過調用['session_set_cookie_params($ lifetime,$ path,$ domain)'](http://www.php .net/manual/en/function.session-set-cookie-params.php)在'session_start()'之前。默認值是:'session_set_cookie_params(0,'/','.mydomain.com');' – Sammitch

+0

太棒了!謝謝! – Arun

3

您應該在PHP中設置cookie_domain,或者確保您的用戶只能使用www或不使用www來查看您的網站。您可以使用.htaccess(apache服務器)來完成此操作。

實例來設置你的Cookie域爲多個子域:

session_set_cookie_params(0, '/', '.example.com'); 
session_start();