我试图通过点击退出按钮来破坏用户的会话它有效但是我必须按两次才能注销/销毁会话。 任何形式的帮助将不胜感激。 使用以下代码
<form role="form" method="post">
<div class="pull-right-container">
<i class="icon fa fa-user">
<input type="submit" value="logout" class="btn btn-danger" name="logout"
onclick="sessionend()" >
</i>
</div>
</form>
<script type="text/javascript">
function sessionend()
{
<?php
if (isset($_POST["logout"]))
{
session_destroy();
}
?>
}
</script>
答案 0 :(得分:1)
提交按钮中不需要onclick()。请尝试以下代码: -
<?php
if (isset ( $_POST ["logout"] )) {
session_destroy();
$redirectPageUrl= "http://xxxx/home.php";
header("Location: ".$redirectPageUrl);
}
?>
<form role="form" method="post">
<div class="pull-right-container">
<i class="icon fa fa-user">
<input type="submit" value="logout"
class="btn btn-danger" name="logout" />
</i>
</div>
</form>
答案 1 :(得分:0)
您可能需要取消设置$ _SESSION变量(如果有),然后调用函数session_destroy()。执行此操作后,您可以尝试测试任何会话变量,并可能添加重定向页面。
答案 2 :(得分:0)
尝试使用此代码。您需要致电session_unset()
和session_destroy()
,我还将操作添加到您的表单中,确保它将指向表单所在的同一页面。假设您的页面名为logout.php,表单操作将指向logout.php。请参阅下面的代码作为示例。
<?php
if (isset ( $_POST ["logout"] )) {
session_unset();
session_destroy();
header("Location: https://yourpage.com");
}
?>
<form role="form" method="post" action="logout.php">
<div class="pull-right-container">
<i class="icon fa fa-user">
<input type="submit" value="logout"
class="btn btn-danger" name="logout" />
</i>
</div>
</form>
答案 3 :(得分:0)
只是为了让你清楚发生了什么:
第一次打开页面时, PHP将立即执行。
在您检查$_GET
的情况下。由于此时$ _GET没有值,因此if块不会被删除,PHP也不会打印出来。
你的onclick功能会看到这样的时刻。空白没有功能。第一次打开后看一下执行的代码。
OnCkickFn (){
}
现在提交时,我认为您的网页正在重新加载, 记住空白功能 ,但现在拥有$_GET
值。
PHP现在立即执行session destroy
,但什么也没有返回。您的onClickFn
仍为空
现在你认为你的第一次点击没有做任何事情,但在PHP的后面做了。
现在再次单击onClickFn
,然后页面再次重新加载,您将看到上次session_destroy
的结果!
请使用@nandal的示例,(快速简便)这是它的工作方式,或更改代码以进行API调用(更复杂)