CodeIgniter Tempdata


在某些情况下,如果要在特定时间段后删除存储在会话中的数据,可以使用CodeIgniter中的 tempdata 功能完成此操作。

添加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() 函数检索tempdata 。这个函数确保你只获取tempdata而不是其他任何数据。看看下面给出的例子来看看如何检索tempdata。 tempdata() 函数将获取要获取的项目的一个参数。

$this->session->tempdata('item');

如果您省略参数,则可以检索所有现有的tempdata。

删除Tempdata

Tempdata会在其过期后自动删除,但如果您想在此之前删除tempdata,则可以使用 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替换为您网站的网址。

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

访问上述网址后,您将看到一个如下所示的屏幕。

TempData的

点击 “点击这里” 链接,你会看到如下所示的屏幕。

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

添加临时数据

销毁会话

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

$this->session->sess_destroy();

调用该函数后,所有的会话数据,包括 flashdataTempData的 将被永久删除,无法恢复回来。