PHP刪除cookie的乙個小秘密

2021-04-26 07:57:43 字數 1536 閱讀 3838

今天看到的乙個小技巧。

原文:http://www.eb163.com/club/thread-1712-1-1.html

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

------以下引用php手冊內容--------------

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);

----------------引用結束--------------------------

刪除乙個cookie的方法就是把這個cookie的有效期設定為當前時間以前,這

也是幾乎所有php程式設計師都會這麼做。

後來乙個初接觸php的朋友告訴我,他在程式中本想把乙個cookie的值設定為

空,結果導致這個cookie直接被刪除。我當時的第一反應是不相信,於是測試

了一下setcookie("testcookie", '');

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) else

}原始碼中清清楚楚的顯示,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的乙個小秘密

首先我們看一下php 手冊中關於刪除cookie 的說明 以下引用php手冊內容 bool setcookie string name string value int expire string path string domain bool secure 要刪除 cookie 需要確保它的失效期...

乙個PHP語言的小陷阱

直接上 吧 class a class b extends a obj new b obj showname 大家猜猜看,程式輸出的是a還是b?如果你堅定地回答 a 那麼下面的內容就不用看了 如果你回答的是b,或者不確定,則有必要繼續看下去。首先給出正確答案 a。原因分析 在b的建構函式中,由於 n...

php登入的乙個小例項

花了一下午的時間寫了乙個php登入的小例項,雖然花費了太長的時間,但是還是感覺很有成就感,相信 一切偉大的行動和思想都有乙個微不足道的開始。首先做登入頁面 login.php,如下 session start if isset post sub and password 在資料庫中查詢選擇的使用者 ...