Не работает проверка на правильность данных

Не зависимо от правильности пароля или логина , сайт считает его валидным

$login = filter_var(trim($_POST['login']),FILTER_SANITIZE_STRING);
$pass = filter_var(trim($_POST['pass']),FILTER_SANITIZE_STRING);

$mysql = new mysqli('localhost','user','password','db');
$result=$mysql->query("SELECT * FROM form") ;
$user=$result->fetch_assoc();
if (count ($user)==0) {
  echo "Такой пользователь не найден";
  exit;
}
setcookie("user", $user['name'], time()+3600,"/");
$mysql->close();
header('location: /' );
?>

Ответы (1 шт):

Автор решения: Вадим Александру

Вы выбираете все записи, потом проверяете их количество, т.е если в траблице есть хотябы одна запись - проверка будет проходить вне зависиости от введенных данных.

Вот как можно изменить ваш код

// здесь необходимо реализовать логику хеширования  пароля, обычно это md5
function passwd($password)
{
    return md5($password);
}

$login = filter_var(trim($_POST['login']),FILTER_SANITIZE_STRING);
$pass = filter_var(trim($_POST['pass']),FILTER_SANITIZE_STRING);
$mysql = new mysqli('localhost','user','password','db');
//$result=$mysql->query("SELECT * FROM form") ;
$result=$mysql->query("SELECT * FROM form WHERE login = {$login} AND password = " . passwd($pass)) ;
$user=$result->fetch_assoc();
if (count ($user)==0) {
    echo "Такой пользователь не найден";
    exit;
}
setcookie("user", $user['name'], time()+3600,"/");
$mysql->close();
→ Ссылка