我做了个用户的登入和注册界面;我注册模块是有用能注册。就是登入模块中获取不到数据库中注册时的密码。老是说密码错误。代码:<?phpsession_start();$Uname=$_POST["Uname"];$Upwd=$_POST["Upwd"];$_SESSION["Uname"]=$Uname;include("link.php");$str="select Uname from user where Uname='$Uname'";$result=mysql_query($str,$link) or die("查询用户信息失败:".mysql_error());$row=mysql_num_rows($result);if($row!=0){ list($Uname,$Pwd)=mysql_fetch_row($result); echo $Uname; echo $Uwd; if($Pwd == $Upwd){ $str="update user set isonline=1 where Uname='$Uname' and Pwd='$Upwd'"; $result=mysql_query($str,$link); echo "<script>location.href='main.php';</script>"; }else { echo "<script>alert('您输入的密码错误,请重新输入!');location.href='index.php';</script>"; }}else {echo "<script>alert('该用户不存在!请注册!');location.href='create_user.php';</script>";}mysql_close($link);?>我的密码现在是没加密的,为什么我在list($Uname,$Pwd)=mysql_fetch_row($result); 后面加上echo $Uname; 和echo $Pwd; 页面上只显示 $Uname 的值。。没有 $Pwd 。而且提示密码错误就是执行}else { echo "<script>alert('您输入的密码错误,请重新输入!');location.href='index.php';</script>"; } 的。为什么,,有什么解决方法。。
1.看看密码是否被加密。 2.list($key,$value)=each($arr); !!是 list($Uname,$Pwd)=mysql_fetch_row($result); 的错误: mysql_fetch_row($result) 返回一个数组 正确格式是:list($Uname,$Pwd)=each(mysql_fetch_row($result));
说的不是很详细,我分析有几种可能,楼主可逐一排查:1.如楼上所说,用户注册的密码是否以MD5加密存储数据库,如果是,那么匹配时应该这样:$password = md5($Upwd);if($Pwd == $Upwd){2.如果数据库中的密码为md5格式存储,那么看看你的密码字段长度是否足够存储md5后的密码字符串,这里推荐你使用长度40。