- 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 - 使用闪存数据
- Yii - cookie
- Yii - 使用 Cookie
- Yii - 文件上传
- Yii - 格式化
- Yii - 分页
- Yii - 排序
- Yii - 属性
- Yii - 数据提供者
- Yii - 数据小部件
- Yii - 列表视图小部件
- Yii - GridView 小部件
- Yii - 活动
- Yii - 创建事件
- Yii - Behave
- Yii - 创建Behave
- 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 - 在网络浏览器的地址栏中输入http://localhost: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 - 转到http://localhost:8080/index.php?r=site/access-session,您将看到以下内容。