Software Engineer and Web Developer's Diary

1年後の自分に向けて

setcookieの正しい使い方

後から書く。

イナゾウ社長ブログ: PHPでCookieを削除する場合の問題

PHP: setcookie - Manual

PHP: setcookie - Manual - jp

php-5.2.5/ext/standard/head.c line:101 [c] if (value && value_len == 0) { / * MSIE doesn't delete a cookie when you set it to a null value * so in order to force cookies to be deleted, even on MSIE, we * pick an expiry date 1 year and 1 second in the past / 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); snprintf(cookie, len + 100, "Set-Cookie: %s=deleted; expires=%s", name, dt); efree(dt); } else { snprintf(cookie, len + 100, "Set-Cookie: %s=%s", name, value ? encoded_value : ""); if (expires > 0) { strlcat(cookie, "; expires=", len + 100); 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); strlcat(cookie, dt, len + 100); efree(dt); } } [/c]

正しいsetcookieの使い方 [php] setcookie("TestCookie", "dummy", 1); [/php]

値がnullならexpireにどんな値を設定していてもphpのソースで1年前に上書きされるので、値に"dummy"を設定しexpire=1になるようにするとよいはず。