Php 如何登录和注册三个用户并在不同页面重定向,我';我在这里失踪了?

Php 如何登录和注册三个用户并在不同页面重定向,我';我在这里失踪了?,php,mysql,Php,Mysql,我是新手,正在创建网页,有数据库,我有3个不同的用户要注册和登录,我不能登录和重定向到某个页面。管理员,教师,学生用户。学生不能查看教师和管理员。我在注册表格中有一个单选按钮,你们将如何登录他们并确定他们是老师、学生还是管理员 我尝试了不同的语法,但找不到一种方法来纠正我这里缺少的东西?当我尝试登录时,没有出现任何错误消息 我的注册php <?php include ('server.php')?> <body> <nav class="na

我是新手,正在创建网页,有数据库,我有3个不同的用户要注册和登录,我不能登录和重定向到某个页面。管理员,教师,学生用户。学生不能查看教师和管理员。我在注册表格中有一个单选按钮,你们将如何登录他们并确定他们是老师、学生还是管理员

我尝试了不同的语法,但找不到一种方法来纠正我这里缺少的东西?当我尝试登录时,没有出现任何错误消息

我的注册php

<?php include ('server.php')?>
    <body>
        <nav class="navbar navbar-expand-md bg-dark navbar-dark">
            <a class="navbar-brand" href="home.php"><span><i class="fa fa-home"> My Quiz</i></span></a>
        </nav>
        <div class="container panel panel-default">
            <h2 class="text-center">Sign Up</h2><br>
            <div class="panel panel-default"><?php include('errors.php')?></div>
            <form class="well form-horizontal" method="post" action="signup.php">
                <fieldset>
                    <div class="form-group">
                        <label for="form" class="col-md-4 control-label">I am a: </label>
                        <div class="col-md-4 inputGroupContainer"><br>
                            <div class="form-check">
                                <label class="radio-inline col-md-4 control-label">
                                    <input type="radio" id="position" name="position" value="Student" checked>Student </label>
                                <label class="radio-inline col-md-4 control-label">
                                    <input type="radio" id="position" name="position" value="Teacher">Teacher </label>
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-md-4 control-label" for="firstname">Firstname:</label>
                        <div class="col-md-4 inputGroupContainer">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                <input type="text" class="form-control" id="firstname" placeholder="Enter Firstname" name="firstname">
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-md-4 control-label" for="middlename">Middlename:</label>
                        <div class="col-md-4 inputGroupContainer">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                <input type="text" class="form-control" id="middlename" placeholder="Enter Middlename" name="middlename">
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-md-4 control-label" for="lastname">Lastname:</label>
                        <div class="col-md-4 inputGroupContainer">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                <input type="text" class="form-control" id="lastname" placeholder="Enter Lastname" name="lastname">
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-md-4 control-label" for="email">Email:</label>
                        <div class="col-md-4 inputGroupContainer">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                <input type="email" class="form-control" id="email" placeholder="Enter email" name="email" value="<?php echo $email; ?>">
                            </div>
                            <small id="emailHelp" class="form-text text-muted">We'll never share your email with anyone else.</small>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-md-4 control-label" for="username">Username:</label>
                        <div class="col-md-4 inputGroupContainer">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                <input type="text" class="form-control" id="username" placeholder="Enter Username" name="username" value="<?php echo $username; ?>">
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-md-4 control-label" for="pwd1">Password:</label>
                        <div class="col-md-4 inputGroupContainer">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                <input type="password" class="form-control" id="pwd1" placeholder="Enter password" name="password_1">
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-md-4 control-label" for="pwd2">Confirm Password:</label>
                        <div class="col-md-4 inputGroupContainer">
                            <div class="input-group">
                                <span class="input-group-addon"><i class="glyphicon glyphicon-user"></i></span>
                                <input type="password" class="form-control" id="pwd2" placeholder="Confirm password" name="password_2">
                            </div>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-md-4 control-label"></label>
                        <div class="col-md-4"><br>
                            <h5>Already have an account? <a href="signin.php">Sign in</a></h5>
                        </div>
                    </div>
                    <div class="form-group">
                        <label class="col-md-5 control-label"></label>
                        <div class="col-md-4"><br>
                            <button type="submit" name="submitreg" class="btn btn-outline-dark"><span class="glyphicon glyphicon-send"></span> Submit</button>
                        </div>
                    </div>
                </fieldset>
            </form>
        </div>
    </body>
<?php include('server.php') ?>
    <nav class="navbar navbar-expand-md bg-dark navbar-dark">
            <a class="navbar-brand" href="home.php"><span><i class="fa fa-home"> My Quiz</i></span></a>
        </nav>
        <div class="container">
            <div class="panel-body col-xs-4 col-md-offset-4">
                <h2 class="text-center">Sign in</h2><br>
                <form class="well form-horizontal panel panel-default" method="post" action="signin.php">
                    <div class="panel panel-default"><?php include('errors.php')?></div>
                    <div class="form-group">
                        <label for="username">Username:</label>
                        <div class="input-group">
                            <span class="input-group-addon"><i class="glyphicon glyphicon-envelope color-blue"></i></span>
                            <input type="text" class="form-control padding-x-md-5" id="username" placeholder="Enter Username" name="username" >
                        </div>
                    </div>
                    <div class="form-group">
                        <label for="password">Password:</label>
                        <div class="input-group">
                            <span class="input-group-addon"><i class="glyphicon glyphicon-envelope color-blue"></i></span>
                            <input type="password" class="form-control" id="password" placeholder="Enter password" name="password" >
                        </div>
                    </div>
                    <div class="text-center">
                        <div class="checkbox text-center">
                            <label><input type="checkbox" name="remember"> Remember me</label>
                        </div>
                        <h5><a name="forgot-pass" href="forgotpass.php">Forgot password</a></h5>
                        <h5>Don't have an account? <a href="signup.php">Sign up</a></h5>
                        <button type="submit" name="submitlog" class="btn btn-default">Submit</button>
                    </div>
                </form>
            </div>
        </div>
<?php
session_start();
//database
$con = mysqli_connect("localhost", "root","","quizdb");
//variables
$position="";
$firstname="";
$middlename="";
$lastname="";
$email="";
$username="";
$errors=array();
$_SESSION['success'] = "";
    //reg
    if (isset($_POST['submitreg'])) {
        register();
    }

    //log
    if (isset($_POST['login_btn'])) {
        login();
    }
    //out
    if (isset($_GET['logout'])) {
        session_destroy();
        unset($_SESSION['user']);
        header("location: ../login.php");
    }

// REGISTER USER
function register(){
        global $con, $errors;
    //radio button
    $position = mysqli_real_escape_string($con, $_POST['position']);
    // receive all input values from the form
    $firstname = mysqli_real_escape_string($con, $_POST['firstname']);
    $middlename = mysqli_real_escape_string($con, $_POST['middlename']);
    $lastname = mysqli_real_escape_string($con, $_POST['lastname']);
    $email = mysqli_real_escape_string($con, $_POST['email']);
    $username = mysqli_real_escape_string($con, $_POST['username']);
    $password_1 = mysqli_real_escape_string($con, $_POST['password_1']);
    $password_2 = mysqli_real_escape_string($con, $_POST['password_2']);
    // form validation
    // (array_push()) $errors array
    if (empty($firstname)) { 
        array_push($errors, "firstname is required"); 
    }
    if (empty($middlename)) {
     array_push($errors, "middlename is required");
    }
    if (empty($lastname)) {
     array_push($errors, "lastname is required"); 
    }
    if (empty($email)) {
     array_push($errors, "Email is required"); 
    }
    if (empty($username)) {
     array_push($errors, "Username is required"); 
    }
    if (empty($password_1)) {
     array_push($errors, "Password is required"); 
    }
    if ($password_1 != $password_2) {
        array_push($errors, "The two passwords do not match"); 
    }

    //check the database if ue exist
    $user_check_query = "SELECT * FROM users WHERE username='$username' OR email='$email' LIMIT 1";
    $result = mysqli_query($con, $user_check_query);
    $user = mysqli_fetch_assoc($result);
    $pos = mysqli_fetch_assoc($result);

    if ($user) { // if u exist
    if ($user['username'] === $username) {
      array_push($errors, "Username already exists");
    }
    if ($user['email'] === $email) {
      array_push($errors, "email already exists");
    }
    }

    // register user if there are no errors
    if (count($errors) == 0) {
        $password = md5($password_1);//encrypt
        if (isset($_POST['Teacher'])) {
            $user_type = mysqli_real_escape_string($_POST['position']);
            $query = "INSERT INTO users (position, firstname, middlename, lastname, email, username, password) 
                  VALUES('$position', '$firstname', '$middlename', '$lastname', '$email', '$username', '$password')";
            mysqli_query($con, $query) or die("Error: ".mysqli_error($con));
            $_SESSION['username'] = $username;
            $_SESSION['success'] = "You are now logged in";
            header('location: index.php');
        }else{
            $query = "INSERT INTO users (position, firstname, middlename, lastname, email, username, password) 
                  VALUES('$position', '$firstname', '$middlename', '$lastname', '$email', '$username', '$password')";
            mysqli_query($con, $query) or die("Error: ".mysqli_error($con));
            // get id of the created user
            $logged_in_user_id = mysqli_insert_id($con);

            $_SESSION['position'] = getUserById($logged_in_user_id); // put logged in user in session
            $_SESSION['success']  = "You are now logged in";
            header('location: index.php');
        }
    }
}
// return user array from their id
    function getUserById($id){
        global $db;
        $query = "SELECT * FROM users WHERE id=" . $id;
        $result = mysqli_query($con, $query);

        $user = mysqli_fetch_assoc($result);
        return $user;
    }
    // ...
    // LOGIN USER
function login(){
    global $con, $username, $errors;

    $username = mysqli_real_escape_string($con, $_POST['username']);
    $password = mysqli_real_escape_string($con, $_POST['password']);

    if (empty($username)) {
        array_push($errors, "Username is required");
    }
    if (empty($password)) {
        array_push($errors, "Password is required");
    }

    if (count($errors) == 0) {
        $password = md5($password);
        $query = "SELECT * FROM users WHERE username='$username' AND password='$password'";
        $results = mysqli_query($con, $query);

        if (mysqli_num_rows($results) == 1) {
            $logged_in_user_id = mysqli_insert_id($con);
            if ($logged_in_user['position'] == 'Teacher') {
                $_SESSION['user'] = $logged_in_user;
                $_SESSION['success']  = "You are now logged in Teacher";
                header('location: makequiz.php');         
            }else{
                $_SESSION['user'] = $logged_in_user;
                $_SESSION['success']  = "You are now logged in Student";
                header('location: index.php');
            }
        }else {
            array_push($errors, "Wrong username/password combination");
        }
    }
}
    function isLoggedIn()
    {
        if (isset($_SESSION['Student'])) {
            return true;
        }else{
            return false;
        }
    }

    function isAdmin()
    {
        if (isset($_SESSION['user']) && $_SESSION['Teacher']['position'] == 'Teacher' ) {
            return true;
        }else{
            return false;
        }
    }
?>

注册
我是一个:
学生 老师 名字: 中间名: 姓氏: 电邮:
代码的问题在于,您没有存储查询结果,只检查了查询给出的结果数

只需在$logged\u in\u user\u id=mysqli\u insert\u id($con)后添加以下行即可

$logged\u in\u user=mysqli\u fetch\u数组($query)

此代码引用了
$logged\u in\u user
,但我在您的代码中看不到此变量init

试试这个:

if (mysqli_num_rows($results) == 1) {
  $logged_in_user = mysqli_fetch_assoc($results); //ADD THIS LINE
  $logged_in_user_id = mysqli_insert_id($con);
  if ($logged_in_user['position'] == 'Teacher') {
    $_SESSION['user'] = $logged_in_user;
    $_SESSION['success']  = "You are now logged in Teacher";
    header('location: makequiz.php');         
  }else{
    $_SESSION['user'] = $logged_in_user;
    $_SESSION['success']  = "You are now logged in Student";
    header('location: index.php');
  }
}else {
  array_push($errors, "Wrong username/password combination");
}

欢迎来到堆栈溢出。不幸的是,这个问题太宽泛了。你必须把范围缩小到你面临的某个问题。现在还不清楚你的代码的哪一部分没有按预期工作。我想补充一点,你永远不应该使用md5来存储密码。这就好像你在用纯文本存储密码。@你的常识我的问题是我不能以不同的用户类型登录。如果(mysqli_num_rows($results)==1){$logged_in_user_id=mysqli_insert_id($con);如果($logged_in_user['position']='Teacher'){$\u会话['user']=$logged_in_user;$_SESSION['success']=“您现在已登录教师”标题('location:makequick.php');开始时,请切换到MySQLi准备的语句或使用PDO
if (mysqli_num_rows($results) == 1) {
  $logged_in_user = mysqli_fetch_assoc($results); //ADD THIS LINE
  $logged_in_user_id = mysqli_insert_id($con);
  if ($logged_in_user['position'] == 'Teacher') {
    $_SESSION['user'] = $logged_in_user;
    $_SESSION['success']  = "You are now logged in Teacher";
    header('location: makequiz.php');         
  }else{
    $_SESSION['user'] = $logged_in_user;
    $_SESSION['success']  = "You are now logged in Student";
    header('location: index.php');
  }
}else {
  array_push($errors, "Wrong username/password combination");
}