使用 CakePHP 處理 CakePHP Cookie 管理 既簡單又安全。有一個 CakePHP Cookie 管理Component 類別用於管理 CakePHP Cookie 管理。這類提供了幾種使用 CakePHP Cookie 管理 的方法。
要使用 cookie,請將這 2 個類別加入您的控制器 -
use Cake\Http\CakePHP Cookie 管理\CakePHP Cookie 管理; use Cake\Http\CakePHP Cookie 管理\CakePHP Cookie 管理Collection;
必須先建立 cookie 物件才能註冊 cookie。
$cookie = new CakePHP Cookie 管理(name,value,expiration time,path,domain);
名稱和值是必需的,其他是可選參數。
以下是編寫 cookie 的語法。
$cookie = new CakePHP Cookie 管理(name,value,expiration time,path,domain);
建立的 cookie 必須加入 cookieCollection 中,如下所示 -
$cookie = new CakePHP Cookie 管理('name','XYZ'); $cookies = new CakePHP Cookie 管理Collection([$cookie]);
如果已經建立了 cookie 集合對象,則可以新增其餘的 cookie,如下所示 -
$cookies = $cookies->add($cookie);
要讀取 cookie,請使用 cookiecollection 中的 get() 方法。
讀取cookie的語法如下 -
Cake\Http\CakePHP Cookie 管理\CakePHP Cookie 管理Collection::get($name)
這將返回 cookiecollection 接口,要取得 cookie 的值,您必須呼叫方法 getValue()。
Cake\Http\CakePHP Cookie 管理\CakePHP Cookie 管理Collection Interface::getValue()
cookieCollection 中的 has() 方法會告訴您 cookie 是否存在。
Cake\Http\CakePHP Cookie 管理\CakePHP Cookie 管理Collection::has($name)
echo $isPresent = $this->cookies->has('name');
remove()方法用於刪除cookie。以下是remove()方法的語法。
Cake\Http\CakePHP Cookie 管理\CakePHP Cookie 管理Collection::remove($name)
remove() 方法將採用一個參數,即要刪除的 cookie 變數的名稱 ($name)。
$test = $this->cookies->remove('name');
在 config/routes.php 檔案中進行更改,如下列程式所示。
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'=>'CakePHP Cookie 管理s','action'=>'testCakePHP Cookie 管理s']); $builder->fallbacks(); });
在 src/Controller/CakePHP Cookie 管理sController.php 建立 CakePHP Cookie 管理sController.php 檔案。 將以下程式碼複製到控制器檔案中。
src/Controller/CakePHP Cookie 管理s/CakePHP Cookie 管理sController.php
<?php namespace App\Controller; use App\Controller\AppController; use Cake\Http\CakePHP Cookie 管理\CakePHP Cookie 管理; use Cake\Http\CakePHP Cookie 管理\CakePHP Cookie 管理Collection; class CakePHP Cookie 管理sController extends AppController{ public $cookies; public function testCakePHP Cookie 管理s() { $cookie = new CakePHP Cookie 管理('name','XYZ'); $this->cookies = new CakePHP Cookie 管理Collection([$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()); } } ?>
在src/Template處建立一個目錄CakePHP Cookie 管理s,並在該目錄下建立一個View文件,名為test_cookies.php。 複製以下程式碼位於該檔案中。
src/Template/CakePHP 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; ?>
透過造訪以下 URL 來執行上述範例 - http://localhost/cakephp4/cookie/testcookies
以上是CakePHP Cookie 管理的詳細內容。更多資訊請關注PHP中文網其他相關文章!