所以我在用户注册和登录时使用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,因为我知道它已被弃用。
答案 0 :(得分:4)
默认情况下,MD5()
函数生成的哈希长度为32个字符。 passwd
列的数据类型目前为VARCHAR (25)
,这意味着它最多只能存储25个字符,比实际值少7个字符。
要解决此问题,您需要更改passwd
列的数据类型,以便能够存储正确的长度,例如VARCHAR (32)
。