2015-03-31 66 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()