【PHP講座】クッキーとセッション

クッキーとセッション

※この記事は「2021年4月20日」に更新しました。

前回は、POST と GET について、書きました。

POSTとGET

【PHP講座】POSTとGET

2018年9月3日

今回は、クッキーとセッションについてです。

Webアプリケーションを制作するには、どちらの技術も非常に重要です。

ぱそた
SE、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 の使い方 についてです。

phpMyAdminの使い方

【PHP講座】phpMyAdminの使い方

2018年10月2日

PHPが広く普及した理由はデータベース(MySQLなど)のサポートが昔からされていたところです。

phpMyAdminを使えば、MySQL を簡単に使うことができます。

Webアプリケーションを語る上で必要な知識なので地道にやっていきます。