php ci框架 hook,CI使用hook方法:转载

CI使用hook方法:

1、启用hook,在config.php中设置:

$config['enable_hooks'] =true;

2、定义hook,在application/config/hooks.php中定义钩子

$hook['pre_controller'] =array(

'class'    => 'Acl',//挂钩类名                                'function' => 'filter',//过滤函数名                                'filename' => 'Acl.php',//挂钩类文件名                                'filepath' => 'hooks',//类文件所在文件夹application/hooks                                );

3、接下来定义挂钩类,根据上面设置,在application/hooks文件夹中新建一个名为acl.php的文件,然后进行如下设计

class Acl

{

private$url_model;

private$url_method;

private$url_param;

private$CI;

function __construct(){

$this->CI=&get_instance();

$this->CI->load->library('session');

$url=$_SERVER['PHP_SELF'];//得到网址index.php/......$arr=explode('/',$url);//CI是以'/'隔开网址各个部分

//var_dump($arr);$arr=array_slice($arr,array_search('index.php',$arr) + 1,count($arr));

//var_dump($arr);$this->url_model=empty($arr[0])?'user':$arr[0];//如果控制器没有 就设置为空$this->url_method=empty($arr[1])?'index':$arr[1];//如果没有方法 则为index方法$this->url_param=empty($arr[2])?'':$arr[2];//如果没定义 则表示没有参数            }

function filter(){

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

if(!empty($user)){

$role_name='user';//此处应该根据权限读取角色}else{

$role_name='visitor';

}$this->CI->config->load('acl');//此处是config用法 注意

$acl=$this->CI->config->item('acl');

$role=$acl[$role_name];

$acl_info=$this->CI->config->item('acl_info');

if(array_key_exists($this->url_model,$role)&&in_array($this->url_method,$role[$this->url_model])){

;

}else{

//无权限,给出提示,跳转url$this->CI->session->set_flashdata('info',$acl_info[$role_name]['info']);

$this->CI->session->set_flashdata('return_url',$acl_info[$role_name]['return_url']);redirect("user/error/");

}

}

}

4、由于第三步里面用到了配置文件,所以要在application/config中新建一个acl.php用来存放一些配置信息,代码如下

''=>'index',                    'user'=>array('index','error','check_login','logout','ceshi'),                    'upload'=>array('do_upload'),                    'easyui'=>array('panel','table'),);$config['acl']['user']=array(

''=>'index',                    'user'=>array('index','main','error','excel_to_mysql','get_progress','destory_progress','kaoshi'),                    'upload'=>array('index','do_upload'),

);$config['acl_info']['visitor']=array(

'info'=>'登录之后才能使用',                    'return_url'=>'user/index');$config['acl_info']['user']=array(

'info'=>'没有这个操作啦!!',                                    'return_url'=>'user/main'

);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值