Приветствую всех! кому не сложно помогите с проблемой. Суть проблемы в том, что когда я пишу (Правильный логин и пароль) у меня пишет Неверный логин или пароль. Помогите исправить ошибку ибо я уже просто не понимаю что к чему. Исходник кода <?php include 'globals.php'; //if ($_POST['login'] == null || $_POST['password'] == null || $_POST['hwid'] == null) if (isset($_POST['login']) == null || isset($_POST['password']) == null || isset($_POST['hwid']) == null) die(); $u_login = $_POST['login']; $u_password = $_POST['password']; $u_hwid = $_POST['hwid']; $controller = new mysqli(DB_HOST, DB_LOGIN, DB_PASSWORD, DB_NAME); $rsp = $controller -> query("SELECT * FROM `users` WHERE login = `$u_login` AND password = `$u_password`"); if($rsp -> num_rows == 0) { $controller -> close(); die("2"); } $u_data = $rsp->fetch_assoc(); $id = $u_data['id']; $db_hwid = $u_data['hwid']; if($db_hwid == null) { $controller->query("UPDATE users SET hwid='$u_hwid' WHERE id='$id'"); $controller -> close(); die("3"); } if($db_hwid != $u_hwid) { $controller -> close(); die("4"); } $controller -> close(); die("1");
наверно потому что здесь `$u_login`, `$u_password` должны быть простые кавычки? Код (Text): SELECT * FROM `users` WHERE login = `$u_login` AND password = `$u_password` Фильтруй данные из $_POST, а то тебя когда-нибудь взломают. Если я в эту переменную $u_password = $_POST['password']; отправлю Код (Text): ' UNION SELECT * FROM`users` WHERE `login` = 'admin , тогда у тебя запрос станет Код (Text): SELECT * FROM `users` WHERE `login` = '$u_login' AND `password` = '' UNION SELECT * FROM`users` WHERE `login` = 'admin' , админа проапдейтим не так ли на следующем шаге?
Я бы первую проверку как то так сделал: PHP: $u_login = filter_input(INPUT_POST, 'login' , FILTER_SANITIZE_STRING); $u_password = filter_input(INPUT_POST, 'password' , FILTER_SANITIZE_STRING); $u_hwid = filter_input(INPUT_POST, 'hwid' , FILTER_SANITIZE_STRING); if(empty($u_login)){ die('empty login'); } elseif(empty ($u_hwid)){ die('empty hwid'); } elseif (empty ($u_password)) { die('empty password'); }