會話使數據可在不同頁面之間訪問。會話創建伺服器上的臨時目錄檔中,所有會話變數都會被存儲。這個數據是提供給所有特定用戶在訪問您的網站的網頁期間使用。
當一個會話開始時,會發生以下情況 -
-
PHP創建特定會話的唯一ID。
-
有一個 PHPSESSID 的 cookie 要發送到客戶端(流覽器)。
-
創建在所有會話變數都保存在臨時檔夾中的檔。
-
當伺服器想要從會話變數檢索一個值,PHP自動獲得 cookie 來自PHPSESSID的唯一會話ID。然後,它會在臨時目錄查找所需的檔。
要啟動一個會話,應該調用 session_start()函數。要啟動一個會話,應該調用在 session_start()函數。 也可以使用使用 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() 函數。要銷毀單個會話變數調用 isset()函數 -
<?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(); }
在上面的代碼中,我們獲取會話應用程式組件,打開一個會話,檢查它是否處於活動狀態,關閉會話,並最終銷毀它。
要訪問會話變數,可以使用 set() 和 get() 方法。
第3步 - 添加 actionAccessSession()方法到 SiteController。
public function actionAccessSession() { $session = Yii::$app->session; // set a session variable $session->set('language', 'Chinese'); // 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' => 'zaixian', 'lifetime' => 7200, ]; var_dump($session['captcha']); }
上一篇:
Yii AJAX驗證
下一篇:
Yii使用Flash數據