繁体   English   中英

具有不同用户角色的登录系统

[英]Login system with different users roles

我做了一个登录/注册系统,它工作正常。 我想添加用户角色,例如当管理员登录时,他将被重定向到索引页面; 当用户登录时,他将被重定向到个人资料页面。 这就是我所做的:

函数.php

    public function loginUser($username,$password){
    $query=$this->db->prepare("SELECT id, username FROM users WHERE username=? AND email=?");
    $query->execute(array($username,$password));
    $userdata=$query->fetch();

    $num=$query->rowCount();

    if($num==1){
        session_start();
        $_SESSION['login']= true;
        $_SESSION['uid']= $userdata['id'];
        $_SESSION['uname']= $userdata['username'];
        $_SESSION['login_msg']= "Login succesful";

        return true;
    }else{
        return false;
    }
}

public function userRole($uid){
    $query=$this->db->prepare("SELECT role FROM users WHERE id=?");
    $query->execute(array($uid));
    $res=$query->fetch();
    echo $res['role'];
}

登录.php

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){
$username=$_POST['username'];
$password=$_POST['password'];

if(empty($username) or empty($password)){
   echo "Error... Field must not be empty";
}else{
   $login = $user->loginUser($username,$password);
   if($login){
      header('Location: transition.php');
   }else{
     echo "E-mail or password not match";
   }
 }
}
?>

            <form action="" method="post" name="reg">
                <table>
                    <tr><td> <input type="text" name="username" placeholder="Nombre de usuario"></td></tr>
                    <tr><td> <input type="password" name="password" placeholder="Password"></td></tr>

                    <tr><td> <input type="submit" name="login" value="Login" onclick="return(submitreg());"></td></tr>
                </table>
            </form>

过渡.php

<?php
session_start();
require_once "functions.php";
$db = new DatabaseConnection();
$user = new LoginRegister($db->pdo);

$uid=$_SESSION['uid'];
$username=$_SESSION['uname'];

if(!$user->getSession()){
header('Location: login.php');
exit();
}
$type = $user->userRole($uid);
echo $type;

if($type == 0){
header('Location: index.php');
}else{header('Location: profile.php');
}
?> 

我添加了函数userRole来获取用户的角色,transition.php就是知道这个函数是否正常,如果我删除if语句并打印角色,它会打印正确的角色。 当我在没有此功能和 php 文件的情况下登录时,它可以正常工作,但是当我添加此功能和 php 文件时,无论角色如何,我总是被重定向到 index.php。

在我的数据库中,用户角色只是一个数字(管理员为 0,用户为 1)。

我有一个涉及管理角色的类似问题。 我创建了一个名为active 如果活动0

用户的帐户被停用

如果活动1

用户帐户当前处于活动状态

如果活跃2

用户是管理员

您可以执行一个简单的if statement来检查active的值是多少。 您将在登录后检查此值...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM