PHP删除cookie的一个小秘密

删除Cookie的解决方法(PHP) 在循环中,我们使用setcookie()函数将每个Cookie的值设置为空字符串,并将过期时间设置为过去的时间戳,从而删除这些Cookie。在上面的示例中,我们首先使用setcookie()函数设置了一个名为"cookie_name"的Cookie,值为"cookie_value",并将过期时间设置为当前时间加上3600秒(即1小时后)。在上面的示例中,我们首先使用setcookie()函数设置了三个不同的Cookie,分别是"cookie1"、“cookie2"和"cookie3”。 阅读详情
今天看到的一个小技巧。 
原文:http://www.eb163.com/club/thread-1712-1-1.html 

首先我们看一下php手册中关于删除cookie的说明

------以下引用php手册内容--------------
bool setcookie ( string name [, string value [, int expire [, string path [, string domain [, bool secure]]]]] )

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

补充: 也就是中 Unset($_COOKIE['test_cookie']);是无法去掉cookie的;


下面的例子说明了如何删除刚才设置的 cookie: 例子 2. setcookie() 删除
例子

// 将过期时间设为一小时前
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手册中完全没有说明.

最后阅读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,当然这些手册中并没有。
ArcMap新手必看:Shape属性中的点ZM值到底是什么?如何快速处理 本文深入解析ArcMap中Shape属性中的点ZM值,揭示其在GIS数据中的隐藏维度作用,包括Z值(高程值)和M值(测量值)。针对ZM值可能引发的服务发布问题,提供三种高效处理方案,帮助新手快速掌握数据导入时的ZM值管控策略及精准去除方法。 阅读详情

相关推荐

BUUCTF逆向题Youngter-drive

其实线程一代码我自己也不大理解,看了正确的 flag 后,我自己推出来的是这样:在 couece 中取出字符,然后在 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 中找出一样的,取出该字符在 QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm 中的下标,如果取出的字符是大写则 在ASCII中找出【下标 - 38】值对应的字符替换couece中的字符,同理,小写就减 96。

于高山之巅,方见大河奔涌;于群峰之上,更觉长风浩荡。 1095

浏览器cookie怎么清除,彻底清除上网痕迹只需这几步

很多用户对cookie不是很了解,我们使用windows系统电脑浏览各个网站的时候都会产生cookie,cookie记录用户名、密码等信息。显而易见的是,cookie和网络隐私安全息息相关,有些恶意网站会利用cookie来侵犯用户隐私安全。因此清理cookie可以确保一些隐私信息不被泄露,还能提高系统运行速度。那么,我们如何彻底清除cookie以及上网痕迹呢?...

m0_69916115的博客 4万+

NC65增加自定义参照并且参照数据要根据选择的财务组织过滤

1、首先定义一个参照类 package nc.pub.jzcm.ref; import nc.ui.bd.ref.AbstractRefModel; import nc.ui.bd.ref.IRefDocEdit; import nc.ui.bd.ref.IRefMaintenanceHandler; public class PMPrPayDefaultRefModel extends AbstractRefModel { public PMPrPayDefaultRefModel(){ ...

xyl的博客 3495

如何使用PHP删除cookie?

需要注意的是,删除cookie的操作必须在发送任何HTML内容到浏览器之前进行,因为cookie是通过HTTP头信息发送的。而且,删除操作不会立即生效,它会在下一次浏览器加载页面时生效,因为HTTP头信息只有在页面加载时才会被发送和接收。但是,如果你明确设置了过期时间(即使是一个很远将来的时间),那么cookie就会持久保存在浏览器中,直到那个时间到来。函数,并且把cookie的过期时间设置为一个已经过去的时间,这样浏览器就会认为这个cookie已经“过期”了,然后把它删除。函数返回当前的时间戳,

长风破浪会有时的博客 800

AVL_Cruise_interface\Simulink联合仿真

分享了AVL_Cruise通过interface模块与Simulink进行联合仿真的过程

qq_64735036的博客 2679

从 0 搭建一个智能问答工单系统:低代码 + 大模型的实战融合方案

企业智能问答工单系统解决方案:通过橙武低代码平台集成DeepSeek大模型,实现自动化工单处理与智能问答。系统能自动匹配知识库、分类工单,支持多渠道接入,显著提升响应效率(答复时间从12小时降至5分钟)。采用MySQL8表结构设计,结合向量数据库实现语义搜索,客服人力需求减少70%。系统支持知识库持续优化,AI答复满意度达88%,助力企业低成本构建智能客服中台。

欢迎来到我的优快云博客!我专注于技术创新和数字化转型,特别是在低代码平台、人工智能和大数据分析领域的探索与应用。通过深入分析各种行业案例,帮助企业加速数字化进程,提升运营效率与创新能力。在这里,您将找到关于低代码平台、AI技术、数据分析与 1549

如何在PHP中删除一个已存在的Cookie?

函数必须在发送任何HTML标签之前调用,因为它会向浏览器发送一个特殊的HTTP头信息来设置或删除Cookie。函数,但是这次我们要给它的值设置为空(''),并且设置一个过去的过期时间。这样,浏览器就会知道这个Cookie已经“过期”了,于是就会把它扔掉。函数来创建一个新的Cookie,但同样也可以用它来删除一个已经存在的Cookie。这样,当浏览器看到这个过期时间时,就会知道这个Cookie已经无效了。为了让Cookie立即过期,我们可以将过期时间设置为一个过去的时间戳,比如。在PHP中,我们使用。

长风破浪会有时的博客 531

从东南大学906被刷到调剂过程(内含个人感想)

介绍了自己在看到初试成绩,到后期复习以及调剂的全过程,当中也包含了自己的复试中的感想,希望大家理性看待。

Philo的博客 2856

如何删除Cookie

例如,在用户登出系统后应立即删除与登录状态相关的Cookie,避免潜在的安全风险。通过不断学习和实践,我们可以更加深入地理解Cookie的工作机制,从而提升整体项目的质量和安全性。有时候,仅仅设置过期时间可能不足以删除特定的Cookie,特别是当Cookie设置了特定的路径或域时。希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。这是最常见也是最有效的方式,通过将Cookie的过期时间设置为一个过去的时间点,告诉浏览器立即清除该Cookie。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 2599

【车载以太网测试从入门到精通】系列文章目录汇总

物理层测试、数据链路层测试、以太网交换机测试、网络层测试、传输层测试、以太网TCP/IP协议自动化测试、以太网网络管理测试、以太网网络管理自动化测试、鲁棒性测试、SOME/IP测试、SOMEI/IP服务接口自动化测试、DoIP诊断测试、DoIP诊断自动化测试、DoIP BootLoader刷写、以太网网关路由测试、以太网网关路由自动化测试、AVB测试。

测试领域技术分享 3162

【01】Python解释器的安装

工欲善其事必先利其器。君欲学PYthon,则必先安装Python解释器。安装过程相对简单,大致跟着如下步骤走即可。

侯小啾技术博客 1258

php中会话控制包括什么,PHP 会话控制

PHP的会话控制,Cookie和Session。会话控制HTTP无状态,会话状态。keep-live使用同一个TCP连接来发送和接收多个HTTP请求/应答,而不是为每一个新的请求/应答打开新的连接的方法Cookie让服务器知道客户是谁。保存在客户端。内存cookie有保存在浏览器中,有保存在硬盘中的。bool setcookie ( string $name [, string $value = ...

weixin_31082779的博客 341

chromium通信系统-ipcz系统(二)-ipcz系统代码实现-同Node通信

在chromium通信系统-mojo系统(一)-ipcz系统基本概念一文中我们介绍了ipcz的基本概念。 本章我们来通过代码分析它的实现。 handle系统 为了不对上层api暴露太多细节,实现解耦,也方便于传输,ipcz系统使用handle表示一个对象,handle类似于文件描述符,用IpczHandle类型表示ipcz系统内的一个对象。一个可以用IpczHandle 句柄表示的对象必须是APIObject子类。APIObject数据结构如下 class APIObject : public RefCou

woai110120130的专栏 1775

PHP 中的 Cookie 和会话:如何在PHP中创建、访问和删除Cookie?

通过使用 $_COOKIE 超全局数组并访问与所需 cookie 相对应的特定密钥,开发人员可以在 PHP 中检索 cookie 的存储值。在编辑器中运行上述代码以获得更好、更清晰的解释。在 PHP 中设置 cookie 时,开发人员可以指定 cookie 的名称和值,以及可选参数,例如过期时间、域、路径和安全标志。通过以这种方式更新cookie,客户端的浏览器将在后续请求中接收新的cookie值。通过将到期时间设置为早于当前时间的时间,浏览器会将 cookie 视为已过期,并将其从客户端的浏览器中删除。

新华编程特战队 2002

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

清除浏览器中的cookie以解决IP地址混乱造成的网站禁用问题

通过清除或禁用第三方cookie来解决IP地址混乱导致的网站禁用问题

m0_74353785的博客 3705

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

【Chrome】用户可以手动管理和删除第三方Cookie

通过以上步骤,你可以有效地管理和删除Google Chrome浏览器中的第三方Cookie,从而提升你的隐私保护水平。如果你需要定期管理Cookie,建议使用隐私扩展程序或隐私浏览模式来简化这个过程。如果还有其他问题或需要进一步的帮助,请告诉我。

LuckiBit 5154

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Chrome浏览器中清除特定网站的Cookie数据

清除Chrome浏览器特定网站的cookie数据的几种方法

爬楼梯的巨人的博客 2万+

php中清除cookie_PHP清除Cookie

当 Cookie 被创建后,如果没有设置它的失效时间,其 Cookie 文件会在关闭浏览器时被自动删除,如果要在关闭浏览器之前删除 Cookie 文件,同样需要使用 setcookie() 函数。删除 Cookie 和创建 Cookie 的方式类似,只需要使用 setcookie() 函数将 Cookie 的值(也就是第二个参数)设置为空,或者将 Cookie 的过期时间(也就是第三个参数)设置为...

weixin_42516040的博客 627

什么是cookie,如何设置在浏览器页面关闭后清除cookie

要在浏览器关闭后清除Cookie,可以通过设置Cookie的过期时间来实现。通常情况下,如果不设置Cookie的过期时间,它将成为会话Cookie,只在浏览器打开期间有效,一旦关闭浏览器,这些Cookie就会被删除。常用于记录用户的偏好设置、购物车内容、登录状态等。网站可以在用户访问时将Cookie存储在用户计算机上,然后在后续访问时从中读取信息。无论采用哪种方式,设置了过期时间的Cookie在浏览器关闭后都会被立即清除。需要注意的是,删除Cookie的操作也需要与设置Cookie时相同的路径和域名。

子玉的博客 5707

js关闭浏览器清除cookie_如何在Chrome浏览器中清除特定网站的Cookie数据

当我们在网站上遇到错误时,经常会用到的一个方法就是清除Cookie,清除网站的Cookie和网站数据来重置本地的缓存,很多客户端引起的错误都可以使用该方法修复,但是在清除Cookie时有一个问题是使用浏览器更多中的清除浏览数据功能会直接清除所有网站的Cookie和数据,会多达几百甚至上千个,清理之后很多网站都需要重新登陆,这样非常的麻烦,所以本文中我们来分享几个方法让你只清除特定网站的C...

weixin_39984661的博客 1892

PHP 设置与删除cookie

1.设置cookie PHP设置Cookie的最常用方法是setcookie函数,setcookie函数有7个可选 参数,目前最常用的是前5个。 name(Cookie名):可以通过$_COOKIR['name']进行访问 value(Cookie的值) expire(过期时间)Unix时间戳格式,默认为0,表示浏览器关闭即失效 path

actorWen的博客 1500

php中清除cookie_php 如何清除 cookie

php清除cookie的方法:首先通过setcookie创建cookie;然后使用“setcookie('test',time() - 3600 );”方法清除建立的cookie即可。PHP 清除COOKIE? PHP无法删除COOKIE?设置COOKIE有效期PHP 透明地支持 HTTP cookie, cookie是一种在远程浏览器端存储数据并以此来跟踪和识别用户的机制。可以用setcook...

weixin_35647541的博客 525

PHP中cookie删除,深入分析PHP 删除cookie教程

cookie是一个存储在用户本地的一个小的文本文件了我们可以通过浏览器来访问它,下面我们来看看关于PHP 删除cookie的一些事项。要删除 cookie 需要确保它的失效期是在过去,才能触发浏览器的删除机制在php中,我们可以使用setcookie()函数来设置浏览器的Cookie信息。常见的设置cookie的示例代码如下:$name = 'mycookie'; // cookie名称$valu...

weixin_35772916的博客 295

php删除用户的cookie,php如何删除cookie

php删除cookie的方法:1、将cookie的值设置为空,语句为“setcookie('cookiename', '')或者setcookie(cookiename, NULL);”;2、将cookie的过期时间设置为“过去”。推荐:《PHP视频教程》php删除/清除cookie的两种方法php清楚cookie有两种方法,第一种方法是将cookie的值设置为空,第二种方法是直接把cookie的...

weixin_36170708的博客 316
上一篇: php5.2下添加php_mongo.dll扩展无法使用的原因及解决办法
下一篇: 你不了解PHP的10件事情
abcddtt
博客等级 码龄18年 1粉丝 50原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值