因为某些原因。 IF 语句正在工作....我试过 If/else 也没有运气[关闭]
Posted
技术标签:
【中文标题】因为某些原因。 IF 语句正在工作....我试过 If/else 也没有运气[关闭]【英文标题】:For some reason. IF statement is working....Ive tried If/else with no luck either [closed] 【发布时间】:2021-12-29 23:25:30 【问题描述】:只有“管理员”if 语句才能正确运行。其他任何东西都会跳转到未嵌套的 else...有什么原因吗?
注意:是的,我已经检查了排名的拼写...它们拼写正确
用户成功登录后重定向 (login-successful.php):
<?php
session_start();
if(isset($_SESSION["username"]))
if ($_SESSION["rank"] == 'Admin')//Check if Admin
header("location:/panel/admin/profile.php");
elseif ($_SESSION["rank"] == 'Faculty')//Check if Faculty
header("location:/panel/student/profile.php");
elseif ($_SESSION["rank"] == 'Student')//Check if Student
header("location:/panel/faculty/profile.php");
else
header("location:log-in.php");
?>
登录页面(login.php):
<?php
session_start();
$host = "localhost";
$username = "username";
$password = "password!";
$database = "database";
$message = "";
try
$connect = new PDO("mysql:host=$host; dbname=$database", $username, $password);
$connect->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
if(isset($_POST["login"]))
if(empty($_POST["username"]) || empty($_POST["password"]))
$message = '<label class="red-text text-darken-2">All fields are required</label>';
else
$query = "SELECT * FROM login WHERE username = :username AND password = :password";
$statement = $connect->prepare($query);
$statement->execute(
array(
'username' => $_POST["username"],
'password' => $_POST["password"]
)
);
$count = $statement->rowCount();
if($count > 0)
$_SESSION["username"] = $_POST["username"];
$_SESSION["rank"] = $statement->fetchColumn(3);
header("location:login_success.php");
else
$message = '<label class="red-text text-darken-2">Wrong Email or Password</label>';
catch(PDOException $error)
$message = $error->getMessage();
?>
登录表: Login Table
【问题讨论】:
无复制~3v4l.org/qP4Tm 可以显示登录表吗?想看看第 3 列的内容 一个好的做法是在header('Location:...
之后放置一个出口,以防止进一步的代码执行
提供登录表
您能否打印 $_SESSION["rank"] 并在每次获得正确的排名名称时进行检查?
【参考方案1】:
哇....不敢相信我只花了一个小时在这个....凌晨 2 点,我筋疲力尽...一定是这个滑倒的原因.... elseif ($_SESSION["rank"] == 'Faculty')//检查是否是Faculty header("location:/panel/student/profile.php"); elseif ($_SESSION["rank"] == 'Student')//检查Student header("location:/panel/faculty/profile.php");链接到错误目录的文件迫使它返回登录页面(因为不允许排名)非常感谢大家...我觉得自己像个笨蛋...现在要睡觉了
【讨论】:
正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:不知道确切原因(需要更多代码)但是尝试这样做
if (empty($_SESSION['username']) && empty($_SESSION['rank']))
header("location:log-in.php");
else if ($_SESSION["rank"] == 'Admin')//Check if Admin
header("location:/panel/admin/profile.php");
else if ($_SESSION["rank"] == 'Faculty')//Check if Faculty
header("location:/panel/faculty/profile.php");
else if ($_SESSION["rank"] == 'Student')//Check if Student
header("location:/panel/student/profile.php");
【讨论】:
不...不走运 :( 那只是我的 login-success.php 文件....我用初始登录 php 更新了帖子 您的情况似乎对我有效,甚至对上述评论中的@Phil 也有效。你能检查一下排名是否正确分配,以防万一。 等级在登录 php 文件中正确分配。 $_SESSION["rank"] = $statement->fetchColumn(3); 找到解决方案....代码拍摄到错误的目录...对不起那个人...感谢您的帮助...非常感谢 发生很多次...以上是关于因为某些原因。 IF 语句正在工作....我试过 If/else 也没有运气[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
MySql SELECT 与 if 语句和 LIKE 运算符