开发学院

您的位置:首页>教程>正文

教程正文

CodeIgniter教程:临时数据

  在某些情况下,当您希望在某个特定时间段后删除存储在会话中的数据时,可以使用CodeIgniter中的tempdata功能来完成。

添加临时数据

  要将数据添加为临时数据,我们必须使用mark_as_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()函数将获取指定item。

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

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

删除临时数据

  临时数据在过期后会自动删除,但是如果要在过期前删除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

  访问上述网址后,您将看到如下所示的内容。

temp_data.jpg

  点击“Click Here”链接,您将看到如下所示的内容。

  在这个页面上,你会看到一个临时数据变量的值。五秒钟后再次刷新相同的页面,因为我们已经设置了五秒钟的临时数据,你会看到上面这样的屏幕,临时数据变量将在五秒钟后自动删除。如果您在5秒钟前刷新同一页面,那么临时数据将不会被删除,因为时间段还没有结束。

add_temp_data.jpg

销毁会话

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

$this->session->sess_destroy();

  调用此函数后,包括flashdata和tempdata在内的所有会话数据都将被永久删除,并且无法检索回来。