ログインが必要なケータイサイトではほぼ必須となる、端末情報を使った「かんたんログイン」ですが、Web上にはあまり良い情報がないようです。
そこで、実際に動いてすぐ使えるような、PHPによる3キャリア対応かんたんログインのサンプルプログラムを作ってみました。
※かんたんログイン機能は、セキュリティ上の危険が指摘されています。
ご利用には十分お気をつけください。
(コメント欄に補足事項を記載しておきますので参考にしてください)
サンプルの機能
ログイン画面、 新規登録画面、 ログイン後(マイページ)画面



かんたんログインとは?
プログラムを紹介する前に、かんたんログインについて軽く説明します。
かんたんログインとは、ケータイ端末から契約情報や製造番号をサイトに送信し、それを使ってログインするプログラムの総称です。
ユーザ名やメールアドレス、パスワードなどを入力せずワンタッチでログインできますので、文字が打つのが大変なケータイ環境ではとても重宝されます。
今回は端末情報として、「ドコモ:iモードID、au:EZ番号、ソフトバンク:x-jphone-uid」を使って認証を行います。
各種端末IDについては、以前書いたこちらの記事で詳しく説明しています。
→ ke-tai.org ケータイの端末ID・ユーザIDの取得についてまとめてみました [ke-tai.org]
動作条件と設置の流れ
動作に必要な条件:
- PHP 5系が動くこと
- MySQLが動くこと
- .htaccessが動くこと
※DB接続にはPDO、端末情報の取得にはPEAR::Net_UserAgent_Mobileを利用しています。
※.htaccessはケータイからのセッションを使うためとアクセス元制限に利用しています。
設置の流れとしては次の通りです。
- プログラム一式をダウンロードする
- MySQLにデータベース「login_db」を作成する
- 「users.sql」を元にテーブル「users」を作成する
- プログラム一式をアップロードする
- PEARのNet_UserAgent_Mobileが入っていないのであればインストールもしくはアップロードする
かんたんログインサンプルの設置
1. プログラム一式をダウンロードします
こちらからダウンロードしてください。
→ ke-tai.org かんたんログイン サンプルプログラム (ver1.0) [ke-tai.org]
2. MySQLにデータベース「login_db」を作成します
3. テーブル「users」を作成します。
作成方法はあまりに基礎的な内容のためここでは紹介しません。
不慣れな方はphpMyAdmin上から作ると便利でしょう。
4. プログラムをアップロードします
設置は次のように行います。
設置先は仮で「login」フォルダとします。必要に応じて適宜変更してください。
login/
├ .htaccess ケータイからセッションを使うための設定ファイル
├ common.php 共通関数
├ login.html ログイン画面テンプレートHTML
├ login.php ログイン画面PHP
├ mypage.html マイページテンプレートHTML
├ mypage.php マイページPHP
├ new.html 新規登録テンプレートHTML
├ new.php 新規登録PHP
├ users.sql テーブル作成用SQL(※こちらはアップの必要はありません)
└ Net PEAR::Net_UserAgent_Mobile(※インストールされてない場合のみ)
└ UserAgent [以下略]
PEAR::Net_UserAgent_Mobileは、サーバにインストールを行います。
レンタルサーバなどでインストール出来ない場合は、こちらからダウンロードを行い、上記(loginフォルダの下にNet/UserAgent/・・・)のようにアップロードします。
→ PEAR Net_UserAgent_Mobile Download [pear.php.net]
5. パスワードを変更する
データベースに接続するユーザ名、パスワードはデフォルトでroot:rootになっています。
common.phpの以下の部分(44行目付近)を環境に合わせて変更してください。
/**
* DB接続
*
* データベースに接続する
*
* @return class PDO接続クラス
*/
function dbConnect()
{
// データベースの設定
$db_host = 'localhost'; // 接続サーバ
$db_name = 'login_db'; // 接続DB名
$db_user = 'root'; // 接続ユーザ名
$db_pass = 'root'; // 接続パスワード
6. 動作確認を行う
ケータイからアップロードしたサイトの「login/login.php」にアクセスすれば、かんたんログイン登録が行えるはずです。
※PCからはアクセスできません。
※端末ID通知がオフの場合は登録できません。
プログラム解説
キモとなるのは端末のユーザID取得とセッション管理の部分だけです。
端末ユーザIDの取得は次のようにして行っています。
この情報は個人情報となりますので、暗号化して格納した上で方が良いでしょう。
($salt_stringの値には必要に応じてランダムな文字列をセットしてください)
/**
* ユーザID取得
*
* ケータイのユーザID(契約に紐付くID)を取得する
*
* @return string ユーザID文字列
*/
function getPhoneUserId()
{
// PEAR::Net_UserAgent_Mobileの読み込み
require_once('Net/UserAgent/Mobile.php');
// インスタンスを生成
$agent = Net_UserAgent_Mobile::singleton();
// ユーザID取得
$uid = $agent->getUID();
// 暗号化
if ($uid != '') {
$salt = 'salt_string';
$uid = md5($uid . $salt);
}
return $uid;
}
なお、かんたんログイン機能で最も重要なのは、ケータイからのみアクセスを許可することです。(PCからの接続は不可とする)
PCからだと端末ユーザIDはいくらでも詐称できてしまいます。
必ずケータイからのみアクセス許可としましょう。
アクセス制限は.htaccess内で行っていますが、簡易版となっています。
各キャリアのページや下記のページを参考にして、常に最新のキャリアIPアドレス帯域を指定することをオススメします。
→ ke-tai.org ケータイキャリア・クローラIPアドレス [ke-tai.org]
※追記
可能であるなら上記のアクセス制限に加え、接続元IPアドレスとユーザエージェントを照らし合わせ、同一キャリアであることも確認した方がより良いようです。詳しくはコメント欄をご覧ください。
セッションに関しては、上記で取得したユーザIDをセッション変数に格納することでログイン状態としています。
ケータイからセッションを維持するため、.htaccessで次のように設定しています。
php_flag session.use_trans_sid On
php_flag session.use_cookies On
セッションに関してはセキュリティ上の問題も絡みますので、ここでは詳しく解説しませんが、下記の記事(コメント欄も参考になります)を参照してください。
→ ke-tai.org PHPでケータイからセッションを使う場合の設定方法 [ke-tai.org]
その他
- 本プログラムはかんたんログインの学習用を目的とした簡易的なものとなっています。必要に応じて機能を追加しご利用ください。(こちらではこれ以上の機能追加の予定はありません)
- プログラムに不備がありましたら、すぐ修正しますのでご指摘ください。
- お問い合わせ・サポートは原則いたしませんが、フォーラムに書き込むと回答が得られるかもしれません。
- 重要と思われる情報は下記コメント欄に転載するようにします。あわせてご覧の上でご利用ください。
関連: