用户未处于活动状态时的PHP登录验证

时间:2016-02-05 19:41:11

标签: php validation login

我开发了一个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>"; 
    }

 }
?>

这是我的HTML代码。

<html>
<form action='login.php' method="post">
  <table cellspacing='5' align='center'>
    <tr>
      <td>Username:</td>
      <td>
        <input required type='text' name='name' />
      </td>
    </tr>
    <tr>
      <td>Password:</td>
      <td>
        <input required type='password' name='pwd' />
      </td>
    </tr>
    <tr>
      <td></td>
      <td>
        <input type='submit' name='submit' value='Submit' />
      </td>
    </tr>
  </table>
  <?php if(isset($_GET[ "msg"])){
      $errmsg=$ _GET[ "msg"]; 
       if($errmsg==1 ){ echo "<div style='text-align: center;'><h5> <font color = \"red\ "> Incorrect username and/or password! have you registered? </font></div>"; } 
       elseif ($errmsg==2 ) { echo
  "<div style='text-align: center;'><h5> <font color = \"red\ "> Contact admin to activate your account. </font></div>"; } } ?>

</form>
<div style="text-align: center;">
  <a href="register.php">
    <button>Register here</button>
  </a>
</div>

</html>

1 个答案:

答案 0 :(得分:0)

使用简单的标头位置来重定向您的用户:

<?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"); 
}
}
?>