php setcookie值为null或空字符串删除cookie解析

官方文档中也是这样写的:

#2 setcookie() delete example

 代码如下 复制代码

<?php
// set the expiration date to one hour ago
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.

时间: 2024-09-29 02:33:27

php setcookie值为null或空字符串删除cookie解析的相关文章

php setcookie时值为null或空字符串(删除cookie)

长久以来,在php中删除cookie的时候,都是使用 bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] ) $value 随便写, $expire设置为一个已经过去的时间即可. 官方文档中也是这样写的: http://www.php.n

MySQL中NULL与空字符串 空格问题

  一些刚刚接触MySQL的孩子,经常会错误的认为NULL与空字符串' '是相同的.这看似是一件不重要的事情,但是在MySQL中,这两者是完全不同的.NULL是指没有值,而''则表示值是存在的,只不过是个空值.. 这就相当于厂子给职工分房子,一共只有一套,老张和老李都想要,可是经理告诉老张,下次有您的房子,可是老李压根就没人搭理他.所以老张的房子是"空"的,因为这是空白支票,不过毕竟经理张口了,而老李的房子就是NULL的,因为根本就没有人考虑过他. 二者的区别不大,但是如果不仔细的话可

MYsql中NULL与空字符串空区别详解

对于SQL的新手,NULL值的概念常常会造成混淆,他们常认为NULL与MySQL空字符串是相同的事.情况并非如此.例如,下述语句是完全不同的:MySQL> INSERT INTO my_table (phone) VALUES (NULL);  代码如下 复制代码 mysql> INSERT INTO my_table (phone) VALUES ('');   这两条语句均会将值插入phone(电话)列,但第1条语句插入的是NULL值,第2条语句插入的是空字符串.第1种情况的含义可被解释为

Access 2003 中 null 和 &#039;&#039; 空字符串的奇怪问题

最近系统运行中发现Access 2003 版本中对待 Null 和 '' (空字符)奇怪问题,重现步骤: 1.创建表tabTest : 2.使用设计视图添加两个字段 ID ,col1 名称 类型 长度 说明 ID Number     主键,自增 Col1 char 1 无             3.使用sql 添加如下数据 -- col1 字段设置为 null INSERT INTO tabtest (id, col1) VALUES(1, NULL); -- col1 字段设置为 '' I

Java中String判断值为null或空及地址是否相等的问题_java

String的null或空值的判断处理笔者在开发过程中,常常碰到过下面这些错误的用法: 1,错误用法一: if (name == "") { //do something } 2,错误用法二: if (name.equals("")) { //do something } 3,错误用法三: if (!name.equals("")) { //do something } 我们来解说一下: 上述错误用法1是初学者最容易犯,也最不容易被发现的错误,因

为什么在后台代码页面用FCKeditor1.Value取值的时候为空字符串啊

问题描述 前台其实已经输入值了. 解决方案 解决方案二:whereisyourdaima?解决方案三:给出你前台控件引用的写法和后台取值的代码来看一下

Oracle数据库中对null值的排序及mull与空字符串的区别_oracle

order by排序之null值处理方法在对业务数据排序时候,发现有些字段的记录是null值,这时排序便出现了有违我们使用习惯的数据大小顺序问题.在Oracle中规定,在Order by排序时缺省认为null是最大值,所以如果是ASC升序则被排在最后,而DESC降序则排在最前.所以,为何分析数据的直观性方便性,我们需要对null的记录值进行相应处理. 这是四种oracle排序中NULL值处理的方法:1.使用nvl函数语法:Nvl(expr1, expr2)     若EXPR1是NULL,則返回

Gson解析空字符串发生异常的处理方法_java

前言 在实际开发项目中,服务器经常会用空字符串 "" 作为返回结果表示空值 ,但这在Gson当中就会遇到问题,如果这项数据的类型不是字符串,Gson解析就会报错 Json异常情况 先来看一个后台返回的json 正常情况下json: { "code":0, "msg":"ok", "data":{ "id":5638, "newsId":5638 } } data部分对

android-数据库中的空字符串

问题描述 数据库中的空字符串 在SQL数据库中的表: CREATE TABLE Book(_id INTEGER PRIMARY KEY AUTOINCREMENT, Name TEXT NOT NULL) 在代码运行后,没有指定的异常出现: ContentValues args = new ContentValues(); args.put("Name", ""); long id = db.insertOrThrow("Book", null