twofolls95
@twofolls95

Почему не срабатывает else?

Всем привет!

Есть функция авторизации пользователя:

function authorization_user($connect){
	session_start();
	$username = $_POST['login'];
	$password = $_POST['password'];
	if(isset($_POST['submit'])){
		$query = "SELECT * FROM users WHERE login = '$username' AND password = '$password'";
		$sql = mysqli_query($connect, $query);
		if(mysqli_num_rows($sql) > 0){
			$_SESSION['user'] = $username;
			header('Location: pages/profile.php');
			exit();
		} else {
			die('Fuck you!');
		}
	}
}


Всё работает нормально, кроме одного, в случае, если в форму ввели некорректные данные, то die() не срабатывает. Кто может подсказать почему так?
  • Вопрос задан
  • 232 просмотра
Пригласить эксперта
Ответы на вопрос 2
JackWilliams
@JackWilliams
Не используйте mysqli_query. Это может быть небезопасно. Есть риск SQL инъекций, в вашем коде они никак не предотвращаются. В бд обязательно храните хеш пароля, а не сам пароль. Почитайте про password_hash

Используйте что-то в таком духе:
$db = db_connect();
$query = "SELECT attempts_number FROM registration_verification_codes WHERE phone = ? ORDER BY time DESC";
 $stmt = $db->prepare($query);
 $stmt->bind_param("i", $phone);
 $stmt->bind_result($attempts_number);
 if (!$stmt->execute())
 {

     throw new Exception('STMT ERROR: ' . $stmt->error, 3);

 }
 $stmt->fetch();

 if($attempts_number >=5 ){

   $answer["status"] = "OK";
   $answer["message"] = 'verification code attempts number has exceeded';
   $answer["verification_code_attempts_number_has_exceeded"] = true;
   $answer["verification_code_expired"] = true;

   http_response_code(200);
   echo json_encode($answer);

   exit;

 }

 $stmt->close();
Ответ написан
revenger
@revenger
49.5
if(mysqli_num_rows($sql) > 0)
Очевидно, что в условии нужно указать не > 0 а == 0
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы