我们为什么要在php中销毁会话?

时间:2016-04-13 14:28:03

标签: php session

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

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

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

2 个答案:

答案 0 :(得分:5)

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

请勿在每个页面上调用此内容!只有在用户注销后,您才不再需要存储的信息。

答案 1 :(得分:0)

您的正确方法应该是运行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。