1

我在谷歌搜索了一些关于登录系统的东西,但问题是我试图自己到达那里,而不是遵循告诉我一切的指南。

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

我在一些很容易修复的事情上失败了,但我不太明白,因为这对我来说是新的。问题是发生错误:

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

连接.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 的 require_once,constants.php(其中包含主机、用户等的 $db 数组)和 class.php。我真的很想了解 OOP 概念,所以非常感谢您的帮助!

提前谢谢各位!

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

4

1 回答 1

3

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

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来访问连接。

于 2013-08-07T13:49:38.857 回答