Categories: Yii框架教程

Yii – Sessions

Sessions使数据可以跨多个页面访问。Sessions在服务器上的一个临时目录中创建一个文件,该目录中存储了所有Sessions变量。在该特定用户访问期间,此数据可用于您网站的所有页面。

Sessions开始时,将发生以下情况-

  • PHP为该特定Sessions创建唯一的ID。
  • 一个称为PHPSESSID的cookie在客户端发送到浏览器。
  • 服务器在保存所有Sessions变量的临时文件夹中创建一个文件。
  • 当服务器希望从Sessions变量中检索值时,PHP会自动从PHPSESSID cookie获取唯一的SessionsID。然后,它在其临时目录中查找所需的文件。

要启动Sessions,您应该调用session_start()函数。所有Sessions变量都存储在$ _SESSION全局变量中。您还可以使用isset()函数来检查是否设置了Sessions变量-

<?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;
?>

要销毁Sessions,应调用session_destroy()函数。要销毁单个Sessions变量,请调用unset()函数-

<?php
   unset($_SESSION['number']);
   session_destroy();
?>

在Yii中使用Sessions

Sessions允许数据在用户请求之间持久化。在PHP中,您可以通过$ _SESSION变量访问它们。在Yii中,您可以通过Sessions应用程序组件访问Sessions。

步骤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();
}

在上面的代码中,我们获得了Sessions应用程序组件,打开了一个Sessions,检查它是否处于活动状态,关闭该Sessions,最后销毁它。

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

要访问Sessions变量,可以使用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 = site / access-session,您将看到以下内容。

terry

这个人很懒,什么都没有留下~

Share
Published by
terry
Tags: Yii教程

Recent Posts

聊聊vue3中的defineProps

在Vue 3中,defineP…

1 周 ago

在 Chrome 中删除、允许和管理 Cookie

您可以选择删除现有 Cooki…

2 周 ago

自定义指令:聊聊vue中的自定义指令应用法则

今天我们来聊聊vue中的自定义…

3 周 ago

聊聊Vue中@click.stop和@click.prevent

一起来学下聊聊Vue中@cli…

4 周 ago

Nginx 基本操作:启动、停止、重启命令。

我们来学习Nginx基础操作:…

4 周 ago

Vue3:手动清理keep-alive组件缓存的方法

Vue3中手动清理keep-a…

1 月 ago