作者:北关仔仔_378 | 来源:互联网 | 2014-06-18 09:01
很多朋友在使用setcookie设置值为空或NULL时系统会自动把cookie给删除掉,下面我来给大家分析cookie值为null或空字符串删除cookie原因吧,有
很多朋友在使用setCOOKIE设置值为空或NULL时系统会自动把COOKIE给删除掉,下面我来给大家分析COOKIE值为null或空字符串删除COOKIE原因吧,有需要学习的朋友可参考,官方文档中也是这样写的:
setCOOKIE() delete example
-
- setCOOKIE ("TestCOOKIE", "", time() - 3600);
- setCOOKIE ("TestCOOKIE", "", time() - 3600, "/~rasmus/", "example.com", 1);
- ?>
今天遇到一件奇怪的事,在setCOOKIE的时候,传了一个空字符串给$value,结果竟然是此COOKIE被删除了…代码如下:
- $name = "post_url";
- $value = "";
- setCOOKIE($name, $value, time()+60*60*3, "/" );
去翻php 5.4.13 的源码结果得知,参数中的value在C语言中的类型是char *,还有一个 value_len标明了它的长度,如果value_len为0的话,就写了下面的COOKIE:
值为”deleted”, 过期时间为 Thu, 01-Jan-1970 08:00:01 CST 或者说是 Thu, 01-Jan-1970 00:00:01 GMT,看来setCOOKIE($name, “”) 确实可以删除这个COOKIE了…
同理,在php中,strval(NULL) === “” , 所以 setCOOKIE($name, NULL) 也就相当于 setCOOKIE($name, “”),同样可以删除此COOKIE.