Cookie 管理(Cookie Management)
使用CakePHP处理Cookie非常简单而且安全。 有一个CookieComponent类,用于管理Cookie。 该类提供了几种使用Cookie的方法。
写Cookie
write()方法用于编写cookie。 以下是write()方法的语法。
Cake\Controller\Component\CookieComponent::write(mixed $key, mixed $value = null)
write()方法将采用两个参数, the name of cookie variable ($key)和the value of cookie variable ($value) 。
例子 (Example)
$this->Cookie->write('name', 'Virat');
我们可以传递名称,值对的数组来写多个cookie。
阅读Cookie
read()方法用于读取cookie。 以下是read()方法的语法。
Cake\Controller\Component\CookieComponent::read(mixed $key = null)
read()方法将采用一个参数,即cookie变量($ key)的名称。
例子 (Example)
echo $this->Cookie->read('name');
检查Cookie
check()方法用于检查密钥/路径是否存在且具有非空值。 以下是check()方法的语法。
Cake\Controller\Component\CookieComponent::check($key)
例子 (Example)
echo $this->Cookie->check(‘name’);
删除Cookie
delete()方法用于删除cookie。 以下是delete()方法的语法。
Cake\Controller\Component\CookieComponent::delete(mixed $key)
delete()方法将使用一个参数,即要删除的cookie变量($ key)的名称。
例子1 (Example 1)
$this->Cookie->delete('name');
例子2 (Example 2)
在config/routes.php文件中进行更改,如以下程序所示。
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('cookie/write',['controller'=>'Cookies','action'=>'write_cookie']);
$routes->connect('cookie/read',['controller'=>'Cookies','action'=>'read_cookie']);
$routes->connect('cookie/check',['controller'=>'Cookies','action'=>'check_cookie']);
$routes->connect('cookie/delete',['controller'=>'Cookies','action'=>'delete_cookie']);
$routes->fallbacks('DashedRoute');
});
Plugin::routes();
在src/Controller/CookiesController.php创建一个CookiesController.php文件。 将以下代码复制到控制器文件中。
src/Controller/Cookies/CookiesController.php
<?php
namespace App\Controller;
use App\Controller\AppController;
use Cake\Controller\Component\CookieComponent;
class CookiesController extends AppController{
public $components = array('Cookie');
public function writeCookie(){
$this->Cookie->write('name', 'Virat');
}
public function readCookie(){
$cookie_val = $this->Cookie->read('name');
$this->set('cookie_val',$cookie_val);
}
public function checkCookie(){
$isPresent = $this->Cookie->check('name');
$this->set('isPresent',$isPresent);
}
public function deleteCookie(){
$this->Cookie->delete('name');
}
}
?>
在src/Template和该目录下创建一个目录Cookies ,创建一个名为write_cookie.ctp的View文件。 复制该文件中的以下代码。
src/Template/Cookie/write_cookie.ctp
The cookie has been written.
在同一Cookies目录下创建另一个名为read_cookie.ctp View文件,并将以下代码复制到该文件中。
src/Template/Cookie/read_cookie.ctp
The value of the cookie is: <?php echo $cookie_val; ?>
在同一Cookies目录下创建另一个名为check_cookie.ctp View文件,并将以下代码复制到该文件中。
src/Template/Cookie/check_cookie.ctp
<?php
if($isPresent):
?>
The cookie is present.
<?php
else:
?>
The cookie isn't present.
<?php
endif;
?>
在同一Cookies目录下创建另一个名为delete_cookie.ctp View文件,并将以下代码复制到该文件中。
src/Template/Cookie/delete_cookie.ctp
The cookie has been deleted.
输出 (Output)
通过访问以下URL执行上述示例 - http://localhost:85/CakePHP/cookie/write
这将帮助您write data in cookie.
访问以下URL o read cookie data - http://localhost:85/CakePHP/cookie/read
访问以下URL to check cookie data - http://localhost:85/CakePHP/cookie/check
访问以下URL to delete cookie data - http://localhost:85/CakePHP/cookie/delete