Thứ Ba, 30 tháng 10, 2018

CakePHP - Quản lý phiên

Phiên cho phép chúng tôi quản lý người dùng duy nhất trên các yêu cầu và lưu trữ dữ liệu cho người dùng cụ thể. Dữ liệu phiên có thể truy cập được ở bất kỳ nơi nào bạn có quyền truy cập vào đối tượng yêu cầu, tức là các phiên có thể truy cập từ bộ điều khiển, khung nhìn, trình trợ giúp, ô và thành phần.

Truy cập đối tượng phiên

Đối tượng phiên có thể được tạo bằng cách thực thi mã sau đây.

Link đăng ký khóa học : Phần mềm lập trình PHP chuyên nghiệp.

$session = $this->request->session(); 

Viết dữ liệu phiên

Để viết một cái gì đó trong phiên, chúng ta có thể sử dụng phương thức write () session .

Session::write($key, $value)

Phương thức trên sẽ lấy hai đối số, giá trị và khóa mà theo đó giá trị sẽ được lưu trữ.

Thí dụ
$session->write('name', 'Virat Gandhi');

Đọc dữ liệu phiên

Để lấy dữ liệu đã lưu từ phiên, chúng ta có thể sử dụng phương thức session read () .

Session::read($key)

Hàm trên sẽ chỉ lấy một đối số là khóa của giá trị được sử dụng tại thời điểm ghi dữ liệu phiên. Khi khóa chính xác được cung cấp thì hàm sẽ trả về giá trị của nó.

Thí dụ

$session->read('name'); 

Khi bạn muốn kiểm tra xem dữ liệu cụ thể có tồn tại trong phiên hay không, thì bạn có thể sử dụng phương thức session () .

Session::check($key)

Hàm trên sẽ chỉ lấy khóa làm đối số.

Thí dụ

if ($session->check('name')) {
   // name exists and is not null.
}

Xóa dữ liệu phiên

Để xóa dữ liệu khỏi phiên, chúng tôi có thể sử dụng phương thức xóa () để xóa dữ liệu.

Session::delete($key)

Hàm trên sẽ chỉ lấy khóa của giá trị sẽ bị xóa khỏi phiên.

Thí dụ

$session->delete('name');

Khi bạn muốn đọc và sau đó xóa dữ liệu từ phiên, chúng ta có thể sử dụng phương thức session () .

static Session::consume($key)

Hàm trên sẽ chỉ lấy khóa làm đối số.

Thí dụ

$session->consume('name'); 

Phá hủy một phiên

Chúng ta cần hủy một phiên người dùng khi người dùng đăng xuất khỏi trang web và phá hủy phiên mà phương thức destroy () được sử dụng.

Session::destroy()

Thí dụ

$session->destroy();

Phiên hủy sẽ xóa tất cả dữ liệu phiên khỏi máy chủ nhưng sẽ không xóa cookie phiên.

Gia hạn một phiên

Trong trường hợp bạn muốn gia hạn phiên người dùng, chúng tôi có thể sử dụng phương thức renew () phiên .

Session::renew()

Thí dụ

$session->renew();

Hoàn thành phiên

Make changes in the config/routes.php file as shown in the following program.

config / routes.php

<?php
   use Cake\Core\Plugin;
   use Cake\Routing\RouteBuilder;
   use Cake\Routing\Router;

   Router::defaultRouteClass('DashedRoute');
   Router::scope('/', function (RouteBuilder $routes) {
      $routes->connect('/sessionobject',
         ['controller'=>'Sessions','action'=>'index']);
      $routes->connect('/sessionread',
         ['controller'=>'Sessions','action'=>'retrieve_session_data']);
      $routes->connect('/sessionwrite',
         ['controller'=>'Sessions','action'=>'write_session_data']);
      $routes->connect('/sessioncheck',
         ['controller'=>'Sessions','action'=>'check_session_data']);
      $routes->connect('/sessiondelete',
         ['controller'=>'Sessions','action'=>'delete_session_data']);
      $routes->connect('/sessiondestroy',
         ['controller'=>'Sessions','action'=>'destroy_session_data']);
      $routes->fallbacks('DashedRoute');
   });
   Plugin::routes();
Tạo một tệp SessionsController.php tại src / Controller / SessionsController.php . Sao chép mã sau trong tệp bộ điều khiển.

src / Controller / SessionsController.php
<?php
   namespace App\Controller;
   use App\Controller\AppController;

   class SessionsController extends AppController{
      public function retrieveSessionData(){
         //create session object
         $session = $this->request->session();
      
         //read data from session
         $name = $session->read('name');
         $this->set('name',$name);
      }
      public function writeSessionData(){
         //create session object
         $session = $this->request->session();
         
         //write data in session
         $session->write('name','Virat Gandhi');
      }
      public function checkSessionData(){
         //create session object
         $session = $this->request->session();
      
         //check session data
         $name = $session->check('name');
         $address = $session->check('address');
         $this->set('name',$name);
         $this->set('address',$address);
      }
      public function deleteSessionData(){
         //create session object
         $session = $this->request->session();
         
         //delete session data
         $session->delete('name');
      }
      public function destroySessionData(){
         //create session object
         $session = $this->request->session();
         
         //destroy session
         $session->destroy();
      }
   }
?>

Tạo một thư mục Các phiên làm việc tại src / Template và dưới thư mục đó tạo một tập tin Xem có tên là write_session_data.ctp . Sao chép mã sau vào tệp đó.

src / Mẫu / Phiên / write_session_data.ctp

The data has been written in session.

Tạo một tệp Xem khác có tên là retrieve_session_data.ctp trong cùng một thư mục Phiên và sao chép mã sau vào tệp đó.

src / Template / Sessions / retrieve_session_data.ctp

Here is the data from session.
Name: <?=$name;?>

Tạo một tệp Xem khác có tên là check_session_data.ctp trong cùng thư mục Phiên và sao chép mã sau vào tệp đó.

src / Mẫu / Phiên / check_session_data.ctp
<?php if($name): ?>
name exists in the session.

<?php else: ?>
name doesn't exist in the database

<?php endif;?>
<?php if($address): ?>
address exists in the session.

<?php else: ?>
address doesn't exist in the database

<?php endif;?>

Tạo một filbe Xem gọi delete_session_data.ctp dưới cùng thư mục Sessions và sao chép đoạn mã sau vào tập tin đó.

src / Mẫu / Phiên / delete_session_data.ctp

Data deleted from session.

Tạo một tệp Xem khác có tên là destroy_session_data.ctp trong cùng một thư mục Phiên và sao chép mã sau vào tệp đó.

src / Mẫu / Phiên / destroy_session_data.ctp

Session Destroyed.

Đầu ra

Thực hiện ví dụ trên bằng cách truy cập URL sau. URL này sẽ giúp bạn ghi dữ liệu trong phiên.

http: // localhost: 85 / PHP / phiên-ghi

Phần mềm lập trình PHP chuyên nghiệp
Phần mềm lập trình PHP chuyên nghiệp

Truy cập URL sau để đọc dữ liệu phiên - http: // localhost: 85 / PHP / phiên đọc

Truy cập URL sau để kiểm tra dữ liệu phiên - http: // localhost: 85 / PHP / sessioncheck

Truy cập URL sau để xóa dữ liệu phiên - http: // localhost: 85 / PHP / sessiondelete

Truy cập URL sau để hủy dữ liệu phiên - http: // localhost: 85 / PHP / sessiondestroy

Không có nhận xét nào:

Đăng nhận xét

lập trình PHP cho các nhà phát triển PERL

Chương này sẽ liệt kê những điểm tương đồng và khác biệt chính giữa PHP và PERL. Điều này sẽ giúp các nhà phát triển PERL hiểu PHP rất nhanh...