※この記事は「2021年4月20日」に更新しました。
前回は、POST と GET について、書きました。
今回は、クッキーとセッションについてです。
Webアプリケーションを制作するには、どちらの技術も非常に重要です。
Cookie(クッキー)について
おそらく名前だけなら、聞いたことがあるという方も多いのではないでしょうか?
Cookie(クッキー)というのは、サーバーからクライアントに送信できるデータのことです。
ネットショップなどで、以下のように表示されるのは、一般的にこの技術が使われています。
〇〇さんようこそ!
Cookie(クッキー)の仕組み
クッキーは setcookie関数を使って、クッキーを発行します。
前回の記事で $_POST と $_GET という定義済み変数(連想配列)があることを紹介しました。
今回のクッキーでもあります。
$_COOKIE です。
<?php $userkey = "ぱそた"; // クッキーの設定 setcookie("value", $userkey, time() + 60); // 保管されたクッキーの値を $get に代入 $getcookie = $_COOKIE["value"]; echo "クッキーの値" . $getcookie . "が発行されました。"; ?>
setcookie関数を使うと設定した値で、連想配列 $_COOKIE に格納してくれるのです。
ちなみに time() + 60 という引数についてですが。
これは現在から 60秒間クッキーが有効ですという意味です。
Session(セッション)について
Session(セッション)は、先程のクッキーの機能を利用された技術で、サーバー側にデータを保持します。
Session(セッション)の仕組み
session_start関数で、セッションを開始します。
この関数が実行されると PHPSESSID という名前の Cookie(クッキー)が自動的に設定されます。
値は一意の ID で、これを セッションID といいます。
<?php session_start(); // unset($_SESSION['member']); if (isSet($_SESSION['member'])) { $member = $_SESSION['member']; } else { $_SESSION['member'] = date('Y-m-d H:i:s'); } ?> <html> <head><title>セッションの利用</title></head> <body> <p>セッション</p> <p>現在の時刻は <?= date('Y-m-d H:i:s'); ?></p> <p>過去の訪問は <?= isSet($member) ? $member : "セッションがありません" ?></p> </body> </html>
それでは、見ていきましょう。
まず、session_start関数でセッションを開始します。
途中にある、コメントの unset関数はとりあえず無視してください。
続いて isSet関数というのがありますが、これは値を持っているかどうかの確認です。
$_COOKIE と同じく、$_SESSION は定義済み変数(連想配列)です。
最初に値は入っていないので else へ行き、$_SESSION[‘member’] に 現在の日時を格納します。
続いて、HTML部分で現在の時刻が出力されて、以下のように表示されます。
過去の訪問はセッションがありません。
このとき ブラウザの更新(再読み込み) を押してみましょう。
再読み込み時は $_SESSION[‘member’] に値が格納されている状態です。
今度は、if文の条件が成立し、$member に $_SESSION[‘member’] の値が格納されます。
したがって、過去の訪問に初回訪問した日時が表示されます。
続いて、途中にあった、コメントの unset関数はセッション変数を削除するものです。
コメントを解除してファイルを保存し、もう一度実行していただくと以下のように表示されるはずです。
過去の訪問はセッションがありません。
余談ですが、このサイトを見ていただいて、XAMPP(ザンプ)を使っている方は初期設定のままだと、おそらく現在の時間と異なる表示がされるかと思います。
これは PHP のタイムゾーンが日本に設定されていないからです。
気になる方は php.ini ファイル の date.timezone を Asia/Tokyo に変更しましょう。
最後に
いかがでしょうか。
PHP は、$_POST や $_COOKIE などの定義済み変数(連想配列)があるので、便利です。
次は、phpMyAdmin の使い方 についてです。
PHPが広く普及した理由はデータベース(MySQLなど)のサポートが昔からされていたところです。
phpMyAdminを使えば、MySQL を簡単に使うことができます。
Webアプリケーションを語る上で必要な知識なので地道にやっていきます。