クッキーの発行と受け取り

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

処理の流れは、

一度ローカル(自分のパソコン)に保存されたデータ → 
次の要求(リクエスト) → 
ブラウザが自動的に保存したクッキー情報をWebサーバーへ送信

PHPからブラウザにクッキーを書き出す時には、関数setcookieを使う。

一度クッキーをブラウザに保持 →
ブラウザからWebサーバーにクッキー情報を送信

ブラウザが送信したクッキーは、$_COOKIEというスーパーグローバル関数で取得することができる。

1. ブラウザからWebサーバーへの最初の要求(リクエスト)
    この時点で保存するデータはありません。
2. Webサーバーでの処理の実行
3. Webサーバーでクッキーの発行
4. Webサーバーからの応答(レスポンス)

ブラウザはWebサーバーから受け取ったデータを保存。

1. ブラウザからのWebサーバーへ次回の要求
    受け取ったクッキーをサーバーに送信。
2. Webサーバーで処理の実行
3. Webサーバーでクッキーの参照
    サーバー側では、以前アクセスしてきたブラウザかどうかを特定。
4. 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」で取得できる。

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

このページ1のクッキーの値は「」です
ページ2へ

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>

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

このページ2のクッキーの値は「100」です
ページ1へ戻る