程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> php cookie清除與ff下cookie無法刪除

php cookie清除與ff下cookie無法刪除

編輯:關於PHP編程

在php中設置也刪除cookie我們都是使用setcookie來設置,過期了就自動刪除了,但在ff下你可能會碰到cookie無法過期了。

首先我們看一下php手冊中關於刪除cookie的說明

bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

要刪除 cookie 需要確保它的失效期是在過去,才能觸發浏覽器的刪除機制。
下面的例子說明了如何刪除剛才設置的 cookie: 例子 2. setcookie() 刪除
例子

 代碼如下 復制代碼

// 將過期時間設為一小時前

setcookie("TestCookie", "", time() - 3600);
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);

等儲存用戶的登錄信息,然後利用

 代碼如下 復制代碼

setcookie("username", "", time()-3600);

做 退出,在IE下測試沒有任何問題。既然做網站,就要兼容盡可能多的浏覽器,呵呵。於是在 Firefox 中測試,登陸一切正常,當推出時,遇到了麻煩。怎麼也不會退出,用戶總是在登錄狀態。於是查看了 IE、Firefox 中cookie記錄的區別,經過測試,才恍然大悟。

原來如果沒有指定 setcookie() 的第四個參數(合法路徑參數),默認會把當前目錄作為合法路徑,而我測試的路徑為:http://127.0.0.1/php/rss2fla/data /log.php ,所以導致登陸和退出時 所設置的 cookie 路徑不同。

IE比Firefox要人性化,呵呵,當美指定路徑時,會覆蓋當前 IP 下的同名Cookie變量,而FireFox比較嚴格了,導致又重新建了個變量……

來看幾個例子: 

簡單的: 

 代碼如下 復制代碼

SetCookie("MyCookie", "Value of MyCookie"); 

帶失效時間的: 

 代碼如下 復制代碼

SetCookie("WithExpire", "Expire in 1 hour", time()+3600);//3600秒=1小時 

什麼都有的: 

 代碼如下 復制代碼

SetCookie("FullCookie", "Full cookie value", time()+3600, "/forum", ".bKjia.c0m", 1); 

最後一種是兼容所有浏覽器的哦。

綜上,在php中操作cookie時最好使用下面的方式:

 代碼如下 復制代碼 if(isset($_COOKIE["sid"]) && !empty($_COOKIE["sid"])){
  // 這樣可以保證Cookie存在且在有效期內
  ……
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved