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