|
修改自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');
复制代码
既可以获取数据.
欢迎指出错误. 不知道对于性能影响是否多.
|
评分
-
查看全部评分
|