这是我在数据库功能中的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!并显示错误“登录时出错。用户名或密码不匹配”...
请帮忙。
答案 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
}