【发布时间】:2017-07-06 02:30:48
【问题描述】:
我通过以下命令开始会话:
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();之后保存的数据?
【问题讨论】:
-
当他们注销时,您在
$_SESSION=array(); session_destroy();之前是session_start();吗? -
是的,我 session_start();在登录和 session_destroy() 之前;注销期间
-
你能展示最小的工作示例代码吗?
-
不,您必须在他们注销时调用
session_start(),在$_SESSION=array(); session_destroy();之前调用,否则没有$_SESSION数组并且没有要销毁的会话。 -
我也这样做,我 session_start();在每个页面的顶部,因此也在 session_destroy() 之前的注销页面上;
标签: php arrays session cookies destroy