Zend Framework - การจัดการเซสชัน
เซสชันเป็นแนวคิดที่สำคัญมากในเว็บแอปพลิเคชัน มีตัวเลือกในการเก็บรักษาข้อมูลของผู้ใช้ในเว็บเซิร์ฟเวอร์เป็นระยะเวลา จำกัด Zend framework มีองค์ประกอบแยกต่างหากzend-session เพื่อจัดการข้อมูลเซสชัน
ติดตั้งส่วนประกอบเซสชัน
คอมโพเนนต์เซสชันสามารถติดตั้งได้โดยใช้ Composer ตามที่ระบุด้านล่าง -
composer require zendframework/zend-session
ส่วนประกอบของเซสชัน
Zend framework มีส่วนประกอบหกส่วนเพื่อจัดการกับการจัดการเซสชัน ส่วนประกอบทั้งหมดนี้ได้อธิบายไว้ด้านล่าง -
Zend\Session\Container - API หลักในการอ่านและเขียนข้อมูลเซสชัน
Zend\Session\SessionManager - ใช้เพื่อจัดการวงจรชีวิตทั้งหมดของเซสชัน
Zend\Session\Storage - ใช้เพื่อระบุวิธีจัดเก็บข้อมูลเซสชันในหน่วยความจำ
Zend\Session\SaveHandler - ใช้เพื่อจัดเก็บและดึงข้อมูลเซสชันไปยังตำแหน่งทางกายภาพเช่น RDBMS, Redis, MangoDB เป็นต้น
Zend\Session\Validator - ใช้เพื่อป้องกันเซสชันจากการไฮแจ็คโดยการตรวจสอบที่อยู่ระยะไกลเริ่มต้นและที่อยู่ระยะไกลของคำขอในภายหลังและตัวแทนผู้ใช้
Zend\Session\Config\SessionConfig - ใช้เพื่อกำหนดค่าว่าเซสชันควรทำงานอย่างไร
การกำหนดค่าเริ่มต้นเพียงพอที่จะทำงานกับเซสชัน การใช้ส่วนประกอบข้างต้นสามารถจัดการทุกแง่มุมของเซสชันได้อย่างง่ายดาย
ตัวอย่างส่วนประกอบของเซสชัน
ให้เราปฏิบัติตามประเด็นต่อไปนี้เพื่อสร้างเพจใหม่เพื่อทำความเข้าใจเซสชันใน Zend framework ตามค่าเริ่มต้นก็เพียงพอที่จะสร้างอินสแตนซ์ของไฟล์Container ชั้นเรียนเพื่อจัดการเซสชัน
สร้างการกระทำใหม่ sessionAction ใน TutorialController.
เริ่มต้นไฟล์ Container วัตถุ.
$c = new Container();
ตรวจสอบว่าเป็นคีย์โดยพลการ countมีอยู่ หากไม่มีคีย์ให้เริ่มต้นไฟล์count ด้วยค่า 1 หากมีให้เพิ่มค่าตามที่แสดงในรหัสต่อไปนี้
if (!isset($c->count)) {
$c->count = 0; } else { $c->count++;
}
ลงทะเบียนจำนวนใน ViewModel
สร้างไฟล์เทมเพลตสำหรับ - sessionAction, session.phtml ใน myapp / module / Tutorial / view / tutorial / tutorial / session.phtml จากนั้นแสดงผล count มูลค่า.
การรีเฟรชหน้าจะเพิ่มมูลค่าของ countในเซสชั่น รายชื่อที่สมบูรณ์มีดังนี้ -
TutorialController.php
public function sessionAction() {
$c = new Container(); if (!isset($c->count)) {
$c->count = 0; } else { $c->count++;
}
$view = new ViewModel([ 'count' => $c->count,
]);
return $view;
}
session.pthml
Session data, COUNT = <?= $this->count ?>
Sample Result
Session data, Count = 5