後から書く。
イナゾウ社長ブログ: PHPでCookieを削除する場合の問題
php-5.2.5/ext/standard/head.c line:101
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);
}
}
/*
* 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);
}
}
正しいsetcookieの使い方
値がnullならexpireにどんな値を設定していてもphpのソースで1年前に上書きされるので、値に"dummy"を設定しexpire=1になるようにするとよいはず。
こっちもどうぞ
コメント:0
トラックバック:0
- この記事のトラックバック URL
- http://www.sylvan-l.net/b/2008/01/08/setcookie%e3%81%ae%e6%ad%a3%e3%81%97%e3%81%84%e4%bd%bf%e3%81%84%e6%96%b9/trackback/
- トラックバックの送信元リスト
- setcookieの正しい使い方 - sylvan より