Help us understand the problem. What is going on with this article?

FuelPHPのセッション管理

More than 3 years have passed since last update.

環境

FuelPHP:1.7.3

概要

FuelPHPでセッションを管理する方法がいつくつかあるのでメモしておく。FuelPHPは、デフォルトの場合、セッションをCookieで管理している。ちなみに、今回はあまり関係してこないが、FuelPHPは、PHPのセッション機能を使用せず独自の方法でセッションを管理している(Cookieに保存するセッションデータは暗号化されている)。

事前準備

「fuel/app/config」内に「session.php」が無い場合、「fuel/core/config/session.php」からコピーしてくる。

Cookie以外のセッション管理方法

Fileで管理

fuel/app/config/session.php
    // expire sooner because it's not updated when it's not used. note that auto-initializing always loads the default driver
    'auto_initialize'   => true,

    // if no session type is requested, use the default
-   'driver'            => 'cookie',
+   'driver'            => 'file',

    // check for an IP address match after loading the cookie (optional, default = false)
    'match_ip'          => false,

上記のように変更することでセッションがファイルで管理される。

DBで管理

fuel/app/config/session.php
    // expire sooner because it's not updated when it's not used. note that auto-initializing always loads the default driver
    'auto_initialize'   => true,

    // if no session type is requested, use the default
-   'driver'            => 'cookie',
+   'driver'            => 'db',

    // check for an IP address match after loading the cookie (optional, default = false)
    'match_ip'          => false,

ファイルを上記のように変更し、

ターミナル.app
php oil r session:create

上記コマンドで、セッションを管理するためのテーブルを作成する。
以上でセッションがDBで管理されるようになる。

補足

ターミナル.app
php oil r session:create

上記コマンドで生成されるテーブル定義は以下の通り。

CREATE TABLE `sessions` (
  `session_id` varchar(40) NOT NULL,
  `previous_id` varchar(40) NOT NULL,
  `user_agent` text NOT NULL,
  `ip_hash` char(32) NOT NULL,
  `created` int(10) unsigned NOT NULL,
  `updated` int(10) unsigned NOT NULL,
  `payload` longtext NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
walkers
起業準備中(BtoB SaaS)←Notia事業責任者←マツリカ創業メンバー←フリーランス←失敗←起業準備←東芝情報システム(SIer)◆エンジニア+プロダクトマネージャー(PdM)+営業+CS、育成に必要なことは何でも◆ @gotandarb を運営◆UB Ventures Thinka 2期生
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away