decoy
youtu****@gmail*****
2008年 6月 8日 (日) 14:15:34 JST
decoyです。
> 安藤さん、kunitsujiさん、Kenjiさん
いろいろと御教授頂き有難う御座います。
kunitsujiさんとKenjiさんのアドバイスを基に実装出来ました。
・system/application/libraries/MY_Controller.phpを作成
・そのコントローラのコンストラクタでsystem/application/config/config.phpに記載した$config['fake_user_agent']の値を取得する
・$config['fake_user_agent']の値が取得出来なかった場合は$_SERVER['HTTP_USER_AGENT'];の値を使用
・そのコントローラのコンストラクタでNet_UserAgent_Mobile(My_UserAgent_Mobile)をロードする
・以後、作成するコントローラを本来はextends Controllerとするところをextends
MY_Controllerとする
このようにすることで実装出来ました。
有難う御座います。
> Net_UserAgent_Mobileはクライアントの指定で使わざるを得ないのでしょうか?
> 一応、CIの日本語版パッチでは、日本のモバイルを配慮して、UserAgentを追加していますが。
> そのままでも、PCとモバイルの表示切替などが行えるような状態ではあります。
> あとは、Net_UserAgent_Mobileで何をしたいかでしょうか。
> キャリア判定だけなら特に必要はないですし。
> 接続端末別のこまかな情報を取得したいということであれば、Net_UserAgent_Mobileは重要ですね。
> ただし、メンテナンスが。。。^^;
Net_UserAgent_Mobileでやろうとしていた事としましては
ディスプレイのサイズ取得や携帯固有番号の取得ですね。
メンテナンスが面倒になるのは仕方がないなと思っています。
> 基本的な話ですが、PEARなどのライブラリとCIが疎な関係に保つことを
> 重視した設計がいいとされます。必要以上にリソースを占有しないなどの設計志向ですか。
> 結論から書くと、PEARのライブラリも疎に扱った方がよいかと思います。
> 基本的に、CIのUserAgentで判断し、クライアントに見てもらうときだけ、
> コメントアウトなどしてバイパスすればいいのではないでしょうか?
CIのユーザエージェントクラスだけで足りるのであればそうすべきだと思います。
> あとは、偽装してテストするときにということですが、
> それって携帯UA以外は排除するということでしょうか?
> 携帯専門サイトということですかね?それをUAで判定していて、テスト時にはその判定をスキップしたいということですか?
はい、そのとおりです。
ついでに言うと本番運用時にはもちろんUA判定の前にIPアドレスによるフィルタリングをかけます。
> config.php にそれ用の設定項目を追加して、
> $config['fake_user_agent'] = 'DoCoMo/...';
> コンストラクタでは、その設定項目を読み込み、
> $this->load->config('fake_user_agent');
> 値があれば、それを UA とするような処理をしたら
> いかがでしょうか?
確認ですがこの場合、$this->load->config('fake_user_agent');ではなく、
$this->config->item('fake_user_agent');ですよね?
//decoy