Php 在不检查Codeigniter上的URI段的情况下创建权限

Php 在不检查Codeigniter上的URI段的情况下创建权限,php,mysql,codeigniter,permissions,Php,Mysql,Codeigniter,Permissions,我从我的简单库中得到了一个函数,并调用了一些控制器 $activeUrl = str_replace(base_url(),"",current_url()); erporate_acl::has_permission($activeUrl); 然后这是我的库代码,这里的代码尝试匹配数据库中的当前URI($param)数据: public static function has_permission($param){ $CI =& get_instance(); $CI

我从我的简单库中得到了一个函数,并调用了一些控制器

$activeUrl = str_replace(base_url(),"",current_url());
erporate_acl::has_permission($activeUrl);
然后这是我的库代码,这里的代码尝试匹配数据库中的当前URI($param)数据:

public static function has_permission($param){
    $CI =& get_instance();
    $CI->load->model('acl_model');
    $user        = $CI->session->userdata('user');
    $arrPerms    = $CI->acl_model->permissions($user);
    $currentMeth = strtolower(str_replace("::", "/", $param));

    $result = "";
    if (!empty($arrPerms)) 
    {
        if (strpos($currentMeth,'edit') !== false || strpos($currentMeth,'view') !== false || strpos($currentMeth,'delete') !== false) {
            $str = preg_replace('#\/[^/]*$#', '', $currentMeth);
            $result = in_array($str, $arrPerms);
        }else{
            $result = in_array($currentMeth, $arrPerms);
        }

    }else{
        $result = false;
    }

    if ($result == false) {
        show_error("<font size='+1'>Sorry, You Don't Allowed to Access !</font><br><a href='".@$_SERVER['HTTP_REFERER']."'>Back to Previous Page</a>");
    }
}
公共静态函数具有_权限($param){
$CI=&get_instance();
$CI->load->model('acl_model');
$user=$CI->session->userdata('user');
$arrPerms=$CI->acl\u model->权限($user);
$currentMeth=strtolower(str_replace(“::”,“/”,$param));
$result=“”;
如果(!空($arrPerms))
{
if(strpos($currentmath,'edit')!==false | | | strpos($currentmath,'view')!==false | | | strpos($currentmath,'delete')!==false){
$str=preg\u replace('.\/[^/]*$.','.$currentMeth);
$result=in_数组($str,$arrPerms);
}否则{
$result=in_数组($currentMeth,$arrPerms);
}
}否则{
$result=false;
}
如果($result==false){
显示错误(“对不起,您不允许访问!
”; } }
我上面脚本的要点是匹配\u数组中的
如果
在\u数组中
返回false,那么我们得到了错误消息,否则允许访问页面

是否可以在不检查URI段的情况下创建权限


谢谢你,对不起我的英语不好

你可以使用以下方法:

$this->router->class
获取正在使用的控制器类

$this->router->method
获取被调用的方法

$this->router->directory
获取目录,以防url中有子文件夹被使用

这样,您就不需要检查正在使用的url。您只需检查控制器和方法

这是一种不可知的路线。如果您有以下情况:

  • 用户/get/1
  • 用户/马可·蒙泰罗

在这些情况下,基于uri段的ACL可能很难实现。使用我提到的方法会变得更容易。

您在这里到底想要实现什么?说清楚