在 php 5.5 中使用 switch case 将不同权限的登录分开

Separate logins with different privileges using switch case in php 5.5

我在尝试实现一段代码时遇到了一些问题。 我的想法是让不同的用户在我的数据库的 "userType" (这是一个 INT 类型)列中有不同的属性,并有一个 switch case 来获取查询的结果和 select 哪个页面重定向到。重定向链接尚未插入,因为登录开关案例不起作用。

这是我的 "loginsuccess.php"

的代码
<?php
session_start(); // Right at the top of your script
?>

<?php 

ob_start();
$host="localhost"; // Host name 
$username="google_test"; // Mysql username 
$password="password"; // Mysql password 
$db_name="google_test"; // Database name 
$tbl_name="user"; // Table name 
$mysqli = new mysqli($host, $username, $password, $db_name);

  if($_SESSION['$myusername']==true)
    { 
        $sessionUsername = $_SESSION['$myusername'];
        $userType = "SELECT userType FROM '$tbl_name' WHERE username='$sessionUsername'";
        $result = mysqli_query($mysqli, $userType);

        switch ($result){
            case "1":
                //userType 1 is admin
                echo $_SESSION['$myusername'];
                echo ", Login Successful. Welcome Admin.";
                break;
            case "2":
                //userType 2 is business
                echo $_SESSION['$myusername'];
                echo ", Login Successful. Welcome to your business page.";
                break;
            case "3":
                //userType 3 is general user
                echo $_SESSION['$myusername'];
                echo ", Login Successful. Welcome to the Fun Finder App!!.";
                break;
            default:
                echo $_SESSION['$myusername'];
                echo ", it appears that your user type has not been defined yet.";
                echo " Please contact support to resolve this issue.";
        }
}
  elseif($_SESSION['$myusername']==false)
    {
        echo "oops......";
      //echo '<a href="register.html"><span>Login/Register</span></a></li>';
    }
    ob_end_flush();
  ?>

我的登录脚本正在运行,并通过另一个 php 页面成功地通过数据库传递了用户名和密码。我从这个 php 文件中得到的结果是,无论我使用哪个登录名,switch case 都会直接转到 default case。我假设这与我的查询没有返回正确的结果有关,因为我试图回显 $result 变量但没有得到任何结果。 Php 不是我最擅长的语言,因此我们将不胜感激。提前致谢!

Mysqli_query returns 结果对象而不是实际值。但是,您可以从该对象读取值:

http://php.net/manual/en/mysqli.query.php

作为附加提示:一旦用户成功通过身份验证,将这些用户权限与用户登录名一起存储在会话中可能是有意义的。 (可能有更多地方需要此信息 - 这样您就不需要一直进行查询) 唯一的缺点是,这不会响应该用户的权限更改(当用户成为管理员时,他将需要再次登录)

在我看来,您必须先使用 mysql_fetch_array() 来存储数据库中的结果,然后再将其用于 switch case。

示例:

$row=mysql_fetch_array($result);
$privilege=$row['usertype'];    //user type is from the column in your table