gpt4 book ai didi

php - 仅在 session 已设置且变量 == 时显示页面

转载 作者:行者123 更新时间:2023-12-04 00:11:51 24 4
gpt4 key购买 nike

我正在尝试为我正在运行的小型内部网站上的某些页面添加角色。

当用户登录网站登录表单时,我分配以下 session ;

// Register $username, $role Sessions and redirect
$_SESSION['username']= $username;
$_SESSION['accessLevel'] = $role;
$_SESSION['is_logged_in'] = true;

然后我的 logout.php 页面上有以下内容;

<?php 
session_start();
session_destroy();
header("Location: ../login.php");
?>

我想根据用户 $_SESSION['accessLevel'] 限制页面

例如,如果 $_SESSION['accessLevel'] == 'admin' 则只显示页面,否则重定向到登录页面(或错误页面)

这是我在管理页面上的内容;

<?php
session_start();
if (!isset($_SESSION['username']) && $_SESSION['accessLevel'] == 'admin'){
?>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>
<body>
<p>ADMIN AREA!! </p>
<p>username: <?php echo $_SESSION['username'];?></p>
<p>Access: <?php echo $_SESSION['accessLevel'];?></p>
</body>
</html>
<?php
}
else {
header("location:../login.php");
}
?>

现在,当我使用管理员凭据登录时,如果我删除检查 i print_r session 是否正确,页面将重定向到 login.php;

$_SESSION['accessLevel'] = 管理员

$_SESSION['用户名'] = 测试用户

我哪里错了?

最佳答案

您希望用户名 存在,现在您正在检查它是否 isset()。将您的条件更新为:

if(isset($_SESSION['username']) && $_SESSION['accessLevel'] == 'admin') { 
// HTML here
} else {
header("location:../login.php");
}

此外,附注:如果您遇到极端情况,如果您设置了 username 值但不是 accessLevel 值,您使用此条件将出现 fatal error 。您应该确保 accessLevel 设置为安全:

isset($_SESSION['username'], $_SESSION['accessLevel']) && $_SESSION['accessLevel'] == 'admin'

关于php - 仅在 session 已设置且变量 == 时显示页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26664165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com