使用 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中文网其他相关文章!