Session 是如何工作的?
当页面载入后,Session 类就会检查用户的 cookie 中是否存在有效的 session 数据。 如果 session 数据不存在(或者与服务端不匹配,或者已经过期), 那么就会创建一个新的 session 并保存起来。
如果 session 数据存在并且有效,那么就会更新 session 的信息。 根据你的配置,每一次更新都会生成一个新的 Session ID 。
有一点非常重要,你需要了解一下,Session 类一旦被初始化,它就会自动运行。 上面所说的那些,你完全不用做任何操作。正如接下来你将看到的那样, 你可以正常的使用 session 数据,至于读、写和更新 session 的操作都是自动完成的。
什么是session数据?
Session 数据是个简单的数组,带有一个特定的 session ID (cookie)。
如果你之前在 PHP 里使用过 session ,你应该对 PHP 的 $_SESSION 全局变量 很熟悉(如果没有,请阅读下链接中的内容)。
CodeIgniter 使用了相同的方式来访问 session 数据,同时使用了 PHP 自带的 session 处理机制, 使用 session 数据和操作 $_SESSION
数组一样简单(包括读取,设置,取消设置)。
另外,CodeIgniter 还提供了两种特殊类型的 session 数据:flashdata 和 tempdata ,在下面将有介绍。
获取sessioon
- $_SESSION['item']
- $this->session->item
- $this->session->userdata('item');
$name = $_SESSION['name'];
// or:
$name = $this->session->name
// or:
$name = $this->session->userdata('name');
添加session
使用set_userdata方法
$this->session->set_userdata($array);
具体使用如下
$newdata = array(
'username' => 'johndoe',
'email' => 'johndoe@some-site.com',
'logged_in' => TRUE
);
$this->session->set_userdata($newdata);
如果你只想添加一对 键名=》键值,可以像这样
$this->session->set_userdata('some_name', 'some_value');
当你想要检查某个session值是否存在的时候可以使用has_userdata 和isset
$this->session->has_userdata('some_name');
isset($_SESSION['some_name'])
删除session
unset($_SESSION['some_name']);
// or multiple values:
unset(
$_SESSION['some_name'],
$_SESSION['another_name']
);
$this->session->unset_userdata('some_name');
$array_items = array('username', 'email');
$this->session->unset_userdata($array_items);
网友评论