2015-05-12 83 views
0

我遇到了一個奇怪的問題,我無法更新cookie。我完全能夠閱讀並設置它(只是第一次)。然後每次嘗試更新它(註銷或更新cookie的信息)都不會發生。無法更新cookie

基本上當我登錄我使用此代碼

$cookie_time = (3600 * 24 * 30); // 30 days 
$cookietime = time() + $cookie_time; 
$cookie_name = 'login'; 
$cookie_value = 'enter';  
setcookie ($cookie_name, 'id='.$selector.'&token='.$token, $cookietime); 

,我可以完全設置。

當我註銷我使用此代碼

$cookie_time = 1; // 1 days 
$cookie_name = 'login'; 
$cookie_value = 'exit'; 
setcookie($cookie_name, $cookie_value, $cookie_time); 

cookie不根本改變。即使我嘗試在不註銷的情況下再次登錄(我通過代碼實現了這一點),Cookie不會改變。看起來不可能更新它...我做了很多嘗試,但我不知道如何解決它!我的PHP可能不允許設置已經設置的cookie嗎?

回答

2

要小心,$ cookie_time應該對應於相對於1970年1月1日的時間戳,而不僅僅是以毫秒爲單位的時間。

看到http://php.net/manual/fr/function.setcookie.php

$ cookie_time應該是:

$cookie_time = time() + (3600 * 24 * 30); 

時間()函數返回的實際時間戳和$ cookie_time現在代表在未來到期日期;)

+0

是之前輸出任何東西,謝謝,我忘了添加此行的代碼,我已經在我的: '$ cookietime =時間()+ $ cookie_time; ' 任何想法如何解決我的問題? – Ame

0

setcookie docs

與其他標題一樣,必須在您的 腳本的任何輸出(這是協議限制)之前發送cookie。這要求您在任何輸出之前將 調用放入此函數,包括 標記以及任何空格。

你們是不是要更新cookie的

+0

我不相信(我將再次檢查),但無論如何,因爲我寫了相同的代碼部分應該更新它(登錄代碼),因爲我仍然可以在登錄時訪問login.php頁面,並且cookie不會更新 – Ame