创建网站时,无涯教程经常需要跟踪用户的活动和状态,为此必须使用Session会话。
初始化Session
可以通过在构造函数中执行以下行来实现。
$this->load->library('session');
加载会话库后,您可以简单地使用Session会话对象 ,如下所示。
$this->session
写入Session数据
在PHP中,只需使用 $_ SESSION 数组来设置会话中的任何数据,如下所示。
$_SESSION[‘key']=value;
其中 key 是数组的键,而 value 被分配在等号的右侧。
如下所示,可以在CodeIgniter中完成相同的操作。
$this->session->set_userdata('some_name', 'some_value');
set_userdata()函数带有两个参数。第一个参数 some_name 是会话变量的名称,将在其下存储 some_value 。
set_userdata()函数还支持另一种语法,您可以在其中使用数组来存储值,如下所示。
$newdata=array( 'username' => 'learnfk', 'email' => 'learnfk@some-site.com', 'logged_in' => TRUE ); $this->session->set_userdata($newdata);
删除Session数据
在PHP中,无涯教程可以使用 unset()函数删除会话中存储的数据,如下所示。
unset($_SESSION[‘some_name']);
如下所示,在CodeIgniter中删除会话数据非常简单。
$this->session->unset_userdata('some_name');
如果要从会话中删除更多值或删除整个数组,可以使用以下版本的 unset_userdata()函数。
$this->session->unset_userdata($array_items);
获取Session数据
在会话中设置数据后,还可以如下所示检索该数据。 Userdata()函数将用于此目的。如果您尝试访问的数据不可用,此函数将返回 NULL 。
$name=$this->session->userdata('name');
Session完整示例
创建一个名为 Session_controller.php 的控制器类,并将其保存在 application/controller/Session_controller.php 中。
<?php class Session_controller extends CI_Controller { public function index() { //加载 session 库 $this->load->library('session'); //将数据写入session $this->session->set_userdata('name','virat'); $this->load->view('session_view'); } public function unset_session_data() { //加载 session 库 $this->load->library('session'); //删除session数据 $this->session->unset_userdata('name'); $this->load->view('session_view'); } } ?>
创建一个名为 session_view.php 的视图文件,并将其保存在 application/views/session_view.php 中
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>CodeIgniter Session Example</title> </head> <body> Welcome <?php echo $this->session->userdata('name'); ?> <br> <a href='http://localhost:85/CodeIgniter-3.0.1/CodeIgniter3.0.1/index.php/sessionex/unset'> Click Here</a> to unset session data. </body> </html>
在 application/config/routes.php 的 routes.php 文件中进行更改,并在文件末尾添加以下行。
$route['sessionex']='Session_Controller';
使用以下地址执行以上示例。将 yoursite.com 替换为您网站的URL。
http://yoursite.com/index.php/sessionex
参考链接
https://www.learnfk.com/codeigniter/codeigniter-session-management.html