>  기사  >  백엔드 개발  >  关于MD5密码存储和比较的问题

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

WBOY
WBOY원래의
2016-06-20 12:34:271554검색

我在注册时把密码用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的值,放到数据库再试下,看看是不是插入的时候错了

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

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

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

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

echo md5('root2');  //9b70d6dbfb1457d05e4e2c2fbb42d7db


e10adc3949ba59abbe56e057f20f883e是md5(123456)的值。

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

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:如何理解这段代码다음 기사:关于php分页的问题