Skip to content

PHP_08 「セッション」

Last updated on 2019/7/11

Sessionとは?

PHPの公式サイトでは、以下のように説明しています。

セッションは、シンプルな方法で個々のユーザーのデータを格納する仕組みで、 個々のユーザーに対して一意なセッション ID を用意します。 これを用いて、複数ページにまたがるリクエストの間で状態の情報を永続させることができます。 セッション ID をブラウザに送信するときには、通常はセッションクッキーを利用します。 また、その ID を使って既存のセッションデータを取得します。 その ID やセッションクッキーが存在しなければ PHP に対して新たなセッションを作るよう伝え、 新たなセッション ID を生成します。

https://www.php.net/manual/ja/session.examples.basic.php

一言でいうと、データをサーバに保存してくれる仕組みです。

Cookieとは違い、ブラウザに保存しません。

Cookieに関しては別で記事を書いてますので、そちらを参考にしてください。

Sessionを使うときに宣言するもの

Sessionを使う際には、必ず session_start() を書きます。

Sessionの処理を始める最初に書いておきます。
もし session_start() を書く前にHTMLの出力をすると、Warningが出ますので注意してください。

Sessionの値を 取り出し & 保存

session_start() を書いたら、Sessionを使うことができます。

値 (セッション変数とも呼びます)を取り出すには、キー名を指定し

$_SESSION['キー名']

と書きます。

キー名は、自分で決めます。取り出す際にはキー名が一致していないと取り出せないので注意してください。

値を取り出すとき、その値が保存されているか調べる方法もあります。

if (isset($_SESSION['キー名'])) {
  // 値が存在する。
}

キー名で値が保存されているか調べる機会は多いと思います。値を取り出しと合わせて覚えてください。

値の保存には、

$_SESSION['キー名'] = 入れる値;

と書きます。

Sessionの値を削除する

設定されたSessionの値を削除には、

unset($_SESSION['キー名']);

とします。

くれぐれも打ち間違えて、unset($_SESSION) としないようにしてください。

サンプルコード

<?php
// セッションを扱う
session_start();

if (!isset($_SESSION['count'])) { // countというセッション変数は存在するか?
  // countに0を代入する。
  $_SESSION['count'] = 0;
} else {
  // 存在する場合は、インクリメントする。
  $_SESSION['count']++;
}

// 削除する場合
// unset($_SESSION['count']);
?>