我正在努力学习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']
中,并每次都从中实例化用户对象,根据数据的变化进行适当的更改。