4) 認証処理–Auth
会員制のWebアプリケーションを構築する場合、認証機能が要求されます。認証機能の最も簡単な実装方法は、アパッチWebサーバーのベーシック認証の活用です。しかし、アパッチWebサーバーのベーシック認証は、「ログイン画面の自由度がない」「ログアウト機能が搭載できない」など、柔軟な実装ができません。
この課題を解決するには、Authライブラリーを使用することで、柔軟な認証処理を簡単に実装することができます。
インターネットリサーチ・コンサルティング・企画、ウェブ翻訳から、Web制作、システム開発までオープンソース・ネットワークビジネスを提供
認証フロー
会員制のWebアプリケーション等を構築するには、以下の認証フローを実装します。ユーザーからアクセスがあると、まず、認証済みかチェックします。初回のアクセスでは認証が済んでいないので、ログインフォームが表示されます。ログインIDとパスワードを入力して、正しければ認証済みページが表示されます。ログインID、また、パスワードが間違っている場合、あるいは、認証済みページからログアウトした場合には、ログインフォームが再度表示されます。

ログインフォーム
まず、ログインフォームを関数にまとめて出力するようにプログラミングを行ないます。
<?php
function loginForm() {
echo '<form method="post">';
echo 'ユーザー名 <input type="text" name="username"><br>'; ---(1)
echo 'パスワード<input type="password" name="password"><br>'; ---(2)
echo '<input type="submit" value="ログイン">';
echo '</form>';
}
echo loginForm(); ---(3)
?>
(1):ユーザー名のname属性は「username」にします
(2):パスワードのname属性は「password」にします
(3):ログインフォームを出力します
ブラウザーからこのファイルにアクセスすると、ログインフォームが表示されます。

認証処理と認証済みページ
認証処理を行うには、あらかじめ認証情報となるテキストファイルを作成します。この認証情報となるテキストファイルは、上記スクリプトと同じ場所にuser.txtファイルとして新規に作成し、「ユーザー名:パスワード」のフォーマットでユーザー情報を記述・追加します。
jfe-tec:.mSvr9lDzgi0Y
次に、認証処理と認証済みページを作成します。
<?php
function loginForm() {
echo '<form method="post">';
echo 'ユーザー名 <input type="text" name="username"><br>';
echo 'パスワード<input type="password" name="password"><br>';
echo '<input type="submit" value="ログイン">';
echo '</form>';
}
// echo loginForm(); ---(1)
require_once 'Auth/Auth.php'; ---(2)
$a = new Auth( ---(3)
$storageDriver='File', ---(4)
$options='user.txt', ---(5)
$loginFunction='loginForm'); ---(6)
$a->start(); ---(7)
if ($a->checkAuth()) { ---(8)
echo '認証済みです<br>'; ---(9)
}
?>
(1):ログインフォームの出力をコメントアウトします
(2):Authライブラリーを読み込みます
(3):Authオブジェクトを生成します
(4):storageDriverパラメータでテキストファイルを指定します
(5):optionsパラメータでテキストファイル名を指定します
(6):loginFunctionパラメータでログインフォーム関数を指定します
(7):start ()メソッドで認証を開始します
(8):checkAuth ()メソッドで認証済みか判定します
(8):認証済みの場合の処理
ブラウザーからこのファイルにアクセスすると、認証済みページまでの処理が確認できます。

ログアウト処理
最後に、認証済みページからログアウトする処理を追加します。<?php
function loginForm() {
echo '<form method="post">';
echo 'ユーザー名 <input type="text" name="username"><br>';
echo 'パスワード<input type="password" name="password"><br>';
echo '<input type="submit" value="ログイン">';
echo '</form>';
}
// echo loginForm();
require_once 'Auth/Auth.php';
$a = new Auth(
$storageDriver='File',
$options='user.txt',
$loginFunction='loginForm');
$a->start();
if ($_GET['action'] == "logout") {
$a->logout(); ---(1)
$a->start();
}
if ($a->checkAuth()) {
echo '認証済みです<br>';
echo '<a href="?action=logout">ログアウト</a>'; ---(2)
}
?>
(1):GETパラメータ「action」がリクエストされたとき、logout()メソッドでログアウトを実行します
(2):「ログアウト」リンクにGETパラメータ「action」を設定します
ブラウザーからこのファイルにアクセスすると、認証済みページからログアウトして、ログインフォームが表示されることが確認できます。

今回は、テキストファイルによる認証機能を実現しましたが、Authライブラリーでは、データーベース・LDAP・SOAPを利用した認証機能を実装することも可能です。
次回は、RSSを簡単に取得できるXML_RSSパッケージをご紹介します。


