CakePHP - Quản lý cookie

Xử lý Cookie bằng CakePHP thật dễ dàng và an toàn. Có một lớp CookieComponent được sử dụng để quản lý Cookie. Lớp này cung cấp một số phương thức để làm việc với Cookie.

Để làm việc với cookie, hãy thêm 2 lớp này vào bộ điều khiển của bạn -

use Cake\Http\Cookie\Cookie;
use Cake\Http\Cookie\CookieCollection;

Đối tượng cookie phải được tạo trước để đăng ký cookie.

$cookie = new Cookie(name,value,expiration time,path,domain);

Tên và giá trị là bắt buộc và những tên khác là tham số tùy chọn.

Viết cookie

Sau đây là cú pháp để viết một cookie.

$cookie = new Cookie(name,value,expiration time,path,domain);

Cookie được tạo phải được thêm vào cookieCollection như hình dưới đây -

$cookie = new Cookie('name','XYZ');
$cookies = new CookieCollection([$cookie]);

Nếu đối tượng thu thập cookie đã được tạo, phần còn lại của cookie có thể được thêm vào như hình dưới đây -

$cookies = $cookies->add($cookie);

Đọc Cookie

Để đọc cookie, hãy sử dụng phương thức get () từ cookiecollection.

Cú pháp

Cú pháp cho cookie đọc như sau:

Cake\Http\Cookie\CookieCollection::get($name)

Điều này sẽ trả về cho bạn Giao diện cookiecollection, để lấy giá trị của cookie, bạn sẽ phải gọi phương thức getValue ().

Cake\Http\Cookie\CookieCollection Interface::getValue()

Kiểm tra Cookie

Các has() phương thức từ cookieCollection sẽ cho bạn biết, nếu cookie có hay không.

Cake\Http\Cookie\CookieCollection::has($name)

Thí dụ

echo $isPresent = $this->cookies->has('name');

Xóa cookie

Các remove()phương pháp được sử dụng để xóa cookie. Sau đây là cú pháp của phương thức remove ().

Cake\Http\Cookie\CookieCollection::remove($name)

Phương thức remove () sẽ lấy một đối số, tên của biến cookie ($ name) để xóa.

ví dụ 1

$test = $this->cookies->remove('name');

Ví dụ 2

Thực hiện các thay đổi trong tệp config / route.php như được hiển thị trong chương trình sau.

config/routes.php

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
   $builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
      'httpOnly' => true,
   ]));
   $builder->applyMiddleware('csrf');
   //$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
   $builder->connect('cookie/testcookies',['controller'=>'Cookies','action'=>'testCookies']);
   $builder->fallbacks();
});

Tạo một CookiesController.php nộp tại src/Controller/CookiesController.php. Sao chép mã sau vào tệp bộ điều khiển.

src/Controller/Cookies/CookiesController.php

<?php
   namespace App\Controller;
   use App\Controller\AppController;
   use Cake\Http\Cookie\Cookie;
   use Cake\Http\Cookie\CookieCollection;
   class CookiesController extends AppController{
      public $cookies;
      public function testCookies() {
         $cookie = new Cookie('name','XYZ');
         $this->cookies = new CookieCollection([$cookie]);
         $cookie_val = $this->cookies->get('name');
         $this->set('cookie_val',$cookie_val->getValue());
         $isPresent = $this->cookies->has('name');
         $this->set('isPresent',$isPresent);
         $this->set('count', $this->cookies->count());
         $test = $this->cookies->remove('name');
         $this->set('count_afterdelete', $test->count());
      }
   }
?>

Tạo một thư mục Cookies tại src/Template và trong thư mục đó tạo một View tệp được gọi là test_cookies.php. Sao chép mã sau vào tệp đó.

src/Template/Cookie/test_cookies.php

The value of the cookie is: <?php echo $cookie_val; ?>

<br/>
<?php
   if($isPresent):
?>
The cookie is present.
<?php
   else:
?>
The cookie isn't present.
<?php
   endif;
?>
<br/>
<?php
   echo "The count of cookie before delete is :" .$count;
?>
<br/>
<?php
   echo "The count of cookie after delete is :" .$count_afterdelete;
?>

Đầu ra

Thực hiện ví dụ trên bằng cách truy cập URL sau - http: // localhost / cakephp4 / cookie / testcookies