小弟在自学PHP,目前在写一个留言板,写admin.php这部分代码时,登录用普通user的账户也可登录,不知道哪里出错了。我SQL语句选的是admin表的啊,为什么连user表中的用户也能选到?不懂,求大神解答。
admin.php代码
<?php error_reporting(0); @session_start(); require_once 'conn/conn.php'; $user_name=$_POST['name']; $password=md5($_POST['password']); $_SESSION['user_name']=$user_name; if(strlen($user_name)<1){?><html><head> <title>管理员登陆</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><body><center><form method="post" action="admin.php"><table border='1'> <tr> <th colspan='2' bgcolor='cccccc'>用户登陆</th> </tr> <tr> <td align='right'>Username:</td> <td><input type='text' name='name' maxlength='16' size='16'></input></td> </tr> <tr> <td align='right'>Password:</td> <td><input type='password' name='password' size='16' maxlength='10'></input></td> </tr> <tr> <td colspan='2'><font size="2"><input type='submit' value='确认登陆'></input> <input type='reset' value='重新填写'></input> <a href='message.php'>注册新用户</a> </font></td> </tr></table></form></center><?php } else if(strlen($user_name)>1){ $query="select * from admin where user_name=? and password=?";// echo $query;// exit; $st=$db->prepare($query); $rs = $st->execute(array($user_name,$password)); if($rs == false) { echo "<center><script>alert('登陆失败!');window.location.href='admin.php'</script></center>"; } else { // echo "登陆成功!"; echo "<center><script>alert('管理员登陆成功!');window.location.href='admin_select_neirong.php'</script></center>"; } }?></body></html>
加个字段 admin特殊标识一下就可以 欢迎访问个人php学习网站 http://www.phpthinking.com
把admin用单引号括起来吗?还是.....你得登录成功了,再保存到session啊
????
1. $_SESSION['user_name']=$user_name; ?句??登入成功後再?用
2. 普通用??管理?都用$_SESSION['user_name'] 判?是否登入,??普通用?登入後,判?管理?登入都?是登入??了。
??把管理?的登入保存?成$_SESSION['admin_user_name'] 在管理?才可以?入的?面,判?$_SESSION['admin_user_name'] 而不是$_SESSION['user_name']
楼上正解!登陆成功才保存到会话里,不然在判断会话中的变量时不是登录与否都存在,那还登陆做什么。
????
1. $_SESSION['user_name']=$user_name; ?句??登入成功後再?用
2. 普通用??管理?都用$_SESSION['user_name'] 判?是否登入,??普通用?登入後,判?管理?登入都?是登入??了。
??把管理?的登入保存?成$_SESSION['admin_user_name'] 在管理?才可以?入的?面,判?$_SESSION['admin_user_name'] 而不是$_SESSION['user_name']
????
1. $_SESSION['user_name']=$user_name; ?句??登入成功後再?用
2. 普通用??管理?都用$_SESSION['user_name'] 判?是否登入,??普通用?登入後,判?管理?登入都?是登入??了。
??把管理?的登入保存?成$_SESSION['admin_user_name'] 在管理?才可以?入的?面,判?$_SESSION['admin_user_name'] 而不是$_SESSION['user_name']
????
1. $_SESSION['user_name']=$user_name; ?句??登入成功後再?用
2. 普通用??管理?都用$_SESSION['user_name'] 判?是否登入,??普通用?登入後,判?管理?登入都?是登入??了。
??把管理?的登入保存?成$_SESSION['admin_user_name'] 在管理?才可以?入的?面,判?$_SESSION['admin_user_name'] 而不是$_SESSION['user_name']
????
1. $_SESSION['user_name']=$user_name; ?句??登入成功後再?用
2. 普通用??管理?都用$_SESSION['user_name'] 判?是否登入,??普通用?登入後,判?管理?登入都?是登入??了。
??把管理?的登入保存?成$_SESSION['admin_user_name'] 在管理?才可以?入的?面,判?$_SESSION['admin_user_name'] 而不是$_SESSION['user_name']
????
1. $_SESSION['user_name']=$user_name; ?句??登入成功後再?用
2. 普通用??管理?都用$_SESSION['user_name'] 判?是否登入,??普通用?登入後,判?管理?登入都?是登入??了。
??把管理?的登入保存?成$_SESSION['admin_user_name'] 在管理?才可以?入的?面,判?$_SESSION['admin_user_name'] 而不是$_SESSION['user_name']