首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >对每个控制器中的用户会话进行codeigniter检查

对每个控制器中的用户会话进行codeigniter检查
EN

Stack Overflow用户
提问于 2010-09-10 01:01:11
回答 7查看 67.4K关注 0票数 41

我在我的一个控制器中有一个私人会话,用于检查用户是否登录:

代码语言:javascript
运行
复制
function _is_logged_in() {

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

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

}

问题是我有多个控制器。如何在其他控制器中使用此函数?在每个控制器中重新定义函数并不是很“枯燥”。

有什么想法吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2010-09-10 06:33:32

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

要在CodeIgniter中实现这一点,请在应用程序的库文件夹中创建一个名为MY_Controller.php的文件。

代码语言:javascript
运行
复制
class MY_Controller extends Controller
{
    public function __construct()
    {
        parent::__construct();
    }

    public function is_logged_in()
    {
        $user = $this->session->userdata('user_data');
        return isset($user);
    }
}

然后让你的控制器继承这个基本控制器。

代码语言:javascript
运行
复制
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.
        }
    }
}
票数 55
EN

Stack Overflow用户

发布于 2010-09-10 01:04:20

将其放入帮助器中并自动加载。

helpers/login_helper.php:

代码语言:javascript
运行
复制
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:

代码语言:javascript
运行
复制
$autoload['helper'] = array('login');

然后在你的控制器中,你可以调用:

代码语言:javascript
运行
复制
is_logged_in();
票数 40
EN

Stack Overflow用户

发布于 2014-07-29 17:47:39

您可以使用helper和CodeIgniter构造函数来实现这一点。

  1. 您可以在其中创建编写函数的自定义帮助器my_helper.php

function is_logged_in() { $user = $this->session->userdata('user_data');if (!isset($user)) { return false;} else { return true;}}控制器中的

  • ,如果它的login.php

类登录扩展了CI_Controller { public function __construct() { parent::__construct();if(!is_logged_in()) //如果您添加了构造函数,则无需在上面的控制器中编写每个函数。{//重定向您的登录视图} }

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3678798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档