Home > Backend Development > PHP Tutorial > 关于MD5密码存储和比较的问题

关于MD5密码存储和比较的问题

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
Release: 2016-06-20 12:34:27
Original
1609 people have browsed it

我在注册时把密码用MD5加密的方式存储在mysql中,在登陆时用md5()比较,数值一直不对,导致一直比较失败,求解答


回复讨论(解决方案)

楼下贴出代码

这是判断的那个功能模块:
function pd(){//验证密码是否正确
$id=$_POST['id'];
$pwd=trim(md5($_POST['pwd']));
echo "$pwd"."";
$sql=mysql_query("SELECT * FROM `xx` WHERE `id`='$id'AND`password`='$pwd'");
$sql_p=mysql_num_rows($sql);
echo"$sql_p";
if($sql_p==0){
echo "<script> alert('密码不正确');window.location.herf='index.php';</script>";
}
else
{echo "<script> alert('密码正确');</script>";}
}

数据库中的md5值;
root2
e10adc3949ba59abbe56e057f20f88;
网页显示的值;
e10adc3949ba59abbe56e057f20f883e

$pwd=md5(trim($_POST['pwd']));//如果还是不行,重新生成一个md5的值,放到数据库再试下,看看是不是插入的时候错了
Copy after login

echo md5('root2');mysql_connect();$rs = mysql_query("select md5('root2')");print_r(mysql_fetch_row($rs));
Copy after login
9b70d6dbfb1457d05e4e2c2fbb42d7dbArray(    [0] => 9b70d6dbfb1457d05e4e2c2fbb42d7db)
Copy after login
并不存在什么 e10adc3949ba59abbe56e057f20f883e

网页显示的这个 e10adc3949ba59abbe56e057f20f883e
不出意外的话是123456 跟你说得root2一点边都沾不上

PS 再多嘴说一句 看你数据库显示不全 基本上应该是密码的字段设置的位数不合理造成的 少了2个字符 至少char(32) 吧

1.desc xx 看看表结构,password字段长度需要32位
2.

echo md5('root2');  //9b70d6dbfb1457d05e4e2c2fbb42d7db
Copy after login


e10adc3949ba59abbe56e057f20f883e是md5(123456)的值。

楼主可以给出明文密码,与数据库中记录的密码。

source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template