PHP之CodeIgniter框架SESSION是怎么实现的

CodeIgniter框架的SESSION是完全摒弃了PHP原有SESSION机制,自己用COOKIE实现的。其实现的流程大致如下:


// session id的生成
$sessid = '';
while (strlen($sessid) < 32){
        $sessid .= mt_rand(0, mt_getrandmax());
}
$sessid .= 'IP地址';
$session_id = md5(uniqid($sessid, TRUE)); //最后的SESSION_ID

// cookie或者数据库中存储的数据
$userdata = array(
        'session_id'    => $session_id,
        'ip_address'    => 'IP地址',
        'user_agent'    => '用户浏览器信息前120个字符',
        'last_activity' => '最新时间,即现在',
        'user_data'             => '其他数据'
);
// 需要时将 $userdata 写入到数据库中

$cookie_data = serialize($userdata);

// 分支一:配置了加密的情况
$cookie_data = '对序列化后的 $cookie_data 进行一系列加密处理';
$cookie_data = base64_encode($cookie_data);

// 分之二:没有配置加密的情况
$cookie_data = $cookie_data.md5($cookie_data.'密钥');

// 最终设置cookie
setcookie('ci_session', $cookie_data, '过期时间', '作用路径', '作用域', 
'cookie自带加密');

原文出自:http://phper.baike.com/article-373135.html

你可能感兴趣的:(PHP之CodeIgniter框架SESSION是怎么实现的)