Форма авторизации php

177
06 марта 2019, 01:30

Есть сайт, на котором надо сделать форму авторизации. Она должна проверять наличие данного пользователя в MySQL по введенному им логину и паролю. Имеется табличка users, а в ней столбики id, login, password. Мной был написан код, определяющий кол-во id, где столбик login равен логину, введенному пользователем, И столбик password равен паролю, введенному пользователем и зашифрованным md5(т.к. в таблице пароли хранятся уже в зашифрованном виде). Если кол-во id будет не равно нулю, то нас должно перекинуть на другую страницу, но этого не происходит... Помогите, пожалуйста, решить проблему. Я думаю, что проблема может быть в headere или в выборке из БД.(P.S.- в коде используется сессия) Вот сам код:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="utf-8">
    <title>Авторизация</title>
    <link rel="stylesheet" href="style.css">
  </head>
  <body>
   <?php  
  session_start();  
  $mysqli = new mysqli("domen", "login", "password", "DB");
  if(isset($_POST["send"])){

    $login = htmlspecialchars($_POST["login"]);
    $pswrd = htmlspecialchars($_POST["password"]);
    $_SESSION["login"] = $login;
    $_SESSION["pswrd"] = $pswrd;
    $error_login = "";
    $error_pswrd = "";
    $error_auth = "";
    if (strlen($login) == 0) {
      $error_login = "Введите login";
    }
    if (strlen($pswrd) == 0) {
      $error_pswrd = "Введите пароль";
    }
    if ($mysqli->query("SELECT count(`id`) FROM `users` WHERE `login`='$login' AND `password`='".md5("$pswrd")."' ") != 0) {
                header("Location: http://www.pupok.ru/Devices/show.php");
    }
        else {
             $error_auth = "Учетная запись с таким логином не существует";
        }  
  }
    ?>

    <form name="feedback" action="" method="post">
      <label>Введите ваш логин</label><br>
      <input type="text" name="login" placeholder="Ваш логин" value="<?=$_SESSION["login"]?>">
      <span style="color:red"><?=$error_login?></span><br>
      <label>Введите ваш пароль</label><br>
      <input type="password" name="password" placeholder="Ваш пароль" value="<?=$_SESSION["pswrd"]?>">
      <span style="color:red"><?=$error_pswrd?></span>
      <span style="color:red"><?=$error_auth?></span><br>
      <input type="submit" name="send" value="Отправить">
    </form>
  </body>
</html>
Answer 1

$mysqli->query не возвращает результат. Вам нужно еще выбрать результат и уже результат сравнивать

if ($myquery = $mysqli->query("SELECT count(`id`) as cnt FROM `users` WHERE `login`='$login' AND `password`='".md5("$pswrd")."' ") != 0) {
    if ($row = $myquery->fetch_assoc() && $row['cnt']>0) {
        header("Location: http://www.pupok.ru/Devices/show.php");
    }              
}
READ ALSO
Сайт не отдает заголовков и возвращает пустой результат на любой запрос

Сайт не отдает заголовков и возвращает пустой результат на любой запрос

Возникла проблема: внезапно сайт поставщика, с которого я собираю остатки начал отдавать пустой результатfile_get_contents возвращает пустоту

173
Как через echo выдать переменную [закрыт]

Как через echo выдать переменную [закрыт]

Как через echo выдать переменную "$text" ?

193
Не могу получить последний id

Не могу получить последний id

Подскажите пожалуйста, есть код проверяет последний id в таблице

170
Объединить массивы

Объединить массивы

Имеются массивы выводятся в цикле

181