PHP MD5无法正常工作

时间:2013-03-30 14:36:33

标签: php md5

所以我在用户注册和登录时使用md5对密码进行编码和解码,但是我的数据库中的密码与登录时使用的密码不一致,即使我知道它们是同一个词:

这就是我的数据库

098f6bcd4621d373cade4e832

这就是在登录界面上使用的密码使用md5给我

098f6bcd4621d373cade4e832627b4f6

正如你所看到的,还有7个额外的角色,但我不知道为什么它们不一样。以下是用于在注册时将用户详细信息插入数据库的脚本

$qry =  "INSERT INTO Members(fname, lname, fullname, email, login, passwd, bad_league_id) 
         VALUES('$fname','$lname',0,'$email', '$login','".md5($_POST['password'])."',0)";
$result = @mysql_query($qry);

以下是我的登录表单比较值

的方式
$qry="SELECT * FROM Members WHERE login='$login' AND passwd='".md5($_POST['password'])."'";
$result=mysql_query($qry);

另一方面,我目前正在从mysql转移到mysqli,所以原谅我使用mysql,因为我知道它已被弃用。

1 个答案:

答案 0 :(得分:4)

默认情况下,MD5()函数生成的哈希长度为32个字符。 passwd列的数据类型目前为VARCHAR (25),这意味着它最多只能存储25个字符,比实际值少7个字符。

要解决此问题,您需要更改passwd列的数据类型,以便能够存储正确的长度,例如VARCHAR (32)