登录/注册PHP面向对象样式错误

登录/注册PHP面向对象样式错误,php,Php,我是PHP中的面向对象新手,我正在尝试将登录和注册表单放入我的社交媒体网站项目中。我遇到了这个错误Uncaught错误:在[DIRECTORY]/user.php:11中调用null上的成员函数query(),这就是(user.php的全部代码): 上面的代码主要用于登录和注册表单的所有功能(在其他文件中有一些功能代码块),但我认为问题出在user.php(这一个)上&我认为它缺少我花了一个小时才弄明白的东西。您正在调用$this->db->query($sql) 但是你从来没有给$this

我是PHP中的面向对象新手,我正在尝试将登录和注册表单放入我的社交媒体网站项目中。我遇到了这个错误
Uncaught错误:在[DIRECTORY]/user.php:11
中调用null上的成员函数query(),这就是(user.php的全部代码):



上面的代码主要用于登录和注册表单的所有功能(在其他文件中有一些功能代码块),但我认为问题出在user.php(这一个)上&我认为它缺少我花了一个小时才弄明白的东西。

您正在调用$this->db->query($sql)


但是你从来没有给$this->db变量赋值过,你不会接受它的,是吗?MD5是旧的和破碎的。改用
密码\u hash()
。你也可以注射;使用准备好的语句。您将值赋给
$this->db
的确切位置是哪里?我希望这可能是在一个构造函数中,但你没有。不,它不会上线,它只是一个对本地机器的测试。是的,我知道password_hash(),它简单、简短且更安全,但由于这是一台仅用于本地测试的机器。。。我使用MD5。你能共享'lib/database\u config.php'文件吗保护你的输入免受SQL注入攻击这就是问题所在,解决了它!在我的lib/database_config.php中,有$db的值,然后我把它放错地方了,但现在它工作了。在我看来,这是一个稍微愚蠢的错误。那么,你应该接受这个答案。
<?php
    include_once 'lib/database_config.php';

    class User {
        public $db;

        public function reg_user($name, $userName, $userPassword, $email) {
            $userPassword = md5($userPassword);
            $sql = "SELECT * FROM users WHERE username='$userName' OR email='$email'";

            // the error line                 
            $check = $this->db->query($sql);
            // ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
            $count_row = $check->num_rows;

            if($count_row == 0) {
                $sql1 = "INSERT INTO users SET username='$userName', password='$userPassword', fullName='$name', email='$email'";
                $result = mysqli_query($this->db, $sql1) or die(mysqli_connect_errno()."Data can't insert.");
                return $result;
            } else {
                return false;
            }
        }

        // Login Process
        public function check_login($emailusername, $password) {
            $password = md5($password);
            $sql2 = "SELECT id from users WHERE email='$emailusername' or username='$emailusername' and password='$password'";

            // Check if the username is available in the table 
            $result = mysqli_query($this->db, $sql2);
            $user_data = mysqli_fetch_array($result);
            $count_row = $result->num_rows;

            if($count_row == 1) {
                $_SESSION['login'] = true;
                $_SESSION['id'] = $user_data['id'];
                return true;
            } else {
                return false;
            }
        }

        // Session start
        public function get_session() {
            return $_SESSION['login'];
        }

        public function user_logout() {
            $_SESSION['login'] = FALSE;
            session_destroy();
        }
    }


?>