我试图创建一个登录脚本来连接我的myBB论坛数据库,并回显真或假用户名和密码是否正确,但我不断收到此错误:
致命错误:在第 76 行的/home2/tronic/public_html/forum/inc/tronic_login.php 中的非对象上调用成员函数 escape_string
)function validate_password_from_username()
{
$username = $_GET['username'];
$password = $_GET['password'];
global $db, $mybb;
$username = $db->escape_string(my_strtolower($username));
switch($mybb->settings['username_method'])
{
case 0:
$query = $db->simple_select("users", "uid,username,password,salt,loginkey,coppauser,usergroup", "LOWER(username)='".$username."'", array('limit' => 1));
break;
case 1:
$query = $db->simple_select("users", "uid,username,password,salt,loginkey,coppauser,usergroup", "LOWER(email)='".$username."'", array('limit' => 1));
break;
case 2:
$query = $db->simple_select("users", "uid,username,password,salt,loginkey,coppauser,usergroup", "LOWER(username)='".$username."' OR LOWER(email)='".$username."'", array('limit' => 1));
break;
default:
$query = $db->simple_select("users", "uid,username,password,salt,loginkey,coppauser,usergroup", "LOWER(username)='".$username."'", array('limit' => 1));
break;
}
$user = $db->fetch_array($query);
if(!$user['uid'])
{
echo("false");
}
else
{
echo("true");
}
}
http://pastebin.com/KU130cZE
在第 8 行中,您调用$db->escape_string(my_strtolower($username));
。问题是:$db
尚未定义,或者不是对象。
我不能告诉你它是什么,因为它是一个全局变量(坏事,应该避免那些!),所以我无法说出它在哪里设置以及它有什么值 - 但它显然不是一个对象,所以我最好的选择是它要么是未设置/null
,要么是false
因为某些应该设置它的函数出错并返回false
。