1

我在 CodeIgniter 中使用 HMVC https://bitbucket.org/wiredesignz/codeigniter-modular-extensions-hmvc/wiki/Home

如何设置在访问仅限用户的页面时自动运行的控制器。这是为了检查用户当前是否登录。我已经做了一个助手来检查用户是否登录:

<?php 
if(!defined('BASEPATH')) exit('No direct script access allowed');
if (!function_exists('is_logged_in')){
    function is_logged_in(){
        $CI =& get_instance();
        $logged_in = FALSE;
        $user_data = $CI->session->userdata('logged_in');
        if(!empty($user_data)){
            $logged_in = TRUE;
        }
        return $logged_in;
    }   
}

但我唯一知道的是在每个模块上的每个控制器的构造函数上调用此方法。我会在每个控制器上重复相同的代码,只是为了检查用户是否登录。基本上我希望每次用户尝试访问模块目录中的内容时调用这个函数。

4

2 回答 2

1

一种选择是扩展主控制器类(我猜是 CI_contorller)并在该控制器的构造函数中调用此辅助方法。然后从这个新控制器扩展所有其他用户相关的控制器。

于 2012-06-13T08:24:42.017 回答
1

您可以为此使用 _remap()。如果您正在使用一个,您可以将它放在 MY_Controller 中,有关更多信息,请阅读控制器用户指南

这是您可以开始的事情。

function _remap($method)
{
    if (method_exists($this, $method) && $this-my_custom_helper->is_logged_in())
    {
        $this->$method();
    }
    else
    {
        redirect('/auth/login/');
    }
}
于 2012-06-13T08:49:17.373 回答