in_array codeigniter 不工作

in_array not working codeigniter

我无法让我的 in_array 在我的库上工作,这两个函数都在同一个库中。我不会让我做的

$this->user_auth->hasPermission('modify', 'folder/controller-name');

通过上面的函数可以查看是否有权限修改

在我的库函数 hasPermission 上,$key 和 $value 不起作用。

在我的登录函数中,我反序列化了权限

我不明白为什么 hasPermission 总是 returns false。

登录

public function login($username, $password) {
    $user_query = $this->CI->db->query("SELECT * FROM " . $this->CI->db->dbprefix . "user 
        WHERE username = " . $this->CI->db->escape($username) . "
        AND (password = SHA1(CONCAT(salt, SHA1(CONCAT(salt, SHA1(" . $this->CI->db->escape($password) . "))))) 
        OR password = " . $this->CI->db->escape(md5($password)) . ") 
        AND status = '1'
    ");

    if ($user_query->num_rows() > 0) {

        $this->user_id = $user_query->row('user_id');
        $this->username = $user_query->row('username');
        $this->user_group_id = $user_query->row('user_group_id');

        $data_session = array(
            'logged' => true,
            'user_id' => $this->user_id
        );

        $this->CI->session->set_userdata($data_session);

        $user_group_query = $this->CI->db->query("SELECT permission FROM " . $this->CI->db->dbprefix . "user_group 
            WHERE user_group_id = '" . (int)$user_query->row('user_group_id') . "'");

        $permissions = unserialize($user_group_query->row('permission')); // Vardumps fine.

        if (is_array($permissions)) {
            foreach ($permissions as $key => $value) {
                $this->permission[$key] = $value;
            }
        }

        return true;
    } else {
        return false;
    }
}

有权限

public function hasPermission($key, $value) {
    if (isset($this->permission[$key])) {
        return in_array($value, $this->permission[$key]);
    } else {
        return false;
    }
}

变量转储

array(2) { 

["access"]=> array(18) { 

[0]=> string(18) "catalog/Categories" 
[1]=> string(27) "code_examples/Code_examples" 
[2]=> string(23) "dashboard_modules/Chart" 
[3]=> string(34) "dashboard_modules/Latest_customers" 
[4]=> string(30) "dashboard_modules/Latest_users" 
[5]=> string(14) "design/Banners" 
[6]=> string(14) "design/Layouts" 
[7]=> string(16) "extension/Module" 
[8]=> string(15) "module/Category" 
[9]=> string(16) "module/Slideshow" 
[10]=> string(43) "module_code_examples/Codeigniter_controller" 
[11]=> string(38) "module_code_examples/Codeigniter_email" 
[12]=> string(39) "module_code_examples/Codeigniter_routes" 
[13]=> string(16) "settings/Setting" 
[14]=> string(14) "settings/Store" 
[15]=> string(8) "tool/Log" 
[16]=> string(10) "user/Users" 
[17]=> string(17) "user/Users_groups" 
} 

["modify"]=> array(18) { 

[0]=> string(18) "catalog/Categories" 
[1]=> string(27) "code_examples/Code_examples" 
[2]=> string(23) "dashboard_modules/Chart" 
[3]=> string(34) "dashboard_modules/Latest_customers" 
[4]=> string(30) "dashboard_modules/Latest_users" 
[5]=> string(14) "design/Banners" 
[6]=> string(14) "design/Layouts" 
[7]=> string(16) "extension/Module" 
[8]=> string(15) "module/Category" 
[9]=> string(16) "module/Slideshow" 
[10]=> string(43) "module_code_examples/Codeigniter_controller" 
[11]=> string(38) "module_code_examples/Codeigniter_email" 
[12]=> string(39) "module_code_examples/Codeigniter_routes" 
[13]=> string(16) "settings/Setting" 
[14]=> string(14) "settings/Store" 
[15]=> string(8) "tool/Log" 
[16]=> string(10) "user/Users" 
[17]=> string(17) "user/Users_groups" 

} 

} 

更新这是我使用 hasPermission

public function index() {
    if (($this->input->server('REQUEST_METHOD') == 'POST') && $this->validateForm()) {
        redirect();
    }

    // load view area & content
}

public function validateForm() {
    if (!$this->user_auth->hasPermission('modify', 'folder/controller-name')) {
      // Displays error
    }

    // Other checks.
}

提前致谢

您可以编写以下代码来验证权限。

function hasPermission($key, $value)
{
    foreach($this->permission[$key] as $k=>$v)
    {
        if($v == $value) return true;
    }
    return false
}

我对一个简单的 php 文件做了一些测试:

<?php

$mydata = array(
            "test" => array("one", "two", "three")
            );

var_dump(hasPermission("test", "two"));


function hasPermission($key, $value) 
{
    if (isset($mydata[$key])) 
    {
        echo "here";
        return in_array($value, $mydata[$key]);
    } 
    else 
    {
        return false;
    }
}

?>

Echo : 布尔值 false

结论:$mydata[$key] 不存在。

<?php

$mydata = array(
            "test" => array("one", "two", "three")
            );

var_dump(hasPermission("test", "two", $mydata));


function hasPermission($key, $value, $thearray) //Pass the array through parameter
{
    if (isset($thearray[$key])) 
    {
        echo "here";
        return in_array($value, $thearray[$key]);
    } 
    else 
    {
        return false;
    }
}

?>

回声: "here" |布尔真

结论:in_array() 工作正常。您的脚本不起作用,因为 hasPermission 无法访问您的权限数组。