10日で覚えるPHPのキソ 第 9 回 クッキー(COOKIE)
連載「PHPのキソ(超基礎編)」も、残りあと2回になりました。
今回と次回で、サーバーとWebブラウザとの間で継続した通信を行うためのクッキー(COOKIE)やセッションの仕組みについてお話したいと思います。
Webページを表示するために用いられるHTTPは、要求(リクエスト)に対して応答(レスポンス)がされると通信が終了することが基本となっています。
WebサイトのURL(例えば http://c-brains.jp/ など)にアクセスすることは、「このページがみたい」というWebサーバーへの要求です。それに対して、そのページを表示することで通信は切断されます。
継続した通信を行うために必要なのが「セッション」や「クッキー」と言われる機能です。
第 10 回でお話しする予定の「セッション」とは、「クッキー」の仕組みを利用した機能です。
第 9 回は、そのクッキーについてお話したいと思います。
クッキーとは?
- クッキーとは、Webサーバーからブラウザに送信したデータを保存するための機能
ショッピングサイトなどで、そのサイトへの訪問回数や自分の名前が「○○さん、いらっしゃいませ!」などと表示されたことはないでしょうか?
一般的にその表示には、「クッキー」と呼ばれる機能が使われています。
クッキーとは、Webサーバーから(Web)ブラウザに送信したデータを保存するための機能です。
一度ローカル(自分のパソコン)に保存されたデータは、次からの要求(リクエスト)の際にブラウザが自動的に保存したクッキー情報をWebサーバーへ送信します。
PHPからブラウザにクッキーを書き出す時には、関数setcookieを使います。
一度クッキーをブラウザに保持すると、次からはブラウザからWebサーバーにクッキー情報を送信します。
ブラウザが送信したクッキーは、$_COOKIEというスーパーグローバル関数で取得することができます。
- 最初のアクセス
- ブラウザからWebサーバーへの最初の要求(リクエスト)
- Webサーバーでの処理の実行
- Webサーバーでクッキーの発行
- Webサーバーからの応答(レスポンス)
この時点で保存するデータはありません。
ブラウザはWebサーバーから受け取ったデータを保存しておきます。
- 次のアクセス
- ブラウザからのWebサーバーへ次回の要求
- Webサーバーで処理の実行
- Webサーバーでクッキーの参照
- 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」で取得できます。
ブラウザの表示は以下の通りです。
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>
クッキーを受け取りました。
ブラウザの表示は以下の通りです。
次回は、このクッキーを利用したセッションという機能についてお話します。
■ 用語集
■ 参考サイト・文献