Tempdata(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()函数执行如下所示的unset_tempdata() ,该函数将删除项目的一个参数。
$this->session->unset_tempdata('item');
例子 (Example)
创建一个名为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
访问上述URL后,您将看到如下所示的屏幕。
点击“Click Here”链接,您将看到如下所示的屏幕。
在这个屏幕中,您将看到临时数据变量的值。 我们将温度数据设置为五秒后再次刷新同一页面五秒后,您将看到如上所示的屏幕,并且五秒后将自动删除临时数据变量。 如果在5秒之前刷新同一页面,则不会删除临时数据,因为时间段尚未结束。
销毁会话
在PHP中,我们使用session_destroy()函数来销毁会话,在CodeIgniter中我们可以销毁函数,如下所示。
$this->session->sess_destroy();
调用此函数后,将永久删除包括flashdata和flashdata在内的所有会话数据,并且无法检索回来。