2011-11-30 64 views
0

我有最奇怪的問題與Cookies。我寫了一些PHP腳本,使用令牌來標識訪問者,以便「他/她」可以正確使用該網站。Bluehost(或PHP腳本)問題與Cookies

令牌系統在本地開發機器(windoze + ZendApache)上運行良好,並且不能在Bluehost上的生產服務器上運行。

設置cookie的過期時間爲60天時,我在域中使用「/」和域名爲「mydomain.com」。我可以正確地在瀏覽器上看到cookie,並且可以確認與數據庫中的值進行比較時,值設置正確。

每次頁面刷新時,服務器都不會獲取cookie並創建一個新令牌並將其發送回瀏覽器,並再次在數據庫中創建新記錄。新的cookie再次與最新的記錄相匹配,但下一次刷新時,同樣的事情又一次。無法維護令牌,因此無法瀏覽網站。

任何想法爲什麼會發生這種情況?我有可能錯過了一些設置?

我已經在最新的Firefox,Opera,Safari和Chrome上測試過它。

謝謝。

編輯:

這是一個PHP & BlueHost的相關的問題,我存儲3,在序列化格式cookie的值40字符字符串。由於某些原因,unserialize()函數在Bluehost上沒有執行,但在我的開發機器上運行良好。於是我將存儲的值更改爲40chars.40chars.40chars並用分隔符分解了值。「得到3個字符串。

再次感謝。

回答

2

你應該使用的

.mydomain.com 

代替

mydomain.com 

例如:

setcookie("MyCookie", $value, time()+60*24*3600, "/", ".mydomain.com", 1); 
+0

它添加。 (點)在自己前面。我想到了這一點,並嘗試過,但問題依然存在。看起來,瀏覽器沒有發送帶有令牌數據的cookie。如果我print_r $ _REQUEST,我可以看到除了持有令牌值的cookie之外的所有其他cookie。 – petsoukos

+0

請給我們一些代碼示例。你如何獲得/設置你提到的cookie?你如何定義令牌?等等。 –

+0

嗯,我剛剛發現bluehost不太喜歡unserialize()函數。我將3個值存儲在標記cookie中,但可以在下次刷新時獲取這些值。我正在重寫令牌系統腳本以使用implode()和explode()來設置和獲取cookie數據。謝謝你花時間回答。 ;) – petsoukos