在php中,如何销毁会话变量

时间:2013-02-08 10:17:20

标签: php session

我的问题是运行下面的代码时没有取消设置会话变量。 怎么了?

<?php  
 session_start();
 session_unset();
 //session_destroy();
 header("location: user_form.php");
?> 

4 个答案:

答案 0 :(得分:3)

您实际上并未创建会话引擎启动但未创建会话变量的会话。 例如,如果您有一个会话变量$ _SESSION ['userid'],那么您可以取消设置该值或使其过期,或将其值设置为使您的标题重定向的if子句失败的值。

答案 1 :(得分:2)

通常我会这样做:

<?php  
 session_start();

 if(!empty($_SESSION) && is_array($_SESSION)) {
     foreach($_SESSION as $sessionKey => $sessionValue)
         session_unset($_SESSION[$sessionKey]);
 }

 session_destroy();

 header("Location: user_form.php");
?> 

答案 2 :(得分:1)

尝试使用此语法(在未设置中使用变量名称):

 <?php
    session_start();
    if(isset($_SESSION['views']))
      unset($_SESSION['views']);
    ?>

答案 3 :(得分:0)

我猜你的会话集中已经有变量,否则没有什么可以“取消设置”。

使用session_unset,会话本身仍然存在,因为它只相当于:

$_SESSION = array();

除非您使用的是PHP 4.0.6或更低版本,否则您应该使用:

unset ($_SESSION['varname']);

根据session_unset

您的代码没有任何“错误”可以这么说。