PHP / MySQL - 检查用户是常规用户还是管理员

时间:2014-06-02 00:40:10

标签: php mysql

我试图检查用户是普通用户还是管理员。

在我的数据库中,最后一项是" usertype"它是0或1.

0表示普通用户,1表示管理员用户。

由于某种原因,这不起作用。它总是告诉我,我是一个普通用户。"我所知道的不可能是真的。我确实将usertype设置为1。

这是我的admin.php页面

<?php
include_once '../includes/db_connect.php';
include_once '../includes/functions.php';

sec_session_start();
?>
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Dashboard</title>
    <link rel="stylesheet" href="style.css" />
</head>
<body>


    <?php
        // Create connection
        $con = mysqli_connect(HOST, USER, PASSWORD, DATABASE);

        // Check connection
        if (mysqli_connect_errno()) {
          echo "Failed to connect to MySQL: " . mysqli_connect_error();
        }

        $result = mysqli_query($con,"SELECT * FROM members");

        $row = mysqli_fetch_row($result);
    ?>




    <?php
        if ($row["usertype"] == 1) 
        {
            echo "You're an admin!";
        } 

        else 
        {
            echo "You're a regular user.";
        }
    ?>

</body>
</html>

3 个答案:

答案 0 :(得分:3)

您的数据库中是否有多个用户?因为"SELECT * FROM members"没有选择任何特定成员。

您应该提供一个用户名,以便从数据库中进行选择,如"SELECT * FROM members WHERE username = '$username'"

否则,请检查您将usertype存储为(varchar / int / etc)的内容,并确保正确比较。

答案 1 :(得分:0)

这是您的PHP代码。我浓缩了它&amp;结合起来:

<?php
    // Create connection
    $con = mysqli_connect(HOST, USER, PASSWORD, DATABASE);

    // Check connection
    if (mysqli_connect_errno()) {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }

    $result = mysqli_query($con,"SELECT * FROM members");

    $row = mysqli_fetch_row($result);

    if ($row["usertype"] == 1) {
        echo "You're an admin!";
    } 
    else {
        echo "You're a regular user.";
    }
?>

您的查询未指定用户。它只是空白地获取members的所有值:

SELECT * FROM members

然后你运行:

$row = mysqli_fetch_row($result);

这基本上意味着无论你在members中有1,2,3甚至300个条目,你都会抓住members的第一个结果并采取行动。您需要更改查询以检查表members中的特定用户名。

此外,对于字段usertype,您是否在数据库中设置10作为号码10?或者是10的字符串值?这也可能导致问题。

答案 2 :(得分:0)

对我来说,我认为我在查询中需要WHERE子句,以便将数据与您要检查的表单字段进行对比。例如,如果我希望用户使用电子邮件地址和密码登录,我将使用以下代码:

$q = "SELECT * FROM members
WHERE (email = '$e' AND pass=SHA1('$p'))";

其中,

$e = mysqli_real_escape_string ($con, $_POST['email']); and $p = mysqli_real_escape_string ($con, $_POST['password']);

SHA()用于解密您在注册过程中可能使用的密码。

因此,接下来的步骤是:

1 /您应该检查admin用户名的usertype是否为1。我有时也会忘记这一点:-(
2 /你应该用

替换你的if($ row [&#34; usertype&#34;] == 1){...} else {...}
if ($_SESSION['usertype'] == 1) {

echo "You're an admin!";    
}else{ ...}