gpt4 book ai didi

php - 登录时没有带我到正确的位置

转载 作者:行者123 更新时间:2023-11-27 22:53:22 28 4
gpt4 key购买 nike

我正在使用 PHP 检查用户是管理员还是普通用户。如果他们是普通用户,那么应该将他们重定向到 home.php。但是,如果他们是管理员,则应将他们重定向到 admin.php。当输入标准用户的用户名和密码时,它会将我发送到预期的 home.php。但是,每当我使用管理员登录时,它都不会将我定向到 admin.php。相反,它将我重定向到 authentication.php,这是检查用户名和密码是否正确的脚本。

我已经尝试了 2 个不同的代码块,第一个根本不起作用,因为它出现了语法错误。但是,这个应该可以正常工作,但事实并非如此。我还检查了数据库中是否存储了正确的数字。 1 是标准用户,2 是管理员。我在个人资料页面上打印了管理员级别,因此我知道它正在正确存储数据。

if (isset($_SESSION['admin'])) {
if ($_SESSION['admin'] === "2") {
header('Location: admin.php');
} else {
header('Location: home.php');
}
} else {
header('Location: home.php');
}

我希望当管理员登录时它应该将我定向到 admin.php,但是我只是被定向到 authentication.php 的空白屏幕。

最佳答案

您的代码是准确的。例如

<?php
$_SESSION['admin'] = "2";
if (isset($_SESSION['admin'])) {
if ($_SESSION['admin'] === "2") {
header('Location: admin.php');
} else {
header('Location: home.php');
}
} else {
header('Location: home.php');
}
?>

如果您在本地主机上运行它,它会正确重定向到 admin.php 页面。因为你正在使用 === 所以你必须确保你的数据类型匹配。

例如:

<?php

$a = "1";

if ($a === 1) {
echo "not ok";
}

if ($a == 1) {
echo "ok";
}

if ($a === "1") {
echo "This time ok";
}

if ($a == "1") {
echo "it's also ok";
}
?>

第一个 echo 不显示好像不能匹配数据类型。所以我建议你把 === 改成 == 看看。希望能解决你的问题

    <?php
if (isset($_SESSION['admin'])) {
if ($_SESSION['admin'] == "2") {
header('Location: admin.php');
exit();
} else {
header('Location: home.php');
exit();
}
} else {
header('Location: home.php');
exit();
}
?>

关于php - 登录时没有带我到正确的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57739299/

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