это мой код
$username = $_POST['user'];
$password = $_POST['pass'];
if (isset($_POST['user'])); {
$db = mysqli_connect('localhost', 'root', '', 'db');
if($query = mysqli_query($db, "SELECT `pass` FROM `accounts` WHERE `user` = '$username'")){
while($row = mysqli_fetch_assoc($query)){
$row['pass'] = $setpassword;
}
mysqli_free_result($query);
}
}
В настоящее время он извлекает из формы имя пользователя и пароль, которые ввел пользователь, берет это имя пользователя и находит строку с этим именем пользователя, получает пароль из этой строки и устанавливает его как переменную $setpassword. Ниже приведен код для проверки соответствия пароля заданному имени пользователя в базе данных.
if ($password=='') {
$verify = 0;
}
if ($password!='') {
if ($password!=$setpassword) {
$verify = 1;
}
if ($password==$setpassword) {
$verify = 2;
}
}
Если подтвердить... 0 - появится форма входа, так как ничего не было введено. 1 - Неверный пароль будет отображаться вместе с формой входа. 2 - Будет отображен правильный пароль, а имя пользователя будет присвоено переменной сеанса.
У меня проблема, когда пользователь может ввести имя пользователя, которого не существует, и любой пароль, независимо от того, находится ли он в базе данных или нет, и он будет проверен.
Что я могу сделать, чтобы проверить, не существует ли имя пользователя в базе данных?
$row['pass'] = $setpassword;
. Скорее всего, вы имели в виду ЧИТАТЬ из $row, а не переопределять значения. - person yankee   schedule 07.01.2012mysql_escape_string
, чтобы избежать инъекции БД, которая может сильно испортить все. - person DaOgre   schedule 07.01.2012