Codeigniter 不同函数的构造函数会话验证
我在构造函数中进行验证,检查用户是否已启动会话 然后我会为各种各样的事情安装一些控制器 我的问题是-我可以让一些控制器不受构造函数(会话验证)的影响,还是必须将其放入另一个文件中?原因是,我希望构造函数中有两组函数——一组用于用户登录时,另一组用于用户未登录时 我曾经有两个文件并在它们之间切换,但后来我决定将它们合并成一个Codeigniter 不同函数的构造函数会话验证,codeigniter,Codeigniter,我在构造函数中进行验证,检查用户是否已启动会话 然后我会为各种各样的事情安装一些控制器 我的问题是-我可以让一些控制器不受构造函数(会话验证)的影响,还是必须将其放入另一个文件中?原因是,我希望构造函数中有两组函数——一组用于用户登录时,另一组用于用户未登录时 我曾经有两个文件并在它们之间切换,但后来我决定将它们合并成一个 谢谢您需要做的是设置一个基本控制器,它将为您管理会话,并通过继承将登录的控制器与注销的控制器分开 我给你的建议是看一看菲尔·斯特金在上的帖子。在他的博文中,Phil解释了如何
谢谢您需要做的是设置一个基本控制器,它将为您管理会话,并通过继承将登录的控制器与注销的控制器分开 我给你的建议是看一看菲尔·斯特金在上的帖子。在他的博文中,Phil解释了如何实现控制器的基本原理,使父控制器能够处理会话,这样您就不必每次都检查它 例如: 我的控制器: MY_In_控制器: 我的输出控制器: 登录控制器: 管理控制器: 简而言之,不要直接在控制器中写入会话检查。你会写得太频繁,违反了规则
更新:我建议修改Phil的方法,使用中的Shane Pearson方法。如前所述,为什么不为特定目的使用不同的基本控制器呢 我建议你这样做 让我们看两部分,第一部分,假设前端控制器不需要会话,另一部分,假设后端控制器需要会话 现在, 核心/后端控制器下的另一个类
class backend_Controller extends MY_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('session');
}
}
现在,您可以为不需要会话的控制器扩展前端控制器,并扩展需要应用程序/控制器会话的后端控制器谢谢,这是非常有用的信息。现在我觉得我正在做会话验证,就像一个穴居人。。
class backend_Controller extends MY_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('session');
}
}
class MY_Out_Controller extends MY_Controller{
function __construct(){
parent::__construct();
//if the user has the session, redirect them in NOW.
}
}
class Login extends MY_Out_Controller{
function __construct(){
parent::__construct();
}
function index(){
//folks that have a session (already logged in) will never even get here.
//because the parent class MY_Out_Controller already redirected them back in.
}
}
class Manage extends MY_In_Controller{
function __construct(){
parent::__construct();
}
function index(){
//folks that don't a session (logged out) will never even get here.
//because the parent class MY_In_Controller already redirected them out.
}
}
//application/core/Front_controller.php
class Front_Controller extends MY_Controller
{
function __construct()
{
parent::__construct();
}
}
class backend_Controller extends MY_Controller
{
function __construct()
{
parent::__construct();
$this->load->library('session');
}
}