Друзья,создаю систему регистрации. Регистрацию создал. А вот на авторизации наткнулся на проблемку,долго смотрел в ман,но не фига не понял. Вобщем для проверки вводимого пользователем логина и пароля я отправлял запрос с именем пользователем и хешем пароля который он ввел в поле,но они не совпадают. Одинаковые символы дают разный хеш но чет голова закружилась,ничего не понял почему так. Или нужно задать настройки для хеша PHP: <?php session_start(); ?> <!DOCTYPE html> <html lang="en"> <head> <link rel="stylesheet" href="css/main.css"> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Giriş</title> </head> <body> <form action="vendor/auth.php" method="post" enctype="multipart/form-data"> <label>Kullanıcı adı</label> <input placeholder="Kullanıcı adı giriniz" type="text" name="username" id="" value="<?php if (isset($_SESSION['username'])) { echo $_SESSION['username']; } unset($_SESSION['username']); ?>"> <label>Şifre</label> <input placeholder="Şifre giriniz" type="password" name="password" id="" value="<?php if (isset($_SESSION['password'])) { echo $_SESSION['password']; } unset($_SESSION['password']); ?>"> <button type="submit">Giriş yap</button> <p>Hesabın yok mu? <a href="register.php">Hesap oluştur</a></p> <?php if (isset($_SESSION['message'])) { echo '<p class="msg">'.$_SESSION['message']. '</p>'; } unset($_SESSION['message']); ?> </form> </body> </html> PHP: <?php require_once 'connect.php'; session_start(); $username = $_POST['username']; $password = $_POST['password']; if (empty($username)) { $_SESSION['message'] = 'Kullanıcı adınızı girmediniz'; $_SESSION['password'] = $password; header('Location: ../index.php'); die(); } else { if (empty($password)) { $_SESSION['message'] = 'Şifrenizi girmediniz'; $_SESSION['username'] = $username; header('Location: ../index.php'); } } if (!empty($username) and !empty($password)) { $_SESSION['password'] = $password; $_SESSION['username'] = $username; } $get_username = $connect->prepare("SELECT * FROM users WHERE username = :uname and password = :pass"); $get_username->execute([':uname' => $username,'pass'=>password_hash($password, PASSWORD_DEFAULT)]); if ($get_username->rowCount() > 0) { echo 'Пользователь найден'; die; } ?>
Уже помогли,спасибо. вот как правильно,сверять хеш с бд с введенным паролем от пользователя PHP: if (password_verify ($password,$result['password'],)==False) { $_SESSION['message'] = 'Неверный пароль'; $_SESSION['username'] = $username; header('Location: ../index.php'); die(); } else { ваш код}