繁体   English   中英

使用PHP和mysql时如何检查普通用户或管理员用户是否登录?

[英]How to check if normal user or admin user is logged in when using PHP and mysql?

我有用于登录两个用户(即“ user”和“ admin”)的示例代码。 登录时如何验证二者,以便成功登录后将它们重定向到各自的页面。

HTML代码

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Login</title>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link rel="stylesheet" href="stylelogin.css">
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    <!-- Latest compiled and minified CSS -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
    <!-- Optional theme -->
    <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
  </head>
  <body>
    <!-- Navigation Bar -->
    <nav class="navbar navbar-inverse">
      <div class="container-fluid">
        <div class="navbar-header">
          <button type="button" class="navbar-toggle" data-toggle="collapse" data-target="#myNavbar">
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
          </button>
          <a class="navbar-brand" href="index.html">Welcome</a>
        </div>
        <div class="collapse navbar-collapse" id="myNavbar">
          <ul class="nav navbar-nav navbar-right">
            <li><a href="index.html"><span class="glyphicon glyphicon-step-backward"></span>Back</a></li>
          </ul>
        </div>
      </div>
    </nav>


    <div class="container">
      <div id="login-modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
              <div class="modal-dialog">
                    <div class="loginmodal-container">
                        <h1>Login to Your Account</h1><br>
                      <form action="Model/loginbackend.php" method="post">
                            <input type="text" name="username" placeholder="Username" autofocus required>
                            <input type="password" name="password" placeholder="Password" required>
                            <input type="submit" name="login" class="login loginmodal-submit" value="Login">
                      </form>

                      <div class="login-help">
                        No account? Register <a href="signup.html">Here</a>
                      </div>
                    </div>
                </div>
              </div>
    </div>
  </body>
  <!-- Latest compiled and minified JavaScript -->
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
</html>

我有此示例php代码。

PHP代码

<?php
include "connection.php";
session_start();

$username = $_POST['username'];
$password = $_POST['password'];

if (!empty($username) && !empty($password)) {

  $sql = "select * from users where username = '$username' and password = '$password'";
  $result = mysqli_query($conn, $sql);

  $row = mysqli_fetch_assoc($result);

  if($row){
      $_SESSION["user_id"] = $row["userid"];
      header('Location: /laurence/FirstDayTraining/Model/users.php');
  }
  else
  {

    $sql = "select * from admin where adminusername = '$username' and adminpassword = '$password'";

    $result = mysqli_query($conn, $sql);

    $row = mysqli_fetch_assoc($result);
    $_SESSION["adminuser_id"] = $row["adminid"];
    header('Location: /laurence/FirstDayTraining/Model/admin.php');
  }

  mysqli_close($conn);
}

?>

在这种情况下

  if($row){
      $_SESSION["user_id"] = $row["userid"];
      header('Location: /laurence/FirstDayTraining/Model/users.php');
  }
  else
  {

    $sql = "select * from admin where adminusername = '$username' and adminpassword = '$password'";

    $result = mysqli_query($conn, $sql);

    $row = mysqli_fetch_assoc($result);
    $_SESSION["adminuser_id"] = $row["adminid"];
    header('Location: /laurence/FirstDayTraining/Model/admin.php');
  }

这将重定向到各自的页面。 但是,当我输入任何内容时,我的文本框usernamepassword 示例我将输入随机文本,例如:用户名asdu :密码asoda 我使用的输入主要不在数据库中。 但是它仍然将我重定向到管理页面。 有没有正确的方法来验证我的表格。.请帮助,我对php很陌生。 提前致谢。

您需要从mysqli中找出适合您的结果。 您可以像这样检查它:

if ($result->num_rows) {
    $row = mysqli_fetch_assoc($result);
    $_SESSION["adminuser_id"] = $row["adminid"];
    header('Location: /laurence/FirstDayTraining/Model/admin.php');
}
//this will check if something is returned by your query if not then dont redirect

您可以在数据库中添加role列,并通过脚本手动分配每个管理员/编辑者,否则默认情况下它们将是用户。 之后,您可以轻松识别它们

if( $row['role'] == 'admin')
$_SESSION['user_role'] = $row['role'] ;

暂无
暂无

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

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