- 更新日: 2017年03月23日
- 公開日: 2015年12月08日
ゼロから始めるPHP講座 Vol.45 Cookieとは
ゼロから始めるPHP講座Cookieとは
Cookieとは
Webサイトへアクセスしたユーザに情報を送信し、ユーザのPCにデータを保存する仕組みです。
Cookieを使用するとWebサイトをより効率的に利用してもらうことが可能で、例えば次のような機能はCookieにより実現しています。
- ログインページで過去入力したユーザ名を自動で入力
- ECサイトでショッピングカートに入れた商品を表示
Cookieはブラウザにより実装されている機能で、サーバから送信されてきたデータを保存します。ただし、Cookieの利用は設定により拒否することも可能で、この場合データの保存はされません。
ユーザのPCに保存されたCookieは、次にユーザが同じWebサイトにアクセスした際に使用されます。ECサイトの例だと、カートに入れた商品のIDをCookieに保存しておき、次回アクセスした際にCookieから取得します。
Cookieの仕組みを図で示すと次のようになります。
2回目以降にWebサイトへ訪問した際はCookieに保存されている情報をサーバへ送信します。
お手本にある通り、Cookieを利用したプログラムを書いてみましょう。
<?php
if (isset($_COOKIE['visited']) === TRUE) {
$count = $_COOKIE['visited'] + 1;
} else {
$count = 1;
}
setcookie('visited', $count, time() + 60 * 60 * 24 * 365);
print $count . '回目の訪問です';
動作サンプル:cookie.php
初回訪問
Cookieの仕組みはブラウザが実装しているため、データの保存はブラウザごとに行っています。
別なブラウザからアクセスすると、訪問数は1からスタートになります。実際に複数のブラウザからアクセスを試してみましょう。
なおCookieはブラウザの設定で保存を拒否することも可能です。
手順はブラウザごとに異なりますので、興味があれば設定方法の確認や、実際にPCへ保存されているCookieの確認や削除を行ってみましょう。
またGoogleChromeの場合はデベロッパーツールを利用することで、簡単にCookieの確認や削除を行えますので、是非試してみましょう、
Cookie送信
名前と値を設定することでデータを保存できますが、値はユーザのPCに保存されるため、重要な情報を設定してはなりません。
またCookieには有効期限(UNIXタイムスタンプ)を設定する必要があります。
UNIXタイムスタンプとはコンピューターシステム上での時刻表現の一種で、1970/01/0100:00:00の時刻からの経過秒数で表されます。有効期限を過ぎるとCookieは削除されます。
if (isset($_COOKIE['visited']) === TRUE) {
$count = $_COOKIE['visited'] + 1;
} else {
$count = 1;
}
setcookie('visited', $count, time() + 60 * 60 * 24 * 365);
ユーザのPCに保存されているCookie情報は、スーパーグローバル変数$_COOKIEに格納されています。
キー setcookie関数で指定したCookieの名前(サンプルではvisited)
値 setcookie関数で指定したCookieの値(サンプルでは訪問回数$count)
他のスーパーグローバル変数と同様、連想配列の形で自動的に定義されます。
有効期限は1年と設定しています。time関数により現在のUNIXタイプスタンプを取得することができ、これに1年の秒数を加算しています。
NEXTLESSONCookieの使用例
PREVLESSONMVCモデル③~MVCの使用例
- この記事を書いた人
- CodeCampus編集部