Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Codeigniter 不同函数的构造函数会话验证_Codeigniter - Fatal编程技术网

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');

     }
 }