2015-04-03 73 views
-1
//index.php 
<html> 
<head> 
<!--utf html5 declareren--> 
<link rel="stylesheet" type="text/css" href="style.css"> 
<link rel="stylesheet" type="text/css" href="cssreset.css"> 
</head> 
<body> 
<form action="login.php" method="POST"> 
username: <input type="text" name="usernamebox" required> <br> 
password: <input type="password" name="passwordboxlogin" required> <br> 
<input type="submit" value="Login"> 
</form> 

<form action="register.php"> 
    <input type="submit" value="Click here if you want to register"> 
</form> 


</body> 
</html> 

//login.php 

<?php 
session_start(); 

error_reporting(E_ALL); 



include ('connect.php'); 



$username = $_POST['usernamebox']; 
$password = $_POST['passwordboxlogin']; 
$_SESSION['usernamebox'] = $username; 

//$db->query("SELECT * FROM `users` WHERE `username` = '$username'"); 
// 
//$db->query("SELECT * FROM `users` WHERE `password` = '$password'"); 



//nieuw 



$hash = "SELECT password FROM users WHERE username= '$username' "; 



if (password_verify($password, $hash)) 
{ 
    echo 'Password is valid!'; 
    //header("Location: userpage.php"); 
} 
else 
{ 
    echo 'Invalid password.'; 
} 






?> 
<html> 
<head> 
    <link rel="stylesheet" type="text/css" href="style.css"> 
</head> 
<body> 


</body> 
</html> 

我是一名IT學員,我似乎無法獲得此password_verify()函數的工作。password_verify()不起作用

我基本上試圖將mysqli中的密碼哈希與login.php中POST表單中給出的密碼進行比較。密碼正確地散列到我的數據庫。

+0

你實際上並沒有從數據庫中檢索密碼......你只是簡單地創建一個包含SQL查詢的字符串,但不會執行它;然後將該字符串與輸入的密碼 – 2015-04-03 16:13:33

+0

的數據庫中的密碼進行比較是VARCHAR64 ...感謝Mark!生病試圖解決它 – Derikoe 2015-04-03 16:22:30

回答

0

你正在進行錯誤的功能。您需要輸入密碼和散列密碼,然後比較兩者。你想要的東西是這樣的:

$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; 

    if (password_verify('rasmuslerdorf', $hash)) { 
     echo 'Password is valid!'; 
    } else { 
     echo 'Invalid password.'; 
    } 

所以首先,你將不得不查詢數據庫並獲得哈希密碼,然後進行比較。在你的例子中,你正在散列實際的查詢字符串本身。

+0

$ select =「選擇密碼從用戶WHERE用戶名='$用戶名'」; $ resultaat = $ db-> query($ select); if($ resultaat-> num_rows> 0){while($ rij = $ resultaat-> fetch_assoc()){if(password_verify($ password,$ rij ['password'])){echo'Password is valid!'; // header(「Location:userpage.php」); }其他{回聲'密碼無效。'; }}}顯然上面的代碼工作......非常感謝!我試着選擇上面的所有代碼,並按Ctrl + K(即時嘗試成爲一個好用戶),但它沒有工作。請解釋如何在評論中按Ctrl + K?如果你想要脫課;) – Derikoe 2015-04-03 18:34:54

+1

Mark實際上首先得到了正確答案,因爲我已經試圖比較$ password = $ _POST ['passwordboxlogin'];到$哈希(我的意思是包含查詢),但你def幫助。謝謝。我非常感謝你的幫助和MrTechie! – Derikoe 2015-04-03 18:35:32

+0

很高興我能幫忙:) – MrTechie 2015-04-03 21:12:10