Задать вопрос
@Jomm

Echo mysqli_num_rows($check_user); выдает ноль вместо единицы. Можете помочь?

Вероятней всего проблема в пятой строке. Но я не уверен.
<?php
	session_start();
	require_once "connect.php";

	$Email = $_POST["Email"];
	$Password = md5($_POST["Password"]);

	$check_user = mysqli_query($connect, "SELECT * FROM `users` WHERE 'Email' = '$Email' AND 'Password' = '$Password'");

	echo mysqli_num_rows($check_user);
  • Вопрос задан
  • 109 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Откуда вы раскопали такой древний код?
Вместо md5 для хэширования пароля следует использовать функции password_hash, для проверки - password_verify.
Вместо подстановки данных в строку следует использовать подготовленные запросы с плейсхолдерами.
Ну и, собственно, ошибка в запросе. Прямые одиночные кавычки ( ' ) в MySQL обозначают строки. Названия баз данных, таблиц и полей обозначаются обратными одиночными кавычками ( ` ).
Как-то так:

<?php
  session_start();
  require_once "connect.php";

  $stmt = mysqli_prepare($connect, "SELECT `Password` FROM `users` WHERE `Email` = ?");
  mysqli_stmt_bind_param('s', $_POST['Email']);
  mysqli_stmt_bind_result($hash);
  mysqli_stmt_execute($stmt);
  if (mysqli_stmt_fetch($stmt) && password_verify($_POST['password'], $hash)) {
      echo 'Logged';
    }
  }

Естественно, пароль должен быть записан в БД через password_hash.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
part_os
@part_os
Сложное в простом
попробуйте так:
"SELECT * FROM `users` WHERE Email = $Email AND Password = $Password"


а ещё почитайте:
https://www.php.net/manual/ru/pdo.prepared-stateme...
Ответ написан
Ваш ответ на вопрос

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

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