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

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

    $(window).unload(function () {
        <?php  killSession(); ?>
    });


是否只有在刷新或关闭页面后才能触发killSession()?

更新:

仍然无法弄清楚。也许我需要休息一下。

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


这是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']);


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

最佳答案

调用PHP函数killSession时,会话将立即终止。因此,只要执行,您的代码就会杀死该会话。

您需要做的是仅在触发killSession事件时才调用PHP函数onunload。而且,只有通过向服务器发送新请求,才可以使用JavaScript调用PHP函数。

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

$(window).unload(function () {
    $.get("killSession.php");
});


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

关于php - $(window).unload中的killSession()PHP函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1318966/

10-10 00:31