ゼロから始めるPHP講座 Vol.45 Cookieとは


ゼロから始めるPHP講座 Vol.45 Cookieとは
目次
  1. ゼロから始めるPHP講座Cookieとは
  2. Cookieとは
  3. Cookie送信

ゼロから始めるPHP講座Cookieとは

Cookieとは

Webサイトへアクセスしたユーザに情報を送信し、ユーザのPCにデータを保存する仕組みです。

Cookieを使用するとWebサイトをより効率的に利用してもらうことが可能で、例えば次のような機能はCookieにより実現しています。

  • ログインページで過去入力したユーザ名を自動で入力
  • ECサイトでショッピングカートに入れた商品を表示

Cookieはブラウザにより実装されている機能で、サーバから送信されてきたデータを保存します。ただし、Cookieの利用は設定により拒否することも可能で、この場合データの保存はされません。

ユーザのPCに保存されたCookieは、次にユーザが同じWebサイトにアクセスした際に使用されます。ECサイトの例だと、カートに入れた商品のIDをCookieに保存しておき、次回アクセスした際にCookieから取得します。

Cookieの仕組みを図で示すと次のようになります。php-cookies1-639

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

初回訪問php-cookies2-639

php-cookies3-639

Cookieの仕組みはブラウザが実装しているため、データの保存はブラウザごとに行っています。

別なブラウザからアクセスすると、訪問数は1からスタートになります。実際に複数のブラウザからアクセスを試してみましょう。

なおCookieはブラウザの設定で保存を拒否することも可能です。

手順はブラウザごとに異なりますので、興味があれば設定方法の確認や、実際にPCへ保存されているCookieの確認や削除を行ってみましょう。

またGoogleChromeの場合はデベロッパーツールを利用することで、簡単にCookieの確認や削除を行えますので、是非試してみましょう、

Cookie送信

php-cookies4-639

名前と値を設定することでデータを保存できますが、値はユーザの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編集部
この記事を書いた人
CodeCampus編集部
まずは7日間お試し!人気プログラミング講座を無料公開中
オンライン・プログラミングレッスンNo.1のCodeCamp