刚学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>
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 'å¯ç æè ç¨æ·å为空';
?>
æ°æ®åºæ¥è¯¢å°±æ¯é£æ åçä¸å¥ï¼ä¸è¦ä½ é£ä¹å¤æã
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()结合用,就不用什么循环了
我也初学,学习了~