如果用户键入错误的密码或用户名,则显示消息

时间:2015-06-04 22:39:18

标签: php html mysql

如何为更多IF状态显示消息?

我有一个注册登录和系统,巫婆帐户激活。 但是,当用户尝试登录并且他的帐户尚未激活时,它只会显示错误。

但我正在尝试显示一条消息,当没有任何内容填充并且有人想要登录时(我不希望在表单中使用,我想回显自定义消息)并且当用户键入错误密码或USERNAME,我也想回复自定义消息。

   # 1st condition 1. If nothing is filled and user press login ( then show : please enter username and passw) 

    #2nd condition if username or password is wrong then show: ( wrong username or password ) 

    #3rd condition if username is not activated go to /error/ <-- Already working

这是标准代码:

session_start();
 include('configdb.php');
 if(isset($_POST['submit']))
 {
  $username = trim($_POST['username']);
  $password = trim($_POST['password']);
  $query = "SELECT * FROM users WHERE username='$username' AND password='$password' AND com_code IS NULL";
  $result = mysqli_query($mysqli,$query)or die(mysqli_error());
  $num_row = mysqli_num_rows($result);
  $row=mysqli_fetch_array($result);
  if( $num_row ==1 )
         {
   $_SESSION['user_name']=$row['username'];
   $_SESSION['user_email']=$row['email'];
   $_SESSION['user_password']=$row['password'];

   header("Location: /user/");
   exit;
  }
  else
         {
   header('Location: /error');
  }
 }

...所以这样做:如果用户被创建并且帐户未被激活,那么他会转到/ error /但是当帐户被激活时,他将转到/ user / ...

所以我想这样做:如果有人输入错误的用户名或密码,那么回复邮件:错误的用户名或密码

如果有人在现场填写任何内容,请回复该消息:请填写用户名和密码:

所以这就是我所尝试的,但我认为有些不对劲:https://eval.in/375816

但这仍然无法正常工作,如果输入错误的密码,我仍会转到/ error /。有人可以帮帮我吗? Thankss!

2 个答案:

答案 0 :(得分:1)

如果第一个或第二个条件匹配,您的代码将不会停止执行。如果else未返回true,则返回最终if( $num_row ==1 ),仅当登录有效时才会返回。您不应该执行先前条件已匹配的脚本的其余部分。否则,它将以成功的登录重定向或使用header()的错误重定向结束。

答案 1 :(得分:0)

if(empty($username) and empty($username)){
    // condition 1 (if nothing is in both fields)
}
if(empty($username) or empty($username)){
    // condition 1 (if nothing is in at least one of both fields)
}
[...]
if( $num_row ==1 )
{
[...]
} else {
    // condition 2
}

关于安全性的旁注:不要将密码存储为明文,使用更合适的crypt或至少像sha256这样的安全hashing方法。