PHP(count()) авторизация на странице
еще у меня есть процесс авторизации на страничке, код:
<?php
$login = filter_var(trim($_POST['login']),
FILTER_SANITIZE_STRING);
$password = filter_var(trim($_POST['password']),
FILTER_SANITIZE_STRING);
$password = md5($password."ghjsfkld2345");
$mysql = new mysqli('localhost', 'root', '', 'registerdb');
$result = $mysql->query("SELECT * FROM `users` WHERE `login` =
'$login' AND `password` = '$password'");
$user = $result->fetch_assoc();
if(count($user) == 0) {
echo "Такого пользователя не существует...";
exit();
}
setcookie('user', $user['name'], time() + 3600, "/");
$mysql->close();
header('Location: index.php');
?>
Здесь ↓
$user = $result->fetch_assoc();
if(count($user) == 0) {
echo "Такого пользователя не существует...";
exit();
}
я хочу проверить наличие пользователя в базе данных, и если его нет(если такого массива, который
я подал при авторизации не будет в базе) то должно появиться просто сообщение:
"Такого пользователя не существует..."
Вместо этого я получаю:
Fatal error: Uncaught TypeError: count(): Argument #1 ($var) must be of type Countable|array, null given in E:\php\htdocs\serwis_dla_programistow\auth.php:15 Stack trace: #0 {main} thrown in
Ответы (1 шт):
$result->fetch_assoc() возвращает просто информацию о юзере. Я б на Вашем месте использовал mysqli_num_rows($result)== 0, который возвращает кол-во строк в БД которые вернул запрос.
А еще сразу после запроса проверяйте его успех:
if(!$result) echo $mysql->error;