はじめに
携帯電話ブラウザを使ってWebサイト上で認証する場合、通常は携帯電話端末に割り当てられている一意なID(端末ID、後述)を取得して認証情報として利用します。
携帯電話向けブラウザの多くはまだクッキーに対応していませんので、認証ページを通過した以降の処理は
- 画面ごとに毎回端末IDを取得してDBと照合するなどして認証の確認を行う
- 認証されたという情報をセッションに保存してセッションを参照することで認証の確認を行う
上記2通りの方法に分類されると考えられます。
1)の方法だと毎回認証の処理が呼び出されサーバーへの負荷も大きくなりがちなので2)の方法を用いる場合が多いです。
本記事ではセッション管理ライブラリHTTP_Session2を用いて携帯電話からのユーザー認証、会員制ページの作成、セッション管理、デバッグの例についてサンプルを交えながら説明します。
端末IDはキャリアによって呼び名が違います。NTTドコモでは「iモードID」、auでは「EZ番号」、ソフトバンクモバイルでは「端末シリアル番号」と呼ばれておりますが、本記事内では便宜上「端末ID」とします。
ライブラリ名 | 概要 |
HTTP_Session2 | セッションを扱うライブラリ |
Net_UserAgent_Mobile | 携帯電話機種判別、プロパティ取得を行うライブラリ |
Net_IPv4 | IPアドレス、ネットワーク情報をチェックするライブラリ |
上記ライブラリを利用して各機能の実装を説明します。
対象読者
PHPでのWebアプリケーション開発について基本的なことを理解している方を対象とします。
サンプルアプリケーションの概要
本記事で作成するサンプルは、以下の表のとおりです。
ファイル名 | 概要 |
Session.class.php | セッション管理を行うクラス |
config.php | DB接続情報を記述しておくPHP |
insert.php | サンプルで使用するユーサーデータを作成するPHP |
login.php | ログイン、かんたんログインを行う画面を出力するPHP |
index.php | ログイン後の画面を表示するPHP |
image.php | ログイン / 未ログインの状態を判断して画像を表示するPHP |
logout.php | ログアウトを行うPHP |
profile.php | ユーザー情報を変更するPHP |
output_session.php | デバッグ用のPHP |
MySmarty.class.php | Smarty拡張クラス |
Util.class.php | 接続元IPアドレスが携帯キャリアのものかチェックするクラス |
作成するサンプルの概要図は以下のようになります。
動作確認環境
- CentOS 5.3
- Httpd 2.2.14
- PHP 5.3.2
- MySQL 5.1.50
事前準備
ライブラリのインストールは以下のコマンドで行います。「--alldeps」オプションで依存する他のパッケージも同時にインストールします。
# pear install --alldeps HTTP_Session2 # pear install --alldeps Net_UserAgent_Mobile # pear install Net_IPv4