Sessions使数据可以跨多个页面访问。Sessions在服务器上的一个临时目录中创建一个文件,该目录中存储了所有Sessions变量。在该特定用户访问期间,此数据可用于您网站的所有页面。
Sessions开始时,将发生以下情况-
要启动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(); ?>
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,您将看到以下内容。