所以,我的登录脚本存在这个问题,我的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
}
}
答案 0 :(得分:1)
md5()都是一样的。您必须检查列数据类型和字符数限制。
检查您的数据库是否具有加密值。因为您要将其与md5()
值进行比较。
答案 1 :(得分:1)
在对查询执行md5之前不要转义。
如果varchar太小,Ankii的回复也可以解决问题。
另外,使用更好的散列系统(sha512?)。 另外,使用盐。