我已经看到一些网站讨论如何制作一个登录功能以使其在每次页面加载后自动运行,而无需在每个控制器中调用该功能,并且想知道是否有人可以将我指向其中一个,因为我输了我看到的几个链接。
我发现这个网站讨论了如何实现这一目标:
philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY
我创建了一个扩展 CI_Controller 的 MY_Controller 以及扩展了 MY_Controller 的 Frontend_Controller 来控制我的网站的主站点,我还有一个 Backend_Controller 来控制我正在创建的 CMS。
我还有一个扩展 Backend_Controller 的登录控制器。我的问题是,如果我想为整个后端区域运行 if 语句以查看是否有会话变量 isset,如果有,则检查该值是否为数字。如果是,则让他们重定向到登录名,如果不是,则让他们重定向到控制面板控制器,该控制器也扩展了 Backend_Controller。我是否在 Backend_Controller 中执行此 if 语句?
这是我想到的。
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Backend_Controller extends MY_Controller
{
public function __construct()
{
parent::__construct();
if (!!isset($this->session->userdata('xtr'))) && (!is_integer($this->session->userdata('user_variable_id'))))
{
redirect('login');
}
}
}
这是实现这一目标的正确方法和正确的地方吗?如果是这样,我会做任何特定于登录控制器或其他控制器来管理用户的事情吗?
或者有更好的想法来解决这个问题?