我正在尝试学习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 !!
答案 0 :(得分:0)
客户端 - 服务器生命周期实际上是无状态的;在每个页面加载时,您的变量和对象都将被删除。
有客户端来源$_POST
和$_GET
超全局,这是标准表单提交和网址查询过程的一部分。
服务器具有数据库,文件编写(来自安全POV的粗略)和$_SESSION
超全局。这些是服务器在页面加载之间管理数据状态的方式。
了解如果您正在使用对象,则需要在每个页面加载时对它们进行实例化,以使它们正常工作。您可以将user_ID存储在$_SESSION['user_ID']
中,并每次从中实例化用户对象,并根据数据的更改方式进行适当的更改。