PHPの認証にはライブラリやフレームワークを使う!シンプル最短解説

PHPで開発をしていると、会員制サイトの作成などもあると思います。

IDとパスワードでログインするといった認証方法は皆さんも見たことがあるでしょう。

今回はそんな認証の仕組みを作成方法を以下の内容でお話していきます。

認証システムの作成方法
おすすめ認証ライブラリ
おすすめ認証フレームワーク

わかりやすく解説しますので、是非ご覧になってください。

目次

認証の仕組みの作り方

PHPで認証の仕組みを作るにはいくつかの方法が考えられます。

まず、どんな方法を選択すればいいかをお話します。

認証システム自作をおすすめしない理由

検索すると、ライブラリやフレームワークを使わずに認証をする方法が沢山見つかります。

練習で作成するのは良いですが、実際のお仕事で使う事はおすすめできません。

様々な理由があるのですが、主な理由はセキュリティ問題です。

サーバーのコンテンツが書き換えられる、個人情報が抜かれるなど過去に様々なサイトやシステムでセキュリティ事故が発生してきます。

プログラム上級者ですら自作の認証システムを企業のシステムに組み込むことは積極的にはしないと思います。

自作で認証システムを作る事はとても高度な知識と時間が必要なのです。

ライブラリとフレームワークがおすすめ

自作がだめならどうしたら?

その答えは、ライブラリとフレームワークを使う事です。

様々なPHP認証用のライブラリやフレームワークが存在します。

次章から、おすすめのライブラリやフレームワークを紹介してきます。

認証が使えるライブラリ

今回おすすめするライブラリは「Sentinel」です。

ユーザー管理のためのライブラリでとても高機能です。
https://github.com/cartalyst/sentry

では、ローカル環境(vagrant+centOS)での使い方の説明をします。

テーブルの作成

今回のデータベースはmysqlを想定しています。

以下のコマンドでmysqlに入ります。

mysql -u root -p【パスワード】

[su_spacer size=”20″]

まずデータベースを作成します。

CREATE DATABASE samurai CHARACTER SET=utf8;

[su_spacer size=”20″]

続いて、先ほど作成したデータベースを選択します。

use samurai;

[su_spacer size=”20″]

設定を反映させるために以下のコマンドを発行します。

SOURCE ./vendor/cartalyst/sentinel/schema/mysql-5.6+.sql;

[su_spacer size=”20″]

ユーザーを作成します。

CREATE USER 'samuraiuser'@'localhost' IDENTIFIED BY '【パスワード】';

[su_spacer size=”20″]

先ほど作成したユーザー(samuraiuser)にテーブルの操作権限を付与します。

GRANT SELECT, DELETE, INSERT, UPDATE, CREATE ON samurail.* TO 'samuraiuser'@'localhost';

[su_spacer size=”20″]

テーブルの作成は以上です。

mysqlから抜けておきます。

インストール

Composerを利用してインストールします。

具体的には以下のコマンドをインストールしたいフォルダで実行します。

まず以下のコマンドを実行して必要ファイルのダウンロードです。

curl -sS https://getcomposer.org/installer | php

[su_spacer size=”20″]

実行結果
All settings correct for using Composer
Downloading...
Composer (version 1.7.3) successfully installed to: /tmp/composer.phar
Use it: php composer.phar

[su_spacer size=”20″]

続いて以下のコマンドを実行してインストールをします。

composer require cartalyst/sentinel "^2.0"

[su_spacer size=”20″]

vendorというフォルダが出来ました。

必要パッケージのインストール

まず、vendor/cartalyst/sentinel/composer.jsonの設定ファイルの以下部分を、

    "require": {
        "php": ">=5.4.0",
        "cartalyst/support": "~1.0|~2.0",
        "illuminate/support": "~5.0"
   },

[su_spacer size=”20″]

以下のように書き換え保存します。

    "require": {
        "cartalyst/sentinel": "^2.0",
        "cartalyst/support": "~1.0|~2.0",
        "illuminate/database": "~5.0",
        "illuminate/events": "^5.2",
        "illuminate/http": "~5.0",
        "illuminate/support": "~5.0",
        "php": ">=5.4.0",
        "paragonie/random_compat": "~1.1"
    }

以下のコマンドを発行します。

composer update

[su_spacer size=”20″]

これでプログラム内でsentinelが使えるようになりました。

プログラムを作成

<?php
// ①必要情報の読み込み
use CartalystSentinelNativeFacadesSentinel; 
use IlluminateDatabaseCapsuleManager as Capsule;

require_once ('/vendor/autoload.php');

$capsule = new Capsule;  

// ②データベースの設定
$capsule->addConnection([  
  'driver'  => 'mysql',  
  'host'   => 'localhost',  
  'database' => 'samurai',  
  'username' => 'samuraiuser',  
  'password' => '【パスワード】',  
  'charset'  => 'utf8',  
  'collation' => 'utf8_unicode_ci',  
]);  

$capsule->bootEloquent();
// ③ユーザー情報の設定
$samurai_user = [
'email' => 'mail@samural.sejuku.net',
'password' => 'samuraipass'
];

// ④新規登録
$user_result = Sentinel::register($samurai_user);
print_r($user_result);

[su_spacer size=”20″]

①で必要情報を読み込みます。

②データベースの設定をします。

③新規登録するユーザー情報を配列に入れます。

④新規登録するためにregisterというsentinelの関数に情報を渡します。

これで、ユーザーの新規登録が完了し、ユーザー情報が表示されます。

簡単にできますので、是非試してみてください。

認証が使えるフレームワーク

PHPで使えるフレームワークには大抵認証機能がついています。

Laravel
Symfony
CakePHP

上記には全て認証機能があります。

フレームワークを使用する!と決まっている方の場合はまずフレームワークを選びましょう。

使用するフレームワークが決まってから、認証機能について考える方が効率がよいです。

使用するフレームワークは開発規模や目的によってよく考えましょう。

PHPのフレームワークの選択について迷う方は是非以下をご覧ください。

【徹底比較】PHPフレームワークおすすめランキングTOP5
更新日:2024年4月29日

まとめ

本日はPHPの認証についてお話しました。

認証の仕組みを作る事が出来るようになると、またレベルアップです。

頑張って理解してくださいね。

それでは、また。

この記事を書いた人

独学PG&SE、東京在住30代女性。
誰でもプログラマーになれるがモットーで、わかりやすい記事を目指しています。

目次