方便易懂易用的ci的第三方session类

ci自带的session类是使用cookie保存的。而且在config.php里无法设置关闭浏览器后登录状态及时失效。这就给我这样的习惯使用php自身的同学造成了不便。php自身的session,是在关闭浏览器后登录状态就失效的(ci群里有大牛指出是创建了新的会话,不管怎样你不再次登录就进不了。),这样也就比较的安全,因为有些用户习惯直接关闭浏览器,而不是点击我们给他的链接“退出登录”。这样就有个问题,使用ci自带的session类时,如果只是关闭浏览器,登录状态却依然保留,留下了安全隐患。于是我开始寻找第三方的session lib。有个ob session 说有这样的功能的,使用方法也和ci自带的session类似,但是,我测试没有通过。而且他的配置和ci自带的配置有些不一样,比如ci的session里 $config['sess_expiration']=0 就是不过期,而ob session这样设置就是关闭浏览器后就失效。db session是把他放到db里对我也不是适用。最后我找到了phpsession,他本身的说明就提到了他是用的php的session。
他的用法很简单。
构造函数里加载(也可以autoload) 

PHP代码
  1. $this->load->library('phpsession');  

接着就可以使用他的方法了。
创建一个session: 

PHP代码
  1. $this->phpsession->save('foo','bar');//第一个参数是session名,第二个是值。  


读取一个session: 

PHP代码
  1. $foo = $this->phpsession->get('foo');  

删除一个session: 

PHP代码
  1. $this->phpsession->clear('foo');  


删除所有session 

PHP代码
  1. $this->phpsession->clear();  


淡水觉得比较简单,比较自由

文件放到 application\libraries

phpsession.php

PHP代码
  1. <?php if (!defined('BASEPATH')) exit('No direct script access allowed');   
  2.   
  3. class Phpsession {   
  4. var $_flash = array();   
  5.   
  6.     // constructor   
  7.     function Phpsession() {   
  8.         session_start();   
  9.         $this->flashinit();   
  10.     }   
  11.        
  12.     /* Save a session variable.  
  13.      * @paramstringName of variable to save  
  14.      * @parammixedValue to save  
  15.      * @paramstring  (optional) Namespace to use. Defaults to 'default'. 'flash' is reserved.  
  16.     */  
  17.     function save($var$val$namespace = 'default') {   
  18.         if ($var == null) {   
  19.             $_SESSION[$namespace] = $val;   
  20.         } else {   
  21.             $_SESSION[$namespace][$var] = $val;   
  22.         }   
  23.     }   
  24.        
  25.     /* Get the value of a session variabe  
  26.      * @paramstring  Name of variable to load. null loads all variables in namespace (associative array)  
  27.      * @paramstring(optional) Namespace to use, defaults to 'default'  
  28.     */  
  29.     function get($var = null, $namespace = 'default') {   
  30.         if(isset($var))   
  31.             return isset($_SESSION[$namespace][$var]) ? $_SESSION[$namespace][$var] : null;   
  32.         else  
  33.             return isset($_SESSION[$namespace]) ? $_SESSION[$namespace] : null;   
  34.     }   
  35.        
  36.     /* Clears all variables in a namespace  
  37.      */  
  38.     function clear($var = null, $namespace = 'default') {   
  39.         if(isset($var) && ($var !== null))   
  40.             unset($_SESSION[$namespace][$var]);   
  41.         else  
  42.             unset($_SESSION[$namespace]);   
  43.     }   
  44.        
  45.     /* Initializes the flash variable routines  
  46.      */  
  47.     function flashinit() {   
  48.         $this->_flash = $this->get(null, 'flash');   
  49.         $this->clear(null, 'flash');   
  50.     }   
  51.        
  52.     /* Saves a flash variable. These are only saved for one page load  
  53.      * @paramstringVariable name to save  
  54.      * @parammixedValue to save  
  55.      */  
  56.     function flashsave($var$val) {   
  57.         $this->save($var$val'flash');   
  58.     }   
  59.        
  60.     /* Gets the value of a flash variable. These are only saved for one page load, so the variable must  
  61.      * have either been set or had flashkeep() called on the previous page load  
  62.      * @paramstringVariable name to get  
  63.      */  
  64.     function flashget($var) {   
  65.         if (isset($this->_flash[$var])) {   
  66.             return $this->_flash[$var];   
  67.         } else {   
  68.             return null;   
  69.         }   
  70.     }   
  71.        
  72.     /* Keeps the value of a flash variable for another page load.  
  73.      * @paramstring(optional) Variable name to keep, or null to keep all. Defaults to keep all (null)  
  74.      */  
  75.     function flashkeep($var = null) {   
  76.         if ($var != null) {   
  77.             $this->flashsave($var$this->flashget($var));   
  78.         } else {   
  79.             $this->save(null, $this->_flash, 'flash');   
  80.         }   
  81.     }   
  82. }   
  83. ?>  

Tags: codeigniter

« 上一篇 | 下一篇 »

只显示10条记录相关文章

codeigniter里管理页面框架的使用 (浏览: 117, 评论: 0)
CI的数据库字符集问题解决 (浏览: 1067, 评论: 2)
.htaccess 问题 (浏览: 1418, 评论: 3)

Trackbacks

点击获得Trackback地址,Encode: UTF-8 点击获得Trackback地址,Encode: GB2312 or GBK 点击获得Trackback地址,Encode: BIG5

发表评论

评论内容 (必填):