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

来源:百度知道 编辑:UC知道 时间:2024/05/09 10:04:35
刚学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(&

这样写不好,在新版本的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.你怀疑出错的那行有误,应该是$user==$_POST[user],但问题不是这
2.经过 while($res=mysql_fetch_array($sql)){
$user=$res[user];
$pass=$res[pass];
}
则遍历了整张表reg的user和pass,此时的$user和$pass为最后一组值
再判断$user是否等于提交的$_P