我正在尝试创建两个不同的会话,具体取决于登录用户是否为管理员,代码如下所示:
正如您所看到的,我首先获得输入用户名的行,第二次验证此行的密码,并检查admin是否等于1,然后再重定向到adminhome.php。如果此过程不成功,则检查“普通”用户,只检查用户名与密码,然后重定向。
当我尝试登录时没有任何反应,仍然卡在登录页面上,没有出现php错误。关于这个问题的任何想法?
<?php
session_start();
include_once 'php/connect.php';
if(isset($_SESSION['userSession'])){
header('Location:home.php');
}
else if(isset($_SESSION['admin_userSession'])){
header('Location:adminhome.php');
}
$admin = "1";
if(isset($_POST['login-btn'])){
$username = $conn->real_escape_string(trim($_POST['username']));
$password = $conn->real_escape_string(trim($_POST['password']));
//
//Check for username in db
$query = "SELECT * FROM users WHERE username='$username'";
$result = mysqli_query($conn, $query);
$row = mysqli_fetch_array($result);
//
//Kontrollera efter matchande lösenord, password verify för HASH
if(password_verify($password == $row['password'] && $admin == $row['admin'])){
$_SESSION['admin_userSession'] == $row['username'];
header("Location: adminhome.php");
}
else if(password_verify($password == $row['password'])){
$_SESSION['userSession'] == $row['username'];
header("Location: home.php");
}
else {
$msg = "Användarnamn eller lösenord felaktigt.";
}
mysqli_free_result($result);
mysqli_close($conn);
}
?>
答案 0 :(得分:2)
我不知道这是否是问题,但我可以看到这一点,请尝试更改这些:
$_SESSION['admin_userSession'] == $row['username'];
$_SESSION['userSession'] == $row['username'];
到这些:
$_SESSION['admin_userSession'] = $row['username'];
$_SESSION['userSession'] = $row['username'];
我建议这样做的原因是,通过设置'=='
,您还没有分配任何$_SESSION
变量!