php Cookie を削除する効果的な方法
php Cookie を削除する効果的な方法
Cookie の削除手順 begin-----
bool setcookie ( string name [,文字列値 [, int期限切れ [, 文字列パス [, 文字列ドメイン [, ブール安全]]]]] )
Cookie を削除するには、Cookie の有効期限が過去のものであることを確認する必要があります。ブラウザの削除メカニズム。
次の例は、設定したばかりの Cookie を削除する方法を示しています。
//有効期限を 1 時間前に設定します
setcookie("TestCookie", "", time() - 3600);
setcookie("TestCookie", "", time() - 3600, "/~rasmus/", ".utoronto.ca", 1);
?>
-----Cookie の削除手順終了-----
Cookie を削除する方法は、Cookie の有効期間を現在時刻より前に設定することです。これは、ほとんどすべての Cookie にも当てはまります。すべての PHP プログラマーがこれを行います。
その後、PHP を初めて使用した友人が、プログラム内で Cookie の値を空に設定したいと言いましたが、Cookie は直接削除されました。当時の私の最初の反応は、信じられないということでした。そこで、
をテストしました。
setcookie("testcookie", '');
print_r($_COOKIE);
結果 案の定、$_COOKIE['testcookie'] だけでなく、$_COOKIE 配列全体が空になりました。そこで、winsock を使用してパケットをキャプチャし、返された http ヘッダーを観察したところ、http ヘッダーが「Set-Cookie: testcookie=deleted;expires=Mon, 18-Jun-2007 02:42:33 GMT」であることがわかりました。これは、「setcookie("testcookie ", '');」を意味し、実際に cookie testcookie を直接削除しますが、この状況については PHP マニュアルにはまったく説明がありません。
ようやくphpのソースコードを読んで真実を発見しました(これはオープンソースの利点です。内部事情について不明な点がある場合は、ソースコードを直接確認してください)。
次のコードは、php5.20 Linux ソース パッケージの ext/standard/head.c の 99 行目付近にあります。
if (value && value_len == 0) {
/*
* MSIE は、Cookie を null 値に設定しても削除しません
* そのため、MSIE でも Cookie を強制的に削除するために、
* 有効期限を 1 年と 1 年とします。過去 1 秒目
*/
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, "; 期限切れ =);
dt = php_format_date("D, d-M-Y H:i:s T", sizeof("D, d-M-Y H:i:s T")-1, 期限切れ, 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 が削除されると結論付けることができますが、もちろん、これらのマニュアルには記載されていません。
出典: http://www.111cn.net/phper/21/f0eace11b1229a0f2c7c54e3c1ea4654.htm