我想在这里做的一件非常简单的事情,但我是想撞墙为什么不起作用。所有代码对我来说都是有意义的。
我有一个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>