admin / no admin的不同会话,卡在登录页面上 - php

时间:2016-10-15 14:29:01

标签: php session

我正在尝试创建两个不同的会话,具体取决于登录用户是否为管理员,代码如下所示:

正如您所看到的,我首先获得输入用户名的行,第二次验证此行的密码,并检查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);
   }
?>

1 个答案:

答案 0 :(得分:2)

我不知道这是否是问题,但我可以看到这一点,请尝试更改这些:

 $_SESSION['admin_userSession'] == $row['username'];
 $_SESSION['userSession'] == $row['username'];

到这些:

 $_SESSION['admin_userSession'] = $row['username'];
 $_SESSION['userSession'] = $row['username'];

我建议这样做的原因是,通过设置'==',您还没有分配任何$_SESSION变量!