无法从另一个PHP页面访问对象user



我正在努力学习MVC模式,但是,即使我努力,似乎我仍然有大问题。我有一个名为baseController的控制器,它执行以下操作:

class baseController {
    public $model;
    public $user;
        ...
        $activeuser = $this->model->getlogin();
        if ($activeuser != 'invalid user' && $activeuser != "") {                                                                                               
                            $this->user=$activeuser;
            header("Location:home.php");
        }

我有一个模型。php文件,其中包含getlogin()函数:

public function getlogin() {
    if (isset($_REQUEST['username']) && isset($_REQUEST['password'])) {
        $username = mysql_real_escape_string($_REQUEST['username']);
        $pwd = mysql_real_escape_string($_REQUEST['password']);
        $pwd = md5($pwd);
        $query = mysql_query("SELECT * FROM users WHERE username='$username' AND password ='$pwd' AND attivato =1;");
        if (mysql_num_rows($query) == 1) {
                        require_once 'User.php';
                        $sql=mysql_fetch_array($query);
                        $activeuser = new User();
                        $activeuser->username=$sql['username'];
                        $activeuser->email=$sql['email'];
            return $activeuser;
        } else {
            return 'invalid user'; //TO-DO
        }  
    }
}

home.php创建一个新的homeController并调用它的invoke()函数。homeController文件包含视图页面,称为afterlogin.php。

在afterlogin.php中,我得到了"ERROR":

    if (isset($activeuser)){
    echo "<p>Utente ".$activeuser->username."</p>";
    echo "<p>Email ".$activeuser->email."</p>";}
    //echo "<p>Pass ".$activeuser->pwd."</p>";
    echo"<h1> HOMEPAGE, LOGIN OK </h1>";

似乎是homeController,因此afterlogin页面无法访问在baseController文件中创建的用户。如果我在$this->user->username的baseController中尝试回显,一切都在工作。我该怎么办?帮助! !

客户端-服务器生命周期实际上是无状态的;每次加载页面时,变量和对象都会被清除。

有客户端源的$_POST$_GET超全局变量,它们是标准表单提交和url查询过程的一部分。

服务器有数据库,文件写入(从安全POV粗略)和$_SESSION超全局变量。这些是服务器在页面加载之间管理数据状态的方法。

请理解,如果您正在使用对象,则需要在每次加载页面时实例化它们以使其工作。您可以将user_ID存储在$_SESSION['user_ID']中,并每次都从中实例化用户对象,根据数据的变化进行适当的更改。

最新更新