チュートリアル

チュートリアル  --  Auth_PrefManager の簡単な使用法

データベースの準備

まず最初に、値を保存するデータベースを準備します。 このチュートリアルでは、読者はすでに PEAR の DB クラスの基本的な使用法を知っているものとします。

デフォルトのテーブルを準備するには、以下の SQL 文を実行します。

はじめての PrefManager オブジェクトの作成

Auth_PrefManager を使用するには、 まず以下のようにして基底オブジェクトのインスタンスを作成しなければなりません。

デフォルト設定の登録および表示

PrefManager オブジェクトが出来上がったので、 これを使用して設定を登録してみましょう。

このチュートリアルでは、ユーザが自分の国を指定できるようにします。また、 国を登録しなかったユーザは「地球上のどこか」と設定されるようにします。

まずは setDefaultPref を使用してデフォルト値を設定しましょう。

デフォルト値が設定できました。これで、(非常に) 基本的なページを作成することが可能です。 例えばユーザごとにカスタマイズしたメッセージを表示することができます。

現在は、このメッセージは常に "地球のみなさん、こんにちは!" となります。 まだどのユーザも自分の国を設定していないからです。

ユーザ設定の登録

最後に、自分が住む国を選択できるようにしなければなりません。

ここでは、単純なテキストボックスを使用します。 もちろん、実際のアプリケーションでは ユーザに設定変更させるのなら もうちょっとしっかり考える必要があるでしょう。

"国をリセット" ボタンは、ユーザ設定を消去してもう一度デフォルト値を表示します。

一度ユーザ名と国名を入力すると、ログインするたびに そのユーザ用のメッセージが表示されるようになります。

完全なソースコード

例 34-6サンプルのソースコード

<h1>国の設定</h1>
<?php
require_once('Auth/PrefManager.php');

// PrefManager オブジェクトを作成します。

// 環境に合わせて DSN を変更します。
$dsn = 'mysql://user:password@localhost/database';   

// データを保存する前のシリアライズを有効にします。
// これにより、値が正しい形式で確実に取得できるようになります。
$options = array('serialize' => true);               

// オブジェクトを作成します。
$prefmanager = new Auth_PrefManager($dsn, $options); 

// デフォルト値を設定します (スクリプトを実行するたびにこれを行う必要はありません)。
$prefmanager->setDefaultPref("country", "Earth");

// ユーザが、国とユーザ名を登録できるようにします。
if (isset($_POST['submit'])) {
    $username = htmlspecialchars($_POST['username']);
    $prefmanager->setPref($username, 'country', $_POST['country']);
} else if (isset($_POST['reset'])) {
    $username = htmlspecialchars($_POST['username']);
    $prefmanager->deletePref($username, 'country');
} else {
    $username = 'guest';
}
?>
<h1><?=$prefmanager->getPref($username, "country")?>のみなさん、こんにちは!</h1>
<h2>国とユーザ名を設定します</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']) ?>">
  <label for="username">ユーザ名</label> <input name="username" value="<?=$username?>" /><br/>
  <label for="country">国</label> <input name="country" value="<?=$prefmanager->getPref($username, 'country')?>"/><br/>
  <input type="submit" name="submit" value="国の設定" /> <input type="submit" name="reset" value="国のリセット" />
</form>