为什么我在php中输入错误的用户名和密码错误

时间:2012-03-07 03:58:58

标签: php

这是我在数据库功能中的checklogin

function CheckLoginInDB($username,$password)
{
    if(!$this->DBLogin())
    {
        $this->HandleError("Database login failed!");
        return false;
    }          
    $username = $this->SanitizeForSQL($username);
    $pwdmd5 = md5($password);
    $qry = "Select name, email from $this->tablename where username='$username' and password='$pwdmd5' and confirmcode='y'";

    $result = mysql_query($qry,$this->connection);

    if(!$result || mysql_num_rows($result) <= 0)
    {
        $this->HandleError("Error logging in. The username or password does not match");
        return false;
    }

    $row = mysql_fetch_assoc($result);


    $_SESSION['name_of_user']  = $row['name'];
    $_SESSION['email_of_user'] = $row['email'];
    $_SESSION['user_name']=$row['username'];

    return true;
}

............................................... ........................................ 这在login.php中称为

if($fgmembersite->Login()) 

如果返回true,则会将用户指向登录成功页面。 但我不知道为什么它总是返回false!并显示错误“登录时出错。用户名或密码不匹配”...

请帮忙。

2 个答案:

答案 0 :(得分:1)

编辑:我也注意到在您的代码中,您调用了一种方法,但是您向我们展示了一种不同的方法......我认为这不对。

尝试将or die(mysql_error())添加到您的专栏:

$result = mysql_query($qry,$this->connection);

成为:

$result = mysql_query($qry,$this->connection) or die(mysql_error());

我的猜测是你的查询失败了。

答案 1 :(得分:1)

由于这种情况,如果您的查询由于语法错误而失败,您仍然会收到&#34;错误登录&#34;消息,这是查询失败的伪造:

 if(!$result || mysql_num_rows($result) <= 0)

更改为:

 if (!$result) {
     echo mysql_error();
 }
 else if (mysql_num_rows($result) <= 0) {
    // error logging in, non-matching user/pass
 }