因此,我有一个存储ID,用户名和密码的数据库。密码是使用php的password_hash()
函数存储的。该部分工作正常,并且已成功将其与哈希一起存储在数据库中。现在,我想使用password_verify()
函数。我似乎无法正确地从数据库中获取字符串值,以将其用于该功能。
由于我已经在其中存储了一些东西,因此数据库($db
)的设置正确。
数据库中的列仅是ID,用户名和密码。
$ username和$ password是用户登录时填写的内容。
<?php
if (count($errors) == 0) { // Everything correct, so verify pw
$sql = $db->query("SELECT password FROM users WHERE username='$username'");
if ($sql->num_rows > 0 ){
$hashedpass = $sql->fetch_array();
if (password_verify($password, $hashedpass['password'])); {
$msg = "Username and password are correct";
} else {
$msg = "Incorrect";
} else {
$msg = "Incorrect";
}
?>
答案 0 :(得分:0)
已在此处获取数据,使$hashedpass
成为数组:
$hashedpass = $sql->fetch_array();
然后您将使用表中的列名与$hashedpass['password']
进行比较:
password_verify($password, $hashedpass['password'])
Little Bobby说 your script is at risk for SQL Injection Attacks. 。甚至escaping the string都不安全!
答案 1 :(得分:0)
$hashedpass = $sql->fetch_array();
为您提供一个具有所选列名的关联数组。
您应该通过选择正确的元素来获取值-
$hashedpass['password']