Yii - เซสชัน
เซสชันทำให้ข้อมูลสามารถเข้าถึงได้ในหน้าต่างๆ เซสชันสร้างไฟล์บนเซิร์ฟเวอร์ในไดเร็กทอรีชั่วคราวที่เก็บตัวแปรเซสชันทั้งหมด ข้อมูลนี้มีอยู่ในทุกหน้าของเว็บไซต์ของคุณในระหว่างการเยี่ยมชมของผู้ใช้รายนั้น
เมื่อเซสชันเริ่มต้นสิ่งต่อไปนี้จะเกิดขึ้น -
PHP สร้าง ID เฉพาะสำหรับเซสชันนั้น ๆ
คุกกี้ที่เรียกว่า PHPSESSID จะถูกส่งไปยังฝั่งไคลเอ็นต์ (ไปยังเบราว์เซอร์)
เซิร์ฟเวอร์สร้างไฟล์ในโฟลเดอร์ชั่วคราวที่บันทึกตัวแปรเซสชันทั้งหมด
เมื่อเซิร์ฟเวอร์ต้องการดึงค่าจากตัวแปรเซสชัน PHP จะรับรหัสเซสชันที่ไม่ซ้ำกันโดยอัตโนมัติจากคุกกี้ PHPSESSID จากนั้นจะค้นหาไฟล์ที่ต้องการในไดเร็กทอรีชั่วคราว
ในการเริ่มเซสชันคุณควรโทรไปที่ไฟล์ 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 คุณสามารถเข้าถึงเซสชันผ่านส่วนประกอบแอปพลิเคชันเซสชัน
Step 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();
}
ในโค้ดด้านบนเราได้รับส่วนประกอบของแอปพลิเคชันเซสชันเปิดเซสชันตรวจสอบว่ามีการใช้งานอยู่หรือไม่ปิดเซสชันและในที่สุดก็ทำลายทิ้ง
Step 2 - ประเภท http://localhost:8080/index.php?r=site/open-and-close-session ในแถบที่อยู่ของเว็บเบราว์เซอร์คุณจะเห็นสิ่งต่อไปนี้
ในการเข้าถึงตัวแปรเซสชันคุณสามารถใช้ set() และ get() วิธีการ
Step 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']);
}
Step 4 - ไปที่ http://localhost:8080/index.php?r=site/access-sessionคุณจะเห็นสิ่งต่อไปนี้