【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;
を記述する。