2015-03-31 30 views
-1

我有以下形式:加密表單數據MD5

 <form method="post" enctype="application/x-www-form-urlencoded" action="logincheck.php" autocomplete="off" > 
     <table> 
     <tr> 
     <td><label for="username">Username</label></td> 
     <td><input type="text" name="username"></input></td> 
     </tr> 
     <tr> 
     <td><label for="password">Password</label></td> 
     <td><input name="password" type="password"></input></td> 
     </tr> 
     <tr> 
     <td><input type="submit" value="Submit"</input></td> 
     </tr> 
     </table> 
     </form> 

而且loginsuccess.php具有下列檢查(有更多的PHP代碼,但是這是相關部分):

$username = mysqli_real_escape_string($connect, $_POST['username']); 
$password = mysqli_real_escape_string($connect, $_POST['password']); 

$encrypted_mypassword=md5($password); 

$query = "SELECT * FROM students WHERE username = '".$username."' AND password = '".$encrypted_mypassword."'"; 
$result = $connect->query($query); 

的用戶應被帶到另一個頁面(其作品,未經新:

$encrypted_mypassword=md5($password); 

但相反,他們被送到誤差p年齡,它不工作。有任何想法嗎?

+0

'MD5'是一個散列算法而不是一個加密算法。相應地更改標籤。另外'MD5'被嚴重破壞,不應再使用。 – 2015-03-31 21:44:44

+0

是的,我知道這兩個。但我希望使用MD5。那麼你能幫忙嗎?.. – David 2015-03-31 21:45:45

+0

沒有足夠的信息來構建一個有意義的答案。什麼不工作?你如何檢查結果?用戶如何被「轉到另一個頁面」? – 2015-03-31 21:48:42

回答

1

問題似乎是您在數據庫中存儲密碼明文。您需要存儲密碼,而不是密碼

請記住,現在MD5並不是適用於密碼散列的算法,尤其是如果它也可用於不加密的話。它太快了,可以比較容易地進行強力搜索。改爲使用password_hash()