具有登录访问权限的PHP用户类

具有登录访问权限的PHP用户类,php,oop,Php,Oop,我在谷歌搜索了一些关于登录系统的信息,但问题是我试图自己去那里,而不是按照一个告诉我一切的指南去做 我有一个index.php,其顶部包含一个menu.php,其中包含一个login_form.php,它调用login.php进行登录。 在login中,php使用类User进行登录。 user.php为connection.php提供了require_once 我在一些很容易解决的问题上失败了,但我看不出来,因为这对我来说是新的。问题是发生了错误: 未定义变量:第12行admin\include

我在谷歌搜索了一些关于登录系统的信息,但问题是我试图自己去那里,而不是按照一个告诉我一切的指南去做

我有一个index.php,其顶部包含一个menu.php,其中包含一个login_form.php,它调用login.php进行登录。 在login中,php使用类User进行登录。 user.php为connection.php提供了
require_once

我在一些很容易解决的问题上失败了,但我看不出来,因为这对我来说是新的。问题是发生了错误:

未定义变量:第12行admin\include\lib\user.php中的mysql

connection.php:

 require_once 'constants.php';
 $mysql = new mysqli($db['host'], $db['username'], $db['password'], $db['name']);

if ($mysql->connect_error){
    die('Connection error (' . $mysql->connect_errno.')'. $mysql->connect_error);
}
user.php->第12行:

$this->password=$mysql->real_escape_string($this->password);
作为一个旁注index.php作为connection.php、constants.php(其中包含带有主机、用户等的$db数组)和class.php的require_once。 我真的很想了解OOP的概念,所以我非常感谢你的帮助

提前谢谢各位

编辑:
我相信这将是一个有点难给你的文件结构,但我可以向你保证,我需要的东西是正确的。为了证明这一点,我做了
var\u转储($mysql)
。如果我在user.php中调用它,但在类user之外,它会显示内容。但是,如果我在类User内部调用它,它会给出未定义的错误。

您有一个变量范围问题
$mysql
在用户类中超出范围。我建议将变量传递给构造函数中的类,并将其存储为属性:

class User
{
    protected $mysql;   

    public function __construct($mysql)
    {
        $this->mysql = $mysql;
    }

    public function something()
    {
        $this->password = $this->mysql->real_escape_string($this->password);
    }
}
传递连接的示例用法:

require_once 'connection.php'; // creates $mysql
$user = new User($mysql);
在整个课程中,您现在可以使用
$this->mysql
访问连接

  • 更多信息

在user.php中,尝试var_dump()ing$mysql以确保它是正确的。在包含
user.php
之前,您是否忘记了包含
connection.php
?或者忘记将其包含在
user.php
中?(很明显,我不知道你的文件是怎么排列的)首先谢谢。我真的理解了你说的话,我正试图在课堂范围内找到更多!实际上,我这样做了,然后使用另一种方法登录。这样,当我构建时,我只告诉它按照您所说的那样创建$mysql。然后在方法login上,我从表单发送参数进行登录。我相信是这样吧?