今天看到的乙個小技巧。
原文: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 在資料庫中查詢選擇的使用者 ...