为什么我们要破坏php中的会话


Why should we destroy session in php?

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

那么我们为什么要破坏会话呢

每次会话在页面开始时,我们是否可以在页面末尾销毁该会话,从而在不销毁的情况下提供相同的功能?

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

不要在每一页上都这样称呼!只有在用户注销并且您不再需要存储的信息之后。

您的正确方法应该是运行session_disation,然后重新加载页面以强制执行会话更改操作(如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....

另外,关于如何删除客户端浏览器上的会话cookie,请参考此答案。