FuelPHP でログイン機能制作

MVCフレームワーク「FuelPHP」でログイン機能を制作。

* PHP開発環境がない場合は「 AlmaLinux8.5, Apache2.4, MySQL8.0, PHP8.1 」で LAMP 環境を構築後に実施
* FuelPHP のインストールは「FuelPHPで掲示板制作」を参照



練習1: ログイン機能(Auth)パッケージ設定

▼ FuelPHP 設定ファイルに auth 情報を設定

/fuel/app/config/config.php

/**************************************************************************/
/* Always Load
/**************************************************************************/
'always_load' => array(
  'packages' => array(
    'auth',
  ),
),


▼ auth 設定ファイルをアプリケーション設定ディレクトリにコピー


▼ コピーファイル(2ファイル)

  • /fuel/packages/auth/config/auth.php
  • /fuel/packages/auth/config/simpleauth.php

▼ 移動先ディレクトリ

  • /fuel/app/config/

▼ ユーザー認証用のテーブルの作成

▼ oil のインストール

# curl https://get.fuelphp.com/oil | sh

▼ oil を実行するプロジェクトに移動

# cd /var/www/fuel.sunabird.local/

▼ oil を実行しテーブル作成

# oil refine migrate --packages=auth

▼ 初期ユーザーの作成

# oil console
Fuel 1.8 - PHP 7.3.3 (cli) (Mar 5 2019 13:50:38) [Linux]
>>> Auth::create_user('root', 'password', 'fuel@sunabird.local');
1
>>> exit;
oil が正しく動作せずテーブルが自動生成できない場合...
下記リンクから simpleauth.dump ファイルをダウンロードします
https://php.sunabird.com/img/auth01/simpleauth.dump

C:\www\fuel.sunabird.local\ ディレクトリにダウンロードした simpleauth.dump ファイルをコピーします

MySQL fueldb にテーブルデータをリストアします
# mysql -u root -p fueldb < /var/www/fuel.sunabird.local/simpleauth.dump 初期ユーザー情報 ID:root, PASS:password, MAIL:fuel@sunabird.local

作成されたテーブルを確認
MySQL にログイン
# mysql -u root -p
FuelPHP の DB fueldb に移動
mysql> use fueldb;
fueldb 内のテーブル確認
mysql> show tables;
+---------------------+
| Tables_in_fueldb
+---------------------+
| migration
| t_comment
| users
| users_clients
| users_providers
| users_scopes
| users_sessions
| users_sessionscopes
+---------------------+

users, users_.... ユーザー関係と思われる6つのテーブルを確認

練習2: ログイン機能の作成

設定した simpleauth パケージを使用してログイン機能を作成します

ログイン用の Controller クラスファイル作成
(新規作成)
C:\www\fuel.sunabird.local\fuel\app\classes\controller\auth.php

ログイン用の View ファイルを作成します
(新規作成)
C:\www\fuel.sunabird.local\fuel\app\views\auth\index.php

ログイン成功時に遷移する View ファイルを作成します
(新規作成)
C:\www\fuel.sunabird.local\fuel\app\views\auth\ok.php

ブラウザからアクセスします
http://fuel.sunabird.local/auth/index


登録されていないユーザーで「ログイン」した場合、エラーメッセージ表示



登録されているユーザーで「ログイン」した場合、ログイン成功画面へ遷移


課題

課題1:ログアウト機能の追加 課題2:ログインしていない場合(ログアウト)、直接「ログイン成功画面(http://fuel.sunabird.local/auth/ok)」にアクセスした場合、ログインフォーム画面へリダイレクト