Я следовал руководству по созданию cms, но инструктор использовал md5 для паролей, я пытаюсь изменить его на использование password_hash
.Пароль, используемый в моей базе данных sql, использует password_hash, но я не понимаю, как его проверить на странице входа в систему.
Я пытался изменить md5 на password_hash
на странице входа, но это не помогло.не работает, и я также пытался password_verify
.Я знаю, что их следует использовать, но не могу понять, где и что мне следует изменить.
<?php
session_start();
include_once('../includes/connection.php');
if (isset($_SESSION['logged_in'])) {
?>
<html>
<head>
<title>CMS Tutorial</title>
<link rel="stylesheet" href="../assets/style.css"/>
</head>
<body>
<div class="container">
<a href="index.php" id="logo">CMS</a>
<br />
<ol>
<li><a href="add.php">Add Article</a></li>
<li><a href="delete.php">Delete Article</a></li>
<li><a href="logout.php">Logout</a></li>
</ol>
</div>
</body>
</html>
<?php
}else{
if (isset($_POST['username'], $_POST['password'])) {
$username = $_POST['username'];
//$password = md5($_POST['password']);
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
if (empty($username) or empty($password)){
$error = 'All fields are required!';
}else{
$query = $pdo->prepare("SELECT * FROM users WHERE user_name = ? AND user_password = ?");
$query->bindValue(1, $username);
$query->bindValue(2, $password);
$query->execute();
$num = $query->rowCount();
if ($num == 1) {
$_SESSION['logged_in'] = true;
header('Location: index.php');
exit();
//user entered correct details
}else{
//user entered false details
$error = 'Incorrect details!';
}
}
}
?>
<html>
<head>
<title>CMS Tutorial</title>
<link rel="stylesheet" href="../assets/style.css"/>
</head>
<body>
<div class="container">
<a href="index.php" id="logo">CMS</a>
<br /><br />
<?php if (isset($error)) { ?>
<small style="color:#aa0000"><?php echo $error; ?></small>
<br /><br />
<?php } ?>
<form action="index.php" method="post" autocomplete="off">
<input type="text" name="username" placeholder="Username" />
<input type="password" name="password" placeholder="Password" />
<input type="submit" value="Login" />
</form>
</div>
</body>
<html>
<?php
}
?>
В данный момент я просто получаю
«неверные данные» ошибки
, который я создал, и если я использую password_verify, я получаю
«все поля обязательны для заполнения»