内容目录
在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, '/');
?>
0 条评论
撰写评论