【发布时间】:2019-03-13 14:17:24
【问题描述】:
我添加了一些代码来尝试阻止用户自动注销(会话)。 - 但它仍然会在这么长时间后记录用户
我想要的是让用户在登录时能够访问多个页面,并且在他们空闲时不会将它们注销,因此我放置了很长的空闲时间 - 或者换句话说,保持登录状态直到他们决定单击注销。
登录页面
$result = mysqli_query($connection,$query) or die(mysql_error());
$rows = mysqli_num_rows($result);
if($rows==1){
$_SESSION['username'] = $username;
$_SESSION['username']=time();
// Redirect user to index.php
header("Location: admin-index.php");
}else{
$_SESSION['incorrect'] = 'Incorrect email or password. Please try again.';
header ("Location: admin-login.php?=incorrectlogin");
}
}
已登录索引页面
<?php
session_start();
$idletime=6000000;
if (time()-$_SESSION['username']>$idletime){
session_destroy();
session_unset();
header ("Location: admin-login.php");
}else{
$_SESSION['username']=time();
}
//on session creation
$_SESSION['username']=time();
?>
<!DOCTYPE html>
<html lang="en" >
<head>
第二个 php 页面
<?php
session_start();
if(!isset($_SESSION["username"])){
header("Location: admin-login.php");
exit(); }
?>
【问题讨论】:
-
让用户保持登录状态的“技巧”是进行 ajax 调用,每隔 x 分钟触发一次 ajax 调用,然后在 ajax 调用中执行 session_start();这将使用户保持登录状态,除非计算机决定关闭或进入睡眠模式
-
@Naruto - 感谢您的建议,是否有一些链接可以让我看到如何做到这一点,我从未使用过 Ajax
-
给我几分钟,我会在这里发布一个例子
-
添加
ini_set('session.gc_maxlifetime', 6000000);覆盖默认会话时间
标签: php