CodeIgniter - 會話管理



在構建網站時,我們經常需要跟蹤使用者的活動和狀態,為此,我們必須使用會話。CodeIgniter 為此目的提供了會話類。

初始化會話

會話資料在整個站點中全域性可用,但要使用這些資料,我們首先需要初始化會話。我們可以在建構函式中執行以下行來實現這一點。

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

載入會話庫後,您可以像下面所示簡單地使用會話物件。

$this->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'  => 'johndoe', 
   'email'     => 'johndoe@some-site.com', 
   'logged_in' => TRUE
);  

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

刪除會話資料

在 PHP 中,我們可以使用unset()函式刪除儲存在會話中的資料,如下所示。

unset($_SESSION[‘some_name’]);

在 CodeIgniter 中刪除會話資料非常簡單,如下所示。下面版本的unset_userdata()函式將僅從會話中刪除一個變數。

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

如果要從會話中刪除更多值或刪除整個陣列,可以使用下面版本的unset_userdata()函式。

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

獲取會話資料

在會話中設定資料後,我們還可以檢索該資料,如下所示。userdata()函式將用於此目的。如果要訪問的資料不可用,此函式將返回NULL

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

示例

建立一個名為Session_controller.php的控制器類,並將其儲存在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 = 'https://: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
廣告