這篇文章主要介紹php cookie的清除方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
創(chuàng)新互聯(lián)于2013年創(chuàng)立,先為南丹等服務建站,南丹等地企業(yè),進行企業(yè)商務咨詢服務。為南丹企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。
php cookie的清除方法:首先創(chuàng)建一個PHP示例文件;然后通過setcookie創(chuàng)建cookie;最后通過“setcookie('test','',time()-3600);”方法清除建立的cookie即可。
PHP清除COOKIE,PHP無法刪除COOKIE?
設置COOKIE有效期、COOKIE過期
PHP手冊中提到:
PHP 透明地支持 HTTP cookie。cookie 是一種在遠程瀏覽器端儲存數(shù)據(jù)并以此來跟蹤和識別用戶的機制??梢杂?setcookie() 或 setrawcookie() 函數(shù)來設置 cookie。cookie 是 HTTP 標頭的一部分,因此 setcookie() 函數(shù)必須在其它信息被輸出到瀏覽器前調(diào)用,這和對 header() 函數(shù)的限制類似。
setcookie(): bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )
要刪除 cookie 需要確保它的失效期是在過去,才能觸發(fā)瀏覽器的刪除機制。
刪除一個cookie的方法就是把這個cookie的有效期設置為當前時間以前,這也是幾乎所有php程序員都會這么做。
例如:
setcookie('test','true',time()+3600); //創(chuàng)建cookie setcookie('test','',time()-3600); //清除建立的cookie
==================================================================================
如果直接setcookie("test", '');
print_r($_COOKIE);
結果是整個$_COOKIE數(shù)組都是空的,而非僅僅$_COOKIE['testcookie']為空.于是用winsock抓包,觀察返回的http頭,發(fā)現(xiàn)http頭竟然是
Set-Cookie: testcookie=deleted; expires=Mon, 18-Jun-2007 02:42:33 GMT
這說明setcookie("testcookie", '');的的確確是將testcookie這個cookie直接刪除.而關于這種情況在php手冊中完全沒有說明.
最后閱讀php源碼,終于發(fā)現(xiàn)真相(這就是開源的好處了,有什么不清楚的內(nèi)幕直接查源碼)
以下代碼可以在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);
會發(fā)送刪除cookie的http頭給瀏覽器.
最后我們可以得出結論,在php中使用
setcookie($cookiename, '');或者 setcookie($cookiename, NULL);
都會刪除cookie,當然這些手冊中并沒有。
=====================================================================================
php cookie 無法刪除/清除過期?
今天利用 Cookie 做網(wǎng)站的用戶登錄,經(jīng)過調(diào)試,用
setcookie("username", "username", time()+1000,"/php100/");
等儲存用戶的登錄信息,然后利用
setcookie("username", "", time()-3600);
做 退出,在IE下測試沒有任何問題。既然做網(wǎng)站,就要兼容盡可能多的瀏覽器,呵呵。于是在 Firefox 中測試,登陸一切正常,當 推出時,遇到了麻煩。怎么也不會退出,用戶總是在登錄狀態(tài)。于是查看了 IE、Firefox 中cookie記錄的區(qū)別,經(jīng)過測試,才恍然大悟。
原來如果沒有指定 setcookie() 的第四個參數(shù)(合法路徑參數(shù)),默認會把當前目錄作為合法路徑,而我測試的路徑為:http://127.0.0.1/php/rss2fla/data /log.php ,所以導致登陸和退出時 所設置的 cookie 路徑不同。
IE比Firefox要人性化,呵呵,當美指定路徑時,會覆蓋當前 IP 下的同名Cookie變量,而FireFox比較嚴格了,導致又重新建了個變量……
以上是“php cookie的清除方法”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
分享題目:phpcookie的清除方法
分享地址:http://aaarwkj.com/article12/jeiedc.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供Google、網(wǎng)站設計公司、小程序開發(fā)、網(wǎng)站排名、關鍵詞優(yōu)化、面包屑導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)