Всем приветики! Использую вот такой код для проверки есть ли вообще такой пользователь в бд <?php $login = filter_var(trim($_POST['login_name']), FILTER_SANITIZE_STRING); $pass = filter_var(trim($_POST['login_password']), FILTER_SANITIZE_STRING); $mysql = new mysqli('localhost', 'root', '', 'users-bd'); $result = $mysql->query("SELECT*FROM `user` WHERE `login` = '$login' AND `pass` = '$pass'"); if ($result->num_rows == 0) { echo "Такой пользователь не найден"; exit; } print_r($user); exit(); $mysql->close(); header('Location: /'); ?> Но при попытке написать ник, который есть в бд ошибка "Такой пользователь не найден" всё равно выскакивает. Я новичок, поэтому даже этого не знаю.
Вставляй в следующий раз код правильно. Кнопка </>. Отучайся хранить пароль в открытом виде в БД. Он должен лежать в виде необратимого хеша. https://php.net/password_hash. Не надо ничего санитайзить, надо использовать подготовленные выражения. https://php.net/mysqli_prepare. Способ отладки SQL-запросов - вывести, что в итоге получилось, на экран, потом посмотреть в phpmyadmin и аналогах, работает ли.
PHP: <?php $login = filter_var(trim($_POST['login_name']), FILTER_SANITIZE_STRING); $email = filter_var(trim($_POST['email']), FILTER_SANITIZE_STRING); $pass = filter_var(trim($_POST['login_password']), FILTER_SANITIZE_STRING); $passr = filter_var(trim($_POST['password-repeat']), FILTER_SANITIZE_STRING); $pass = md5($pass."S12"); $mysqli = require __DIR__ . "\db.php"; $result = mysqli_query($mysqli, "SELECT * FROM `user` WHERE `login` = '$login' OR `mail` = '$email'"); if (mysqli_num_rows($result) > 0) { echo "<script> alert('Логин или почта уже были взяты'); </script>"; } else{ if ($pass == $passr) { $sql = "INSERT INTO `user` (`login`, `mail`, `password_hash`) VALUES ('$login', '$email', '$pass')"; $stml = $mysqli->stmt_init(); $stmt->prepare($sql); print_r($_POST); var_dump($pass); } } ?> А теперь выскакивает это: Warning: mysqli_query() expects parameter 1 to be mysqli, int given in C:\OSPanel\domains\site\register.php on line 14 Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in C:\OSPanel\domains\site\register.php on line 15
Это что-то новое появилось... И вангую, ты ничего не возвращаешь из этого файла, поэтому require возвращает единицу, если мне память не изменяет, о том, что успешно включился скрипт. Надо осознавать, что ты пишешь в коде В таком виде подготовка вообще бесполезна... Ссылки, которые я дал, явно не прочитал