Php 如何检查哪个用户名或密码不正确?

Php 如何检查哪个用户名或密码不正确?,php,Php,我想在一个mysql查询中检查哪个用户名或密码不正确 情景: 当用户键入用户名和密码并单击submit时,我想显示一条错误消息,指出哪条错误。我需要一个简单优化的查询。这是攻击者找到有效用户名的好方法 要回答你的问题,我想你必须 SELECT username, password WHERE username=? OR password=? 然后用给定的用户名和密码检查结果,以找到正确的用户名和密码。作为一般经验法则,我认为最好向用户返回一条消息,说明“用户名或密码不正确”因为它不会向攻击者指

我想在一个mysql查询中检查哪个用户名或密码不正确

情景:


当用户键入用户名和密码并单击submit时,我想显示一条错误消息,指出哪条错误。我需要一个简单优化的查询。

这是攻击者找到有效用户名的好方法

要回答你的问题,我想你必须

SELECT username, password WHERE username=? OR password=?

然后用给定的用户名和密码检查结果,以找到正确的用户名和密码。

作为一般经验法则,我认为最好向用户返回一条消息,说明“用户名或密码不正确”因为它不会向攻击者指示用户名或密码是否错误。

请使用HTMl表单和POST方法,并使用以下代码::

 <?php
    $con = mysql_connect("localhost","username","password");
    if (!$con)
      {
      die('Could not connect: ' . mysql_error());

      }
    mysql_select_db("My_TABLE_NAME", $con); 
    $Username = $_POST['Username']; // get username
    $Password = $_POST['Password'] ; // get pwd

    $sql="SELECT Username FROM My_TABLE_NAME WHERE Username=’".$Username.”’ and Password=’”.$Password.”’”;
    $r = mysql_query($sql);
    if(!$r) {
       $err=mysql_error();
       print $err;
       exit();
    }
    if(mysql_affected_rows()==0){
       print "no such login in the system. please try again.";
       exit();
    }
    else{
       print "successfully logged into system.";
       //proceed to perform website’s functionality – e.g. present information to the user
    }
    ?>


$query=您已经尝试了什么?你的问题太宽泛和模糊,无法正确回答。你不想表明哪一个是错误的。您希望显示密码对是否不正确,否则攻击者很容易找到有效的用户名。我喜欢看到错误消息“您的密码是正确的,但您的用户名是错误的”@Gareth-您让我发笑:请注意,这里不提倡明文密码
$query = <<<EOL
SELECT IF(password = '$password', 1, 0)
FROM users
WHERE username='$username'
EOL;

$result = mysql_query($query)
if (mysql_numrows($result) == 0) then
  echo 'Bad username';
} else {
  $row = mysql_fetch_array($result);
  if ($row[0] == 0) then
     echo 'Bad password';
  }
}