Yii對談Sessions


對談使資料可在不同頁面之間存取。對談建立伺服器上的臨時目錄檔案中,所有對談變數都會被儲存。這個資料是提供給所有特定使用者在存取您的網站的網頁期間使用。
當一個對談開始時,會發生以下情況 -
  • 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();
}
在上面的程式碼中,我們獲取對談應用程式元件,開啟一個對談,檢查它是否處於活動狀態,關閉對談,並最終銷毀它。
第2步 - 在Web瀏覽器的位址列輸入存取:http://localhost:8080/index.php?r=site/open-and-close-session,會看到以下內容:
Yii會話Sessions
要存取對談變數,可以使用 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' => 'Yiibai',
      'lifetime' => 7200,
   ];
   var_dump($session['captcha']);
}
第4步 - 存取 http://localhost:8080/index.php?r=site/access-session,會看到以下內容: