CakePHP的Cookie管理

2018-01-19 15:28 更新

CakePHP處理cookie是很容易和安全的。有一個用于管理cookie的CookieComponent類。這個類提供了與cookie相關(guān)的幾種方法。

寫Cookie

write()方法被用來寫入cookie。以下是write()方法的語法。

CakeControllerComponentCookieComponent::write(mixed $key, mixed $value = null)

write()方法有兩個參數(shù),cookie變量名($key)cookie變量值($value) 。

$this->Cookie->write('name', 'Virat');

我們可以通過傳遞含鍵值對的數(shù)組,來寫入多個cookie。

讀取Cookie

read()方法用來讀取cookie。以下是read()方法的語法。

CakeControllerComponentCookieComponent::read(mixed $key = null)

read()方法有一個參數(shù),cookie變量名($key)。

echo $this->Cookie->read('name');

檢查Cookie

check()方法被用來檢查一個鍵/路徑是否存在,并且具有非空值。以下是check()方法的語法。

CakeControllerComponentCookieComponent::check($key)

echo $this->Cookie->check(‘name’);

刪除Cookie

delete()方法用于刪除cookie。以下是delete()方法的語法。

CakeControllerComponentCookieComponent::delete(mixed $key)

delete()方法需要一個參數(shù),cookie變量名($key)。

例1

$this->Cookie->delete('name');

例2

修改config/routes.php文件如下。

config/routes.php文件

<?php
   use CakeCorePlugin;
   use CakeRoutingRouteBuilder;
   use CakeRoutingRouter;

   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/目錄下創(chuàng)建一個CookiesController.php文件。復(fù)制以下代碼至其中。

src/Controller/Cookies/CookiesController.php(此目錄和上一行原文有出入,注意!

<?php
   namespace AppController;
   use AppControllerAppController;
   use CakeControllerComponentCookieComponent;

   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目錄下創(chuàng)建一個Cookie目錄,在該Cookie目錄下創(chuàng)建一個名為write_cookie.ctp視圖文件。復(fù)制以下代碼至其中。

src/Template/Cookie/write_cookie.ctp

The cookie has been written.

在相同的Cookie目錄下創(chuàng)建另一個名read_cookie.ctp視圖文件,復(fù)制以下代碼至其中。

src/Template/Cookie/read_cookie.ctp

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

在相同的Cookie目錄下創(chuàng)建另一個名check_cookie.ctp視圖文件,復(fù)制以下代碼至其中。

src/Template/Cookie/check_cookie.ctp

<?php
   if($isPresent):
?>
The cookie is present.

<?php
   else:
?>
The cookie isn't present.

<?php
   endif;
?>

在相同的Cookie目錄下創(chuàng)建另一個名delete_cookie.ctp視圖文件,復(fù)制以下代碼至其中。

src/Template/Cookie/delete_cookie.ctp

The cookie has been deleted.

輸出

通過訪問以下網(wǎng)址執(zhí)行上面的例子- http://localhost:85/CakePHP/Cookie/write

寫入cookie數(shù)據(jù)。


請訪問以下網(wǎng)址讀取cookie數(shù)據(jù) - http://localhost:85/CakePHP/Cookie/read


請訪問以下網(wǎng)址檢查cookie數(shù)據(jù) - http://localhost:85/CakePHP/Cookie/check


請訪問以下網(wǎng)址刪除Cookie數(shù)據(jù) - http://localhost:85/CakePHP/Cookie/delete



以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號