Хорошо, поэтому я пытаюсь создать базовую систему аутентификации пользователей. Ну, я уже это сделал. Но то, что я пытаюсь сделать сейчас, - это проверить пароль пользователей на хэш. Я использую $ hash = password_hash ($ password, PASSWORD_DEFAULT); но для страницы входа я хочу проверить пароль пользователей с хешированным паролем в базе данных, чтобы они могли войти в систему. Как я могу это сделать?Пользовательские идентификаторы паролей пользователей
register.php:
<?php
include('config.php');
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
function mres($input){
if (get_magic_quotes_gpc()){
$input = stripslashes($input);
}
return mysqli_real_escape_string($conn, $_POST['$input']);
}
$email=mysqli_real_escape_string($conn, $_POST['email']);
$username=mysqli_real_escape_string($conn, $_POST['username']);
$password=mysqli_real_escape_string($conn, $_POST['password']);
$hash = password_hash($password, PASSWORD_DEFAULT);
$query = $conn->query("select * from users where username='$username'");
$rows = mysqli_num_rows($query);
if ($rows == 1) {
echo "User already exist redirecting in 5 seconds!";
} else {
$sql = "INSERT INTO users (username, password, email)
VALUES ('$username', '$hash', '$email')";
if ($conn->query($sql) === TRUE) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
}
$conn->close();
header("Location: ../index.php");
?>
login.php:
<?php
session_start();
include('config.php');
$error='';
if (isset($_POST['submit'])) {
if (empty($_POST['userid']) || empty($_POST['passid'])) {
$error = "Username or Password is invalid";
}
else
{
$user=mysqli_real_escape_string($conn, $_POST['userid']);
$pass=mysqli_real_escape_string($conn, $_POST['passid']);
$hash = password_hash($pass, PASSWORD_DEFAULT);
$passv = password_verify($pass, $hash);
$query = $conn->query("select * from users where password='$passv' AND username='$user'");
$rows = mysqli_num_rows($query);
if ($rows == 1) {
$_SESSION['login_user']=$username;
$_SESSION['username']=$user;
$_SESSION['checklogin']== true;
header("location: ../profile.php");
} else {
$error = "Username or Password is invalid";
}
mysqli_close($conn);
}
}
?>
(Да я знаю, я добавил, что функция Там, что им не используется в реестре Сво для использования в будущем им сохранить его для. теперь у меня есть планы.)
Прочтите эту документацию http://php.net/manual/en/function.password-verify.php – Scuzzy
Я всего лишь продолжаю давать мне недействительный пароль. –
Я уверен, что он генерирует новый хэш для проверки пароля, когда он не должен. Мне просто нужно проверить этот пароль для этого хэша или что-то еще, что нужно сделать для входа в систему. –