是否可以在按钮点击上运行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
文件