2013-03-07 46 views
1

我有一個奇怪的問題。我有一個腳本,將爲每個訪問過的頁面添加一個數字到數組中,然後放入Cookie中。如果沒有WWW或子域名,php cookies不起作用

然後在另一個頁面上,它將顯示cookie中的數字列表。

這是對我的域(HTTPS)與WWW完美的工作:https://www.mydomain.com

問題是,它不會沒有WWW(https://mydomain.com)工作。似乎有兩個不同的Cookie:一個用於https://mydomain.com,另一個用於https://www.mydomain.com

我也想分享的子域的網站的Cookie HTTPS

所以基本上應該是相同的cookie爲:

https://www.domain.com 
https://domain.com 
http://subdomain.domain.com 

我該怎麼做?

目前,我使用:

setcookie("viewed_articles", serialize($lastviewedarticles)); 

回答

6

這是正確的行爲。當您設置cookie時,您需要將其設置爲.domain.com,它將適用於domain.com中包含的所有域。這裏

setcookie("viewed_articles", serialize($lastviewedarticles), time()+60*60*24*30, '/', '.domain.com'); 

的代碼將設置cookie爲30天,併爲整個domain.com

+1

試過,但不起作用。也許這是因爲我使用https? – anarchOi 2013-03-08 07:26:56

+0

您可以嘗試'setcookie(「viewed_articles」,serialize($ lastviewedarticles),time()+ 60 * 60 * 24 * 30,'/','.domain.com',true,true);'只允許該cookie通過HTTPS設置,但我懷疑這是問題所在。您是否嘗試將Cookie設置在您請求的同一個域上?此外,請嘗試清除瀏覽器Cookie並查看是否有幫助。 – 2013-03-08 14:57:07

0

php-docs的setCookie方法。您可以在過期的值後添加域和路徑。

將路徑設置爲/,並將域名設置爲.mydomain.com,以使cookie成爲您的網站的全局。

0

設置cookie中的域,也是唯一的HTTP值激活,以避免可能的XSS

setcookie("viewed_articles", serialize($lastviewedarticles), time()+3600, '/', '.yourdomain.com',0,1); 
+0

什麼是http-only值? – anarchOi 2013-03-08 07:08:23