如何从php中的$ _SESSION数组中完全删除空键?

时间:2017-02-16 19:37:15

标签: php arrays session cookies destroy

我按照以下命令启动会话:

session_start();

当用户登录时,我在$_SESSION中保存该用户的信息 使用以下代码:

$_SESSION["logged_in_user"]=$username;  
$_SESSION["logged_in_status"]="logged in";
$_SESSION["logged_in_business_id"]=$business_id;
$_SESSION["logged_in_business"]=$business_name;

当用户注销时,我执行以下命令来清除$_SESSION

setcookie("PHPSESSID", "", time()-3600, "/" );
$_SESSION=array();
session_destroy();
session_write_close();

现在,当我在注销后和登录前检查$_SESSION时,结果是一个空数组(),这正是它应该是的。但是,只要我登录$_SESSION,我不仅会显示我保存在其中的信息,还会显示填充键的空值,例如:

Array(
[logged_in_user] => aristocraticmasterminder
[logged_in_status] => logged in
[logged_in_business_id] => us-000000001
[logged_in_business] => Microsoft PLC Limited
[RoleID] => 
[RoleName] => 
[RoleDuty1] => 
);

这些键没有保存在与它们对应的$_SESSION中的任何值。我session_start();位于每个页面的顶部,因此也在session_destroy();之前的注销页面上我认为这与保存在浏览器上的PHPSESSID cookie有关。如何清除这些空键并保存session_start();后保存的数据?

2 个答案:

答案 0 :(得分:0)

试试这个

    unset($_SESSION['name']);

How to remove a variable from a PHP session array

答案 1 :(得分:0)

撤消会话销毁序列。

变化:

$_SESSION=array();
session_destroy();

要:

session_destroy();
$_SESSION=array();