- CakePHP 教程
- CakePHP - 首頁
- CakePHP - 概述
- CakePHP - 安裝
- CakePHP - 資料夾結構
- CakePHP - 專案配置
- CakePHP - 路由
- CakePHP - 控制器
- CakePHP - 檢視
- CakePHP - 擴充套件檢視
- CakePHP - 檢視元素
- CakePHP - 檢視事件
- CakePHP - 使用資料庫
- CakePHP - 檢視記錄
- CakePHP - 更新記錄
- CakePHP - 刪除記錄
- CakePHP - 服務
- CakePHP - 錯誤和異常處理
- CakePHP - 日誌記錄
- CakePHP - 表單處理
- CakePHP - 國際化
- CakePHP - 會話管理
- CakePHP - Cookie 管理
- CakePHP - 安全性
- CakePHP - 驗證
- CakePHP - 建立驗證器
- CakePHP - 分頁
- CakePHP - 日期和時間
- CakePHP - 檔案上傳
- CakePHP 有用資源
- CakePHP - 快速指南
- CakePHP - 有用資源
- CakePHP - 討論
CakePHP - Cookie 管理
使用 CakePHP 處理 Cookie 既簡單又安全。有一個 CookieComponent 類用於管理 Cookie。該類提供了幾種用於處理 Cookie 的方法。
要使用 Cookie,請將這兩個類新增到您的控制器中:
use Cake\Http\Cookie\Cookie; use Cake\Http\Cookie\CookieCollection;
必須首先建立 Cookie 物件才能註冊 Cookie。
$cookie = new Cookie(name,value,expiration time,path,domain);
名稱和值是必填項,其他引數是可選的。
寫入 Cookie
以下是寫入 Cookie 的語法。
$cookie = new Cookie(name,value,expiration time,path,domain);
建立的 Cookie 必須新增到 cookieCollection 中,如下所示:
$cookie = new Cookie('name','XYZ');
$cookies = new CookieCollection([$cookie]);
如果 cookieCollection 物件已建立,則可以按如下所示新增其餘的 Cookie:
$cookies = $cookies->add($cookie);
讀取 Cookie
要讀取 Cookie,請使用 cookieCollection 的 get() 方法。
語法
讀取 Cookie 的語法如下:
Cake\Http\Cookie\CookieCollection::get($name)
這將返回 cookieCollection 介面,要獲取 Cookie 的值,您需要呼叫 getValue() 方法。
Cake\Http\Cookie\CookieCollection Interface::getValue()
檢查 Cookie
cookieCollection 的 has() 方法將告訴您 Cookie 是否存在。
Cake\Http\Cookie\CookieCollection::has($name)
示例
echo $isPresent = $this->cookies->has('name');
刪除 Cookie
remove() 方法用於刪除 Cookie。以下是 remove() 方法的語法。
Cake\Http\Cookie\CookieCollection::remove($name)
remove() 方法將接收一個引數,即要刪除的 Cookie 變數的名稱($name)。
示例 1
$test = $this->cookies->remove('name');
示例 2
按照以下程式所示修改 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'=>'Cookies','action'=>'testCookies']);
$builder->fallbacks();
});
在 src/Controller/CookiesController.php 建立一個 CookiesController.php 檔案。將以下程式碼複製到控制器檔案中。
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());
}
}
?>
在 src/Template 建立一個名為 Cookies 的目錄,並在該目錄下建立一個名為 test_cookies.php 的檢視檔案。將以下程式碼複製到該檔案中。
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; ?>
輸出
透過訪問以下 URL 執行上述示例:https:///cakephp4/cookie/testcookies