我只想销毁所有的$_COOKIES信息,但不想销毁$_SESSION中的信息/数据,所以我使用下面的代码,但是它也销毁了我所有的$_SESSION数据,这不是我想要的,
// Destroy all cookies.
foreach ( $_COOKIE as $key => $value ){
setcookie( $key, "", time()-1800, '/' );
}但是,如果我逐个取消设置$_SESSION数据,则$_COOKIES数据仍未销毁,例如,
setcookie('accept_terms_conditions', "", time()-1800, '/');为什么foreach代码也会破坏$_SESSION。我能只毁掉$_COOKIES吗?
发布于 2013-09-25 08:47:50
当您启动会话时,PHPSESSID将被添加到$_COOKIE数组中,在使用foreach设置setcookie时,会重新设置该数组。
你可以试试这个:
// Destroy all cookies.
foreach ( $_COOKIE as $key => $value ){
if($key != 'PHPSESSID'){
setcookie( $key, "", time()-1800, '/' );
}
}发布于 2013-09-25 08:50:53
会话通常(它是php.ini参数)使用cookie。所以你必须在你想要销毁的曲奇上过滤,而不是破坏会话使用的曲奇。cookie名称在默认情况下是"PHPSESSID",但是它可能是其他的东西,可以使用session_name()来获取它。
foreach ( $_COOKIE as $key => $value ){
if ( $key != session_name() ) {
setcookie( $key, "", time()-1800, '/' );
}
}https://stackoverflow.com/questions/19000173
复制相似问题