PHP md5密码不等于数据库md5密码

时间:2015-06-24 11:18:18

标签: php mysql

所以,我的登录脚本存在这个问题,我的MySQL数据库中存储的MD5密码被解密,它将检查密码是否与输入的密码相同。

我的代码如下:

if(isset($_POST['btn-login']))
{
 $email = mysqli_real_escape_string($_POST['email']);
 $upass = mysqli_real_escape_string($_POST['pass']);
 $md5_pass = md5($upass);
 $res = mysqli_query($con, "SELECT * FROM users WHERE email='$email'");
 $row = mysqli_fetch_array($res, MYSQLI_ASSOC);
 if($row['password'] == $md5_pass)
 {
  $_SESSION['user'] = $row['user_id'];
  header("Location: profile.php");
 }
 else
 {  ?>
  <script>alert("Wrong details entered!");</script>
  <?php
 }

}

2 个答案:

答案 0 :(得分:1)

md5()都是一样的。您必须检查列数据类型和字符数限制。

检查您的数据库是否具有加密值。因为您要将其与md5()值进行比较。

答案 1 :(得分:1)

在对查询执行md5之前不要转义。

如果varchar太小,Ankii的回复也可以解决问题。

另外,使用更好的散列系统(sha512?)。 另外,使用盐。