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