当我尝试打开我的网站时,我收到了这个错误:
注意:未定义的属性:第75行的\ www \ classes \ db.class.php中的User :: $ mysqli
致命错误:在第75行的www \ classes \ db.class.php中的非对象上调用成员函数prepare()
75行和GetInstance()
public static function getInstance()
{
if (empty(self::$instance)) {
self::$instance = new self();
}
return self::$instance;
}
public function session_check($username, $hash)
{
if ($stmt = $this->mysqli->prepare("SELECT `hash` FROM `accounts` WHERE `username` = ?")) {
$stmt->bind_param("s", $username);
$stmt->execute();
$stmt->bind_result($db_hash);
$stmt->fetch();
$stmt->close();
if ($hash == $db_hash) return true;
}
return false;
}
用户类
class User extends db
{
public $username;
public $user_info;
public function __construct()
{
if (!isset($_SESSION['username']) || !isset($_SESSION['hash']) || !isset($_SESSION['last_activity'])) {
Template::login_page('login.tpl');
exit;
} else {
$this->username = $_SESSION['username'];
if (!db::getInstance()->session_check($this->username, $_SESSION['hash'])) {
Template::login_page('login.tpl');
exit;
}
}
}
}
所以,我不知道出了什么问题。
答案 0 :(得分:0)
我认为你需要使用
if(db :: getInstance() - > session_check($ this-> username, $ _SESSION ['散列']))
而不是
if(!db :: getInstance() - > session_check($ this-> username, $ _SESSION ['散列']))
因此,如果可以初始化类(脚本连接到数据库) - >你可以做点什么。在其他情况下,您需要抛出异常"无法连接到数据库。"。
if (!db::getInstance()->session_check($this->username, $_SESSION['hash'])) {
throw new Exception("Can't connect to database.");
} else {
//blablabla
}