Yii Sessions
会话使数据可以通过各种页面访问。会话将在存储所有会话变量的临时目录中的服务器上创建一个文件。这些数据可在您访问特定用户期间访问您网站的所有页面。
会话开始时,会发生以下情况 -
- 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浏览器的地址栏中键入 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 =站点/访问会话 ,您将看到以下内容。

下一章:Yii 使用Flash数据
Yii提供了闪存数据的概念。Flash数据是一个会话数据,它 -被设置在一个请求中。只会在下一个请求中提供。之后会自动删除。第1步 - 将一个 actionShowFlash 方法添加到 SiteControll ...
AI 中文社