无法从另一个php页面访问对象用户

时间:2014-08-12 20:10:22

标签: php oop object

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

class baseController {

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

我有一个包含getlogin()函数的model.php文件:

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中我得到了“错误”:

    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-&gt; user-&gt; username的baseController中尝试回显,一切正常。我该怎么办?? HELP !!

1 个答案:

答案 0 :(得分:0)

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

有客户端来源$_POST$_GET超全局,这是标准表单提交和网址查询过程的一部分。

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

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