用户未激活时的PHP登录验证

用户未激活时的PHP登录验证,php,validation,login,Php,Validation,Login,我开发了一个PHP登录系统,当用户登录并且管理员仍未激活帐户时,它将显示message2,如果用户输入错误的凭据,它将显示mesage1 我几乎完成了这项工作。但我不明白为什么这种情况总是属于message1 这是我的密码 <?php session_start(); if(isset($_POST["submit"])){ // windows // $servername = "localhost"; // $username = "

我开发了一个PHP登录系统,当用户登录并且管理员仍未激活帐户时,它将显示
message2
,如果用户输入错误的凭据,它将显示
mesage1

我几乎完成了这项工作。但我不明白为什么这种情况总是属于
message1

这是我的密码

<?php
    session_start();
    if(isset($_POST["submit"])){
      // windows
      // $servername = "localhost";
      // $username = "root";
      // $password = "";
      // $dbname = "loginDB";

      // linux
      $servername = "localhost";
      $username = "root";
      $password = "gmg0ddepfrxs";
      $dbname = "loginDB";

    // Create connection
    $conn = mysqli_connect($servername, $username, $password, $dbname);

    // Check connection
    if (!$conn){
      die("Connection failed: " . mysqli_connect_error());
    }

    $uname = $_POST["name"];
    $password = $_POST["pwd"];

    $sql = "SELECT * FROM user WHERE user_name='$uname' AND password='$password'";
    $result = mysqli_query($conn, $sql);

    while($row = mysqli_fetch_assoc($result)){
      $utype = $row["user_type"]; //1
      $status = $row["user_status"]; //0
      $username = $row["user_name"]; //USERNAME
      $password = $row["password"]; //PASSWORD NG USER
    }

    if (mysqli_num_rows($result) > 0 AND $utype == '1'){
      // session_start();
      $_SESSION["login"] = "access";
      setcookie("name",$uname,false);     
      echo "<script>window.location.href=\"member.php\"</script>"; 
    }elseif (mysqli_num_rows($result) <= 0) {
      echo "<script>window.location.href=\"index.php?msg=1\"</script>"; 
    }elseif ($utype == '0') {
      echo "<script>window.location.href=\"index.php?msg=2\"</script>"; 
    }

 }
?>

使用简单的标题位置重定向用户:

<?php
session_start();
if(isset($_POST["submit"])){

  $servername = "localhost";
  $username = "root";
  $password = "gmg0ddepfrxs";
  $dbname = "loginDB";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn){
  die("Connection failed: " . mysqli_connect_error());
}

$uname = $_POST["name"];
$password = $_POST["pwd"];

$sql = "SELECT * FROM user WHERE user_name='$uname' AND password='$password'";
$result = mysqli_query($conn, $sql);  
$row = mysql_fetch_assoc($result);
    $totalRows_result = mysql_num_rows($result);

if ($totalRows_result == 0) {
           header("location: index.php?msg=1");}


  $utype = $row["user_type"]; //1
  $status = $row["user_status"]; //0

if ($utype == '1'){
        $_SESSION["login"] = "access";
  setcookie("name",$uname,false);     
 header("location: member.php"); 
} else {
   header("location: index.php?msg=2"); 
}
}
?>

请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用
密码\u散列()
。您需要在查询中添加错误检查,您假定它始终有效。该
If()
属于
while()
内部。更重要的是,
$utype==“1”
但是您可能需要删除1周围的引号。这可能被解释为一个字符串,而不是一个整数。@Fred ii-嗨,谢谢你的回答。但是它仍然不起作用。对你的代码进行一些额外的编辑,让我知道它是否能更好地评论它。谢谢你的时间。但是它仍然不起作用。我刚才删除了while循环,因为您只会得到一个结果。你能再试一次吗?很遗憾,它只输出一个空白页。你能发布你的表单和用户表的结构吗?