Mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, bool [кто-нибудь решите это]
<?php include "test.php"; ?> <html> <head> <title>Login </title> </head> <body> <form name="login_form" class="form-vertical" action="" method="post"> <h3>Login Page</h3> Username: <input type="text" name="username" required/> Password: <input type="password" name="password" required/> <center> <input type="submit" name="submit_1" value="Login" /> </center> </form> <?php if (isset($_POST["submit_1"])) { $username=$_POST["username"]; $password=$_POST["password"]; $count=0; $sql="select * from employee where username='$username'&& password='$password'"; $res=mysqli_query($conn,$sql); $count=mysqli_num_rows($res); if($count>0&&!$res) { header("Location:index.php"); } else { ?> <div>Invalid Username or Password</div> <?php } } ?> </body> </html>
Что я уже пробовал:
Он всегда показывает "неверное имя пользователя или пароль".
Richard Deeming
Ваш код уязвим для SQL-инъекция[^]. НИКОГДА используйте конкатенацию строк / интерполяцию для построения SQL-запроса. ВСЕГДА используйте параметризованный запрос.
PHP: SQL-инъекция - руководство пользователя[^]
Richard Deeming
Вы храните пароли в виде обычного текста. НИКОГДА сделать это.
Безопасная Аутентификация Паролем Объясняется Просто[^]
PHP даже имеет встроенные функции, которые помогут вам сделать все правильно:
PHP: password_hash[^]
РНР: функцию password_verify[^]
Richard Deeming
MySQL :: MySQL 8.0 Справочное Руководство :: 12.4.3 Логические Операторы[^]
"Оператор & & amp; является нестандартным расширением MySQL. Начиная с MySQL 8.0.17, этот оператор устарел и поддержка его будет удалена в будущей версии MySQL."