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代码
- $this->load->library('phpsession');
接着就可以使用他的方法了。
创建一个session:
PHP代码
- $this->phpsession->save('foo','bar');//第一个参数是session名,第二个是值。
读取一个session:
PHP代码
- $foo = $this->phpsession->get('foo');
删除一个session:
PHP代码
- $this->phpsession->clear('foo');
删除所有session
PHP代码
- $this->phpsession->clear();
淡水觉得比较简单,比较自由
文件放到 application\libraries
phpsession.php
PHP代码
- <?php if (!defined('BASEPATH')) exit('No direct script access allowed');
- class Phpsession {
- var $_flash = array();
- // constructor
- function Phpsession() {
- session_start();
- $this->flashinit();
- }
- /* Save a session variable.
- * @paramstringName of variable to save
- * @parammixedValue to save
- * @paramstring (optional) Namespace to use. Defaults to 'default'. 'flash' is reserved.
- */
- function save($var, $val, $namespace = 'default') {
- if ($var == null) {
- $_SESSION[$namespace] = $val;
- } else {
- $_SESSION[$namespace][$var] = $val;
- }
- }
- /* Get the value of a session variabe
- * @paramstring Name of variable to load. null loads all variables in namespace (associative array)
- * @paramstring(optional) Namespace to use, defaults to 'default'
- */
- function get($var = null, $namespace = 'default') {
- if(isset($var))
- return isset($_SESSION[$namespace][$var]) ? $_SESSION[$namespace][$var] : null;
- else
- return isset($_SESSION[$namespace]) ? $_SESSION[$namespace] : null;
- }
- /* Clears all variables in a namespace
- */
- function clear($var = null, $namespace = 'default') {
- if(isset($var) && ($var !== null))
- unset($_SESSION[$namespace][$var]);
- else
- unset($_SESSION[$namespace]);
- }
- /* Initializes the flash variable routines
- */
- function flashinit() {
- $this->_flash = $this->get(null, 'flash');
- $this->clear(null, 'flash');
- }
- /* Saves a flash variable. These are only saved for one page load
- * @paramstringVariable name to save
- * @parammixedValue to save
- */
- function flashsave($var, $val) {
- $this->save($var, $val, 'flash');
- }
- /* Gets the value of a flash variable. These are only saved for one page load, so the variable must
- * have either been set or had flashkeep() called on the previous page load
- * @paramstringVariable name to get
- */
- function flashget($var) {
- if (isset($this->_flash[$var])) {
- return $this->_flash[$var];
- } else {
- return null;
- }
- }
- /* Keeps the value of a flash variable for another page load.
- * @paramstring(optional) Variable name to keep, or null to keep all. Defaults to keep all (null)
- */
- function flashkeep($var = null) {
- if ($var != null) {
- $this->flashsave($var, $this->flashget($var));
- } else {
- $this->save(null, $this->_flash, 'flash');
- }
- }
- }
- ?>


