首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:只销毁$_COOKIES,而不销毁$_SESSION?

PHP:只销毁$_COOKIES,而不销毁$_SESSION?
EN

Stack Overflow用户
提问于 2013-09-25 08:44:53
回答 2查看 2.1K关注 0票数 1

我只想销毁所有的$_COOKIES信息,但不想销毁$_SESSION中的信息/数据,所以我使用下面的代码,但是它也销毁了我所有的$_SESSION数据,这不是我想要的,

代码语言:javascript
复制
// Destroy all cookies.
foreach ( $_COOKIE as $key => $value ){
    setcookie( $key, "", time()-1800, '/' );
}

但是,如果我逐个取消设置$_SESSION数据,则$_COOKIES数据仍未销毁,例如,

代码语言:javascript
复制
setcookie('accept_terms_conditions', "", time()-1800, '/');

为什么foreach代码也会破坏$_SESSION。我能只毁掉$_COOKIES吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-25 08:47:50

当您启动会话时,PHPSESSID将被添加到$_COOKIE数组中,在使用foreach设置setcookie时,会重新设置该数组。

你可以试试这个:

代码语言:javascript
复制
// Destroy all cookies.
foreach ( $_COOKIE as $key => $value ){
    if($key != 'PHPSESSID'){
        setcookie( $key, "", time()-1800, '/' );
    }
}
票数 9
EN

Stack Overflow用户

发布于 2013-09-25 08:50:53

会话通常(它是php.ini参数)使用cookie。所以你必须在你想要销毁的曲奇上过滤,而不是破坏会话使用的曲奇。cookie名称在默认情况下是"PHPSESSID",但是它可能是其他的东西,可以使用session_name()来获取它。

代码语言:javascript
复制
foreach ( $_COOKIE as $key => $value ){
    if ( $key != session_name() ) { 
        setcookie( $key, "", time()-1800, '/' );
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19000173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档