PHPに惚れました

今でも多分惚れてます。

PHPで携帯電話からのアクセスかを判別するスクリプト書いた(その3)

前回までのソースを0からファクトリーパターンで書き直したことで拡張性が増した。


ここにはソース全て書ききれないのでスクリプトの詳細な解説は省きます。
ソースのDL:夢幻

下準備

2つのPEARパッケージのインストールが必要です。
インストールされてない方はインストールして下さい。

変更点

    • ファクトリーパターンで0から書き直した。
    • Net_UserAgent_Mobileで取得出来る端末情報が取り出せるようになった。

利用方法

<?
include_once("CheckMobile.php");

try {
    $mb = CheckMobile::factory();
} catch (CheckMobile_Exception $e) {
    var_dump($e->getMessage());
    exit();
}

if($mb->Check()===TRUE){
  print"携帯からのアクセスです";
  $mb->getObject()->getUID();   //個体識別番号
  if($mb->getObject()->isEZweb()){
    print "auからのアクセスです";
  }else{
    print "その他機種からのアクセスです";
  }
}else{
  print"携帯以外からのアクセスです";
}

$mb->GetDoctype();
$mb->GetHtmlTags();
$mb->GetContentType();

?>

メソッド解説

static object factory()

ユーザーエージェントによる簡易的な機種判別をします。

object getObject()

携帯端末の情報が入ったオブジェクトを取得できます。
メソッドはこちらを参照してください
Net_UserAgent_Mobile
http://pear.php.net/package/Net_UserAgent_Mobile/docs

bool Check()

IPアドレス帯域でより厳格な判別を行います。
携帯ならばTrueが返りそれ以外ならFalseが返ります。

String GetDoctype();

各機種に対応したXHTML1.0
準拠のドキュメントタイプが返されます
auの場合、

<!DOCTYPE html PUBLIC \"-//OPENWAVE//DTD XHTML 1.0//EN\" \"http://www.openwave.com/DTD/xhtml-basic.dtd\" />

となります。

String GetHtmlTags();

各機種に対応したXHTML1.0
準拠のHTMLタグが返されます
auの場合、
<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"ja\" xml:lang=\"ja\" />
となります。

String GetContentType(String 文字コード);

各機種に対応したXHTML1.0
準拠のコンテントタイプが返されます。
auの場合、
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Shift-JIS\" />
となります。

第一引数に文字コードを指定できます。
デフォルトはShift−JISです。
携帯以外の場合は文字コードがデフォルトでUTF-8がセットされます