【问题标题】:getting session variable even after session destroy即使在会话销毁后获取会话变量
【发布时间】:2014-05-25 20:12:42
【问题描述】:

我是 php 的新手。即使在 session_destroy() 和 session_unset() 之后,我也无法理解会话变量正在输出的东西。这是我的简单测试代码

`session_start();
 SESSION['name']='sovon';
 session_destroy();
 session_unset($_SESSION['name']);
 echo $_SESSION['name'];

`

输出是“sovon”。我的问题 session_destroy() 和 session_unset() 在这里做什么,它们之间有什么区别? 哦!当我删除 session_destroy() 时,该变量正在取消设置。为什么?

【问题讨论】:

  • 交换未设置和销毁的顺序。
  • Truly destroying a PHP Session? 的可能重复项
  • 使用$_SESSION = null;除此之外,这没有用例,在同一个请求中启动和销毁会话

标签: php apache session


【解决方案1】:

我自己找到了答案。当我将 Session_destroy() 写入另一个 php 文件并回显该变量时,它不输出但在同一页面中输出。任何解释为什么会发生这种情况?

【讨论】:

    【解决方案2】:

    我明白了,如果 session_distroy 在其他页面中创建,它会破坏会话。如果会话变量是在同一页面上创建的,那么它将保留。最佳做法是在 session distroY $_SESSION = NULL; 之后将 session 变量清空

    就像我在注销时使用的一样,

    session_start();
    session_distory();
    $_SESSION = NULL;
    header('Location: Login.php');
    

    我认为这对你有帮助。

    【讨论】:

    • 这个答案全是错别字
    【解决方案3】:

    如果您阅读 php manual 可能会更容易。

    session_destroy() 
    

    session_destroy() 销毁所有与当前关联的数据 会议。它不会取消设置与 会话,或取消设置会话 cookie。使用会话变量 再次,必须调用 session_start()。

    所以如果你想取消设置里面的数据。您必须取消设置。

    unset($_SESSION);
    

    会话未设置...

    session_unset()
    

    删除所有变量并保留 session_id。但是session_unset没有参数。

    你搜索的是什么

    unset($_SESSION['name']);
    

    【讨论】:

    • 如果 session_destroy() 破坏了整个会话,为什么变量在销毁后输出值?
    • unset($_SESSION) 为请求的其余部分禁用会话功能。不要那样做。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 1970-01-01
    • 2015-05-12
    • 2018-01-21
    • 1970-01-01
    相关资源
    最近更新 更多