Php 如何防止用户通过用户会话访问管理页面
我想防止登录的用户在登录时通过会话访问管理页面。 他们应该只能使用用户名“admin”登录Php 如何防止用户通过用户会话访问管理页面,php,authentication,session,Php,Authentication,Session,我想防止登录的用户在登录时通过会话访问管理页面。 他们应该只能使用用户名“admin”登录 session_start(); if (!isset($_SESSION['username'])) { $_SESSION['msg'] = "You must log in first"; header('location: login.php'); } if (isset($_SESSION['username']) != 'admin') {
session_start();
if (!isset($_SESSION['username'])) {
$_SESSION['msg'] = "You must log in first";
header('location: login.php');
}
if (isset($_SESSION['username']) != 'admin') {
session_destroy();
unset($_SESSION['username']);
header("location: login.php");
}
if (isset($_GET['logout'])) {
session_destroy();
unset($_SESSION['username']);
header("location: login.php");
}
session\u destroy()
还不够。你也应该让饼干过期
并始终使用exit()代码>在标题之后('location=…')代码>
isset
函数将返回一个布尔值,不能根据字符串进行检查。我所能看到的是,在标题之前不应该有任何输出,而您正是这样做的,考虑到发布的内容。然后,您的'管理
<中缺少一个引号。那只是一种不好的浆糊吗?如果没有,那么问题就来了。启用错误报告。我修复了丢失的报价,认为它只是一个粘贴/文案eror。但是,你应该在你的SO帖子中包含一个问题。我们不知道您的问题在哪里,您只描述了您想要实现的目标,而没有描述代码的实际功能或失败的地方。只有当您首先编写了错误代码时,在发送位置头后使用exit()才有用。只需在发送位置头后(在同一执行分支中)不编写任何代码
if (isset($_COOKIE[session_name()])) {
setcookie(session_name(), '', time() - 86400, '/');
}
session_destroy();
header("location: login.php");
exit();
if (isset($_SESSION['username'])) {
if($_SESSION['username'] !== 'admin'){
session_destroy();
unset($_SESSION['username']);
header("location: login.php");
}
} else {
$_SESSION['msg'] = "You must log in first";
header('location: login.php');
}