Zend Framework - Quản lý phiên

Phiên là một khái niệm rất quan trọng trong một ứng dụng web. Nó cung cấp tùy chọn để duy trì dữ liệu của người dùng trong máy chủ web trong một khoảng thời gian giới hạn. Zend framework cung cấp một thành phần riêng biệt,zend-session để xử lý thông tin phiên.

Cài đặt một thành phần phiên

Thành phần phiên có thể được cài đặt bằng cách sử dụng Composer như được chỉ định bên dưới -

composer require zendframework/zend-session

Thành phần phiên

Zend framework cung cấp sáu thành phần để xử lý quản lý phiên. Tất cả các thành phần này đã được giải thích bên dưới -

  • Zend\Session\Container - API chính để đọc và ghi thông tin phiên.

  • Zend\Session\SessionManager - Nó được sử dụng để quản lý toàn bộ vòng đời của một phiên.

  • Zend\Session\Storage - Điều này được sử dụng để chỉ định cách dữ liệu phiên sẽ được lưu trữ trong bộ nhớ.

  • Zend\Session\SaveHandler - Nó được sử dụng để lưu trữ và truy xuất dữ liệu phiên vào một vị trí thực như RDBMS, Redis, MangoDB, v.v.

  • Zend\Session\Validator - Điều này được sử dụng để bảo vệ phiên khỏi bị tấn công bằng cách kiểm tra chéo địa chỉ từ xa và tác nhân người dùng của yêu cầu ban đầu và sau đó.

  • Zend\Session\Config\SessionConfig - Nó được sử dụng để cấu hình cách phiên hoạt động.

Cấu hình mặc định đủ để hoạt động với một phiên. Sử dụng các thành phần trên, tất cả các khía cạnh của một phiên có thể được xử lý dễ dàng.

Ví dụ về thành phần phiên

Chúng ta hãy tuân thủ các điểm sau để tạo một trang mới để hiểu một phiên trong khung công tác Zend. Theo mặc định, nó đủ để tạo một phiên bản củaContainer lớp để quản lý các phiên.

  • Tạo một hành động mới, sessionAction trong TutorialController.

  • Khởi tạo một Container vật.

$c = new Container();
  • Kiểm tra xem một khóa tùy ý counttồn tại. Nếu khóa không có sẵn, hãy khởi tạocount với giá trị 1. Nếu có, hãy tăng giá trị như thể hiện trong đoạn mã sau.

if (!isset($c->count)) { 
   $c->count = 0; } else { $c->count++; 
}
  • Đăng ký số lượng trong ViewModel.

  • Tạo tệp mẫu cho - sessionAction, session.phtml trong myapp / module / Tutorial / view / tutorial / tutorial / session.phtml và sau đó hiển thị count giá trị.

  • Làm mới trang sẽ tăng giá trị của counttrong phiên. Danh sách đầy đủ như sau:

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