是否可以运行session_destroy();在一个按钮上点击


Is it possible to run session_destroy(); on a button click?

是否可以在按钮点击上运行session_destroy(); ?

我理解通常的用法是创建一个专门用于它的页面,例如logout.php,并将按钮链接到该页面,但为了简单起见,是不是可以在按钮单击上运行它?

不直接。session_destroy();运行在服务器上,你的按钮在客户端。

你能做的,是一个Ajax调用logout.php的按钮点击。

客户:

<script>
    $('#LogoutButton').click(function() {
        var request = $.ajax({
            url: "/path/to/logout.php",
            type: "GET"
        });
        request.done(function(msg) {
            alert("Logged Out");
        });
        request.fail(function(jqXHR, textStatus) {
            alert("Error on Logging Out");
        });
    });
</script>
<button id="LogoutButton">Logout</button>

Logout.php

<?php
session_destroy();
?>

您可以将按钮包装在<form>元素中,而不是AJAX答案,然后将表单发送到同一页面。例如

<form action="" method="post">
    <input type="hidden" name="logout" value="true" />
    <button>Logout</button>
</form>

然后在你的PHP文档的头部:

if(isset($_POST['logout'])) {
    unset($_SESSION[/*your user variables here*/ ]);
    session_destroy();
}

这将必须在每个页面的头部,并且因此比AJAX答案稍微不那么整洁,但将不需要logout.php文件