2008年05月21日

CodeIgniter その2

携帯端末向けのセッションをどうするか色々悩んだが、結局今のところは以下のようになった。

NG Session の実装をベースに
日本CodeIgniterユーザ会の記事の内容を移植した
・Config.php を継承した MY_Config.php を作成して site_url をオーバーライド
・USER_AGENT は先頭50文字を記録するのではなく、先頭512文字のmd5値を保存するようにした

以下こうなった経緯など。

どうせサーバサイドにデータを抱えることになるなら一貫した仕組みの方がエレガントかな、と思ったので NG Session を使うことに。
ほぼデータベースモード専用。

GETリクエストとしてセッションデータを送るアイディアは結局取り止め。OpenID 認証を併用した場合、GETリクエストとしてリダイレクトされるので相性がよくなさそうだったから(一応クッキーが無効の状態のPCブラウザを考慮しているつもり)。
その他 mod_rewrite を使って環境変数にセッションIDを突っ込むとか考えてはみたけど現状の方法が一番無難そうなので特に珍しいことはやらなかった。

URL に現れるセッションIDは sid0123546789abcdef0123546789abcdef のように先頭に sid を付加しただけのものにした。
URI ルーティングはこんな感じに。

$route['(.*)/sid[0123456789abcdef]{32}$'] = "$1";
$route['^sid[0123456789abcdef]{32}$'] = $route['default_controller'];

全体を通してみても別に難しいことをやったわけでもないので、特にダウンロードするようなコンテンツは無し。

改造した結果 site_url() の挙動が変わったため、例えば site_url()."images/foobar.jpg" のようにただ画像ファイルへのフルパスを動的に生成するためのコードは動かないURLが生成されることがあるので、 base_url()."images/foobar.jpg" のように site_url() と base_url() の適切な使い分けが必要になった。

USER_AGENT の変更はまあ50文字しか見ないよりは全部見た方がいい気がしたので変更した。
CPU負荷が若干増えるしやらなくてもこれと言って問題になることはないと思うので好みの問題かも。

CodeIgniter 自体触り始めたばかりなので構造的に問題ないか不安になりつつも結局ゴリゴリ弄っている。躊躇せずに弄れるぐらいに構造がシンプルなのは素敵。
posted by oov at 10:44| Comment(0) | TrackBack(0) | プログラム | このブログの読者になる | 更新情報をチェックする
この記事へのコメント

この記事へのトラックバック