php - codeigniter 检查每个 Controller 中的用户 session

标签 php codeigniter methods controller

我的一个 Controller 中有一个私有(private) session ,用于检查用户是否登录:

function _is_logged_in() {

   $user = $this->session->userdata('user_data');

   if (!isset($user)) { 
      return false; 
   } 
   else { 
      return true;
   }

}

问题是我有多个 Controller 。如何在其他 Controller 中使用此功能?在每个 Controller 中重新定义函数并不是很“干”。

有什么想法吗?

最佳答案

另一种选择是创建一个基本 Controller 。将函数放在基本 Controller 中,然后从它继承。

要在 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);
    }
}

然后让你的 Controller 继承自这个基本 Controller 。

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.
        }
    }
}

关于php - codeigniter 检查每个 Controller 中的用户 session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3678798/

相关文章:

java - 可能返回一个字符串数组

java - 在 "return"中遇到 "if"时方法不返回值

python - Python 中的 "method"是什么?

php - 覆盖 SonataUserBundle 的 ProfileFormType

php - 重定向错误后表单验证和重新填充字段值;验证有效,但值无效 (CodeIgniter 3)

php - 如何将mysql改为mysqli?

php - codeigniter 和 ajax 联系表

php - 获取具有逗号分隔值的多维数组中的条目计数 - php

php - 何时以及如何通过 PHP (PDO) 使用多个 MySQL 查询

php - 什么是更好的 stdClass 或(对象)数组来存储相关数据?