[英]php mysql bcrypt and password doesn't match
我無法安全地驗證用戶名和密碼。 在檢查數據庫中是否存在電子郵件地址之后,我檢查輸入的密碼是否也與數據庫中的密碼匹配,但是我的密碼未通過驗證。
這是我的user_login.php文件:
require_once "../include/Constants.php";
$conn = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);
if($_SERVER['REQUEST_METHOD']=='POST')
{
$username = $_POST['username'];
$password = $_POST['password'];
//filter this variable for security
$password = strip_tags(mysqli_real_escape_string($conn, trim($password)));
$query = "SELECT * FROM students WHERE s_id = '".$username."' ";
$tbl = mysqli_query($conn, $query);
if(mysqli_num_rows($tbl)>0)
{
//when email is matched it also need to verify the password
$row = mysqli_fetch_array($tbl);
$password_hash = $row['password'];
if(password_verify($password, $password_hash))
{
echo "success";
}
else
{
echo "failed login"."<br/>";
echo $password_hash."<br/>";
echo $password;
}
}
else
{
echo "email failed";
}
由於某些原因,密碼和使用bcrypt加密的密碼不匹配。 我找不到我在做什么錯。 如果您對解決方案有一些了解,請提供幫助。 謝謝!
就目前而言,您需要將mysqli_fetch_array()
更改為
mysqli_fetch_array($tbl, MYSQLI_ASSOC)
,因為僅此一項就獲取了錯誤的數組類型。
如果沒有特定參數,則它( mysqli_fetch_array()
)默認為MYSQLI_BOTH
,是一個關聯數組和數字數組。 PHP可能一直在嘗試訪問錯誤的關聯列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.