【发布时间】:2012-12-10 19:51:26
【问题描述】:
我看到一些网站讨论如何制作一个登录功能,使其在每次页面加载后自动运行,而无需在每个控制器中调用该功能,我想知道是否有人可以将我指向其中一个因为我丢失了我看到的少数几个的链接。
我发现这个网站讨论了如何实现这一目标:
philsturgeon.co.uk/blog/2010/02/CodeIgniter-Base-Classes-Keeping-it-DRY
我创建了一个扩展 CI_Controller 的 MY_Controller 以及扩展了控制我网站主站点的 MY_Controller 的 Frontend_Controller,我还创建了一个控制我正在创建的 CMS 的 Backend_Controller。
我还有一个扩展 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');
}
}
}
这是实现这一目标的正确方法以及这样做的正确位置吗?如果是这样,我会针对登录控制器或其他控制器执行任何特定的操作来管理用户吗?
或者有更好的想法来解决这个问题?
【问题讨论】:
标签: php codeigniter