php cookie的清除方法:先建立一個PHP範例檔案;然後透過setcookie建立cookie;最後透過「setcookie('test','',time()-3600);」方法清除建立的cookie即可。
推薦:《PHP影片教學》
本教學操作環境:windows7系統、PHP5.6版,此方法適用於所有品牌電腦。
PHP清除COOKIE,PHP無法刪除COOKIE?
#設定COOKIE有效期限、COOKIE過期
PHP手冊中提到:
PHP 透明地支援HTTP cookie。 cookie 是一種在遠端瀏覽器端儲存資料並以此來追蹤和識別使用者的機制。可以用 setcookie() 或 setrawcookie() 函式來設定 cookie。 cookie 是 HTTP 標頭的一部分,因此 setcookie() 函數必須在其它資訊被輸出到瀏覽器前調用,這和對 header() 函數的限制類似。
setcookie(): bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )
要刪除 cookie 需要確保它的失效期是在過去,才能觸發瀏覽器的刪除機制。
刪除一個cookie的方法就是把這個cookie的有效期限設定為目前時間以前,這也是幾乎所有php程式設計師都會這麼做。
例如:
setcookie('test','true',time()+3600); //创建cookie setcookie('test','',time()-3600); //清除建立的cookie
=================================== =================================================
如果直接setcookie("test", '');
print_r($_COOKIE);結果是整個$_COOKIE數組都是空的,而非僅僅$_COOKIE['testcookie']為空.於是用winsock抓包,觀察返回的http頭,發現http頭竟然是
Set-Cookie: testcookie=deleted; expires=Mon, 18-Jun-2007 02:42:33 GMT這說明setcookie("testcookie", '');的的確是將testcookie這個cookie直接刪除.而關於這種情況在php手冊中完全沒有說明.最後閱讀php源碼,終於發現真相(這就是開源的好處了,有什麼不清楚的內幕直接查源碼)以下程式碼可以在php5. 20的linux原始碼包中ext/standard/head.c第99行附近找到.
if (value && value_len == 0) { time_t t = time(NULL) - 31536001; dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, t, 0 TSRMLS_CC); sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt); efree(dt); } else { sprintf(cookie, "Set-Cookie: %s=%s", name, value ? encoded_value : ""); if (expires > 0) { strcat(cookie, "; expires="); dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, expires, 0 TSRMLS_CC); strcat(cookie, dt); efree(dt); } }源碼中清清楚楚的顯示,if (value && value_len == 0) ,當value_len為0時
sprintf(cookie, "Set-Cookie: %s=deleted; expires=%s", name, dt);會發送刪除cookie的http頭給瀏覽器.#最後我們可以得出結論,在php中使用
setcookie($cookiename, '');或者 setcookie($cookiename, NULL);都會刪除cookie ,當然這些手冊中並沒有。 ============================================== =========================================php cookie 無法刪除/清除過期? 今天利用Cookie 做網站的用戶登錄,經過調試,用
setcookie("username", "username", time()+1000,"/php100/");等儲存用戶的登錄信息,然後利用
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比較嚴格了,導致又重新建了個變量…###
以上是php Cookie如何清除的詳細內容。更多資訊請關注PHP中文網其他相關文章!