Re:

のあんのブログ

タグ:CodeIgniter

ケータイサイトを作る上で認証として欠かせないのが端末ID(UID)です。

フレームワークにCodeIgniterを利用するしない問わず、静的URLでサイトを構築しているとdocomoのUID送出に必要なパラメータで悩まされます。

動的URLにするしかありません(きっと)。

おまけに、Cookieに対応していない端末だとセッションも毎回変わってしまいお手上げです。なので、

session.use_trans_sid = 1
session.use_cookie = 0

とphp.iniまたはini_set()し、相対パスにsessionが付くように変更したりしなかったりです。


viewやcontrollerなどに動的URLを記述するのも気持ち悪いので、Config.phpコアを継承する形をとり、libraries/MY_Config.phpを作ってsite_url()メソッドをオーバーライドし、第2引数にフラグを渡して出力を切り替える拡張を行います(個人的な対応案です)。

もちろん、configでenable_query_string = TRUEとなっていれば動的に出力し、FALSEなら何も行わない。


PHPのフレームワークには、CodeIgniterがシンプルでいいと思うんですけどねー。

ActiveRecodeも使いやすいですし、必要十分って気がします!

静的なURLで何も考えずに作っていたところ、UIDが取れないって問題が起こってようやく気づきました。

なんてこったい。

当たり前のことが当たり前に作れなくなっています。

これはプログラム以前に問題だ。

あああ。


CodeIgniterを使っており、解決策を考えたところで動的URLにする以外に選択肢はなさそうなので、設定を変えつつdocomoの場合にのみ対応することにした。

application/config/config.php

$config['enable_query_strings'] = TRUE;
$config['controller_trigger']     = 'c';
$config['function_trigger']     = 'm';

とりあえずこの設定で動的URLでも動作するようになるらしい。

たとえば

controllerがuserでmethodがregistの静的URLである/user/registは、/?c=user&m=registとして動作する。


あとはどのタイミングでURLを動的に変えるか。


HTMLが出力される時点で動的なURLになってて欲しい場合もあれば、処理を加えた後にリダイレクトする時点で動的URLになってて欲しい場合もある。

コアクラスのCI_Config.php、URLヘルパのurl_helper.phpあたりを継承か置換して使いやすくすれば良いかもしれない。



開発仕様には悩まされる日本のケータイ事情ですな。

↑このページのトップヘ