`
adsen
  • 浏览: 14231 次
文章分类
社区版块
存档分类
最新评论

php 删除cookie有效方法

 
阅读更多
php 删除cookie有效方法
关于删除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的方法就是把这个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手册中完全没有说明。

最后阅读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,当然这些手册中并没有。
http://www.111cn.net/phper/21/f0eace11b1229a0f2c7c54e3c1ea4654.htm
分享到:
评论

相关推荐

    php 删除cookie方法详解

    本文简单介绍了关于php删除cookie的方法,就是设置cookie有效期或者为空,非常实用的小技巧,这里推荐给大家。

    史上最全PHP5基础精讲教程

    网上收集而来的PHP专题精讲文档,免积分给大家分享,所有代码全部测试通过。 9个实用的PHP函数.doc Output Control输出函数.doc PHP5.3的重要特性 命名空间.doc PHP5文件的操作(PHP100...研究批量删除数据的方法.doc

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    PHP 设置COOKIE,并且加密COOKIE函数 PHP不缓存数据头 PHP伪造IP PHP全角半角转换函数 PHP农历函数 PHP分页函数 PHP判断字符串是否UTF8格式 php判断爬虫函数 PHP判断远程文件是否存在 PHP图片处理类:缩略...

    php cookies中删除的一般赋值方法

    php cookies中删除的一般赋值方法 cookie 常用于识别用户。cookie 是服务器留在用户计算机中的小文件。每当相同的计算机通过浏览器请求页面时,它同时会发送 cookie。通过 php,您能够创建并取回 cookie 的值 语法 ...

    PHP网络编程技术与实践 源码

    8.1.4 删除Cookie变量 8.1.5 Cookie的有效范围和生存周期 8.2 Session的使用 8.2.1 初始化Session 8.2.2 在Session中注册变量 8.2.3 使用Session的值 8.2.4 Session的销毁 8.2.5 其他Session函数使用说明 8.3 本章小...

    PHP+Ajax网站开发典型实例

    实例7 检查日期的有效性 实例8 简单猜数游戏 实例9 验证信用卡号 实例10 计算两个数组并、交和差 实例11 数组排序 第2章 PHP文件实例 实例12 获取文件信息 实例13 文件写入并锁定 实例14 读取文件信息 实例...

    PHP+Ajax网站开发典型实例-源代码

    实例7 检查日期的有效性 实例8 简单猜数游戏 实例9 验证信用卡号 实例10 计算两个数组并、交和差 实例11 数组排序 第2章 PHP文件实例 实例12 获取文件信息 实例13 文件写入并锁定 实例14 读取文件信息 实例15 随机...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例261 删除客户端的COOKIE 343 实例262 使客户端浏览器支持COOKIE 344 5.2 SESSION 345 实例263 掌控登录用户的权限 346 实例264 屏蔽页面刷新对计数器的影响 347 实例265 在不同页面之间传递数据 348 实例266 ...

    PHP和MySQL Web开发第4版pdf以及源码

    《php和mysql web开发(原书第4版)》:开发人员专业技术丛书。 目录 读者反馈 译者序 前言 作者简介 第一篇 使用PHP 第1章 PHP快速入门教程 1.1 开始之前:了解PHP 1.2 创建一个示例应用:Bob汽车零部件商店 ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例261 删除客户端的COOKIE 343 实例262 使客户端浏览器支持COOKIE 344 5.2 SESSION 345 实例263 掌控登录用户的权限 346 实例264 屏蔽页面刷新对计数器的影响 347 实例265 在不同页面之间传递数据 348 实例266 ...

    PHP和MySQL WEB开发(第4版)

    21.1.4 使用checkdate()函数检验日期有效性 21.1.5 格式化时间戳 21.2 在PHP日期格式和MySQL日期格式之间进行转换 21.3 在PHP中计算日期 21.4 在MySQL中计算日期 21.5 使用微秒 21.6 使用日历函数 21.7 进一步学习 ...

    PHP框架Kohana v3.3.1.zip

    *所有数据插入到数据库是避免使用数据库特定方法,如mysql_real_escape_string,以防止SQL注入攻击。Kohana里的magicquotes是被关闭的。 *所有POST,GET,和COOKIE数据都经过处理,以防止恶意行为。 更轻量级以最...

    PHP3程序设计

    16.3.4 有效及形式好的文档 257 16.4 文档类型定义(DTD) 258 16.4.1 一般形式 258 16.4.2 ELEMENT关键字 258 16.4.3 ATTLIST关键字 260 16.4.4 ENTITY关键字 262 16.4.5 NOTATION关键字 263 16.5 XML应用程序 264 ...

    PHP和MySQL Web开发第4版

    《php和mysql web开发(原书第4版)》:开发人员专业技术丛书。 目录 读者反馈 译者序 前言 作者简介 第一篇 使用PHP 第1章 PHP快速入门教程 1.1 开始之前:了解PHP 1.2 创建一个示例应用:Bob汽车零部件商店 ...

    kohana 3.3.1.zip

    *所有数据插入到数据库是避免使用数据库特定方法,如mysql_real_escape_string,以防止SQL注入攻击。Kohana里的magicquotes是被关闭的。 *所有POST,GET,和COOKIE数据都经过处理,以防止恶意行为。 更轻量级以最...

    SecureHeaders:一个旨在更轻松地使用浏览器安全功能PHP库

    特征轻松添加/删除和管理标题建立内容安全策略,或将多个策略组合在一起内容安全政策分析使用任意框架轻松进行整数化(看看HttpAdapter) 保护设置错误的Cookie 严格模式安全模式可防止在使用HSTS或HPKP时出现意外的...

    TeambitionShare:挂载Teambition文件可直链共享支持网盘(需申请)和项目文件(无需邀请码)

    1.Cookie有效期目前未遇到Cookie失效的情况,即使只要你不在官网手动退出登录就不会失效2.下载速度下载速度有些偏差,有时快有时慢(1MB / S); 3.访问密码①)全局密码在config / app.cfg.php中添加'password' =&gt; ...

    TeambitionNET

    #这是一个TeambitionShare修改版本,因为原版本不支持Teambition国际版,这次修改过,以支持国际版本,欢迎使用。欢迎入群交流~~~ tg: tg群: ...1.Cookie有效期 目前未遇到cookie失效的情况,猜测只要你

    魅E音乐系统 Me Music v3.0.zip

    11、Cookie 音乐防盗链技术(有效的保护你的音乐文件以防被盗链); 12、详细的歌曲信息显示(包括发布时间、总人气、今日人气等); 13、会员注册及管理(“普通会员”和“认证会员”两个级别控制); 14、会员...

    淘客帝国v5.12完美破解版

    批量删除缓存:后台也可以手动批量删除缓存功能,无需在用FTP删除! 前台风格切换:后台模板风格切换,支持四种风格! 后台广告管理:后台可以对网站的广告位进行管理 首页综合配置:配置首页的广告,店铺,商品等! ...

Global site tag (gtag.js) - Google Analytics