【发布时间】:2017-11-28 07:37:03
【问题描述】:
我正在创建一个包含 10 多个不同 php 文件的网站。我想从登录页面开始检查用户是否处于非活动状态。因此,如果用户登录并在特定时间段内保持空闲状态,则必须将该用户注销。我是 PHP 新手,目前正在使用类似问题的答案
if (isset($_SESSION["LAST_ACTIVITY"])) {
if (time() - $_SESSION["LAST_ACTIVITY"] > 1800)) {
// last request was more than 30 minutes ago
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
} else if (time() - $_SESSION["LAST_ACTIVITY"] > 60) {
$_SESSION["LAST_ACTIVITY"] = time(); // update last activity time stamp
}
}
我在这里找到了答案:
expire session when there is no activity in PHP
我创建了一个名为 session.php 的单独页面并将代码粘贴到上面的链接中。然后我在我的登录页面中包含了文件 session.php(它检查输入的凭据并登录用户)。问题是,if 循环没有运行,我不知道如何定义 $_SESSION['LAST_ACTIVITY'] 变量。我在登录页面中使用了以下内容:
$query = "SELECT *
FROM user_details
WHERE username = '$username'
AND password = '$password'";
$result = mysqli_query($dbconnect, $query);
$row = mysqli_fetch_array($result);
$count = mysqli_num_rows($result);
if ($count == 1) {
session_start();
echo "Welcome " .$username. "</br>";
$_SESSION['username'] = $username;
$login_time = time();
$_SESSION["LAST_ACTIVITY"] = $login_time ;
include('session.php');
我也尝试在文件开头包含 session.php 但没有用。问题是:time() - $_SESSION["LAST_ACTIVITY"] 等于 0。如何存储上次活动时间并将其与当前时间进行比较?另外,我应该在网站的每个其他网页文件中包含 session.php 以检查用户活动吗?如果是,我应该把它放在开头还是结尾?
【问题讨论】: