カテゴリ: CodeIgniter 更新日: 2026/04/10

CodeIgniterでファイルセッションを使う方法!初心者向け完全ガイド

CodeIgniterでファイルセッションを使う方法
CodeIgniterでファイルセッションを使う方法

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

生徒

「CodeIgniterでログイン状態を保存したいのですが、どうすればいいですか?」

先生

「それには『セッション』という仕組みを使います。今回は一番基本となる『ファイル』に保存する方法を解説しますね。」

生徒

「ファイルセッション…難しそうですね。初心者でも設定できますか?」

先生

「大丈夫ですよ!設定ファイルを少し書き換えるだけで、誰でも簡単に使い始めることができます。それでは、基本的な使い方を見ていきましょう!」

1. セッション(Session)とは何か?

1. セッション(Session)とは何か?
1. セッション(Session)とは何か?

プログラミングの世界で、あるいはウェブサイトを利用していて「ログインしたままにする」という体験をしたことはありませんか?例えば、SNSを開くたびにメールアドレスとパスワードを入力するのは大変ですよね。これを解決するのがセッションという仕組みです。

通常、インターネットの通信(HTTPといいます)は「一回切り」のやり取りです。サーバーは「さっきアクセスしてきた人と、今の人は同じ人かな?」ということが分かりません。そこで、サーバー側に「この人は田中さんですよ」という名札(データ)を一時的に保管しておきます。この「名札を保管する期間や仕組み」のことをセッションと呼びます。

CodeIgniter(コードイグナイター)というPHPのフレームワークを使えば、この複雑な仕組みをとてもシンプルに扱うことができます。フレームワークとは、開発を楽にするための「便利な道具セット」のようなものです。パソコンを初めて触る方でも、この道具を使えばプロのような機能が作れます。

2. ファイルセッションの特徴とメリット

2. ファイルセッションの特徴とメリット
2. ファイルセッションの特徴とメリット

セッション情報の保存先にはいくつか種類がありますが、最も一般的で手軽なのが「ファイル」に保存する方法です。サーバーの中にある特定のフォルダに、テキストファイルとしてユーザーの情報を書き込みます。

ファイルセッションの大きなメリットは、データベースの設定が不要である点です。データベース(情報を整理して保管する巨大な倉庫のようなもの)の知識がなくても、フォルダさえ準備すればすぐに動きます。小規模なサイトや、これからプログラミングの学習を始める初心者の方には、このファイルセッションが最もおすすめです。

ただし、アクセス数が非常に多いサイト(1秒間に何千人も訪れるようなサイト)では、ファイルの読み書きが追いつかなくなることがありますが、学習段階では全く気にする必要はありません。まずは基本をしっかり押さえましょう。

3. 準備:保存先のフォルダを作成しよう

3. 準備:保存先のフォルダを作成しよう
3. 準備:保存先のフォルダを作成しよう

ファイルセッションを使うためには、まず「セッション情報を書き込むための箱(フォルダ)」をサーバー内に用意する必要があります。これを忘れると、プログラムが「どこに書けばいいの?」と迷ってエラーを出してしまいます。

CodeIgniterのプロジェクトフォルダの中に、例えば writable/session という名前でフォルダを作ります。そして、大事なのが書き込み権限(パーミッション)の設定です。これは、パソコンに対して「このフォルダには自由に出し入れしていいよ」と許可を与える作業です。これを設定しないと、プログラムが情報を保存できなくなります。

4. 設定ファイル(App.php)を編集する

4. 設定ファイル(App.php)を編集する
4. 設定ファイル(App.php)を編集する

次に、CodeIgniterの設定を変更します。app/Config/App.php というファイルを開いてください。このファイルは、アプリ全体のルールを決める「校則本」のようなものです。

探し出す項目は public $sessionDriver です。ここを 'CodeIgniter\Session\Handlers\FileHandler' に設定します。次に、保存場所を指定する public $sessionSavePath に、先ほど作ったフォルダのパス(場所)を書き込みます。

実際のコード例を見てみましょう。このように記述します。


// app/Config/App.php の中身のイメージ
public $sessionDriver = 'CodeIgniter\Session\Handlers\FileHandler';
public $sessionSavePath = WRITEPATH . 'session'; // writableフォルダ内のsessionを指定
public $sessionExpiration = 7200; // セッションの有効期限(秒)

これで、CodeIgniterは「セッションはファイルで、あのフォルダに保存するんだな」と理解してくれます。WRITEPATH というのは、CodeIgniterが最初から知っている「書き込み用フォルダの場所」を指す便利な言葉です。

5. セッションライブラリを読み込む方法

5. セッションライブラリを読み込む方法
5. セッションライブラリを読み込む方法

設定が終わったら、実際にプログラムの中でセッションを使えるように呼び出します。CodeIgniterでは「ライブラリ」という部品を呼び出すことで機能が使えるようになります。これをインスタンス化と呼んだりしますが、今は「魔法の杖を手に取る」イメージで大丈夫です。

コントローラー(プログラムの司令塔となるファイル)の中で以下のように記述します。


namespace App\Controllers;
use CodeIgniter\Controller;

class Home extends Controller
{
    public function index()
    {
        // セッション機能を起動する!
        $session = \Config\Services::session();
        
        // これで $session という変数を使って、データの保存や取得ができます
        echo "セッションが準備できました!";
    }
}

この \Config\Services::session() という一文が、セッションを開始するための合言葉です。これ以降は、ユーザーの情報を自由に出し入れできるようになります。

6. データを保存する方法(set)

6. データを保存する方法(set)
6. データを保存する方法(set)

いよいよ、データを保存してみましょう。例えば、ログインしたユーザーの名前を保存したい場合、set という命令を使います。これは「箱に名前を書いて、中身を入れる」作業に似ています。

例えば、「user_name」という名前の付いた箱に、「たろう」という文字を入れてみます。以下のコードを見てください。


public function login()
{
    $session = \Config\Services::session();

    // ユーザー情報をセッションに保存する
    $data = [
        'user_id'   => 123,
        'user_name' => 'たろう',
        'is_logged_in' => true
    ];

    $session->set($data);
    echo "データを保存しました。";
}

このように、複数の情報をまとめて一度に保存することもできます。一度保存してしまえば、別のページに移動しても「たろう」という情報は消えずに残ります。これがセッションのすごいところです!

7. データを取得する方法(get)

7. データを取得する方法(get)
7. データを取得する方法(get)

保存したデータを取り出すには、get という命令を使います。これは「指定した名前の箱を開けて、中身を見る」作業です。もし、その名前の箱がなければ、空っぽ(null)を返してくれます。


public function profile()
{
    $session = \Config\Services::session();

    // 保存されている名前を取り出す
    $name = $session->get('user_name');

    if ($name) {
        echo "こんにちは、" . $name . "さん!";
    } else {
        echo "ログインしていません。";
    }
}

このプログラムを実行すると、先ほど保存した「たろう」という文字が表示されます。ページをリロードしても、ブラウザを閉じない限り情報は保持され続けます。これがユーザーごとにパーソナライズされた(その人に合わせた)表示を可能にする仕組みです。

8. データを削除する方法(removeとdestroy)

8. データを削除する方法(removeとdestroy)
8. データを削除する方法(removeとdestroy)

最後に、不要になった情報を消す方法を学びましょう。ログアウトするときなどは、保存した情報を消す必要があります。特定の情報だけ消したいときは remove、全ての情報をリセットしたいときは destroy を使います。


public function logout()
{
    $session = \Config\Services::session();

    // 1. 特定のデータだけ消す場合
    $session->remove('user_name');

    // 2. セッションの全てのデータを完全に消去(ログアウトなど)
    $session->destroy();

    echo "ログアウトしました。情報はすべて消去されました。";
}

これでお片付けもバッチリです。セッションの管理ができるようになると、会員制サイトやショッピングカートなど、本格的なウェブアプリの制作が一気に現実味を帯びてきます。最初は難しく感じるかもしれませんが、「名札の付いた箱にデータを入れたり出したりしているだけ」と考えれば、とてもシンプルに感じられませんか?

カテゴリの一覧へ
新着記事
New1
Laravel
Laravelのnow()・today()関数の使い方完全ガイド!初心者でもわかる日時処理と日付操作
New2
CodeIgniter
CodeIgniterでファイルセッションを使う方法!初心者向け完全ガイド
New3
Laravel
Laravelでセッションを扱う方法!保存方法と利用例を解説
New4
Laravel
Laravelでリダイレクト処理を行う方法(redirectヘルパーの使い方)
人気記事
No.1
Java&Spring記事人気No1
Laravel
Laravelのコントローラでレスポンスを返す方法!ビュー・JSON・リダイレクトを初心者向けに解説
No.2
Java&Spring記事人気No2
PHP
PHPの配列(array)入門!複数のデータをまとめて管理する基本操作
No.3
Java&Spring記事人気No3
CodeIgniter
CodeIgniterのServicesクラスとは?初心者向け完全ガイド
No.4
Java&Spring記事人気No4
PHP
PHPの文字列操作完全ガイド!初心者でもわかる結合・分割・置換の基本テクニック
No.5
Java&Spring記事人気No5
Laravel
Laravelのインストール方法まとめ!ComposerとLaravel Installerの使い方
No.6
Java&Spring記事人気No6
Laravel
Laravelでリダイレクト処理を行う方法(redirectヘルパーの使い方)
No.7
Java&Spring記事人気No7
Laravel
Laravelテストの例外処理を完全攻略!初心者でもデバッグができる追跡方法
No.8
Java&Spring記事人気No8
Laravel
Laravelのルートにバリデーションを追加する方法!初心者でもわかるwhere句の使い方ガイド