【Ethnaを使った携帯サイト構築】セッションを保持するために
今、別案件でフレームワークEthna(えすな)を使った携帯向けサイトを構築していますが、そのときに使った携帯でセッションを保持するための処理をメモ。
.htaccessに
php_flag session.use_trans_sid On
を書いてもいいですが(session.use_trans_sidについては前に書いた記事を参考に)、PC向けの画面も同じ階層にいたりするので、PHPで制御するやり方です。
ログインなどでセッションをスタートした後に
output_add_rewrite_var(session_name(), session_id());
を記述して携帯用の共通のコントローラで同じく
output_add_rewrite_var(PHPマニュアル)
を記述すればO.K。
session.use_trauns_sidだけでいけると思ったけどダメだった。環境はPHP5.1.6
例↓
class Ethna_ActionMobileClass extends Ethna_ActionClass {
function authenticate() {
output_add_rewrite_var(session_name(), session_id());
if ( !$this->session->isStart() ) {
return 'login';
}
else {
return null;
}
}
}
output_add_rewrite_var(PHPマニュアル)
は画面のリンクやformに設定した名前と値の組を自動で付加してくれる便利関数。
<?php
output_add_rewrite_var('var', '12345');
echo '<a href="file.php">リンク</a>'
?>
とすると
<a href="file.php?var=12345">リンク</a>
になる。
<2008/09/25>
あと、ethnaだとアクセス元のIPアドレスをチェックしているみたいなので、頻繁に変わる携帯の場合、セッションが切れたり切れなかったりするので、ここを参考にEthna_SessionのisValidをオーバーライドする必要があるみたい。
もしくはcheck remote addressの前に
return true;
を記述する。