php - 如何从会话中注销?
问题描述
由于这种病毒在中国,老板娘让我们尝试在线上课。我希望学生登录,所以我知道谁在场。
登录工作。它检查用户名和密码。如果正确,我在。注销似乎很奇怪!
我在 logout.inc.html.php 下面有这个:
<form action="" method="post">
<div>
<input type="hidden" name="action" value="logout">
<input type="hidden" name="goto" value="/">
<input type="submit" value="Log out">
</div>
</form>
当我把它放在任何页面上时显示一个很好的注销按钮:
<?php include $_SERVER['DOCUMENT_ROOT'] . '/includes/logout.inc.html.php';?>
当我单击按钮时,上面的表单确实将我带回了根页面,因此该位正在工作。但是,如果我再次单击 19BE1 类的按钮,我应该注销,我不会被要求再次登录。它只是打开。也许是一些饼干的东西??
这是 /includes/access19BE1.inc.php 的一部分 我从我的教科书 PHP & MySQL: Novice to Ninja 中得到这个
if (isset($_POST['action']) and $_POST['action'] == 'logout')
{
session_start();
unset($_SESSION['loggedIn']);
unset($_SESSION['name']);
unset($_SESSION['password']);
header('Location: ' . $_POST['goto']);
exit();
}
它应该取消一切!我最终会超时吗?
我从stackoverflow得到这个,仍然没有注销!
if (isset($_POST['action']) and $_POST['action'] == 'logout')
{
//session_start();
//unset($_SESSION['loggedIn']);
//unset($_SESSION['name']);
//unset($_SESSION['password']);
session_unset(); // unset $_SESSION variable for the run-time
session_destroy(); // destroy session data in storage
header('Location: ' . $_POST['goto']);
exit();
}
请给这个病毒避免任何提示?
编辑: 我在 Firefox 中打开了一个私人窗口。我打开了本地主机。我得到我的网页。我单击 19BE1 类的按钮。我立即得到登录页面。我输入了错误的姓名和号码,这使我回到登录页面并显示错误消息。我输入正确的名称和密码,我得到我想要的页面。所以我认为登录是有效的。
也许,Firefox 正在保存一些东西?
解决方案
如果您厌倦了session_start()
注释掉行的 stackoverflow 答案,那session_destroy()
将无法正常工作。
您可以尝试下面的简单代码,您可以根据自己的要求进行修改
<?php
session_start();
session_destroy();
header('location: index.php');
?>
推荐阅读
- python - Matplotlib 绘图和颜色条问题
- sql - 如何从我的表中创建查询请检查图片
- javascript - 在 Chrome 隐身模式中强制启用 JavaScript
- visual-studio-code - VSCode Insiders 智能感知建议都是灰色的
- calendar - Microsoft graph calender api - 使用电子邮件地址读取所有用户的事件
- maven - Maven - 为什么jar文件与war文件一起生成?
- powerbi - PowerQuery List.Generate:参数评估的顺序?
- r - 找不到函数“lucas_Lehmer2”
- ssl - 在 centOS 7.x 上使用 https 配置的 AWX-Ansible
- jmeter - 如何为jmeter中的每个不同响应代码保存示例响应?