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 sessionsession->destroy();
}

在上面的代码中,我们获取会话应用组件,打开一个会话,检查它是否活动,关闭会话,最后销毁它。

步骤2 - 在Web浏览器的地址栏中输入 http://localhost:8080/index.php?r=site/open-and-close-session ,将会看到以下内容。

Yii 会话

要访问会话变量,您可以使用 set()get() 方法。

步骤3 - 添加一个 actionAccessSession 方法到 SiteController

public function actionAccessSession() {

   session = Yii::app->session;

   // set a session variable
   session->set('language', 'ru-RU');

   // get a session variablelanguage = 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 ,你将会看到以下内容。

Yii 会话

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程