【独学PHP】クッキーとセッション

※この記事は「2020年10月7日」に更新しました。

独学できる PHP講座。

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

前回は、POST と GET について、紹介しました。

【独学PHP】POSTとGET

【独学PHP】POSTとGET

2020年10月1日

クッキーとセッションに関しても、Webアプリケーションを制作するために必要な技術です。

それでは解説していきます。

クッキー(Cookie)について

クッキー(Cookie)というのは、サーバーからクライアントに送信できるデータのことです。

セキュリティ上の理由から、一般的にサーバーはクライアントのファイルを勝手に読み書きすることができません。

しかし、クッキーに関しては例外でクライアントに対してテキストを読み書きすることができます。

ネットショップなどで、〇〇さんようこそ といった技術は、このクッキーが使われています。



クッキーの仕組み

PHP でクッキーを発行するには、setcookie関数を使います。

まずは、クッキーを発行する cookie1.php というファイルを作成します。

<?php
setcookie('userkey', 'takafumi', time() + 60);
?>
<html>
<head>
<meta charset="utf-8">
<title>クッキーの発行</title>
</head>
<body>
<a href = "cookie2.php">クッキーの受取確認ページ</a>
</body>
</html>

setcookie関数の第3引数は、現在から 60秒間クッキーが有効という意味です。

次に、クッキーを受け取る cookie2.php というファイルを作成します。

<html>
<head>
<meta charset="utf-8">
<title>クッキーの受取</title>
</head>
<body>
<?php
$getcookie = $_COOKIE["userkey"];
print "クッキー " . $getcookie . " が発行されています。";
?>
</body>
</html>

実行結果は以下の通りです。

クッキーの仕組み

テキストのリンクをクリックすると、cookie2.php へ遷移して、クッキーが発行されていることが確認できます。

クッキーの仕組み

セッションについて

セッションは、サーバーでデータを保持します。

クッキーはクライアント側でデータが保存されるので、場合によっては問題になる場合もあります。

例えば、ブラウザを開いている間だけ情報を保持したいという場合は、セッションを利用します。

セッションの仕組み

session_start関数を使って、セッションを開始します。

<?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>
<meta charset="utf-8">
<title>セッションの利用</title></head>
<body>
<p>現在の時刻: <?= date('Y-m-d H:i:s'); ?></p>
<p>過去の訪問: <?= isSet($member) ? $member : "セッションがありません" ?></p>
</body>
</html>

session_start関数を使うと、PHPSESSID という名前のクッキーが自動的に設定されます。

これがセッションID でクライアントを識別するためのコードです。

実行結果は以下の通りです。

セッションの仕組み

F5キー(更新)で何度かリロードしてみるとセッションが保管されているのがわかります。

セッションの仕組み

最後に

いかがでしょうか。

今回は、クッキーとセッションについて、解説しました。

スーパーグローバル変数のおかげで、Webアプリケーションを制作しやすい環境になっています。

それぞれ違いを理解して使い分けると良いかと思います。