以下是我写的判断  可是老是执行 最后一句: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 '登录失败';
                }
            }
        }
?>请专业人士看下 多指导下 谢了!

解决方案 »

  1.   

    ("localhost", "root", "root") 
    第三个是密码你确定是root 而不是空?
      

  2.   

    很奇怪,首先你说能输出最后一句,那就证明楼上说法不对,数据库连不上直接die了
    不过更奇怪的是你能输出最后一句,代码里这句 mysql_select_db(test,$conn) 没问题?test是什么?然后抛开这些都不管,你把post过来的值和数据库里的值输出看看不就知道了,可能有引号被addslashes了
      

  3.   

    你这种写法有问题,你应该把你的用户名和密码代进去进行验证。像这样:      $sql = "SELECT * FROM tb_login where userName='$username' and password='$password'";
          $query = mysql_query($sql);
          $num=mysql_num_rows($query);
          if($num>0){
                 echo "<script language='javascript'>alert('登陆成功!');location.href='index.php';</script>";
          }else {
                echo '登录失败';
          }
      }
      

  4.   

    楼上,直接这么用要小心SQL注入噢
      

  5.   

    首先。。你的排版确实不好看啊虽然我也是新手下来,你的sql语句可能有问题如果不考虑传入参数的过滤问题,
    $sql = "SELECT * FROM tb_login WHERE  `userName`=='$username' AND  `psaaword`=='$password'" ;
    $query = mysql_query($sql);
    if(mysql_num_rows($query)){
    echo "登陆成功了,进行其他js操作";
    }else{
    echo "登陆失败了";
    }
      

  6.   

    mysql_select_db(test,$conn);
    这里错了,应该是
    mysql_select_db("test",$conn);另外如果你的密码是经过md5加密过得,那么下边的判断是错误的
    if($rows["userName"] ==$username && $rows["password"]==$password)
    应该是
    if($rows["userName"] ==$username && $rows["password"]==md5($password))
      

  7.   

    俺是非专业的:呵呵....
    提供几条建议吧:
    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!
      

  8.   

    还有,你的代码绝对绝对有问题!!!我用你的测试,居然,居然,居然循环了一大堆错误....郁闷.....还有应该是编码错误,除了大堆循环,没检查到其他错误了,使用GBK编码后返回"登陆成功"!
    不过还是建议采用其它的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 '登录失败';
      }
      }
      }
    ?>
      

  9.   

    查询语句错了,要设置where,要不所有的记录都提取出来,只可能有一条与你的密码,用户相同,会输出很多的登录失败,可以设置是否有匹配的,统计匹配数量,在while执行后,通过这个计数大于0判断为登录成功,否失败;最好是设置查询条件$sql = "SELECT * FROM tb_login WHERE  `userName`=='$username' AND  `psaaword`=='$password'",通过是否存在,判断登录
      

  10.   

    最好还是要把查询的字段写上,这样数据库运算会快些
    select username,password from tb_login
      

  11.   

    echo 为什么一定要“”号?
    没有变量最好直接用‘’号
    “”会经过PHP解释寻变量再输出,''直接输出字符串效率高一些
      

  12.   

    如果不想用
    $sql = "SELECT * FROM tb_login WHERE `userName`=='$username' AND `psaaword`=='$password'";
    那就在while循环里加入一个变量,默认为false,如果验证成功就把值设为true
    然后循环外判断,是true就输出登录成功,false就是失败
    这样效率很低哦。。
      

  13.   

    有没有人知道 在php 代码里   "?> 、、、、、、、?>" 是啥意思?
      

  14.   

    楼主,我觉得你SQL语句写的太偷懒了,你现在数据库是只有一个账号一个密码,假如有很多账号和密码怎么办?我觉得你应该用SQL语句查询和自己在页面上输入的账号和密码相符合的记录,假如有返回,说明账号和密码成功,记录数>0即说明账号密码验证成功,数据库里的账号列设唯一。
      

  15.   

    首先你的用户是怎么添加的,用sql语句还是数据库直接写的,接下来就是你数据库里的密码有没有进行过md5加密,如果md5加密过,你这样$rows["password"]==$password判断,怎么判断都是错的。
      

  16.   

    还有最简单的方法就是把$rows["userName"],$username ,$rows["password"],$password这四个值都输出来看看,看看输出的都是什么值。然后用输出语句放到每个循环去输出看看,找出if不执行的原因。