Я знаю, что зарегистрировал «1» в качестве пароля, но поскольку я проверяю пароль, хранящийся в БД, с помощью pass_verify(), он не может быть распознан правильно. Может ли кто-нибудь указать, что я сделал не так? Если я использую md5() или sha1(), все работает нормально, но я знаю, что это более безопасная реализация хеширования пароля.
handleForms.php
if (isset($_POST['registerUserBtn'])) {
$username = sanitizeInput($_POST['username']);
$first_name = sanitizeInput($_POST['first_name']);
$last_name = sanitizeInput($_POST['last_name']);
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];
if (!empty($username) && !empty($first_name) && !empty($last_name) && !empty($password) && !empty($confirm_password)) {
if ($password == $confirm_password) {
$insertQuery = insertNewUser($pdo, $username, $first_name,
$last_name, password_hash($_POST['password'], PASSWORD_DEFAULT));
if ($insertQuery) {
header("Location: ../login.php");
}
else {
header("Location: ../register.php");
}
}
else {
$_SESSION['message'] = "Please make sure that both passwords are equal";
header("Location: ../register.php");
}
}
else {
$_SESSION['message'] = "Please make sure that all input fields are not empty!";
header("Location: ../register.php");
}
}
if (isset($_POST['loginUserBtn'])) {
$username = sanitizeInput($_POST['username']);
$password = $_POST['password'];
if (!empty($username) && !empty($password)) {
$loginQuery = loginUser($pdo, $username, $password);
$userIDFromDB = $loginQuery['user_id'];
$usernameFromDB = $loginQuery['username'];
$passwordFromDB = $loginQuery['password'];
echo "WHAT YOU TYPED: " . $password . "
";
echo "FROM THE DB: " . $passwordFromDB . "
";
if (password_verify($password, $passwordFromDB)) {
echo "YES EQUAL";
}
else {
echo "NOT EQUAL";
}
}
else {
$_SESSION['message'] = "Please make sure the input fields
are not empty for the login!";
header("Location: ../login.php");
}
}
models.php
function insertNewUser($pdo, $username, $first_name, $last_name, $password) {
$checkUserSql = "SELECT * FROM user_accounts WHERE username = ?";
$checkUserSqlStmt = $pdo->prepare($checkUserSql);
$checkUserSqlStmt->execute([$username]);
if ($checkUserSqlStmt->rowCount() == 0) {
$sql = "INSERT INTO user_accounts (username, first_name, last_name, password) VALUES(?,?,?,?)";
$stmt = $pdo->prepare($sql);
$executeQuery = $stmt->execute([$username, $first_name, $last_name, $password]);
if ($executeQuery) {
$_SESSION['message'] = "User successfully inserted";
return true;
}
else {
$_SESSION['message'] = "An error occured from the query";
}
}
else {
$_SESSION['message'] = "User already exists";
}
}
function loginUser($pdo, $username, $password) {
$sql = "SELECT * FROM user_accounts WHERE username=?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username]);
if ($stmt->rowCount() == 1) {
$userInfoRow = $stmt->fetch();
return $userInfoRow;
}
}
Подробнее здесь: https://stackoverflow.com/questions/791 ... -correctly
Pass_hash() не может правильно распознать мой пароль ⇐ Php
Кемеровские программисты php общаются здесь
-
Anonymous
1730364064
Anonymous
Я знаю, что зарегистрировал «1» в качестве пароля, но поскольку я проверяю пароль, хранящийся в БД, с помощью pass_verify(), он не может быть распознан правильно. Может ли кто-нибудь указать, что я сделал не так? Если я использую md5() или sha1(), все работает нормально, но я знаю, что это более безопасная реализация хеширования пароля.
[b]handleForms.php[/b]
if (isset($_POST['registerUserBtn'])) {
$username = sanitizeInput($_POST['username']);
$first_name = sanitizeInput($_POST['first_name']);
$last_name = sanitizeInput($_POST['last_name']);
$password = $_POST['password'];
$confirm_password = $_POST['confirm_password'];
if (!empty($username) && !empty($first_name) && !empty($last_name) && !empty($password) && !empty($confirm_password)) {
if ($password == $confirm_password) {
$insertQuery = insertNewUser($pdo, $username, $first_name,
$last_name, password_hash($_POST['password'], PASSWORD_DEFAULT));
if ($insertQuery) {
header("Location: ../login.php");
}
else {
header("Location: ../register.php");
}
}
else {
$_SESSION['message'] = "Please make sure that both passwords are equal";
header("Location: ../register.php");
}
}
else {
$_SESSION['message'] = "Please make sure that all input fields are not empty!";
header("Location: ../register.php");
}
}
if (isset($_POST['loginUserBtn'])) {
$username = sanitizeInput($_POST['username']);
$password = $_POST['password'];
if (!empty($username) && !empty($password)) {
$loginQuery = loginUser($pdo, $username, $password);
$userIDFromDB = $loginQuery['user_id'];
$usernameFromDB = $loginQuery['username'];
$passwordFromDB = $loginQuery['password'];
echo "WHAT YOU TYPED: " . $password . "
";
echo "FROM THE DB: " . $passwordFromDB . "
";
if (password_verify($password, $passwordFromDB)) {
echo "YES EQUAL";
}
else {
echo "NOT EQUAL";
}
}
else {
$_SESSION['message'] = "Please make sure the input fields
are not empty for the login!";
header("Location: ../login.php");
}
}
[b]models.php[/b]
function insertNewUser($pdo, $username, $first_name, $last_name, $password) {
$checkUserSql = "SELECT * FROM user_accounts WHERE username = ?";
$checkUserSqlStmt = $pdo->prepare($checkUserSql);
$checkUserSqlStmt->execute([$username]);
if ($checkUserSqlStmt->rowCount() == 0) {
$sql = "INSERT INTO user_accounts (username, first_name, last_name, password) VALUES(?,?,?,?)";
$stmt = $pdo->prepare($sql);
$executeQuery = $stmt->execute([$username, $first_name, $last_name, $password]);
if ($executeQuery) {
$_SESSION['message'] = "User successfully inserted";
return true;
}
else {
$_SESSION['message'] = "An error occured from the query";
}
}
else {
$_SESSION['message'] = "User already exists";
}
}
function loginUser($pdo, $username, $password) {
$sql = "SELECT * FROM user_accounts WHERE username=?";
$stmt = $pdo->prepare($sql);
$stmt->execute([$username]);
if ($stmt->rowCount() == 1) {
$userInfoRow = $stmt->fetch();
return $userInfoRow;
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79143971/password-hash-cannot-recognize-my-password-correctly[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия