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

PHPでユーザーごとにセッションを管理する方法!初心者にもわかるWebログインの仕組み

PHP でユーザーごとにセッションを管理する方法
PHP でユーザーごとにセッションを管理する方法

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

生徒

「PHPでログイン機能を作ったときに、ユーザーごとの情報を覚えておく方法ってありますか?」

先生

「はい、PHPでは“セッション”という仕組みを使って、ユーザーごとの情報を管理することができますよ。」

生徒

「セッションって何ですか?なんだか難しそう…」

先生

「心配しなくて大丈夫です。わかりやすく、例えを使って説明していきますね!」

-

1. セッションとは?PHPのログイン管理の基本用語

1. セッションとは?PHPのログイン管理の基本用語
1. セッションとは?PHPのログイン管理の基本用語

セッション(Session)とは、PHPでユーザーがWebサイトを利用している間に、その人が「誰なのか」「どんな操作をしたのか」といった情報を一時的に覚えておく仕組みです。

例えば、遊園地の入場券のようなものです。入場券を見せれば、スタッフは「この人はチケットを買った人だな」とわかりますよね。セッションはその「入場券」をWeb上で実現するような働きをします。

ログイン処理をすると、サーバーは「この人はログインしている人だ」と覚えておきます。ログイン後に別のページに移動しても、セッションがあることでログイン状態をキープできます。

2. PHPでセッションを使う基本の書き方

2. PHPでセッションを使う基本の書き方
2. PHPでセッションを使う基本の書き方

PHPでセッションを使うときは、まず最初にsession_start()という命令を書きます。これによって、PHPがセッションを開始し、ユーザーごとの情報を保存できるようになります。

使い方の基本は次のようになります。


<?php
session_start();
$_SESSION['user'] = 'taro';
?>

ここで$_SESSION['user']は、「セッションの中に"user"という名前で"taro"という情報を保存する」という意味です。

3. ログイン時にユーザー情報をセッションに保存しよう

3. ログイン時にユーザー情報をセッションに保存しよう
3. ログイン時にユーザー情報をセッションに保存しよう

次は、ユーザーがログインしたときに、セッションを使ってログイン状態を管理する例です。まずはログイン処理を書いてみましょう。


<?php
session_start();

$username = $_POST['username'];
$password = $_POST['password'];

// 仮のユーザー情報
if ($username === 'taro' && $password === 'pass123') {
    $_SESSION['user'] = $username;
    header('Location: mypage.php');
    exit;
} else {
    echo 'ログインに失敗しました。';
}
?>

このように、ログインに成功したら、セッションにユーザー名を保存して次のページへ移動します。

4. マイページでユーザーごとの情報を表示する

4. マイページでユーザーごとの情報を表示する
4. マイページでユーザーごとの情報を表示する

次はログイン後のページ、いわゆる「マイページ」でセッションを使ってログイン中のユーザーの名前を表示してみましょう。


<?php
session_start();
if (!isset($_SESSION['user'])) {
    header('Location: loginform.html');
    exit;
}
echo "ようこそ、" . $_SESSION['user'] . "さん!";
?>

issetは「この変数が存在しているか?」を調べる関数です。セッションにuserがあるかを確認し、なければログイン画面に戻します。

-

5. セッションを使ってユーザー情報を保持するとは?

5. セッションを使ってユーザー情報を保持するとは?
5. セッションを使ってユーザー情報を保持するとは?

セッションを使えば、ユーザーが別のページに移動しても、その間に「ログイン中かどうか」や「誰が操作しているか」を記録し続けることができます。

たとえば、買い物サイトで「カートに入れた商品」は、セッションを使って一時的に記録されます。ページを移動しても商品は消えませんよね。それと同じことがログイン状態にも当てはまります。

6. ログアウト処理でセッションを削除しよう

6. ログアウト処理でセッションを削除しよう
6. ログアウト処理でセッションを削除しよう

ログアウトするには、セッションを削除する必要があります。次のように書きます。


<?php
session_start();
session_unset();
session_destroy();
header('Location: loginform.html');
exit;
?>

session_unset()はセッションの中身を全部空にし、session_destroy()はセッション自体を破棄します。ログアウト後はログインページへ戻すのが一般的です。

7. 複数ユーザーを管理するにはどうする?

7. 複数ユーザーを管理するにはどうする?
7. 複数ユーザーを管理するにはどうする?

実際には、1人ではなく複数のユーザーが同時にWebサイトにアクセスします。でもセッションは「その人ごとに自動で別々に管理」されるので安心です。

たとえば、同じページをAさんとBさんが開いたとしても、それぞれのセッションはサーバー側で別々に処理され、$_SESSION['user']にAさんとBさんの名前がそれぞれ別に入ります。

8. セッションIDとは?安全性も意識しよう

8. セッションIDとは?安全性も意識しよう
8. セッションIDとは?安全性も意識しよう

セッションには、内部的に「セッションID(アイディー)」という一意の番号が使われています。これはユーザーごとに発行され、クッキーという仕組みを通じて自動的に管理されます。

セッションIDが漏れると、他人になりすまされるリスクがあるので、ログイン状態を守るためにはsession_regenerate_id()を使って、IDを再発行するのが安全です。


<?php
session_start();
session_regenerate_id(true);
?>

ログイン直後にこの関数を使うと、安全性が高まります。

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

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

カテゴリの一覧へ
新着記事
New1
PHP
PHPのCookieセキュリティを完全ガイド!初心者でもわかるSecureとHttpOnlyの使い方
New2
PHP
PHPのCSRF対策を完全理解!トークンを使った安全なフォーム送信の仕組みを初心者向けに徹底解説
New3
PHP
PHPのSQLインジェクション対策を完全解説!初心者でも安全にデータベースを扱う方法
New4
PHP
PHPでカウントダウンタイマーを作る方法!初心者向けにやさしく解説
-
人気記事
No.1
Java&Spring記事人気No1
Python
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
Java&Spring記事人気No2
PHP
初心者向けPHPでMySQLからデータを取得する方法(SELECT文)完全ガイド
No.3
Java&Spring記事人気No3
Python
Pythonのリストの重複を削除する方法を解説!初心者向けにsetとdict.fromkeysの使い方をやさしく説明
No.4
Java&Spring記事人気No4
Python
Pythonで経過時間を測る方法をやさしく解説!初心者向けtime.perf_counterとtime.sleepの使い方
No.5
Java&Spring記事人気No5
PHP
PHPのXSS対策を完全ガイド!初心者でもわかる安全なWebアプリの作り方
No.6
Java&Spring記事人気No6
PHP
PHPのOAuth認証をやさしく解説!Google・Facebookログインを初心者向けに実装しよう
No.7
Java&Spring記事人気No7
Python
PythonでExcelファイル(.xlsx)を操作する方法を徹底解説!初心者でもできるopenpyxl・pandasの使い方
No.8
Java&Spring記事人気No8
Python
Pythonでエラースタックトレースを表示・取得する方法を徹底解説!初心者向け例外処理入門
-
-