10日で覚えるPHPのキソ 第 9 回 クッキー(COOKIE)

No Photo

連載「PHPのキソ(超基礎編)」も、残りあと2回になりました。
今回と次回で、サーバーとWebブラウザとの間で継続した通信を行うためのクッキー(COOKIE)やセッションの仕組みについてお話したいと思います。
Webページを表示するために用いられるHTTPは、要求(リクエスト)に対して応答(レスポンス)がされると通信が終了することが基本となっています。
WebサイトのURL(例えば http://c-brains.jp/ など)にアクセスすることは、「このページがみたい」というWebサーバーへの要求です。それに対して、そのページを表示することで通信は切断されます。
継続した通信を行うために必要なのが「セッション」や「クッキー」と言われる機能です。
第 10 回でお話しする予定の「セッション」とは、「クッキー」の仕組みを利用した機能です。
第 9 回は、そのクッキーについてお話したいと思います。

クッキーとは?

  • クッキーとは、Webサーバーからブラウザに送信したデータを保存するための機能

ショッピングサイトなどで、そのサイトへの訪問回数や自分の名前が「○○さん、いらっしゃいませ!」などと表示されたことはないでしょうか?
一般的にその表示には、「クッキー」と呼ばれる機能が使われています。
クッキーとは、Webサーバーから(Web)ブラウザに送信したデータを保存するための機能です。
一度ローカル(自分のパソコン)に保存されたデータは、次からの要求(リクエスト)の際にブラウザが自動的に保存したクッキー情報をWebサーバーへ送信します。
PHPからブラウザにクッキーを書き出す時には、関数setcookieを使います。
一度クッキーをブラウザに保持すると、次からはブラウザからWebサーバーにクッキー情報を送信します。
ブラウザが送信したクッキーは、$_COOKIEというスーパーグローバル関数で取得することができます。

  • 最初のアクセス

080520_ichikawa_01.gif

  1. ブラウザからWebサーバーへの最初の要求(リクエスト)
  2. この時点で保存するデータはありません。

  3. Webサーバーでの処理の実行
  4. Webサーバーでクッキーの発行
  5. Webサーバーからの応答(レスポンス)
  6. ブラウザはWebサーバーから受け取ったデータを保存しておきます。

  • 次のアクセス

080520_ichikawa_02.gif

  1. ブラウザからのWebサーバーへ次回の要求
  2. 受け取ったクッキーをサーバーに送信します。

  3. Webサーバーで処理の実行
  4. Webサーバーでクッキーの参照
  5. サーバー側では、以前アクセスしてきたブラウザかどうかを特定します。

  6. Webサーバーからの応答

クッキーの発行

PHPでクッキーを発行するには、関数setcookieを使います。
この関数は、正常に発行されたらtrueを、失敗したらfalseを返します。

クッキーの受け取り

ブラウザからサーバーに送られた情報は、スーパーグローバル変数$_COOKIEで受け取ります。

それでは実際にクッキーを発行して、受け取ってみましょう。
次の2ファイルを作成します。

  • page1.php
<?php
    // クッキーを発行
    setcookie('value', 100);
?>
<html>
    <body>
<?php
    $getcookie = $_COOKIE['value'];
    print "このページ1のクッキーの値は「".$getcookie."」です<br />";
?>
        <a href = "page2.php">ページ2へ</a>
    </body>
</html>

PHPからブラウザにクッキーを書き出すには、setcookie関数を使います。
一度クッキーをブラウザに保持すると、次からはブラウザからWebサーバーにクッキー情報を送信します。
Webブラウザで送信したクッキー情報は「$_COOKIE」で取得できます。

ブラウザの表示は以下の通りです。

Ci080520152555.jpg

page1.phpにアクセスした時に、setcookie関数によりクッキーがブラウザに書き出されます。
しかし、$_COOKIE['value']に値は入っていないので、「このページ1のクッキーの値は「」です」となります。
この時点では、ブラウザからWebサーバーにクッキー情報を送信する前です。
$_COOKIE['value']にはブラウザからWebサーバーに送られた情報が入るので、この時点では値が入っていません。

「ページ2へ」というリンクをクリックして、page2.phpに遷移してみましょう。
page2.phpにアクセスする事により、Webサーバーにクッキー情報が送信され、$_COOKIE['value']に値が入ります。

  • page2.php
<html>
    <body>
<?php
    $getcookie = $_COOKIE['value'];
    print "このページ2のクッキーの値は「".$getcookie."」です<br />";
?>
        <a href = "page1.php">ページ1へ戻る</a>
    </body>
</html>

クッキーを受け取りました。
ブラウザの表示は以下の通りです。

Ci080520152606.jpg

次回は、このクッキーを利用したセッションという機能についてお話します。

■ 用語集

■ 参考サイト・文献

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ