hi,你好!欢迎访问本站!登录
本站由简数采集腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - PHP问题 - 正文 请牢记本站网址www.sosophp.cn

php没法删除cookie【php题目】

2019-11-26PHP问题搜搜PHP网58°c
A+ A-

我们先来看下相干cookie的机制。

bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

要删除cookie须要确保它的失效期是在过去,才触发浏览器的删除机制。

下面的例子申明了怎样删除适才设置的cookie:

<?php
//将逾期时候设为一小时前
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手册中完整没有申明。

以下代码能够在php5.20的linux源码包中ext/standard/head.c第99行四周找到:

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);
    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, "; expires=");
        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);
        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。

以上内容仅供参考!

引荐教程:PHP视频教程

以上就是php没法删除cookie的细致内容,更多请关注ki4网别的相干文章!

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  选择分享方式
  移步手机端
php没法删除cookie【php题目】

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
标签: