javascript 在php上关闭浏览器时检测会话

qxsslcnc  于 12个月前  发布在  Java
关注(0)|答案(1)|浏览(119)

我试图捕捉记录时,用户实际上登录到门户网站,当他退出门户网站,如果他注销到系统正确,我可以很容易地抓住它,并在那里得到记录,但如果用户关闭浏览器会话将结束,但我不能捕捉细节时,它结束,我去研究它发现了一些jquery解决方案,

$(window).bind("beforeunload", function() { 
      return confirm("Do you really want to close?"); 
});

字符串

$(window).unload(function() {
       return confirm("Do you really want to close?"); 
});


以上两种解决方案都只在IE浏览器上工作,而不在Chrome,Firefox等中,也没有单独检测到onclose事件,我正在检测浏览器刷新,如果我试图导航到其他页面,它会返回功能,有没有更好的解决方案来实现这一点?

xriantvc

xriantvc1#

beforeunload事件可用于在用户离开页面之前触发操作。由于浏览器限制,此事件用于大量服务器端操作或捕获记录可能不完全可靠
下面是一个使用jQuery向服务器端脚本发出AJAX请求的示例。

$(window).on("beforeunload", function() {
    // Make an AJAX request to capture the record on the server
    $.ajax({
        url: 'capture_record.php',  // Replace with your server-side script
        type: 'POST',
        data: {
            action: 'logout',  // You can send additional data if needed
        },
        async: false,  // Synchronous request to give it time to execute before leaving
    });
    
    // Your confirmation message (some browsers may not show this message)
    return "Do you really want to close?";
});

<?php
// capture_record.php

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    if ($_POST['action'] === 'logout') {
        // Capture the record in the database or perform other actions
        // Example: Insert a logout record into a database
        // $userId = $_SESSION['user_id'];
        // $timestamp = time();
        // Write a Query for DB Record with parameter ($userId, $timestamp);

        // Respond to the AJAX request
        echo 'Record captured successfully';
        exit;
    }
}

// Handle other actions or respond accordingly
?>

字符串

相关问题