中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php cookie的清除方法

發布時間:2020-11-24 10:59:00 來源:億速云 閱讀:129 作者:小新 欄目:編程語言

這篇文章主要介紹php cookie的清除方法,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

php cookie的清除方法:首先創建一個PHP示例文件;然后通過setcookie創建cookie;最后通過“setcookie('test','',time()-3600);”方法清除建立的cookie即可。

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的清除方法”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

边坝县| 禹州市| 清远市| 工布江达县| 商洛市| 泸定县| 新民市| 永昌县| 桃江县| 太原市| 修武县| 荃湾区| 锡林郭勒盟| 沙雅县| 常州市| 唐河县| 泾阳县| 延安市| 印江| 海淀区| 绍兴市| 郴州市| 淅川县| 凌云县| 吉安市| 五河县| 石狮市| 台州市| 西乌珠穆沁旗| 新邵县| 云和县| 集安市| 天水市| 腾冲县| 蒙阴县| 高阳县| 恩平市| 宁蒗| 林西县| 光泽县| 南部县|