【问题标题】:Why should we destroy session in php?为什么我们要在 php 中销毁 session?
【发布时间】:2016-08-04 17:37:27
【问题描述】:

session_destroy() 销毁会话数据,但不会取消设置任何与会话关联的全局变量或取消设置会话 cookie。

那么我们为什么要销毁会话呢?

我们可以在每次会话从页面开头开始时在页面末尾销毁会话,同时提供相同的功能而不销毁吗?

【问题讨论】:

  • session_destroy 并没有很好地完成预期的工作,try this approach
  • 使用session_destroy()后,会话cookie被移除,会话不再存储在服务器上。 $_SESSION 中的值可能仍然可用,但它们不会在下一页加载时出现。

标签: php session


【解决方案1】:

session_destroy() 将删除会话文件(如果使用文件存储)。否则会话文件将驻留在服务器上,直到垃圾收集将其删除。因此,如果您想确保从服务器中删除存储的会话数据,您必须调用 session_destroy()。

不要在每一页上都调用它!只有在用户退出后,您不再需要存储的信息。

【讨论】:

  • 是否可以破解会话文件中的数据?即使我们不删除 session_destroy,仅通过取消设置会话变量我们的数据是否安全?
【解决方案2】:

您的正确方法应该是运行 session_destroy,然后重新加载页面以强制会话更改操作(例如 cookie 删除)起作用,然后 PHP 中的会话数据重新加载并在页面上更新重新加载。

在运行会话销毁之前,您还应该“手动”清理会话:

<?php
session_start();

if(count)$_SESSION > 0) {
// Or some other more specific cursory check if the session is populated 
    $_SESSION = array("","","",""); 
    session_destroy();
    header("Location: thispage.php");
    exit;
    }

...
Page continues....

另外请参考this answer,了解如何删除客户端浏览器上的会话cookie。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-27
    • 2012-01-30
    • 1970-01-01
    相关资源
    最近更新 更多