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