如果 PHP 中的键以 X 开头,则删除 cookie

Posted

技术标签:

【中文标题】如果 PHP 中的键以 X 开头,则删除 cookie【英文标题】:Delete a cookie if the key start by X in PHP 【发布时间】:2016-03-05 06:17:36 【问题描述】:

我有一些由 XYZ 开始的 cookie,我想在用户访问特定路由时取消设置它们。

所以我编码:

foreach ($_COOKIE as $key => $value)
        if (preg_match('/^XYZ/', $key))
            unset($_COOKIE[$key]);

但是饼干还在。 我真的不明白,因为当我这样做时:

foreach ($_COOKIE as $key => $value)
        if (preg_match('/^XYZ/', $key))
            echo($_COOKIE[$key]);

...它的工作原理。所以我想知道是否可以像上面那样取消设置 cookie。

【问题讨论】:

如果 substr 也能正常工作(可能更快),为什么还要用 preg_match 让它变得复杂? 【参考方案1】:

你可以试试这个——

foreach ($_COOKIE as $key => $value) 
    if (strpos($key, 'XYZ') === 0)  // check if name starts with 'XYZ'
         setcookie($key, "", (time() - 3600) ); // Set the time which already expired
    

preg_match -

if (preg_match('/^XYZ/', $key)) 
     setcookie($key, "", (time() - 3600) );

【讨论】:

问题是删除 cookie,您正在从数组 $_COOKIE 中取消设置一些数组元素 我首先编写您的代码,但我更喜欢使用 preg_match 的代码语义。顺便说一句,两者都不能用于取消设置 cookie,但可以用于回显值。 谢谢,但威廉将解决方案放在首位。他得到了选票。谢谢你的解释。【参考方案2】:

重置 cookie,如:

setcookie($key,"",time()-3600);

【讨论】:

所以这行代码实际上并没有取消设置cookie,而是将其重置为空值,尽管我们认为它正在取消设置,因为它有点清除cookie值......所以通过这样做,您可以根据需要取消设置 cookie,就是这样......完成

以上是关于如果 PHP 中的键以 X 开头,则删除 cookie的主要内容,如果未能解决你的问题,请参考以下文章

PHP文件操作函数及文件指针理解

php通过sort()函数给数组排序的方法

Redis中的LRU淘汰策略分析

PHP 协程示例A

PHP 协程示例A

如何使主键以特定字母开头?