第一种:<?php
$id=$_POST['id'];
$password=$_POST['password'];
$conn=mysql_connect("localhost","root","root");
if (!$conn){
die("连接失败:".mysql_errno());
}
mysql_select_db("emp",$conn) or die(mysql_errno());
mysql_query("set names utf8")or die(mysql_errno());
$sql = "select count(id) from admin where id='".$id."' and password='".md5($password)."'";
$res = mysql_query($sql,$conn);
$num = mysql_num_rows($res);
if($num){
header("location:empManage.php");
exit();
}else{
header("location:login.php?errno=1");
exit();
}
mysql_free_result($res);
mysql_close($conn);
?>
此方法无论密码是否和数据库匹配都可以登陆
方法二:<?php
$id=$_POST['id'];
$password=$_POST['password'];
$conn=mysql_connect("localhost","root","root");
if (!$conn){
die("连接失败:".mysql_errno());
}
mysql_select_db("emp",$conn) or die(mysql_errno());
mysql_query("set names utf8")or die(mysql_errno());
$sql="select password from admin where id=$id";
$res=mysql_query($sql,$conn);
if ($row=mysql_fetch_assoc($res)){
if ($row['password']==md5($password)){
header("location:empManage.php"); }
}
header("location:login.php?errno=1");mysql_free_result($res);
mysql_close($conn);
?>
此方法即使id和密码都正确都无法登陆求高人指点,看看哪里错了导致无法登陆
$id=$_POST['id'];
$password=$_POST['password'];
$conn=mysql_connect("localhost","root","root");
if (!$conn){
die("连接失败:".mysql_errno());
}
mysql_select_db("emp",$conn) or die(mysql_errno());
mysql_query("set names utf8")or die(mysql_errno());
$sql = "select count(id) from admin where id='".$id."' and password='".md5($password)."'";
$res = mysql_query($sql,$conn);
$num = mysql_num_rows($res);
if($num){
header("location:empManage.php");
exit();
}else{
header("location:login.php?errno=1");
exit();
}
mysql_free_result($res);
mysql_close($conn);
?>
此方法无论密码是否和数据库匹配都可以登陆
方法二:<?php
$id=$_POST['id'];
$password=$_POST['password'];
$conn=mysql_connect("localhost","root","root");
if (!$conn){
die("连接失败:".mysql_errno());
}
mysql_select_db("emp",$conn) or die(mysql_errno());
mysql_query("set names utf8")or die(mysql_errno());
$sql="select password from admin where id=$id";
$res=mysql_query($sql,$conn);
if ($row=mysql_fetch_assoc($res)){
if ($row['password']==md5($password)){
header("location:empManage.php"); }
}
header("location:login.php?errno=1");mysql_free_result($res);
mysql_close($conn);
?>
此方法即使id和密码都正确都无法登陆求高人指点,看看哪里错了导致无法登陆
| count(*) |
------------
| 0 |
用mysql_num_rows的结果永远是1,因为有一列,不管这个列的值是不是0.
修改方法自然是fetch取出count列的值再比较
header("location:empManage.php");
之后没有终止程序,
header("location:login.php?errno=1");
始终被执行
既然浏览器收到两条 Location 指令,当然是后一条被优先执行
逻辑问题我想
if ($row=mysql_fetch_assoc($res)){
if ($row['password']==md5($password)){
header("location:empManage.php");
}
}
header("location:login.php?errno=1");假设成功,先header("location:empManage.php"),可到最后仍然会执行header("location:login.php?errno=1")。 header()函数并不会执行后立即发送消息报头给浏览器,于是后面的覆盖了前面的。不过没测试过所以不敢打保票。
把逻辑理顺了看看if ($row=mysql_fetch_assoc($res)){
if ($row['password']==md5($password)){
header("location:empManage.php");
exit();
}
}
header("location:login.php?errno=1");
$sql = "select id from admin where id='".$id."' and password='".md5($password)."'";
$sql="select password from admin where id=$id";id是不是要这样
$sql="select password from admin where id='$id'";
加引号?
if($num){
header("location:empManage.php");
这里错了,应该是 读取count值,然后判断count是否为1则可