Cakephp-cookie-management
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にデータを書き込むことができます。*
次のURLにアクセスして、Cookieデータを読み取ります- http://localhost:85/CakePHP/cookie/read
次のURLにアクセスして* Cookieデータを確認します*- http://localhost:85/CakePHP/cookie/check
次のURLにアクセスして* Cookieデータを削除します*- http://localhost:85/CakePHP/cookie/delete