PHP登陆验证,帮我看下为什么错了

刚学PHP不久,不知道为什么错了
<?php
include("conn.php");
include("head.php");
$que="select * from reg";
$sql=mysql_query($que);
while($res=mysql_fetch_array($sql)){
$user=$res[user];
$pass=$res[pass];
}
if($_POST['submit']){
if($use==$_POST[user]){ //我怀疑问题出在这地方,但就是不知道什么吗
if($pass==$_POST[pass]){
echo "<script>alert('登陆成功,你可以发表留言了!');windows.location.href='add.php';</script>";
}
}else{
echo "<script>alert('用户名或密码错误!');windows.location.href='login.php';</script>";
}
}
?>
<SCRIPT languge=javascipt>
function Checklogin()
{
if(myform.user.value=="")
{
alert('请填写用户名!');
myform.user.focus();
return false;
}
if(myform.pass.value=="")
{
alert('密码不能为空!')
}

}
</script>

<body bgcolor="#708090">
<form action="login.php" method="post" name="myform" onsubmit="return Checklogin();">

用户名:<input type="text" name="user" size="13"/><br>
密  码:<input type="password" name="pass" size="20" /><br>
<input type="submit" name="submit" value="确认登陆"/>
<input type="reset"/>

</form>

这样写不好,在新版本的PHP会出错误信息的:
if($use==$_POST[user]){

应该修改为:
if($use==$_POST['user']){
加上引号。

但是关键的问题是你判断的方式不对,我给你修改如下:

<?php
include("conn.php");
include("head.php");
if (isset($_POST['user']) && isset($_POST['pass'])){
//这表示提交了数据,不用判断submit都可以的
$user=$_POST['user'];
$sql="select pass from reg where user='$user'";//从数据库里面获取登录用户的密码
$res=mysql_query($sql);
list($pass)=mysql_fetch_row($res);
mysql_free_result($res);
if ($pass==$_POST['pass']) echo '密码正确,登录成功。';
else echo '密码或者用户错误!';
} else echo '密码或者用户名为空';
?>

数据库查询就是那标准的三句,不要你那么复杂。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-18
1.你怀疑出错的那行有误,应该是$user==$_POST[user],但问题不是这
2.经过 while($res=mysql_fetch_array($sql)){
$user=$res[user];
$pass=$res[pass];
}
则遍历了整张表reg的user和pass,此时的$user和$pass为最后一组值
再判断$user是否等于提交的$_POST[user]自然就不对了
应该把判断放到while循环里,这样就能判断提交的用户名是否是表中的一个,密码同理,不知道我说清楚没有

阳光上的桥回答的真强。。。直接把$_POST[user]那行从数据库取出来,list和mysql_fetch_row()结合用,就不用什么循环了
我也初学,学习了~

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网