フォーム入力をブラウザに記憶させるクッキーの使い方

この記事は約5分で読めます。
スポンサーリンク
スポンサーリンク

こんにちは。

ウェブの仕組みを理解する上では、クッキーとセッションの仕組みの理解が必須になります。この内クッキーについて理解を深めるために、この記事では、クッキーが実際どのように振る舞うかを、PHPのコードで紹介します。

 

クッキーとセッションについて、仕組みと違いについては、下の記事で紹介していますので合わせてご確認ください。

また、簡単に復習しますと、クッキーは下図のようにクライアント側に保存されるデータとなってます。

また、ウェブサーバーのテスト環境にXAMPPを使っています。

XAMPPのインストール方法については下の記事に紹介しています。サンプルを動かして見たくなったら導入してみてください。

スポンサーリンク
スポンサーリンク

フォーム入力をブラウザに記憶させるクッキーの使い方

PHPでクッキー情報のセットの仕方

まず、クッキーをセットするphpファイルを用意しましょう。名前はset_cookie.phpとしておきます。

setcookie関数一つで、セットすることができます。ここでは、cookie_test という名前で”cookie data at 現日時” という値のクッキーをセットしています。クッキーの有効期限は短めに60秒としています。

setcookie について詳しくはマニュアルを参照すると良いです。

 

set_cookie.phpにアクセスすると、下図の赤枠のように、サーバーからのレスポンス情報のヘッダの中に、Set-Cookieヘッダが追加され、キーと値、有効期限が送られていることがわかります。

 

そして、期限が来るまでの間、同じサイトへアクセスするときには、クライアントからのリクエスト通信のヘッダには、Cookie ヘッダが追加されます。

サーバがそのクッキー情報を参照するかどうかには関係なく、毎回送られるんです。例えば、下図は、続けてset_cookie.phpにアクセスしたときのリクエストヘッダなのですが、赤枠の用に、Cookieが送られています。当然、set_cookie.phpでは参照していません。

クッキー情報の参照の仕方

では、クッキーを参照するテストページを作りましょう。名前はread_cookie.phpとします。

 

サーバー側では、クッキーは$_COOKIE 配列データを参照することで確認できます。上リストのコードでは、isset関数を使って、クッキーがセットされているときだけ、内容を表示するようにしています。

表示結果

クッキーセットされてないとき

クッキーがセットされていないとき、また、有効期限が切れてしまったときは、配列に値が入っていないため、下図のように「クッキーはセットされていません」と表示されます。

このとき、クライアントからのリクエストヘッダにもCookie ヘッダが含まれていません。

クッキーがセットされているとき

このときは、$_COOKIEに値がセットされているため、以下のようにクッキーのキーと値が表示されます。

また、リクエストヘッダにもCookieヘッダが送られてきています。

また、このとき、Chromeのデベロッパーツールでは、Applicationタブの「Storage→Cookies」項目から内容を確認することもできます。

クッキーの問題点。ブラウザ側でデータの変更が出来ることに注意

デベロッパーツールで、クッキーの内容を参照すると、ついでにValue(値)とかExpires(有効期限)とかも変更できたりできちゃいます。

下図は、値と有効期限を変更しています。改ざんですね^^

このため、データの保存が必要なサイトを作っているとき、クッキーに保存して良い情報なのかどうかを吟味する必要があるので注意してください。

例えば、例えばショッピングサイトで、カートに入れた商品の数をクッキーにセットした場合、改ざんされても問題ないですよね。まだ買う前の状態ですから。

あるいは、emailアドレスなどフォームへの自動入力データなどもクッキーに保存していた場合、改ざんされても問題ない例です。

でも、お金を払ったかどうかを記録する支払済ステータスなどはクッキーに保存してしまって、払ってもないのに払った状態にされていたらやばいですよね。そういう情報は、クッキーに保存してはいけません。改ざんされたらまずいデータはクッキーの代わりにセッション情報に保存する必要があります。(正確には、支払済データはセッションではなくデータベースに保存する必要があります^^ セッション情報とはセッションが続いている間だけ有効なデータなので)。

また、クッキー情報は、毎回リクエストヘッダに載っかってくるので、通信量が増えてしまうこと、また、データを盗聴されて解析された場合、データ流出の恐れもあることを覚えておいてください。

そういう意味でも、セッション情報との使い分けが必要になります。

まとめ

この記事では、PHPを使って、クッキーを読み書きするやり方を紹介しました。

また、実例を通して、クッキー情報のデメリットである、ブラウザ側で改ざん可能なこと、通信データに毎回乗ってくるので盗聴されるリスクが有ること、通信量が多くなることも紹介しました。

セッションについても別の記事で紹介します。クッキーとセッションで情報を使い分けられるようにしっかり違いを理解しましょう。

 

また、記事の更新をメルマガでお知らせいたします。またそれ以外にも、プログラミングしてて感じている裏話などもしています。よかったら下のフォームからご登録ください。

メルマガ登録フォーム

氏名*
メールアドレス*
確認用メール アドレス*

 

 

この記事が気に入ったら
いいね ! しよう

コメント