开发学院

您的位置:首页>教程>正文

教程正文

CodeIgniter教程:session管理

  开发网站时,我们经常需要跟踪用户的活动和状态,为此,我们必须使用session,即会话。CodeIgniter为此提供了一个session类。

初始化session

  Session数据在站点中是全局可用的,但是要使用这些数据,我们首先需要初始化会话。我们可以通过在构造函数中执行下面代码来做到这一点。

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

  加载session库之后,您可以简单地使用session对象,如下所示。

$this->session

向session添加数据

  在PHP中,我们简单地使用$_SESSION数组来设置session中的任何数据,如下所示。

$_SESSION[‘key’] = value;

  其中“key”是session数组的键,值赋在等号的右侧。

  同样的事情可以在CodeIgniter中完成,如下所示。

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

  set_userdata() 函数接受两个参数。第一个参数some_name是会话变量的名称,some_value将存储在该变量下。

  set_userdata() 函数还支持另一种语法,在这种语法中,您可以传递数组来存储值,如下所示。

$newdata = array( 
   'username'  => 'johndoe', 
   'email'     => 'johndoe@some-site.com', 
   'logged_in' => TRUE
);  

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

删除session数据

  在PHP中,我们可以使用unset()函数删除存储在session中的数据,如下所示。

unset($_SESSION[‘some_name’]);

  CodeIgniter中的删除session数据非常简单,如下所示。下面版本的unset_userdata()函数将只从session中删除一个变量。

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

  如果您想从session中删除更多值或删除整个数组,可以使用下面版本的unset_userdata()函数。

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

获取session数据

  在session中设置数据后,我们还可以检索该数据,如下所示。Userdata()函数将用于此目的。如果您试图访问的数据不可用,此函数将返回空值。

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

例子

创建一个名为Session_controller的控制器类,并保存在application/controller/Session_controller.php.

<?php 
   class Session_controller extends CI_Controller {
      public function index() { 
         //loading session library 
         $this->load->library('session');
         //adding data to session 
         $this->session->set_userdata('name','virat');
         $this->load->view('session_view'); 
      } 
      public function unset_session_data() { 
         //loading session library
         $this->load->library('session');
         //removing session data 
         $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。

http://yoursite.com/index.php/sessionex