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');
如果省略参数,则可以检索所有现有的临时数据。
删除临时数据
tempdata 在到期时间后自动删除,但如果您想在此之前删除 tempdata,那么您可以使用 unset_tempdata() 函数执行如下所示操作,该函数将项目的一个参数用于被删除。
$this->session->unset_tempdata('item');
示例
创建一个名为 tempdata_controller.php 的类并将其保存在 application/controller/tempdata_controller.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
codeigniter tempdata example temp data exampleecho $this--->session->tempdata('item'); ?>
click here to add temp data.
在 application/config/routes.php 中的 routes.php 文件中进行更改,并在文件末尾添加以下行。
$route['tempdata'] = "tempdata_controller"; $route['tempdata/add'] = "tempdata_controller/add";
通过访问以下链接执行上述示例。将 yoursite.com 替换为您网站的网址。
http://yoursite.com/index.php/tempdata
访问上述 url 后,您将看到如下所示的屏幕。
单击 "单击此处"链接,您将看到如下所示的屏幕。
在此屏幕中,您将看到临时数据变量的值。五秒后再次刷新同一页面,因为我们已经将临时数据设置了五秒,您将看到如上所示的屏幕,五秒后临时数据变量将自动删除。如果在 5 秒前刷新同一个页面,那么临时数据不会被删除,因为时间段还没有结束。
销毁会话
在 php 中,我们使用 session_destroy() 函数来销毁会话,而在 codeigniter 中,我们可以销毁函数,如下所示。
$this->session->sess_destroy();
调用此函数后,包括 flashdata和 tempdata在内的所有会话数据将被永久删除且无法找回。