CakePHP
  • Documentation
    • Book
    • API
    • Videos
    • Reporting Security Issues
    • Privacy Policy
    • Logos & Trademarks
  • Business Solutions
  • Swag
  • Road Trip
  • Team
  • Community
    • Community
    • Get Involved
    • Issues (Github)
    • Bakery
    • Featured Resources
    • Training
    • Meetups
    • My CakePHP
    • CakeFest
    • Newsletter
    • Linkedin
    • YouTube
    • Facebook
    • Twitter
    • Mastodon
    • Help & Support
    • Forum
    • Stack Overflow
    • Slack
    • Paid Support
CakePHP

B CakePHP 2.x Cookbook

Language:
  • ja
    • en
    • pt
    • es
    • fr
    • zh
Version:
  • 2.x
    • 4.x Book
    • 3.x Book
    • 2.x Book
    • 1.3 Book
    • 1.2 Book
    • 1.1 Book

This document is for a version of CakePHP that is no longer supported. Please upgrade to a newer release!

Improve This Doc

Page Contents

  • Cookie
    • コントローラーのセットアップ
    • コンポーネントの使い方

Cookie¶

class CookieComponent(ComponentCollection $collection, array $settings = array())¶

Cookie コンポーネントは PHP に組み込まれている setcookie メソッドに関連するラッパーです。 コントローラーで Cookie を使ったコーディングをするのにとても便利な糖衣構文も多数含んでいます。 Cookie コンポーネントを使おうとする前に、コントローラーの $components の配列に 'Cookie' を必ず加えてください。

コントローラーのセットアップ¶

Cookie の発行や操作の設定をすることができる値を以下に示します。これらの値によって Cookie コンポーネントがどのように動くかは、コントローラーの beforeFilter() メソッドでも特別に設定できます。

Cookie の変数

規定値

内容

string $name

'CakeCookie'

Cookie の名前です。

string $key

null

この文字列は Cookie の値を暗号化するために使われます。 ランダムで特定されにくい文字列を使うべきです。

Rijndael 暗号化を使うときは32バイトより長い値にしなければなりません。

string $domain

''

Cookie を読むことができるドメインの名前を設定します。たとえば、 '.yourdomain.com' を使うと、あなたのサブドメイン全体 からのアクセスを許可します。

int または string $time

'5 Days'

Cookie が無効になる時間を設定します。整数ならば秒として解釈され、 0であればセッション Cookie として評価されます。すなわち、ブラウザを 終了したときに破棄されます。文字列を設定したときは、 PHP の strtotime() 関数を使って解釈されます。 write() メソッドの中で 直接設定することもできます。

string $path

'/'

Cookie が適用されるサーバーのパスを設定します。 $path に '/foo/' を設定した場合、この Cookie は、あなたのドメインの /foo/ と、 それ以下にあるすべてのサブディレクトリ( /foo/bar など) で有効に なります。既定ではドメイン全体で有効です。 write() メソッドで 直接指定することもできます。

boolean $secure

false

セキュアな HTTPS 接続を通してのみ Cookie を伝送するかを設定 します。 true に設定すると、セキュアな接続が確立しているときにのみ Cookie を発行するようになります。 write() メソッドで直接指定する こともできます。

boolean $httpOnly

false

true に設定すると HTTP のみで有効な Cookie を作成します。これらの Cookie は Javascript からアクセスすることはできません。

以下のサンプルコードは、 Cookie コンポーネントをコントローラーにインクルードする方法と、 セキュアな接続でのみ、 'example.com' というドメインの ‘/bakers/preferences/’ というパス以下で、1時間だけ有効な 'baker_id' という名前の HTTP のみで有効な Cookie の初期設定をするための例です。

public $components = array('Cookie');

public function beforeFilter() {
    parent::beforeFilter();
    $this->Cookie->name = 'baker_id';
    $this->Cookie->time = 3600;  // または '1 hour'
    $this->Cookie->path = '/bakers/preferences/';
    $this->Cookie->domain = 'example.com';
    $this->Cookie->secure = true;  // セキュアな HTTPS で接続している時のみ発行されます
    $this->Cookie->key = 'qSI232qs*&[email protected][email protected]*(XSL#$%)[email protected][email protected]#HKis~#^';
    $this->Cookie->httpOnly = true;
}

それでは、その他の Cookie コンポーネントのメソッドの使い方を見ていきましょう。

コンポーネントの使い方¶

CookieComponent は Cookie を使った動作をするためにいくつかのメソッドを提供します。

CookieComponent::write(mixed $key, mixed $value = null, boolean $encrypt = true, mixed $expires = null)¶

write() は Cookie コンポーネントの中核をなすメソッドです。 $key は必要な Cookie の値につける名前を、$value は保存しておきたい情報を設定します。

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

$key にドット記法を使うことで値をグルーピングすることもできます。

$this->Cookie->write('User.name', 'Larry');
$this->Cookie->write('User.role', 'Lead');

一度に2つ以上の Cookie を書き込みたい場合は、配列を渡すことができます。

$this->Cookie->write('User',
    array('name' => 'Larry', 'role' => 'Lead')
);

すべての Cookie の値は、既定では暗号化されます。平文で値を保存したい場合は、3つ目の引数に false を設定します。 値の暗号化をよりセキュアにするためには暗号化モードを 'aes' に設定してください。

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

最後の引数 $expires は無効になる秒数を数値で指定します。使いやすくするために、 PHP の関数 strtotime() が解釈できる文字列を渡すこともできます。

// いずれの Cookie も1時間で無効になります。
$this->Cookie->write('first_name', 'Larry', false, 3600);
$this->Cookie->write('last_name', 'Masters', false, '1 hour');
CookieComponent::read(mixed $key = null)¶

このメソッドは、 $key で指定した名前をつけた Cookie の値を得るために使われます。

// “Larry” を出力します
echo $this->Cookie->read('name');

// ドット記法も使うことができます
echo $this->Cookie->read('User.name');

// ドット記法でグループにした値を配列として得る場合、例えば、
$this->Cookie->read('User');

// であれば、array('name' => 'Larry', 'role' => 'Lead') のような出力結果となります
CookieComponent::check($key)¶
パラメータ
  • $key (string) -- 確認のためのキー。

key/path が存在し、値が null でない事を確認するために使われます。

バージョン 2.3 で追加: CookieComponent::check() は 2.3 で追加されました。

CookieComponent::delete(mixed $key)¶

$key で指定した名前の Cookie の値を削除します。ドット記法を使うことができます。

// ひとつの値を削除
$this->Cookie->delete('bar');

// bar という値を削除しますが、foo 以下のすべてを削除するわけではありません
$this->Cookie->delete('foo.bar');
CookieComponent::destroy()¶

現在の Cookie を破棄します。

CookieComponent::type($type)¶

暗号化の方法を変更することができます。デフォルトでは、後方互換性のために 'cipher' 方式が使われます。しかし、より安全にするためには 'rijndael' 方式や 'aes' 方式を使うべきです。

バージョン 2.2 で変更: 'rijndael' タイプが追加されました。

バージョン 2.5 で追加: 'aes' タイプが追加されました。

  • ← リクエストハンドリング
  • アクセス制御リスト →
  • Welcome
  • インストール
  • 入門
  • CakePHPの概要
  • コントローラ
  • ビュー
  • モデル
  • コアライブラリ
    • 汎用
    • ビヘイビア
    • コンポーネント
      • ページ制御
      • フラッシュ
      • セッション
      • 認証
      • セキュリティ
      • リクエストハンドリング
      • Cookie
      • アクセス制御リスト
    • ヘルパー
    • ユーティリティ
  • プラグイン
  • シェルとタスクとコンソール
  • 本格的な開発
  • デプロイ
  • チュートリアルと例
  • 貢献
  • 付録
openHub
pingping.io
Linode
  • Business Solutions
  • Showcase
  • Documentation
  • Book
  • API
  • Videos
  • Reporting Security Issues
  • Privacy Policy
  • Logos & Trademarks
  • Community
  • Get Involved
  • Issues (Github)
  • Bakery
  • Featured Resources
  • Training
  • Meetups
  • My CakePHP
  • CakeFest
  • Newsletter
  • Linkedin
  • YouTube
  • Facebook
  • Twitter
  • Mastodon
  • Help & Support
  • Forum
  • Stack Overflow
  • Slack
  • Paid Support

Copyright ©2023 Cake Software Foundation, Inc. 最終更新: 3月 18, 2023 Created using Sphinx 4.5.0.