携帯判別

★ブログ移行のお知らせ
サイトを移行しました。以下をクリックください。
きよしの倶楽部 – 生活を潤わす情報を発信中。GTDを得意としてます。


ーーー
まあ、いろいろ方法はあると思うけど、僕は手っ取り早く、libフォルダの下に
mobileFilter.class.phpというファイルを作成して、

isFirstCall()) {

     //
// キャッシュ処理とか携帯向けの色々
//


$agent = $_SERVER['HTTP_USER_AGENT'];
$host = gethostbyaddr($_SERVER['REMOTE_ADDR']);

if(ereg("^DoCoMo", $agent)){
       $context->getUser()->setAttribute('device_type', 'dcm', 'subscriber');
}else if(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent)){
       $context->getUser()->setAttribute('device_type', 'sbk', 'subscriber');
}else if(ereg("^UP.Browser|^KDDI", $agent) && ereg(".+ezweb\.ne\.jp$", $host))
$context->getUser()->setAttribute('device_type', 'au', 'subscriber');
}

       ↑auのパターンはホストをわざわざ逆引きして偽装を確認する例。しなくてもいいか??

// execute next filter
$filterChain->execute();

}
}
}

ってな感じで記載して、apps/config/filters.ymlに

mobileFilter:
class: mobileFilter

を追加。

で、viewで判別する時は

  getAttribute('device_type', '', 'subscriber') == 'au'): ?>
(auの例)

で判断。actionで判別する時は

if ($this->getUser()->getAttribute('device_type', '', 'subscriber') != 'au' ){
(au以外の例)

で判断する。

symfony×PHP [LLフレームワークBooks] (LLフレームワークBOOKS # 3)

symfony×PHP [LLフレームワークBooks] (LLフレームワークBOOKS # 3)

viewがまるきり変わるときは

$this->setTemplate('mobileXXX');

とかして、mobileXXXSuccess.phpでも作っておけばよし。