📜  CodeIgniter-临时数据

📅  最后修改于: 2020-10-26 05:33:32             🧑  作者: Mango


在某些情况下,如果要在特定时间段后删除会话中存储的数据,可以使用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。此函数确保您仅获取tempdata,而不获取任何其他数据。查看下面给出的示例,以了解如何检索tempdata。 tempdata()函数将采用要获取的项目的一个参数。

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

如果省略该参数,则可以检索所有现有的临时数据。

删除临时数据

临时数据会在其到期时间之后自动删除,但是如果您要在此之前删除临时数据,则可以使用unset_tempdata()函数执行以下操作,该函数接受要删除的项目的一个参数。

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

创建一个名为Tempdata_controller.php的类,并将其保存在application / controller / Tempdata_controller.php中

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中

 
      CodeIgniter Tempdata Example 
   
    
    
      Temp Data Example 
      

session->tempdata('item'); ?>

Click Here to add temp data.

在application / config / routes.php中的route.php文件中进行更改,并在文件末尾添加以下行。

$route['tempdata'] = "Tempdata_controller"; 
$route['tempdata/add'] = "Tempdata_controller/add";

通过访问以下链接执行以上示例。用您网站的URL替换yoursite.com。

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

访问上述URL后,您将看到如下所示的屏幕。

临时数据

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

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

添加温度数据

销毁会话

在PHP中,我们使用session_destroy()函数破坏会话,而在CodeIgniter中,我们可以破坏函数,如下所示。

$this->session->sess_destroy();

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