加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – 在CodeIgniter中添加新库

发布时间:2020-12-13 17:38:14 所属栏目:PHP教程 来源:网络整理
导读:我刚开始学习CodeIgniter,我正在按照nettuts进行 this认证教程.我不明白其中的一件事: 他在Welcome控制器中添加了以下构造函数代码,只有在Session具有可变用户名时才能访问它,否则它将重定向到管理控制器. function __construct() { session_start(); paren
我刚开始学习CodeIgniter,我正在按照nettuts进行 this认证教程.我不明白其中的一件事:

他在Welcome控制器中添加了以下构造函数代码,只有在Session具有可变用户名时才能访问它,否则它将重定向到管理控制器.

function __construct()
    {
        session_start();
        parent::__construct();

        if ( !isset($_SESSION['username'])){
            redirect('admin');      
        }       
    }

他说:

If you have multiple controllers,then
instead of adding the above code in
every controller,you should Create a
new library,which extends the
controller you will paste the code in,
and autoload the library into
project. That way this code runs
always when a controller is loaded.

这是否意味着,我应该

>在应用程序/库中创建一个文件(例如,auth.php)
>将此代码粘贴到auth.php中

.

if ( !isset($_SESSION['username'])){
            redirect('admin');      
        }

现在如何自动加载这个库,并在每次加载控制器时使其运行,如他所说的那样?
????谢谢

解决方法

1)自动加载一个库,只需将它添加到文件application / config / autoload.php中的数组中,查找’library’部分并粘贴库的名称(不带扩展名),作为数组的元素.

$autoload['libraries'] = array ('auth');

2)我建议你使用原生会话处理程序(会话库),它工作得很好,避免你使用php $_SESSION.您设置宽度$this-> session-> set_userdata(array(‘username’=>’User1′,’logged’=>’true’),然后使用$this->检索值session-> userdata [‘logged’],例如.

像魅力一样工作,不必调用session_start()等.去检查帮助,因为它真的非常清楚.

3)至于你的问题,我会选择“钩子”.有不同的钩子,取决于他们的“位置”,即你打电话给他们的那一刻.

你可以使用,例如’post_controller_constructor’,它在控制器初始化之后但在方法之前调用,因此它位于构造函数和实际方法之间.我通常在这里插入这些控件.

你在application / config / hooks.php中定义了钩子,给它们一个数组:

$hook['post_controller_constructor'] = array(
      'class'    => 'Auth','function' => 'check','filename' => 'auth.php',filepath' => 'hooks','params'   => array()
    );

无论如何,对于所有这些需求,文档非常明确和直接,我建议你阅读钩子和会话,你会看到一切都变得更加清晰!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读