Проверка подлинности пользователя на базе данных MySQL не работает - PullRequest
0 голосов
/ 21 октября 2018

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

У меня есть база данных MySQL, и мои пользовательские данные (имя пользователя и пароль) хранятся в базе данных.Пароль зашифрован с помощью функции password_hash ().Я знаю, что пароль успешно хэшируется, потому что я вижу значение хеш-функции в бэкэнде базы данных в Sequel Pro.

Проблема, с которой я столкнулся, заключается в попытке заставить мою страницу входа проходить аутентификацию с этим именем пользователя и паролем.Также странно то, что даже если я оставлю поле имени пользователя и пароль пустым на странице входа в систему, при нажатии кнопки «Отправить» страница будет мигать, как будто она отправляет некоторые данные, но не выдает никаких ошибок на странице или чем-либо еще.

Файл password.php, который вы видите в верхней части файла, является следующим: https://github.com/ircmaxell/password_compat

Вот мой код в server.php

<?php
require('password.php');
session_start();

$errors = array();

// connect to the database
$db = mysqli_connect('127.0.0.1', 'root', 'password', 'mydb');
if (!$db) {
    die ('Failed to connect to MySQL: ' . mysqli_connect_error());
}
// LOGIN USER
if (isset($_POST['login'])) {
  $usernameLogin = mysqli_real_escape_string($db, $_POST['usernameLogin']);
  $passwordLogin = $_POST['lpass'];
    $password_encrypted = password_hash($passwordLogin, PASSWORD_DEFAULT);

  if (empty($usernameLogin)) {
    array_push($errors, "Username is required");
  }
  if (empty($passwordLogin)) {
    array_push($errors, "Password is required");
  }

  if (count($errors) == 0) {

         $authLogin = "SELECT * FROM users WHERE username='$usernameLogin' AND password='$password_encrypted'";
           $resultLogin = mysqli_query($db, $authLogin);
        if (password_verify($passwordLogin, $password_encrypted)) {
          $_SESSION['username'] = $usernameLogin;
          $_SESSION['success'] = "You are now logged in";
          header('location: index.php');
        } else {
        array_push($errors, "Wrong username/password combination");
        }
    }
  }
}

 ?>

Вот мой login.php

<?php include('server.php');
      require('password.php');
 ?>

<html lang="en">
<head>
  <link rel="stylesheet" type="text/css" href="createaccountstyle.css">
</head>
<div>

<form method="post" action="login.php" id="msform" enctype="multipart/form-data">
  <?php include('errors.php'); ?>
  <!-- fieldsets -->
  <fieldset>
    <h2 class="fs-title">Login to Your Account</h2>
    <input type="text" name="usernameLogin" placeholder="Username" />
    <input type="password" name="lpass" placeholder="Password" />
    <button type="submit" name="login" class="login action-button">Login</button><br><br>
  </fieldset>
</form>
<center><div class="fs-title">
<p>
        Not yet a member?<br><a href="createaccount.php">Sign up</a>
    </p>
</div></center>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script type="text/javascript" src="http://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.3/jquery.easing.min.js"></script>
<script type="text/javascript" src="createaccount.js"></script>


</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...