2011-03-10 90 views
1

好吧,我有一個,我已經使用了多年,突然就停止工作代碼,我不知道如何解決餅乾在PHP沒有更新

首先我登錄和這些Cookie設置

setcookie ("memid", $login->id, strtotime("+1 day"), "/"); 
setcookie ("package", $login->package, strtotime("+1 day"), "/"); 
setcookie ("website", $login->domain, strtotime("+1 day"), "/"); 
setcookie ("type", 'main', strtotime("+1 day"), "/"); 
setcookie ("category", $login->category, strtotime("+1 day"), "/"); 

現在這工作得很好,當我改變什麼,我更新的值

setcookie ("website", $_GET['website'], strtotime("+1 day"), "/"); 
setcookie ("type", $_GET['type'], strtotime("+1 day"), "/"); 

現在,而不是更新以前的cookie值,它會創建具有相同名稱的新值的新Cookie。我假設第一個Cookie集仍然被讀取,因爲我的應用程序中沒有任何更改。

即使我註銷腳本,我過期餅乾停止工作

setcookie('memid', '', time()-1000,"/"); 
setcookie ("package", '', time()-1000,"/"); 
setcookie ("website", '', time()-1000,"/"); 
setcookie ("type", '', time()-1000,"/"); 
setcookie ("account", '', time()-1000,"/"); 
setcookie ("permissions", '', time()-1000,"/"); 
setcookie ("category", '', time()-1000,"/"); 

任何想法?

+0

你在哪裏使用這些命令?如何設置它們似乎沒有任何問題,但它們在何處使用可能會導致大量其他問題。您知道在下次重新加載頁面之前,您無法訪問cookie的值,是的(希望)? – animuson 2011-03-10 21:43:41

+0

是的,這就是爲什麼我如此難倒...這是基本的東西在這裏..每次我設置這些我重定向到使用前的頁面......奇怪的是他們工作得很好,直到昨晚...相同的代碼這已經工作了近兩年。沒有改變。 – ThinkNewDev 2011-03-10 21:45:50

+0

設置相對於服務器時鐘的cookie過期時間可能是危險的 - 它假定服務器和客戶端的時鐘相對同步。最好設定一個絕對時間,比如'1'。如果用戶的時鐘仍然在1970年,他們應該得到任何痛苦。 – 2011-03-10 21:46:47

回答

1

我懷疑你是爲像localhost這樣的域名設置cookie。至少某些瀏覽器會忽略爲至少沒有一個頂級域名(即使其發明爲.local)和域名前面的域名的域名所設置的Cookie。所以,如果你在localhost下嘗試你的代碼,那可能是問題所在。