エス技研

WordPress、CakePHP、PHP、baserCMSなどの Web系システムを中心に情報を提供します!


CakePHP3でCookieを保存、呼び出し、削除の操作・CakePHP3.7対応

   

CakePHP3でCookieを保存、呼び出し、削除の操作

 

CakePHP3では Cookieの仕様が度々変更されている

 
システム開発において、Cookieは便利で役に立つ機能です。
 
ですが、CakePHP3ではその Cookieの使用方法がたびたび変更されています。
さらには、その使用方法が Cookbookなどのドキュメントへの反映されるのが遅れているようで、どうやって使えばいいのか混乱が広がっているようです。
 
というわけで、CakePHP3.7で Cookieを使う方法を解説します。
 
 

Cookieを使うために use句を指定

 
まず、Cookieを使うためには下記の use句を追加します。
 

 
use Cake\I18n\Time」の方は、Cookieの有効期限を「+1 year」のように指定するためのものです。
具体的な日時を指定する場合は必要ありません。
 
 

Cookieに値を保存する方法

 
Cookieに値を保存する場合は、下記のように記述します。
「key」が Cookieの変数名を指定するところで、「value」が Cookieに保存する値を指定するところです。
 

 
これだけでは、ブラウザを閉じると Cookieが消えてしまいますので、Cookieの有効時間等を指定する場合は下記のように指定します。
 

 
上記を分かりやすくビルダーメソッドを使用して記述する場合は以下のようになります。
 

 
 

1項目目、キーの設定

 
Cookieを保存するキー(変数名)を指定します。
必須項目です。
 
 

2項目目、withValue()

 
Cookieに保存する値を指定します。
値、項目がない場合は、該当のキーの Cookieを削除します。(保存してある Cookieを削除します。)
 
 

3項目目、withExpiry()

 
Cookieを保持する有効期限を指定します。
指定しない場合は、ブラウザを閉じるまでが有効期限になります。
 
上記のサンプルは「+1 year」を指定していますので、1年間有効になります。
同様の記述の場合は、アクセスの度に Cookieの有効期限がアクセス日時の 1年後に更新されます。
 
また、「2019-01-01 12:00:00」のように具体的な日時を指定することもできます。
「2019-01-01」のように時間を指定しない場合は「00:00:00」がデフォルトでセットされます。
過去日を指定した場合は、該当のキーの Cookieを削除します。(保存してある Cookieを削除します。)
 
 

4項目目、withPath()

 
Cookieを有効とするパスを指定します。
特定のフォルダの中でのみ Cookieが有効となるようにしたい場合は、そのフォルダを指定します。
指定しない場合のデフォルト値は「/」で、サイト全体が有効になっています。
 
 

5項目目、withDomain()

 
Cookieを有効とするドメインを指定します。
指定がある場合は、記述があるドメインでのみ Cookieが有効になります。
指定がない場合のデフォルト値は「””」で、ドメインに関係なく Cookieは有効になります。
 
ちなみに、XAMPPなどのローカル環境では「localhost」を指定します。
(「http://localhost:8080」などのポート番号付きでアクセスしている場合も「localhost」を指定します。)
 
 

6項目目、withSecure()

 
HTTPS接続のときのみ Cookieを扱うようにするか、しないか、を指定します。
デフォルトは「false」で、HTTPでも Cookieを利用できますが、「true」にするとセキュアな HTTPSでアクセスした場合のみ Cookieの生成、アクセスが可能になります。
 
 

7項目目、withHttpOnly()

 
HTTPによるアクセスのときのみアクセスができるようにするか、しないか、を指定します。
デフォルトは「false」です。「true」にすると JavaScriptから Cookieにはアクセスできなくなります。
 
 

Cookieに保存した値を取り出す方法

 
Cookieに保存した値を取り出す場合は、下記のように「getCookie()」を使います。
 

 
Cookieを保存する場合は「response」ですが、値を取り出す場合は「response」ではなく「request」です。
 
 

「$_SERVER」を利用して確認する方法

 
デバッグ時など、Cookieに保存されている情報を確認したい場合は、下記の通り「$_SERVER」を利用する方法もあります。
 

 
 

「$_COOKIE」を利用して確認する方法

 
デバッグ時など、Cookieに保存されている情報を確認したい場合は、下記の通り「$_COOKIE」を利用する方法もあります。
 

 
 

「response」で保存した設定情報を含めて確認する方法

 
下記のように、Cookieを保存したあとであれば「response」でも保存した情報を確認することはできます。
 

 
 

Cookieを削除する方法

 
Cookieを削除する(保存してある Cookieを破棄する)場合は、下記の通り「withExpiredCookie()」を使用します。
 

 
また、すでに解説したように、Cookieを削除する方法として、Cookieを設定の記述で「withValue()」の項目を記述しない、「withExpiry()」の日時を過去日にする、といった方法もあります。
 
 

Cookieの仕様を改めて思い出す

 
Cookieの仕様として当たり前といえば当たり前なのですが、
・1回目の処理で Cookieを保存する
・2回目の処理で Cookieを取り出す
という処理になります。
 
なので、1回目のアクセスで Cookieに値を保存します。
そして、2回目のアクセスで Cookieに保存した値を取り出します。
そのため、Cookieに保存した値を取り出すにはプログラムを 2回実行する必要があります。(1回のアクセスでは、Cookieに保存して、その値を取り出すことは出来ません。)
 
最初、これを忘れていて「あれ??」とちょっと混乱してしまったこともありましたので、改めて Cookieの仕様を思い出しておくといいかもしれません。
 
 

CakePHP3の Cookieに関する参考記事

 
CakePHP3 Cookbook クッキー
https://book.cakephp.org/3.0/ja/controllers/components/cookie.html

CakePHP3 Cookbook リクエストとレスポンスオブジェクト・クッキー
https://book.cakephp.org/3.0/ja/controllers/request-response.html#request-cookies
https://book.cakephp.org/3.0/ja/controllers/request-response.html#id25
 
 

CakePHP3の関連記事

CakePHP3でレコードを保存(追加、更新、Insert、Update)する複数の方法を紹介
CakePHP3でモデルなしフォームからCSVをアップロードしレコードを更新する方法解説
CakePHP3でPHP Simple HTML DOM Parserを使ってスクレイピングする方法
CakePHP3のInsert On Duplicate Key Update(upsert)構文を解説・バルク処理も
CakePHP3の1対多での連携を中間テーブルを使った多対多の連携に変更するときの手順
CakePHP3でデフォルトのソート条件を設定してユーザの選択肢たソート条件を有効にする方法
CakePHP3で Ajaxを使う方法の解説。3.6以降対応。Successとthenの両方を解説。
CakePHP3でパンくずの指定は HTMLヘルパーを使って指定する方法を解説
CakePHP3にOGPをfetch、asignを利用してテンプレートごとに指定する方法を解説
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
 
その他の「CakePHP3」に関する記事一覧
 
 

 - CakePHP 2.x 3.x

GoogleAdwords

GoogleAdwords

最後までお読みいただきましてありがとうございます。
この記事が参考になったと思いましたらソーシャルメディアで共有していただけると嬉しいです!

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

下記の空欄を埋めてください。 * Time limit is exhausted. Please reload CAPTCHA.

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

※入力いただいたコメントは管理者の承認後に掲載されます。

  関連記事

CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定
CakePHP3のOGPはHTMLヘルパーの$this->Html->meta()を使って設定

CakePHP3でOGPを設定する方法を解説。metaタグを編集するHTMLヘルパーを利用してOGPのタグを編集する。また、エレメントとして分割することでメンテナンス性も向上させる。

CakePHP 2.3 Model、Controllerの見たい変数の中身をログ出力

CakePHPの Modelや Controllerの変数の中身をログとして出力して見る方法を提供します。

CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ
CakePHP3のCakeDC/UsersのUserHelperでログアウトやreCAPTCHAをカスタマイズ

CakeDC謹製Usersプラグインの紹介。UserHelperを利用し、ログアウトのリンクや権限があるときのみ表示されるリンク、プロフィールページへのリンク、reCAPTCHAの設置方法などを解説。

CakePHP3のCakeDC/Usersのバリデーションのカスタマイズ方法解説
CakePHP3のCakeDC/Usersのバリデーションのカスタマイズ方法解説

CakeDC謹製Usersプラグインの紹介。Usersのカスタマイズとして入力項目のバリデーションの変更を、プラグインのファイルは触らずオーバーライドにより実装する方法を解説する。

CakePHP3で静的ページの作成は webrootか pagesを使う。トップページを参考に解説
CakePHP3で静的ページの作成は webrootか pagesを使う。トップページを参考に解説

CakePHP3で静的なページを設置する場合の方法(webrootとpagesとを活用する方法)を解説。pagesの解説はデフォルトのトップページがどう表示されているかを参考に解説。ルーティングの機能も。

CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る
CakePHP3で他のテーブルのマスタテーブルからセレクトボックス(プルダウンリスト)を作る

他のテーブルのマスタのレコードからプルダウンリストを作成し、選択できるようにするサンプルプログラムと解説。ORMの設定によりデータベースの値を取得し、配列を作成し optionsに与える。

CakePHP 2.3 連携先のテーブルの項目で条件抽出する場合

アソシエーション(連携)している先のテーブルの項目で条件抽出する際の考え方と注意点をサンプルソースを用いて説明しています。

CakePHP 2.3で PDFを作成する方法を調査「mpdf」「TCPDF」「FPDF」

CakePHPで PDFを編集、出力するには「mpdf」「TCPDF」「FPDF」といったプラグインがあり、使い勝手を比較検討しました。TCPDFが一番良さそうでした。

CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法
CakePHP3チュートリアルで日付と時刻のDateTimeでエラーが出たときの対処方法

CakePHP3のブックマークチュートリアルには記載ミスもあり、そのまま動かない個所もある。CakePHP3では namespaceを使うようになったので、classを呼び出すときに¥を追加する必要が!

CakePHP3でテーブルにカラムを追加したときに変更するポイントのまとめ
CakePHP3でテーブルにカラム(項目)を追加したときに変更するポイントのまとめ

CakePHP3でシステム開発をする際、途中でカラムを追加した場合に何を変更すればいいかを確認。カラムを追加する前後で Bakeした結果を比較し、変更になった点をリストアップした。