我的 php 登錄文件有問題。我通過檢查電子郵件向我的數(shù)據(jù)庫詢問密碼。當我獲得此密碼時,我會使用用戶填寫的密碼進行檢查。結(jié)果password_verify($Passwd, $row['Passwd'])將始終返回 0,但結(jié)果應返回 1(密碼匹配)。為什么我的密碼不一致?登錄代碼:<?phpif(isset($_POST['submit'])){ include_once '../includes/connection.php'; $Email = $_POST['email']; $Passwd = $_POST['passwd']; //Create Template $sql = "SELECT Passwd FROM user WHERE Email = ?"; //Create Prepared Statement $stmt = mysqli_stmt_init($conn); //Prepare Prepared Statement if(!mysqli_stmt_prepare($stmt, $sql)){ echo "SQL Statement Failed"; } else { mysqli_stmt_bind_param($stmt, "s", $Email); mysqli_stmt_execute($stmt); $res = mysqli_stmt_get_result($stmt); while ($row = mysqli_fetch_assoc($res)){ echo $Passwd . "<br>"; echo $row['Passwd']; if(password_verify($Passwd, $row['Passwd'])){ echo "1"; } else { echo "0"; } } }} else { header("Location: ../index.php?login=error");}?>Passwd是數(shù)據(jù)庫中的 varchar(50) 列。
1 回答

qq_花開花謝_0
TA貢獻1835條經(jīng)驗 獲得超7個贊
password_hash手冊說:
建議將結(jié)果存儲在可以擴展超過 60 個字符的數(shù)據(jù)庫列中(255 個字符是一個不錯的選擇)
因此,您需要為數(shù)據(jù)庫中的密碼列指定 60 個字符的最小大小 - 但建議使用更大的大小,例如 255,以防默認哈希算法將來發(fā)生變化。
您還需要重新生成存儲在 50 個字符字段中的任何現(xiàn)有密碼,因為它們在保存時將被截斷,并且額外的信息已丟失,這意味著這些舊密碼永遠無法驗證。
- 1 回答
- 0 關(guān)注
- 154 瀏覽
添加回答
舉報
0/150
提交
取消