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

タイピング

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

【PHP講座】POSTとGET

2018.09.03

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

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

それでは見ていきましょう。



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_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講座】phpMyAdminの使い方

2018.10.02

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

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

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