您的浏览器过于古老 & 陈旧。为了更好的访问体验, 请 升级你的浏览器
Ready 发布于2014年09月14日 06:55

原创 PHP 删除cookie详解

460 次浏览 读完需要≈ 4 分钟

内容目录

在PHP中,我们可以使用setcookie()函数来设置浏览器的Cookie信息。

常见的设置cookie的示例代码如下:

<?php

$name = 'mycookie'; // cookie名称
$value = 'CodePlayer'; // cookie值
$expire = time() + 3600 * 24 * 7; // 过期时间 7天
$path = '/'; // 设置可以使用该cookie的路径,'/'表示站点根目录,该目录及所有子目录中均可访问该cookie。

// 设置一个cookie
setcookie( $name, $value, $expire, $path );

?>

不过,我们想要删除Cookie信息的话,又该怎么办呢。PHP并没有提供另外一个专门用来删除Cookie的函数,而是直接使用setcookie()函数来删除Cookie信息,我们只需要将过期时间更改为当前时间之间的时间即可。

<?php
// 设置cookie已过期,浏览器即可删除该cookie。此时可以为任意值。
setcookie( 'mycookie', 'CodePlayer', time() - 3600, '/' );

// 或者

// 将过期时间直接设为0,表示1970-1-1(已经过期了),可以避免time()及数学运算的消耗
setcookie( 'mycookie', 'CodePlayer', 0, '/' );
?>

此外,我们还可以将Cookie的值设为空字符串("")或null,也可用来删除Cookie。

<?php
/* 删除cookie */


setcookie('mycookie', '');
// 或者
setcookie('mycookie', null);
?>

这样就完了吗?No!如果你直接如上使用空字符串或null的方式来删除Cookie,可能会导致对应的cookie无法删除

当然,上述删除Cookie的方式是没有错的,错的是我们没有在删除Cookie时指定路径(第4个参数)。如果没有指定路径参数,则路径默认为当前请求URL所在目录。如果你设置Cookie时的路径与删除Cookie时的路径不一致,将无法删除该Cookie。

<?php
// 当前请求为:"/abc/cookie.php"


// 在路径"/"下设置cookie
setcookie( 'mycookie', 'CodePlayer', time() + 3600 * 24 * 7, '/' );

// 注意:这样删除是无效的,因为默认路径为当前目录,即:"/abc/"
// setcookie( 'mycookie', '');

// 删除路径"/"下设置的名为"mycookie"的cookie,此时时间值可随意,哪怕未过期也行
setcookie( 'mycookie', '', 0, '/');
?>
  • CodePlayer技术交流群1
  • CodePlayer技术交流群2

0 条评论

撰写评论