- CodeIgniter 教程
- CodeIgniter - 首页
- CodeIgniter - 概述
- CodeIgniter - 安装 CodeIgniter
- CodeIgniter - 应用程序架构
- CodeIgniter - MVC 框架
- CodeIgniter - 基本概念
- CodeIgniter - 配置
- CodeIgniter - 使用数据库
- CodeIgniter - 库
- CodeIgniter - 错误处理
- CodeIgniter - 文件上传
- CodeIgniter - 发送邮件
- CodeIgniter - 表单验证
- CodeIgniter - 会话管理
- CodeIgniter - 闪存数据
- CodeIgniter - 临时数据
- CodeIgniter - Cookie 管理
- CodeIgniter - 常用函数
- CodeIgniter - 页面缓存
- CodeIgniter - 页面重定向
- CodeIgniter - 应用程序分析
- CodeIgniter - 基准测试
- CodeIgniter - 添加 JS 和 CSS
- CodeIgniter - 国际化
- CodeIgniter - 安全性
- CodeIgniter 有用资源
- CodeIgniter - 快速指南
- CodeIgniter - 有用资源
- CodeIgniter - 讨论
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');
如果您省略参数,则可以检索所有现有的临时数据。
删除临时数据
临时数据在过期时间后会自动删除,但如果您想在此之前删除临时数据,则可以使用 **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 替换为您站点的 URL。
http://yoursite.com/index.php/tempdata
访问上述 URL 后,您将看到如下所示的屏幕。
点击“点击此处”链接,您将看到如下所示的屏幕。
在此屏幕中,您将看到临时数据变量的值。再次刷新同一页面五秒钟后,因为我们将临时数据设置为五秒钟,您将看到与上面类似的屏幕,并且临时数据变量将在五秒钟后自动删除。如果您在 5 秒钟之前刷新同一页面,则临时数据不会被删除,因为时间段尚未结束。
销毁会话
在 PHP 中,我们使用 **session_destroy()** 函数来销毁会话,在 CodeIgniter 中,我们可以如下所示销毁函数。
$this->session->sess_destroy();
调用此函数后,所有会话数据(包括 **闪存数据** 和 **临时数据**)将被永久删除,并且无法恢复。