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自带加密');