Хеширование и проверка пароля
1137 просмотра
2 ответа
Я работаю с моим маленьким PHP-проектом и пытаюсь реализовать хеширование при регистрации, и мне нужно подтвердить свой хешированный пароль, когда пользователь хочет войти в систему. Я много пробовал, но не понимаю, как я могу использовать password_verify функция в моем коде.
В моем registration.php у меня есть код:
$username = $_POST['username'];
$password = password_hash($_POST['password'], PASSWORD_DEFAULT);
$email = $_POST['email'];
Мой файл login.php выглядит так:
$username = $_POST['username'];
$password = $_POST['password'];
$username = htmlentities($username, ENT_QUOTES, "utf-8");
$password = htmlentities($password, ENT_QUOTES, "utf-8");
if ($result = @$connect_db->query(sprintf("SELECT * FROM users WHERE username='%s' AND password='%s'",
mysqli_real_escape_string($connect_db, $username),
mysqli_real_escape_string($connect_db, $password)))
) {
$amount = $result->num_rows;
if ($amount > 0) {
$_SESSION['logged_in'] = true;
$row = $result->fetch_assoc();
$_SESSION['user_id'] = $row['user_id'];
$_SESSION['username'] = $row['username'];
$_SESSION['enter code hereemail'] = $row['email'];
$_SESSION['admin'] = $row['admin'];
unset($_SESSION['error']);
$result->free_result();
header('Location: dictionary.php');
} else {
$_SESSION['error'] = '<p class="error_m">Invalid username or password!</p>';
header('Location: index.php');
}
}
Мой вопрос о том, как использовать функцию password_verify в моем файле login.php?
Автор: ShabbyAbby Источник Размещён: 12.11.2019 09:14Ответы (2)
0 плюса
вы не хешируете пароль, который пользователь вводит в форму, а вы хешируете пароль, когда пользователь фактически регистрируется на вашем сайте
$password = filter_var($_POST['aPass'] , FILTER_SANITIZE_STRING) ;
$newPassword = password_hash($password , PASSWORD_DEFAULT);
// input $newPassword into the database.
Для процесса входа и как использовать функцию password_verify
$username = filter_var($_POST['username'] , FILTER_SANITIZE_STRING);
$password = filter_var($_POST['password'],FILTER_SANITIZE_STRING);
// i assume the connection to the database has been established already
$check = mysqli_query($con , "SELECT passwordtable FROM tablename WHERE usertable=$username") ;
if(mysqli_num_rows($check) === 1){
//fetch the assoc data,would skip that
//since the data has been fetched,we can now use the password_verify function,assuming you saved the fetched data in a variable called $dbPass
if(password_verify($password , $dbPass)){
//the function takes in two parameters, the first being the inputted pass from your form and the second the hashed password from the database
header('Location: dictionary.php');
exit();
} else {
echo 'Invalid password' ;
}
}
Вы также должны посмотреть на MySQL подготовленные заявления
Автор: adelowo Размещён: 26.05.2015 05:001 плюс
Когда вы сохраняете результат password_hash()
в базе данных, вы сохраняете хешированный пароль. Чтобы проверить, правильно ли введен пароль для входа в систему, вы можете сделать что-то вроде этого (псевдокод):
$result = $db->getAssoc("SELECT password FROM users WHERE username='".$username."'");
if ($result) {
if(password_verify($password, $result['password']){
//log the user in
}
}
http://php.net/manual/en/function.password-verify.php
Автор: Andrew Размещён: 26.05.2015 04:57Вопросы из категории :
- php Как вы отлаживаете PHP-скрипты?
- php Заставьте XAMPP / Apache обслуживать файл вне htdocs
- php Как включить файлы PHP, которые требуют абсолютного пути?
- php Скрипт входа со скрытыми кнопками
- hash Есть ли какая-либо функция хэш-кода в JavaScript?
- hash Есть ли фиксированная точка MD5, где md5 (x) == x?
- hash Какой тип данных использовать для поля хешированного пароля и какой длины?
- hash Почему Java hashCode () в String использует 31 в качестве множителя?
- login Как защитить паролем потоковое видео с помощью php
- login Удаление запомненного списка логина и пароля в SQL Server Management Studio
- login Как перенаправить на страницу входа, когда сеанс истек в веб-приложении Java?
- login Простой скрипт входа в систему без базы данных
- passwords Отключить функцию браузера «Сохранить пароль»
- passwords Генерация случайных паролей
- passwords Как сгенерировать случайную строку в Ruby
- passwords Нужно ли вводить максимальную длину для паролей?
- verification Best way to verify real world identity (name & address)?
- verification Mockito: проверка с общими параметрами
- verification Идентификация удаленного хоста ssh изменилась
- verification Хеширование и проверка пароля