【问题标题】:Only echo if user is admin PHP只有当用户是管理员 PHP 时才回显
【发布时间】:2017-02-14 17:48:42
【问题描述】:

我目前正在尝试学习 PHP,这很困难。我正在尝试制作自己的登录系统(CMS),但是在此过程中遇到了一些问题。我已经能够创建一个现在可以工作的登录脚本,我知道这不是一个安全的脚本,但这只是为了让我学习这个过程。

我在 phpmyadmin 中添加了一个新行,该行指示用户具有什么角色(1 或 2),1 是用户,2 是管理员。但是我不知道从哪里开始。我认为它应该是这样的:如果用户 == 但是我不知道如何开始。有人可以帮帮我吗?

我想创建类似的东西:

普通用户: - 家 - 发票 - 联系方式

管理员: - 家 - 发票 - 行政 - 联系方式

到目前为止我的脚本:

        <?php
    session_start();
    // Verbinding maken met database
    require("db.php");

    // Functions na klikken 'inloggen'

    if (isset($_POST["login"])){ 
        $gebruikersnaam = mysqli_real_escape_string($con, $_POST['gebruikersnaam']);
        $wachtwoord = mysqli_real_escape_string($con, $_POST['wachtwoord']);
        $selecteergebruiker = "SELECT * FROM gebruikers WHERE username ='$gebruikersnaam' AND password = '$wachtwoord'";
        $run_user = mysqli_query($con, $selecteergebruiker);
        $check_user = mysqli_num_rows($run_user);
        if($check_user>0){
            header('location: home.php');
        } else { 
        echo "Onjuist!";
        }
    }
?>

【问题讨论】:

    标签: php mysqli login content-management-system


    【解决方案1】:

    这里有一些你可以开始的提示......

    if($check_user>0){
         while($row=mysqli_fetch_array($selecteergebruiker))
          { 
             session_start();
             if($row['role']==1)//user is admin
             { 
               $_SESSION['role']='Admin';
             }
             else
             {
               $_SESSION['role']='User';
             }
          }
           header('location: home.php');
            } else { 
       echo "Onjuist!";
       }
    

    现在在其他页面你可以使用 $_SESSION['role'];就是这样。。

    【讨论】:

    • 角色将是 $selecteergebruiker[0] 中的一个元素:$selecteergebruiker[0]['role']。是的,你可以这样做 if($selecteergebruiker[0]['role']==2){ echo('You're an admin'); } else { echo('You're a user'); } But I'd suggest using 0 for regular users and 1 for admins. Then you could treat $selecteergebruiker[0]['role'] like a Boolean and do crazy things, like: echo($selecteergebruiker[0]['role'] ? "You're an admin" : "You're a user");`
    • @Werner 这里 $selecteergebruiker 被假定为 mysqli_result 类型......并且在 QA 的代码中是 $query 字符串持有者,所以你不能使用 $selecteergebruiker[0]['role']跨度>
    • 那很好... :) @Werner
    【解决方案2】:

    在sql表中添加一个名为role的列 将管理员角色设置为管理员,将其他用户设置为用户,而不是使用 if 语句检查用户角色是什么

    if ( $user['role'] == admin ) {
         Echo "Hello admin";
    } else { 
         Echo "Hi user....";
    }
    

    【讨论】:

    • 我在 phpmyadmin 中添加了一个新行,该行指示用户具有什么角色(1 或 2),1 是用户,2 是管理员。但是我不知道从哪里开始。我认为它应该是这样的:如果用户 == 但是我不知道如何开始。有人可以帮帮我吗?
    • 哦,好吧,首先将 admin 设置为 1,将 user 设置为 0(布尔值)
    • 第二次输出数组内的用户信息(我推荐使用mysqli准备好的语句)而不是检查角色
    • If ($info['role']) { echo 'admin'; } 其他 { 回声“用户”; }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-19
    • 2015-10-01
    • 2019-12-05
    • 1970-01-01
    • 2021-09-22
    相关资源
    最近更新 更多