Cakephp-cookie-management

提供:Dev Guides
移動先:案内検索

CakePHP-クッキー管理

CakePHPでのCookieの処理は簡単で安全です。 Cookieの管理に使用されるCookieComponentクラスがあります。 このクラスは、Cookieを操作するためのいくつかのメソッドを提供します。

クッキーを書く

  • write()*メソッドは、Cookieの書き込みに使用されます。 以下は、write()メソッドの構文です。
Cake\Controller\Component\CookieComponent::write(mixed $key, mixed $value = null)

write()メソッドは、* Cookie変数の名前($ key) Cookie変数の値($ value)*の2つの引数を取ります。

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

名前と値のペアの配列を渡して、複数のCookieを書き込むことができます。

クッキーを読む

  • read()*メソッドは、Cookieの読み取りに使用されます。 read()メソッドの構文は次のとおりです。
Cake\Controller\Component\CookieComponent::read(mixed $key = null)

read()メソッドは、1つの引数、Cookie変数の名前($ key)を取ります。

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

クッキーを確認

  • check()メソッドは、キー/パスが存在し、null以外の値を持っているかどうかを確認するために使用されます。 以下は check()*メソッドの構文です。
Cake\Controller\Component\CookieComponent::check($key)

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

クッキーを削除

Cookieを削除するには、* delete()*メソッドを使用します。 delete()メソッドの構文は次のとおりです。

Cake\Controller\Component\CookieComponent::delete(mixed $key)

delete()メソッドは、削除するCookie変数($ key)の名前という1つの引数を取ります。

例1

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

例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.

出力

次のURLにアクセスして、上記の例を実行します- http://localhost:85/CakePHP/cookie/write

これにより、* Cookieにデータを書き込むことができます。*

Cookies

次のURLにアクセスして、Cookieデータを読み取ります- http://localhost:85/CakePHP/cookie/read

CakePHP Cookies

次のURLにアクセスして* Cookieデータを確認します*- http://localhost:85/CakePHP/cookie/check

CakePHP Cookies

次のURLにアクセスして* Cookieデータを削除します*- http://localhost:85/CakePHP/cookie/delete

Cookies Deleted