Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
codeigniter版本3中的挂钩_Codeigniter - Fatal编程技术网

codeigniter版本3中的挂钩

codeigniter版本3中的挂钩,codeigniter,Codeigniter,我正在使用codeigniter 3。我已经在我的挂钩文件中启用了挂钩 $hook['pre_controller'] = array( 'class' => 'myclass', 'function' => 'myfunction', 'filename' => 'myfile.php', 'filepath' => 'hooks', 'params' => '' ); 在

我正在使用codeigniter 3。我已经在我的挂钩文件中启用了挂钩

$hook['pre_controller'] = array(
        'class'    => 'myclass',
        'function' => 'myfunction',
        'filename' => 'myfile.php',
        'filepath' => 'hooks',
        'params'   => ''
);
在启用钩子时,我得到的错误如下

`Unable to locate the specified class: Session.php` 
请帮助解决上述错误。我已经在配置文件中启用了驱动程序和库

这是我在hook中使用的代码

class Check_login extends CI_Controller
{
    public function CheckLoggin()
    {
        $url = $this->uri->segment(1);
        if($url == "givenparameter")
        {
            $login_id = $this->session->userdata("ID");
            $get_url = $this->uri->segment(2);
            if($login_id == "" && $get_url != 'login')
            {
                redirect('controller/login', 'refresh');
            }
        }
    }
}

钩子依赖于会话类。因此,请尝试将
pre\u controller
挂钩更改为
post\u controller'
类似

$hook['post_controller'] = array(
        'class'    => 'Myclass',
        'function' => 'Myfunction',
        'filename' => 'Myfile.php',
        'filepath' => 'hooks',
        'params'   => ''
);

如果不起作用,请尝试
post\u controller\u构造函数
,而不是
post\u controller

钩子文件路径:应用程序/钩子

控制器文件名:Blocker.php

 class Blocker {

    function Blocker(){
    }
    function requestBlocker(){
            echo "done";
    }
}
此外,您还需要对此进行配置

配置路径:application/config/hooks.php

$hook['pre_controller'] = array(
        'class'    => 'Blocker',
        'function' => 'requestBlocker',
        'filename' => 'Blocker.php',
        'filepath' => 'hooks',
        'params'   => ""
);

您还需要在配置中允许挂钩。ie.application/config/config.php

Ya我尝试了这些东西,但得到了相同的错误。我认为您的第二个拦截器函数的意思是_construct()Ya我已经尝试了上面的东西。如果使用{extends CI_Controller},则会出现错误
无法找到指定的类:Session.php
。我们可以使用CI_model写入吗?您是否在配置文件$config['encryption_key']='yourkey'中配置了加密密钥;对于预控器,您必须使用above@Nobita很抱歉迟回复你,我已经尝试了上面提到的每一个选项,但同样的错误