Этот код входа работает, но как работает $ hashedpass с хешированной переменной pass $ 2y $ 10 $ …?
Снова.
Мне нужна переменная функция ‘$ hashedpass’.
Как дать ‘$ hashedpass’ из базы данных? У каждого пользователя есть переменная pass / hash.
<?php
$data['error_message'] = $lang['error_empty_login'];
$loginId = $escapeObj->stringEscape($_POST['login_id']);
$hash = password_hash($_POST['login_password'], PASSWORD_DEFAULT);
$hashedpass='$2y$10$.............';
$crypto_pass = password_verify($hash, $hashedpass);
$userId = getUserId($conn, $loginId);
if ($userId)
{
$query = $conn->query("SELECT id,username,email_verified FROM " . DB_ACCOUNTS . " WHERE id=$userId AND password='$hashedpass' AND type='user' AND active=1");
$data['error_message'] = $lang['error_bad_login'];
if ($query->num_rows == 1)
{
$fetch = $query->fetch_array(MYSQLI_ASSOC);
$continue = true;
if ($config['email_verification'] == 1 && $fetch['email_verified'] == 0)
{
$continue = false;
$data['error_message'] = $lang['error_verify_email'];
}
if ($continue == true)
{
$_SESSION['user_id'] = $fetch['id'];
$_SESSION['user_pass'] = $hashedpass;
if (isset($_POST['keep_logged_in']) && $_POST['keep_logged_in'] == true)
{
setcookie('sk_u_i', $_SESSION['user_id'], time() + (60 * 60 * 24 * 7));
setcookie('sk_u_p', $_SESSION['user_pass'], time() + (60 * 60 * 24 * 7));
}
$data['status'] = 200;
$data['redirect_url'] = smoothLink('index.php?tab1=home');
}
}
else
{
$data['error_message'] = $lang['incorrect_password'];
}
}
else
{
$data['error_message'] = $lang['no_user_found'];
}
header("Content-type: application/json; charset=utf-8");
echo json_encode($data);
$conn->close();
exit();
Спасибо.
Ты делаешь это неправильно. password_verify()
ожидает в качестве первого аргумента необработанную введенную пользователем строку пароля, например,
$pw = $_POST['password'];
$user = $_POST['username'];
$info = get_user_information_from_database($user);
if(password_verify($pw, $info['storedhash'])) {
... password matched hash ...
} else {
... incorrect pw/user
}
Другими словами, когда создается пользовательская запись, вы сохраняете хеш, сгенерированный password_hash()
, Когда вы заходите, чтобы проверить / войти в систему пользователя, вы получите хеш, затем используйте хеш и введенный пароль с password_verify()
,
Других решений пока нет …