【问题标题】:how do I remove an empty key completely from $_SESSION array in php?如何从 php 中的 $_SESSION 数组中完全删除一个空键?
【发布时间】: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


【解决方案1】:

试试这个

    unset($_SESSION['name']);

How to remove a variable from a PHP session array

【讨论】:

  • 这是否意味着我必须像这样从 $_SESSION 数组中清除所有变量。我在 $_SESSION 中存储了很多变量,如果是,那么 session_destroy(); 需要什么
【解决方案2】:

反转您的会话销毁顺序。

变化:

$_SESSION=array();
session_destroy();

收件人:

session_destroy();
$_SESSION=array();

【讨论】:

  • 不,它也不起作用。我认为这与 PHPSESSID cookie 有关,您知道如何使该 cookie 过期吗?
  • 这让我很烦......如果你将 $_SESSION 设置为一个空数组,那么一切都应该消失了!如果你取消设置($_SESSION)会发生什么?
  • 我研究了一下,它与PHPSESSID cookie有关。你能告诉我如何让它过期。示例在这里:7php.com/…
  • @RabiaRanaKhan 查看 session_destroy 的手册,那里解释了如何删除会话 cookie。
  • 虽然我怀疑那是真的。 PHP 应该只能获取具有相同 ID 的空会话,因为调用了 session_destroy。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 2021-07-23
  • 2021-11-22
  • 1970-01-01
相关资源
最近更新 更多