killSession()PHP函数在$(window).unload中

Nor*_*ert 2 php jquery function

我正在做一个简单的聊天脚本,我有killSession函数,它杀死当前会话并从数据库中删除用户.问题是,在设置并验证名称后,聊天表单不会加载,它只会终止会话并返回到loginForm().这是脚本:

<?php
if (!isset($_SESSION['name'])) {
    loginForm(); // set a name for chat
} else {
?>
    // chat form

    $(window).unload(function () {
        <?php  killSession(); ?>
    });
Run Code Online (Sandbox Code Playgroud)

有没有办法在刷新或关闭页面后触发killSession()?

更新:

仍然无法弄明白.也许我需要休息一下.

$(window).unload(function () {
    $.get("killSession.php", { name:"test" }); // i set the name to test for testing
});
Run Code Online (Sandbox Code Playgroud)

这是killSession.php页面:

session_start();
function killSession($name) {
    include("config.php");
    mysql_query("DELETE FROM sessions WHERE name='$name'");
    session_destroy();
    header("Location: index.php");
}

killSession($_GET['name']);
Run Code Online (Sandbox Code Playgroud)

$ .get仍然不起作用,所以我通过浏览器分别尝试了它.killSession.php?name = test将从DB中删除,但不会终止会话.

Gum*_*mbo 5

killSession调用PHP函数时会立即终止会话.所以你的代码会在执行时终止会话.

您需要做的是killSession仅在onunload触发事件时调用PHP函数.只有向服务器发送新请求才能通过JavaScript调用PHP函数.

因此,您需要向脚本发送请求,然后调用该killSession函数,可能是这样的:

$(window).unload(function () {
    $.get("killSession.php");
});
Run Code Online (Sandbox Code Playgroud)

然后在killSession.php中调用PHP函数killSession.