ci session mysql_CodeIgniter 3.0 新手折腾笔记(四) --SESSION

----最近忙考试,笔记继续。

SESSION类

会话类允许您维护用户的“状态”和跟踪他们浏览网站的动作

CI3.0比2.X SESSION不止优化一点点,据其他开发体验抱怨2.X SESSION存cookie太鸡肋,这里CI3.0提供4个驱动程序

files (默认)

database

redis

memcached

默认file与原生使用过程基本无差,如果使用数据库驱动

1.config.php中,357行配置

PHP$config['sess_driver'] = 'database';

$config['sess_save_path'] = 'ci_sessions'; //指定数据库名称

2.mysql数据库中建表

MYSQLCREATE TABLE IF NOT EXISTS `ci_sessions` (

`id` varchar(40) NOT NULL,

`ip_address` varchar(45) NOT NULL,

`timestamp` int(10) unsigned DEFAULT 0 NOT NULL,

`data` blob NOT NULL,

PRIMARY KEY (id),

KEY `ci_sessions_timestamp` (`timestamp`)

);

/*官方提供*/

初始化SESSION

使用SESSION类应先初始化,两种都行:

$this->load->library('session');

配置autoload.php

$autoload['libraries'] = array('session');

取得SESSION数据

$name = $_SESSION['name'];

//或者

$name = $this->session->name

// 或者:

$name = $this->session->userdata('name');

添加自定义SESSION数据

/**

* Set userdata

*

* Legacy CI_Session compatibility method

*

* @param mixed $data Session data key or an associative array

* @param mixed $value Value to store

* @return void

*/

public function set_userdata($data, $value = NULL)

{

if (is_array($data))

{

foreach ($data as $key => &$value)

{

$_SESSION[$key] = $value;

}

return;

}

$_SESSION[$data] = $value;

}

可添加两种方式$data,单个数据或关联数组

//添加一个

$this->session->set_userdata('some_name', 'some_value');

//添加关联数组

$newdata = array(

'username' => 'johndoe',

'email' => 'johndoe@some-site.com',

'logged_in' => TRUE

);

$this->session->set_userdata($newdata);

3.0新增验证方法has_userdata(),验证某个SESSION值是否存在,

$this->session->has_userdata('some_name');

//或者

isset($_SESSION['some_name']);

//---源码如下

/**

* Has userdata

*

* Legacy CI_Session compatibility method

*

* @param string $key Session data key

* @return bool

*/

public function has_userdata($key)

{

return isset($_SESSION[$key]);

}

//返回布尔值

删除SESSION数据

/**

* Unset userdata

*

* Legacy CI_Session compatibility method

*

* @param mixed $data Session data key(s)

* @return void

*/

public function unset_userdata($key)

{

if (is_array($key))

{

foreach ($key as $k)

{

unset($_SESSION[$k]);

}

return;

}

unset($_SESSION[$key]);

}

同理,可使用unset或unset_userdata(),$key可以为数组

//unset方法

unset($_SESSION['some_name']);

//unset数组情况

unset(

$_SESSION['some_name'],

$_SESSION['another_name']

);

//unset_userdata()方法

$this->session->unset_userdata('some_name');

//unset_userdata()数组情况

$array_items = array('username', 'email');

$this->session->unset_userdata($array_items);

删除SESSION

/**

* Session destroy

*

* Legacy CI_Session compatibility method

*

* @return void

*/

public function sess_destroy()

{

session_destroy();

}

原生的session_destroy(),指的一样

案例点

我自动加载session类库,使用数据库驱动.

访问网站请求包头,存的session_id

Cookie: ci_session=5a84789d991c5b70ddf08997f20881ebf83300cd

数据库中是这样的

6c2762bd74e771d83bbf6a0b0e4777cc.png

Flashdata,Tempdata,memcached,redis和并发处理

可自行研究,如果以后用到了会写,现在都未使用到,也有的地方不清楚,会的愿意分享可以跟我交流,thanks

3.0 SESSION这里讲的也比较细,顺便谈论与2.x区别,分三节,有兴趣自行查看

优雅地使用CodeIgniter 3之Session类库(1)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值