codeigniter 會話管理
在構(gòu)建網(wǎng)站時,我們經(jīng)常需要跟蹤用戶的活動和狀態(tài),為此,我們必須使用 session。 codeigniter 具有用于此目的的會話類。
初始化會話
會話數(shù)據(jù)可通過站點全局訪問,但要使用這些數(shù)據(jù),我們首先需要初始化會話。我們可以通過在構(gòu)造函數(shù)中執(zhí)行以下行來做到這一點。
$this->load->library('session');
加載會話庫后,您可以簡單地使用會話對象,如下所示。
$this->session
添加會話數(shù)據(jù)
在 php 中,我們簡單地使用 $_session 數(shù)組來設(shè)置會話中的任何數(shù)據(jù),如下所示。
$_session[‘key’] = value;
其中‘ key’是數(shù)組的key, value被賦值在等號的右邊。
同樣的事情可以在 codeigniter 中完成,如下所示。
$this->session->set_userdata('some_name', 'some_value');
set_userdata() 函數(shù)接受兩個參數(shù)。第一個參數(shù) some_name 是會話變量的名稱, some_value 將存儲在該名稱下。
set_userdata() 函數(shù)還支持另一種語法,您可以在其中傳遞數(shù)組來存儲值,如下所示。
$newdata = array( 'username' => 'johndoe', 'email' => 'johndoe@some-site.com', 'logged_in' => true ); $this->session->set_userdata($newdata);
刪除會話數(shù)據(jù)
在 php 中,我們可以使用 unset() 函數(shù)刪除會話中存儲的數(shù)據(jù),如下所示。
unset($_session[‘some_name’]);
在 codeigniter 中刪除會話數(shù)據(jù)非常簡單,如下所示。 unset_userdata() 函數(shù)的以下版本只會從會話中刪除一個變量。
$this->session->unset_userdata('some_name');
如果您想從會話中刪除更多值或刪除整個數(shù)組,您可以使用以下版本的 unset_userdata() 函數(shù)。
$this->session->unset_userdata($array_items);
獲取會話數(shù)據(jù)
在會話中設(shè)置數(shù)據(jù)后,我們還可以檢索該數(shù)據(jù),如下所示。 userdata() 函數(shù)將用于此目的。如果您嘗試訪問的數(shù)據(jù)不可用,此函數(shù)將返回 null。
$name = $this->session->userdata('name');
示例
創(chuàng)建一個名為 session_controller.php 的控制器類并將其保存在 application/controller/session_controller.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'); } } ?>
創(chuàng)建一個名為 session_view.php 的視圖文件并將其保存在 application/views/session_view.php
codeigniter session example welcome echo $this--->session->userdata('name'); ?> click here to unset session data.
在 application/config/routes.php 中的 routes.php 文件中進行更改,并在文件末尾添加以下行。
$route['sessionex'] = 'session_controller';
使用下面的地址執(zhí)行上面的例子。將 yoursite.com 替換為您網(wǎng)站的網(wǎng)址。
- http://yoursite.com/index.php/sessionex