CodeIgniter - Tempdata

在某些情况下,您想要在特定时间段后删除会话中存储的数据,可以使用 CodeIgniter 中的 tempdata 功能来实现。

添加 Tempdata

要将数据添加为 tempdata,我们必须使用 mark_as_tempdata() 函数。此函数需要两个参数项或要存储为 tempdata 的项,这些项的到期时间如下所示。

// 'item' 将在 300 秒(5 分钟)后被删除
$this->session->mark_as_temp('item',300);

您还可以传递一个数组来存储多个数据。下面存储的所有项目将在 300 秒后过期。

$this->session->mark_as_temp(array('item','item2'),300);

您还可以为每个项目设置不同的过期时间,如下所示。

// 'item' 将在 300 秒后被删除,而 'item2'
// 仅在 240 秒后被删除

$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'); 
   
         //临时数据将在 5 秒后被删除
         $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 后,您将看到如下所示的屏幕。

TempData

单击 "单击此处" 链接,您将看到如下所示的屏幕。

在此屏幕中,您将看到临时数据变量的值。五秒钟后再次刷新同一页面,因为我们已将临时数据设置为五秒钟,您将看到如上所示的屏幕,并且临时数据变量将在五秒钟后自动删除。如果您在 5 秒之前刷新同一页面,则不会删除临时数据,因为时间段尚未结束。

添加临时数据

销毁会话

在 PHP 中,我们使用 session_destroy() 函数来销毁会话,在 CodeIgniter 中,我们可以按如下所示销毁该函数。

$this->session->sess_destroy();

调用此函数后,所有会话数据(包括 flashdatatempdata)都将被永久删除,并且无法恢复。