
- CodeIgniter 教程
- CodeIgniter - 首頁
- CodeIgniter - 概述
- CodeIgniter - 安裝 CodeIgniter
- CodeIgniter - 應用程式架構
- CodeIgniter - MVC 框架
- CodeIgniter - 基本概念
- CodeIgniter - 配置
- CodeIgniter - 使用資料庫
- CodeIgniter - 庫
- CodeIgniter - 錯誤處理
- CodeIgniter - 檔案上傳
- CodeIgniter - 傳送郵件
- CodeIgniter - 表單驗證
- CodeIgniter - 會話管理
- CodeIgniter - 快閃記憶體資料
- CodeIgniter - 臨時資料
- CodeIgniter - Cookie 管理
- CodeIgniter - 常用函式
- CodeIgniter - 頁面快取
- CodeIgniter - 頁面重定向
- CodeIgniter - 應用程式分析
- CodeIgniter - 基準測試
- CodeIgniter - 新增 JS 和 CSS
- CodeIgniter - 國際化
- CodeIgniter - 安全性
- CodeIgniter 有用資源
- CodeIgniter - 快速指南
- CodeIgniter - 有用資源
- CodeIgniter - 討論
CodeIgniter - 臨時資料
在某些情況下,如果您想在特定時間段後刪除儲存在會話中的資料,可以使用 CodeIgniter 中的 **tempdata** 功能來實現。
新增臨時資料
要將資料新增為 **tempdata**,我們必須使用 **mark_as_tempdata()** 函式。此函式接受兩個引數:要儲存為 **tempdata** 的專案或專案,以及這些專案的過期時間,如下所示。
// 'item' will be erased after 300 seconds(5 minutes) $this->session->mark_as_temp('item',300);
您還可以傳遞一個數組來儲存多個數據。下面儲存的所有專案將在 300 秒後過期。
$this->session->mark_as_temp(array('item','item2'),300);
您還可以為每個專案設定不同的過期時間,如下所示。
// 'item' will be erased after 300 seconds, while 'item2' // will do so after only 240 seconds $this->session->mark_as_temp(array( 'item'=>300, 'item2'=>240 ));
檢索臨時資料
我們可以使用 **tempdata()** 函式檢索臨時資料。此函式確保您僅獲取臨時資料,而不是任何其他資料。請檢視以下示例以瞭解如何檢索臨時資料。**tempdata()** 函式將接受一個要獲取的專案的引數。
$this->session->tempdata('item');
如果您省略引數,則可以檢索所有現有的臨時資料。
刪除臨時資料
臨時資料在過期時間後會自動刪除,但如果您想在此之前刪除臨時資料,則可以使用 **unset_tempdata()** 函式(它接受一個要刪除的專案的引數)如下所示。
$this->session->unset_tempdata('item');
示例
建立一個名為 **Tempdata_controller.php** 的類,並將其儲存在 **application/controller/Tempdata_controller.php** 中。
<?php class Tempdata_controller extends CI_Controller { public function index() { $this->load->library('session'); $this->load->view('tempdata_view'); } public function add() { $this->load->library('session'); $this->load->helper('url'); //tempdata will be removed after 5 seconds $this->session->set_tempdata('item','item-value',5); redirect('tempdata'); } } ?>
建立一個名為 **tempdata_view.php** 的檔案,並將其儲存在 **application/views/tempdata_view.php** 中。
<!DOCTYPE html> <html lang = "en"> <head> <meta charset = "utf-8"> <title>CodeIgniter Tempdata Example</title> </head> <body> Temp Data Example <h2><?php echo $this->session->tempdata('item'); ?></h2> <a href = 'tempdata/add'>Click Here</a> to add temp data. </body> </html>
修改 **application/config/routes.php** 檔案中的 **routes.php** 檔案,並在檔案末尾新增以下行。
$route['tempdata'] = "Tempdata_controller"; $route['tempdata/add'] = "Tempdata_controller/add";
透過訪問以下連結執行上述示例。將 yoursite.com 替換為您站點的 URL。
http://yoursite.com/index.php/tempdata
訪問上述 URL 後,您將看到如下所示的螢幕。

點選“點選此處”連結,您將看到如下所示的螢幕。
在此螢幕中,您將看到臨時資料變數的值。再次重新整理同一頁面五秒鐘後,因為我們將臨時資料設定為五秒鐘,您將看到與上面類似的螢幕,並且臨時資料變數將在五秒鐘後自動刪除。如果您在 5 秒鐘之前重新整理同一頁面,則臨時資料不會被刪除,因為時間段尚未結束。

銷燬會話
在 PHP 中,我們使用 **session_destroy()** 函式來銷燬會話,在 CodeIgniter 中,我們可以如下所示銷燬函式。
$this->session->sess_destroy();
呼叫此函式後,所有會話資料(包括 **快閃記憶體資料** 和 **臨時資料**)將被永久刪除,並且無法恢復。