我试图在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秒后结束会话。
答案 0 :(得分:0)
请参阅文档 session_destroy http://php.net/manual/en/function.session-destroy.php
答案 1 :(得分:0)
我没有看到你在任何地方拨打session_destroy();
:
答案 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();
}
}