我在我的一个控制器中有一个私人会话,用于检查用户是否登录:
function _is_logged_in() {
   $user = $this->session->userdata('user_data');
   if (!isset($user)) { 
      return false; 
   } 
   else { 
      return true;
   }
}问题是我有多个控制器。如何在其他控制器中使用此函数?在每个控制器中重新定义函数并不是很“枯燥”。
有什么想法吗?
发布于 2010-09-10 06:33:32
另一种选择是创建一个基本控制器。将该函数放在基本控制器中,然后从该控制器继承。
要在CodeIgniter中实现这一点,请在应用程序的库文件夹中创建一个名为MY_Controller.php的文件。
class MY_Controller extends Controller
{
    public function __construct()
    {
        parent::__construct();
    }
    public function is_logged_in()
    {
        $user = $this->session->userdata('user_data');
        return isset($user);
    }
}然后让你的控制器继承这个基本控制器。
class X extends MY_Controller
{
    public function __construct()
    {
        parent::__construct();
    }
    public function do_something()
    {
        if ($this->is_logged_in())
        {
            // User is logged in.  Do something.
        }
    }
}发布于 2010-09-10 01:04:20
将其放入帮助器中并自动加载。
helpers/login_helper.php:
function is_logged_in() {
    // Get current CodeIgniter instance
    $CI =& get_instance();
    // We need to use $CI->session instead of $this->session
    $user = $CI->session->userdata('user_data');
    if (!isset($user)) { return false; } else { return true; }
}config/autoload.php:
$autoload['helper'] = array('login');然后在你的控制器中,你可以调用:
is_logged_in();发布于 2014-07-29 17:47:39
您可以使用helper和CodeIgniter构造函数来实现这一点。
function is_logged_in() { $user = $this->session->userdata('user_data');if (!isset($user)) { return false;} else { return true;}}控制器中的
类登录扩展了CI_Controller { public function __construct() { parent::__construct();if(!is_logged_in()) //如果您添加了构造函数,则无需在上面的控制器中编写每个函数。{//重定向您的登录视图} }
https://stackoverflow.com/questions/3678798
复制相似问题