在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"])){