in_array不工作codeigniter [英] in_array not working codeigniter

查看:107
本文介绍了in_array不工作codeigniter的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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



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



通过使用上述函数,我可以检查是否有权限修改。



在我的库函数hasPermission的$ key& $ value不起作用。



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



我不知道为什么

 <$ c 

$ c> 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盐,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罚款。

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

return true;
} else {
return false;
}
}

有权限 p>

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

Var Dump p>

  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

}

}


b $ b

更新这是我如何使用hasPermission

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

//加载视图区域& content
}

public function validateForm(){
if(!$ this-> user_auth-> hasPermission('modify','folder / controller-name') ){
//显示错误
}

//其他检查。
}

提前感谢 $ b

解决方案

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

 code><?php 

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

var_dump(hasPermission(test,two));


函数hasPermission($ key,$ value)
{
if(isset($ mydata [$ key]))
{
echohere;
return in_array($ value,$ mydata [$ key]);
}
else
{
return false;
}
}

?>

回声:布尔值false



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

 <?php 

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

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


函数hasPermission($ key,$ value,$ thearray)//通过参数传递数组
{
if(isset($ thearray [$ key] ))
{
echohere;
return in_array($ value,$ thearray [$ key]);
}
else
{
return false;
}
}

?>

回声: boolean true



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


I cannot get my in_array to work on my library both functions are on same library. I will not let me do

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

By using the function above I can check if has permission to modify.

On my library function hasPermission the $key & $value does not work.

On my login function I unserialize the permissions

I cannot figure out why that the hasPermission always returns false.

Login

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;
    }
}

Has Permission

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

Var Dump

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" 

} 

} 

Update this is how I use the 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.
}

Thanks in advance

解决方案

I've done some test on a simple php file :

<?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 : boolean false

Conclusion : $mydata[$key] does not exists.

<?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;
    }
}

?>

Echo : "here" | boolean true

Conclusion : in_array() works correctly. Your script doesn't work because hasPermission can't access to your permission array.

这篇关于in_array不工作codeigniter的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆