CodeIgniterセッション管理の基本!初心者向け初期設定ガイド
生徒
「CodeIgniterでログイン機能を作りたいんですけど、ユーザーの情報をずっと覚えておく方法ってありますか?」
先生
「それなら『セッション』という機能を使うのが一番ですよ。Webサイトがユーザーのことを『あ、さっきの人だ!』と認識するための仕組みです。」
生徒
「なんだか難しそうですね。設定とか大変なんですか?」
先生
「CodeIgniterなら、最初に少し設定をするだけで簡単に使い始めることができます。まずはその準備から一緒に見ていきましょう!」
1. セッションとは何?初心者にもわかりやすく解説
プログラミングを始めたばかりの方にとって、「セッション(Session)」という言葉は少し聞き慣れないかもしれません。まずは、パソコンを触ったことがない方でもイメージしやすいように、身近な例で説明します。
例えば、あなたが遊園地に行ったと想像してください。入り口でチケットを見せて中に入りますよね。でも、アトラクションに乗るたびに「私はチケットを持っています!」と入り口まで戻って証明するのはとても大変です。そこで、入り口で「リストバンド」を巻いてもらいます。このリストバンドがあれば、園内のどこへ行っても「この人は正規の入園者だ」と認めてもらえます。
Webサイトの世界でも同じことが起こります。一度ログインしても、ページを移動するたびに「私は誰々です」と教え直すのは面倒です。そこで、サーバー(Webサイトのデータを保存している大きなコンピュータ)側で、あなたの情報を一時的に預かっておく仕組みがセッションです。PHPというプログラミング言語で作られたフレームワーク「CodeIgniter(コードイグナイター)」を使えば、このセッションを安全に、そして簡単に管理することができるのです。
2. セッションを使うための暗号鍵(Encryption Key)の設定
CodeIgniterでセッションを扱うために、まず最初に行う最も重要な設定が「暗号鍵(Encryption Key)」の設定です。これは、セッションデータを泥棒(ハッカー)から守るための大切な「カギ」になります。このカギが設定されていないと、CodeIgniterは安全ではないと判断して動いてくれません。
設定する場所は、プロジェクトの中にある app/Config/Encryption.php というファイルです。このファイルを開くと、鍵を設定する場所があります。本来は複雑な英数字を並べる必要がありますが、初心者の方はまず、CodeIgniterのコマンドを使って専用の鍵を作る方法を覚えましょう。
フレームワークとは、アプリを開発するための便利な道具箱のようなものです。CodeIgniterもその一つで、ルールに沿って書くだけで本格的なシステムが作れます。では、まず設定ファイルのイメージを見てみましょう。
// app/Config/Encryption.php の中の設定例
namespace Config;
use CodeIgniter\Config\BaseConfig;
class Encryption extends BaseConfig
{
// ここに大切な「カギ」を書き込みます
public $key = 'ここに32文字以上のランダムな文字列を入れます';
public $driver = 'OpenSSL';
}
3. セッションライブラリの読み込み方法
CodeIgniterでは、セッション機能は「ライブラリ」として提供されています。ライブラリとは、特定の機能をまとめた「道具」のことです。この道具を使えるように準備することを「ロードする(読み込む)」と言います。
CodeIgniter 4(最新版)では、コントローラー(プログラムの実行を制御する司令塔のようなファイル)の中で session() という関数を呼び出すだけで、自動的にセッションの準備が整います。昔のバージョンに比べて、格段に使いやすくなりました。コントローラーとは、Webサイトにアクセスがあったときに「どの画面を表示するか」「どんな計算をするか」を指示する役割を持ったファイルのことです。
もし、サイト全体で常にセッションを使いたい場合は、app/Controllers/BaseController.php という場所で設定しておくと、すべてのページでいちいち準備しなくて済むので便利ですよ。
// コントローラーでの使い方の例
namespace App\Controllers;
class Home extends BaseController
{
public function index()
{
// セッションの道具を準備する
$session = session();
// これでセッションが使えるようになりました!
return view('welcome_message');
}
}
4. データの保存場所を決めよう(セッションドライバ)
セッションで預かったデータを、サーバーの「どこに」保存するかを決める必要があります。これを「セッションドライバ」と呼びます。主に以下の2つの方法があります。
- File(ファイル): サーバーの中にある普通の「ファイル」として保存します。設定が簡単で、小規模なサイトに向いています。
- Database(データベース): データの倉庫である「データベース」に保存します。たくさんの人がアクセスする大きなサイトや、より安全に管理したい場合に向いています。
初心者のうちは、まずは「File」設定で動かしてみるのがおすすめです。設定は app/Config/App.php というファイルで行います。設定項目の中に sessionDriver という場所があるので、そこを確認してみましょう。デフォルト(最初から決まっている設定)では、ファイルの保存先が指定されているはずです。
データベースとは、たくさんの情報を整理して保存しておくための、デジタルな収納棚のようなものです。最初は難しく感じるかもしれませんが、「情報の置き場所」だと考えてください。
5. セッションにデータを保存してみる(setメソッド)
設定が終わったら、実際にデータを保存してみましょう。セッションにデータを覚えさせるには set という命令を使います。例えば、ログインしたユーザーの名前を覚えさせてみましょう。これは、遊園地の例で言えば、リストバンドに持ち主の名前を書き込むような操作です。
保存するときは、「名前(キー)」と「中身(値)」をペアにして渡します。例えば、「'user_name' という名前で 'たろう' という文字を保存してね」という風にお願いします。
public function login()
{
$session = session();
// ユーザー情報を保存する
$data = [
'user_name' => 'たろう',
'is_logged_in' => true
];
$session->set($data);
echo 'ユーザー情報をセッションに保存しました!';
}
実行結果は以下のようになります。
ユーザー情報をセッションに保存しました!
6. 保存したデータを取り出す方法(getメソッド)
次に、保存したデータを取り出して画面に表示してみましょう。これには get という命令を使います。先ほど 'user_name' という名前で保存したので、取り出すときも同じ名前を指定します。もし指定した名前が見つからない場合は、何もない(空っぽ)という結果が返ってきます。
これを応用すれば、「もしログインしていたら『こんにちは、たろうさん』と表示し、そうでなければ『ゲストさん、こんにちは』と表示する」といった切り替えが簡単にできるようになります。これがプログラムにおける条件分岐の基本でもあります。
public function profile()
{
$session = session();
// 保存した名前を取り出す
$name = $session->get('user_name');
if ($name) {
echo 'こんにちは、' . $name . 'さん!';
} else {
echo 'ログインしていません。';
}
}
もしデータが正しく入っていれば、画面には次のように表示されます。
こんにちは、たろうさん!
7. セッションデータを削除してログアウトを作る
最後は、使い終わったデータを消す方法です。これを「セッションの破棄(はき)」と言います。ログアウトボタンを押したときに、保存していたユーザー情報を消すことで、安全にサイトを終了させることができます。全てのデータを消すには destroy という命令を使い、特定のデータだけを消したい場合は remove を使います。
ログアウトとは、サーバーに預けていた自分の情報を空っぽにして、「今は誰も利用していませんよ」という状態にすることです。公共のパソコンなどで自分の情報を守るために非常に重要な処理です。
public function logout()
{
$session = session();
// セッションに保存されているデータをすべて消去する
$session->destroy();
echo 'ログアウトしました。また遊びに来てくださいね!';
}
これで、CodeIgniterでのセッション管理の基本が一通り完了しました。初期設定さえしっかり行えば、あとは set(保存)、get(取得)、destroy(削除)の3つの操作を覚えるだけで、本格的なWebアプリの機能を作ることができますよ!