以下是我写的判断 可是老是执行 最后一句:echo '登录失败';<?php
$username=$_POST["userName"];
$password=$_POST["password"];
if($username=="" || $password==""){
echo "<script language='javascript'>alert('用户名或密码有误');location.href='login.php';</script>";
}
else {
$conn = mysql_connect("localhost", "root", "root") or die("链接数据库失败!");
mysql_select_db(test,$conn);
$sql = "SELECT * FROM tb_login";
$query = mysql_query($sql);
while($rows=mysql_fetch_array($query))
{
if($rows["userName"] ==$username && $rows["password"]==$password)
{
echo "<script language='javascript'>alert('登陆成功!');location.href='index.php';</script>";
}
else {
echo '登录失败';
}
}
}
?>请专业人士看下 多指导下 谢了!
$username=$_POST["userName"];
$password=$_POST["password"];
if($username=="" || $password==""){
echo "<script language='javascript'>alert('用户名或密码有误');location.href='login.php';</script>";
}
else {
$conn = mysql_connect("localhost", "root", "root") or die("链接数据库失败!");
mysql_select_db(test,$conn);
$sql = "SELECT * FROM tb_login";
$query = mysql_query($sql);
while($rows=mysql_fetch_array($query))
{
if($rows["userName"] ==$username && $rows["password"]==$password)
{
echo "<script language='javascript'>alert('登陆成功!');location.href='index.php';</script>";
}
else {
echo '登录失败';
}
}
}
?>请专业人士看下 多指导下 谢了!
第三个是密码你确定是root 而不是空?
不过更奇怪的是你能输出最后一句,代码里这句 mysql_select_db(test,$conn) 没问题?test是什么?然后抛开这些都不管,你把post过来的值和数据库里的值输出看看不就知道了,可能有引号被addslashes了
$query = mysql_query($sql);
$num=mysql_num_rows($query);
if($num>0){
echo "<script language='javascript'>alert('登陆成功!');location.href='index.php';</script>";
}else {
echo '登录失败';
}
}
$sql = "SELECT * FROM tb_login WHERE `userName`=='$username' AND `psaaword`=='$password'" ;
$query = mysql_query($sql);
if(mysql_num_rows($query)){
echo "登陆成功了,进行其他js操作";
}else{
echo "登陆失败了";
}
这里错了,应该是
mysql_select_db("test",$conn);另外如果你的密码是经过md5加密过得,那么下边的判断是错误的
if($rows["userName"] ==$username && $rows["password"]==$password)
应该是
if($rows["userName"] ==$username && $rows["password"]==md5($password))
提供几条建议吧:
mysql_select_db(test,$conn);?确定你的源代码是这样?我很奇怪,这样写的代码为什么没有报错?test现在是以常量形式传递的....
加个引号吧,然后同connect一样,做个or die();的判断,是否是选择数据库错了??
2楼的童鞋说的很对,最好都print出来看看....
另外,确定你的数据库里的数据没问题?编码规则啊,没设置编码,GBK数据会是乱码乱码滴!如果你的username里是中文的话....
mysql_query("SET NAMES $names");看看吧.....
还是数据对比问题,还是建个测试表,username = hello password = world;测试一下代码,确定没有问题了,那就一定是数据库数据的问题了.....
好好检查吧........
然后,很讨厌整天connect,select_db,很讨厌while -> row;大哥!写个db类吧,就算是db函数也行,整站布局,省得老是找db错误!!!还有老是循环.....Oh,My gods!
不过还是建议采用其它的sql查询方法,你这样循环一两个用户还好,用户多了....呵呵
楼上的代码不错,可以考虑哈
<?php
$username= 'hello';
$password= 'world';
$conn = mysql_connect("localhost", "root", 'root') or die("链接数据库失败!");
mysql_select_db('test',$conn) or die('error:: unknows dbname');
mysql_query('set names gbk');
$sql = "SELECT * FROM tb_login";
$query = mysql_query($sql);
while($rows=mysql_fetch_array($query))
{
if($rows["USER"] ==$username && $rows["PASS"]==$password)
{
echo "<script language='javascript'>alert('登陆成功!');</script>";
}
else {
echo '登录失败';
}
}
}
?>
select username,password from tb_login
没有变量最好直接用‘’号
“”会经过PHP解释寻变量再输出,''直接输出字符串效率高一些
$sql = "SELECT * FROM tb_login WHERE `userName`=='$username' AND `psaaword`=='$password'";
那就在while循环里加入一个变量,默认为false,如果验证成功就把值设为true
然后循环外判断,是true就输出登录成功,false就是失败
这样效率很低哦。。