首页 > 解决方案 > 如何在不单击 PHP 中的注销按钮的情况下自动注销时跟踪注销时间(结束会话时间或强制关闭浏览器的选项卡/窗口)

问题描述

我想询问关闭会话时的注销跟踪,而用户没有明确的注销按钮操作。

以下是登录操作期间使用的代码,它将在表中创建一个新行,其中包含 track_log_uservalueusername和。login_datelogin_hour

<?php 
    require_once ('connections.php');
    // the login validation page 

    $the_username = $_POST['the_username'];
    $the_password = $_POST['the_password'];

    $login_date = date("Y-m-d");
    $login_time = date("H:i:s");

    $query = mysqli_query($conn,"SELECT * 
                                 FROM tbl_user 
                                 WHERE usr = '$the_username' AND 
                                       pwd = '$the_password'");
    $result = mysqli_num_rows($query);


    if ($result > 1) {
        $fetch = mysqli_fetch_assoc($query);
        $_SESSION['the_username'] = $fetch['usr'];
        $_SESSION['the_password'] = $fetch['pwd'];
        mysqli_query($conn,"INSERT INTO track_log_user(`id`,`username`,`login_date`,`login_time`,`logout_date`,`logout_time`) VALUES (NULL,`$_SESSION[the_username]`,'$login_date','$login_time','','')");
        header("location:my_menu.php");
    }
    else {
        echo "Your Login Is Incorrect";
        header("location:index.php");
    }

  ?>

以下是代码,它将由用户执行注销按钮操作。它将使用logout_dateandlogout_time值填充之前的登录跟踪时间。

<?php
require_once ('connections.php');
// this is logout page when user click button logout in system page

session_start();
$time = date("H:i:s");
$date = date("Y-m-d");
mysqli_query($conn, "UPDATE track_log_user SET logout_date = '$date' AND logout_time = '$time' WHERE username = '$_SESSION[the_username]'");
$_SESSION = NULL;
$_SESSION = [];
session_unset();
session_destroy();
header("location:index.php");
?>

我的问题是如何跟踪客户端是否空闲或强制关闭窗口/选项卡,以便他们的会话自动结束并注销?

我的用户登录和注销日期时间跟踪系统将如何工作?我正在每月报告有多少客户/客户访问和使用我们的网站。

请给我一个代码建议

谢谢你。

标签: phpmysql

解决方案


推荐阅读