カテゴリ: PHP 更新日: 2026/01/17

PHPのセッションのタイムアウトと自動ログアウトの仕組み!初心者にもわかる実装方法

PHP の セッションのタイムアウトと自動ログアウト機能の実装
PHP の セッションのタイムアウトと自動ログアウト機能の実装

先生と生徒の会話形式で理解しよう

生徒

「PHPでログイン機能を作ったんですが、しばらく放置してもログインしたままになっています。勝手にログアウトさせるにはどうすればいいですか?」

先生

「それは“セッションのタイムアウト”や“自動ログアウト機能”を使うことで実現できますよ。一定時間操作がないと自動でログアウトする仕組みです。」

生徒

「どうやって作るんですか?初心者でもできますか?」

先生

「大丈夫、ステップごとにやさしく説明しますね!」

-

1. セッションのタイムアウトとは?

1. セッションのタイムアウトとは?
1. セッションのタイムアウトとは?

セッションのタイムアウトとは、「一定時間なにも操作がなければ、自動的にログイン状態を解除する」という仕組みです。これはセキュリティのために非常に大切な機能です。

たとえば、図書館のパソコンで誰かがログインしたまま放置してしまうと、他の人に見られてしまいますよね。それを防ぐのがタイムアウト機能です。

2. PHPでタイムアウトを実装する基本的な考え方

2. PHPでタイムアウトを実装する基本的な考え方
2. PHPでタイムアウトを実装する基本的な考え方

PHPのセッションタイムアウト機能は、自動では設定されていないため、自分で「最後にアクセスした時間」を保存し、それをチェックする必要があります。

具体的には、以下の手順で実現します:

  • ① セッション開始時に現在の時刻を記録する
  • ② ページにアクセスするたびにその時刻と現在の時刻を比較する
  • ③ 一定時間を過ぎていたらログアウトさせる

3. タイムアウトを実装するPHPコードのサンプル

3. タイムアウトを実装するPHPコードのサンプル
3. タイムアウトを実装するPHPコードのサンプル

ここでは、5分(300秒)で自動ログアウトする例を紹介します。下記のようにauth.phpなど共通で読み込むファイルに書くと便利です。


<?php
session_start();

$timeout_limit = 300; // 秒(5分)

if (isset($_SESSION['last_access'])) {
    $elapsed_time = time() - $_SESSION['last_access'];
    if ($elapsed_time > $timeout_limit) {
        session_unset();
        session_destroy();
        header('Location: timeout.php');
        exit;
    }
}

$_SESSION['last_access'] = time();
?>

time()は現在の時刻(秒)を取得する関数です。セッションに保存した時間との差を計算し、制限を超えていればログアウト処理を行います。

4. ログアウト後に表示するページも用意しよう

4. ログアウト後に表示するページも用意しよう
4. ログアウト後に表示するページも用意しよう

セッションがタイムアウトしてログアウトされた場合には、専用のページ(たとえばtimeout.php)を作って、「時間切れでログアウトしました」と表示するようにしましょう。


<h2>セッションタイムアウト</h2>
<p>一定時間操作がなかったため、自動的にログアウトしました。</p>
<a href="loginform.html">ログイン画面に戻る</a>

こうすることで、ユーザーにも状況がわかりやすくなります。

-

5. セッションの有効期限をサーバー設定でも制御可能

5. セッションの有効期限をサーバー設定でも制御可能
5. セッションの有効期限をサーバー設定でも制御可能

PHPではプログラム内でタイムアウトを制御できますが、サーバー全体の設定でもセッションの期限を設定できます。

php.iniという設定ファイルの中で、以下のように設定します:


session.gc_maxlifetime = 300

この設定は、「セッションが最大で何秒間有効か」を示します。ただし、これはサーバー全体に影響するため、初心者はプログラム側で制御する方法から始めるのが安心です。

6. 自動ログアウト機能を入れるメリットとは?

6. 自動ログアウト機能を入れるメリットとは?
6. 自動ログアウト機能を入れるメリットとは?

セッションの自動ログアウト機能を入れることには、大きく3つのメリットがあります:

  • ① セキュリティ向上:放置されたログイン状態からの情報漏えいを防げる
  • ② サーバー資源の節約:無駄なセッションを自動で整理できる
  • ③ ユーザーの安心感:勝手にログアウトされることで逆に安心する人も多い

実際のWebサービスでも多くがこの機能を取り入れています。

7. 忘れずに組み込もう!毎ページに共通のチェックを

7. 忘れずに組み込もう!毎ページに共通のチェックを
7. 忘れずに組み込もう!毎ページに共通のチェックを

ログイン後のすべてのページでタイムアウトチェックを行うためには、auth.phpのような共通ファイルを作成し、次のように各ページの先頭で読み込みます:


<?php require_once 'auth.php'; ?>

これで、どのページでも自動ログアウト機能が働くようになります。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
New1
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
New2
Python
Pythonの演算子まとめ!算術・比較・論理演算子の使い方
New3
PHP
PHPのセッションのタイムアウトと自動ログアウトの仕組み!初心者にもわかる実装方法
New4
PHP
PHPのarray_mapの使い方を完全解説!初心者でもわかる配列の要素を一括変換する方法
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
No.2
Java&Spring記事人気No2
Python
PythonでMySQLに接続する方法を完全解説!初心者でもわかるpymysqlの基本
No.3
Java&Spring記事人気No3
Python
Pythonで辞書のネスト構造(入れ子辞書)を扱う方法 初心者向け完全ガイド
No.4
Java&Spring記事人気No4
PHP
PHPの特殊文字とエスケープ処理を完全ガイド!初心者向けにhtmlspecialcharsとhtmlentitiesをやさしく解説
No.5
Java&Spring記事人気No5
Python
Pythonで辞書のキー・値・アイテムを取得する方法(keys(), values())
No.6
Java&Spring記事人気No6
Python
Pythonのライブラリとは?標準ライブラリとサードパーティライブラリの違いを初心者向けに解説!
No.7
Java&Spring記事人気No7
PHP
PHP の日付と時間の取得(date, time, strtotime)を完全解説!初心者でもわかる使い方
No.8
Java&Spring記事人気No8
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
-
-