- Yii 教程
- Yii - 首页
- Yii - 概述
- Yii - 安装
- Yii - 创建页面
- Yii - 应用结构
- Yii - 入口脚本
- Yii - 控制器
- Yii - 使用控制器
- Yii - 使用操作
- Yii - 模型
- Yii - 小部件
- Yii - 模块
- Yii - 视图
- Yii - 布局
- Yii - 资源
- Yii - 资源转换
- Yii - 扩展
- Yii - 创建扩展
- Yii - HTTP 请求
- Yii - 响应
- Yii - URL 格式
- Yii - URL 路由
- Yii - URL 规则
- Yii - HTML 表单
- Yii - 验证
- Yii - 特设验证
- Yii - AJAX 验证
- Yii - 会话
- Yii - 使用 Flash 数据
- Yii - Cookie
- Yii - 使用 Cookie
- Yii - 文件上传
- Yii - 格式化
- Yii - 分页
- Yii - 排序
- Yii - 属性
- Yii - 数据提供者
- Yii - 数据小部件
- Yii - ListView 小部件
- Yii - GridView 小部件
- Yii - 事件
- Yii - 创建事件
- Yii - 行为
- Yii - 创建行为
- Yii - 配置
- Yii - 依赖注入
- Yii - 数据库访问
- Yii - 数据访问对象
- Yii - 查询构建器
- Yii - 活动记录
- Yii - 数据库迁移
- Yii - 主题
- Yii - RESTful API
- Yii - RESTful API 实践
- Yii - 字段
- Yii - 测试
- Yii - 缓存
- Yii - 片段缓存
- Yii - 别名
- Yii - 日志
- Yii - 错误处理
- Yii - 身份验证
- Yii - 授权
- Yii - 本地化
- Yii - Gii
- Gii – 创建模型
- Gii – 生成控制器
- Gii – 生成模块
- Yii 有用资源
- Yii - 快速指南
- Yii - 有用资源
- Yii - 讨论
Yii - 会话
会话使数据可在各个页面之间访问。会话在服务器上的临时目录中创建一个文件,其中存储所有会话变量。此数据在特定用户访问网站期间可用于网站的所有页面。
会话启动时,会发生以下情况:
PHP 为该特定会话创建一个唯一的 ID。
名为 PHPSESSID 的 Cookie 发送到客户端(浏览器)。
服务器在临时文件夹中创建一个文件,其中保存所有会话变量。
当服务器想要从会话变量中检索值时,PHP 会自动从 PHPSESSID Cookie 中获取唯一的会话 ID。然后,它在其临时目录中查找所需的文件。
要启动会话,应调用 **session_start()** 函数。所有会话变量都存储在 **$_SESSION** 全局变量中。您还可以使用 **isset()** 函数检查会话变量是否已设置:
<?php session_start(); if( isset( $_SESSION['number'] ) ) { $_SESSION['number'] += 1; }else { $_SESSION['number'] = 1; } $msg = "This page was visited ". $_SESSION['number']; $msg .= "in this session."; echo $msg; ?>
要销毁会话,应调用 **session_destroy()** 函数。要销毁单个会话变量,请调用 **unset()** 函数:
<?php unset($_SESSION['number']); session_destroy(); ?>
在 Yii 中使用会话
会话允许跨用户请求持久化数据。在 PHP 中,您可以通过 **$_SESSION** 变量访问它们。在 Yii 中,您可以通过会话应用程序组件访问会话。
**步骤 1** - 将 **actionOpenAndCloseSession** 方法添加到 **SiteController**。
public function actionOpenAndCloseSession() { $session = Yii::$app->session; // open a session $session->open(); // check if a session is already opened if ($session->isActive) echo "session is active"; // close a session $session->close(); // destroys all data registered to a session $session->destroy(); }
在上面的代码中,我们获取会话应用程序组件,打开会话,检查它是否处于活动状态,关闭会话,最后销毁它。
**步骤 2** - 在 Web 浏览器的地址栏中键入 **https://127.0.0.1:8080/index.php?r=site/open-and-close-session**,您将看到以下内容。
要访问会话变量,可以使用 **set()** 和 **get()** 方法。
**步骤 3** - 将 **actionAccessSession** 方法添加到 **SiteController**。
public function actionAccessSession() { $session = Yii::$app->session; // set a session variable $session->set('language', 'ru-RU'); // get a session variable $language = $session->get('language'); var_dump($language); // remove a session variable $session->remove('language'); // check if a session variable exists if (!$session->has('language')) echo "language is not set"; $session['captcha'] = [ 'value' => 'aSBS23', 'lifetime' => 7200, ]; var_dump($session['captcha']); }
**步骤 4** - 转到 **https://127.0.0.1:8080/index.php?r=site/access-session**,您将看到以下内容。