如何杀死PHP会话

时间:2017-09-22 10:24:04

标签: php session

我试图在30秒后(测试)杀死会话,但它没有 工作。我不明白为什么。我已经在SO上关注了相关主题,并试图实施建议的解决方案,但它没有工作,所以请不要给我关于重复的废话。

这是我的代码:

0.0.0.0

在session.php中我得到了:

session_start();
$_SESSION['email'] = $email;
$userID = $row['userID'];
$_SESSION['userID'] = $userID;
$_SESSION['timeout'] = time();

提供更多代码:

   if(isset($_SESSION['timeout']) && (time() - $_SESSION['timeout']) > 30) {
        header("Location: loggedoutDisplay.php");
        exit();
    }
    $_SESSION['timeout'] = time();

此处我在成功识别用户并重定向到if($result = mysqli_query($link,$query)) { while($row = mysqli_fetch_assoc($result)) { session_start(); $_SESSION['email'] = $email; $userID = $row['userID']; $_SESSION['userID'] = $userID; $_SESSION['timeout'] = time(); header("Location: updatePage.php"); } } 后开始会话,我需要在30秒后结束会话。

5 个答案:

答案 0 :(得分:0)

请参阅文档 session_destroy  http://php.net/manual/en/function.session-destroy.php

答案 1 :(得分:0)

我没有看到你在任何地方拨打session_destroy();

http://php.net/manual/en/function.session-destroy.php

答案 2 :(得分:0)

您可以session_destroy()使用destroy当前的session

答案 3 :(得分:0)

session_unset()取消设置运行时的$_SESSION变量。

session_destroy()会破坏存储中的会话数据。

答案 4 :(得分:0)

 session_start();

 $timeout = 30; // Number of seconds until it times out.

 if(isset($_SESSION['timeout'])) {

 // Get the difference between current time and the time the session was created
 $duration = time() - (int)$_SESSION['timeout'];

 if($duration > $timeout) { // If the difference is greater than 30s

 // Destroy the session
 session_unset();
 session_destroy();

 header("Location: loggedoutDisplay.php");
 exit();    

     }

}