我目前沒有與下面的PHP代碼的一個問題:如果登錄頁面上的語句無法繼續。如果if語句滿足
if ($result['username'] == $_POST["name"]) {
$bcrypt = new Bcrypt(10);
$password = $_POST["password"];
$hashdb = $result['password'];
$hash = $bcrypt->hash($password);
$isGood = $bcrypt->verify($password, $hashdb);
if ($isGood == 1) {
if($result['active'] == 1) {
$_SESSION["login"] = $result['firstname']." ".$result['lastname'];
$_SESSION["functionlevel"] = $result['functionlevel'];
header("location:startpagina.php");
} else {
echo 'Account blocked or not activated';
}
} else {
echo 'Password not correct';
}
} else {
echo 'Username not correct';
}
我現在用的是Andrew Moore bcrypt class的哈希,並驗證密碼。 出於某種原因,我的if語句似乎失敗,並在第二個if
聲明後突然停止。如果這個失敗,它顯示密碼不正確選項。但如果這是真的,它不會繼續到第三個if
。
我在第二if
嘗試了不同的選項,如:
if ($isGood){
if ($isGood == true){
if ($isGood !== false){
if ($isGood !== 0){
但不知何故沒有這些似乎繼續如果語句得到滿足。 它只是再次顯示登錄頁面,而不是繼續到startpagina.php
。 在沒有bcrypt實現的情況下,登錄頁面正常工作,只檢查兩個md5哈希值。
任何人都可以幫我找到問題嗎?
第一錯字'$密碼= $ _ POST [「密碼]'應該是' $ password = $ _POST [「password」];' –
其中是$ result ['active'] set?您在IF語句中使用它 - 但我沒有看到它在任何地方定義 – Laurence
@NullPointer修復了錯字。不知何故,在這裏複製和粘貼代碼時,我犯了這個錯誤。 @TheShiftExchange'$ result ['active']'來自數據庫。 $ result是一個包含用戶數據的數組。 – MuerteDiablo