- 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://: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://:8080/index.php?r=site/access-session**,您將看到以下內容。