用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2511|回复: 2
收起左侧

[库 Library] 修改自Hex的session类

[复制链接]
发表于 2014-7-1 10:51:23 | 显示全部楼层 |阅读模式
修改自Hex的Session类, 为了方便使用.
Hex 原始Session类
http://codeigniter.org.cn/forums ... &extra=page%3D1

因为有些session_data是使用 二维数组, 如
PHP复制代码
 
array(
    'user' => array(
        'id' => 1,
        'username' => 'abc'
    ),
    'code' => array(
        'code1' => 'ccc'
    ),
    'token' => array(
        'tken_code' => 'aaaaaa',
        'exp_time' => 7200,
        'create_time' => 1400000000
    )
)
 
 
复制代码



这样的一个data存进session,如果需要获取token的token_code需要使用
PHP复制代码
 
$token = $this->session->userdata('token');
$token_code = $token['token_code];
复制代码



所以修改了类的userdata方法

原来的方法,line 92起
PHP复制代码
 
function userdata($item)
        {
                // added for backward-compatibility
                if ($item == 'session_id')
                {
                        return session_id();
                }
                else
                {
                        return ( ! isset($_SESSION[$item])) ? false : $_SESSION[$item];
                }
        }
 
 
复制代码



修改为
PHP复制代码
 
function userdata($item)
        {
                // added for backward-compatibility
                if ($item == 'session_id')
                {
                        return session_id();
                }
                else
                {
                        if(strpos($item,'.') === FALSE){
                                return ( ! isset($_SESSION[$item])) ? FALSE : $_SESSION[$item];
                        }else{
                                $keys = explode('.', $item);
                                $item = $_SESSION;
                                foreach($keys as $key){
                                        if( isset($item[$key]) ){
                                                $item = $item[$key];
                                        }else{
                                                return FALSE;
                                        }
                                }
                                return $item;
                        }
                }
        }
 
 
复制代码



修改之后获取数据只需要使用
PHP复制代码
 
//获取token
$this->session->userdata('token');
//如果获取token_code
$this->session->userdata('token.token_code');
//如果是更多维数组也是可以使用
$this->session->userdata('arr.average.average');
 
复制代码

既可以获取数据.

欢迎指出错误.  不知道对于性能影响是否多.

评分

参与人数 1威望 +5 收起 理由
Hex + 5 赞一个!

查看全部评分

本版积分规则