CakePHP(1.2.1.8004)で携帯サイトを作るためのセッションの設定メモです。
携帯から接続した場合、セッションIDをURLに付加することにします。
そして、認証を行わないと見ることができないページを作るとき、そのページを見るには、基本的に端末IDを送信してもらうことにします。
設定(.htaccess)
セッション関連の基本的な設定をします。
app/webroot/.htaccess 抜粋
php_flag session.use_trans_sid off
php_flag session.use_only_cookies on
php_flag session.use_cookies on
設定(CakePHP)
セッションの設定を行うPHPファイルをapp/config/core.phpで指定します。
Session.cookieも任意に変更します。
app/config/core.php 抜粋
PHP:
-
Configure::write('Session.save', 'sess_pc_mobile');
-
-
Configure::write('Session.cookie', 'sess');
app/configディレクトリにsess_pc_mobile.phpファイルを作成し、次の内容を追加します。
app/config/sess_pc_mobile.php 抜粋
PHP:
-
// cake/libs/session.phpのCakeSession::__initSession()内からインクルードされるファイルです。
-
-
-
// ドコモ端末のみURLにセッションIDを付加するように変更 2009/02/08 20:36
-
if (IS_MOBILE) {
-
if (UAGENT_KIND == UAGENT_DOCOMO) {
-
// ドコモ携帯端末の場合、URLにセッションIDを付加する
-
}
-
else {
-
// ドコモ以外は必要に応じて実装
-
}
-
}
携帯から接続すると、session.use-trans-sidを1に設定して、URLにセッションIDを追加するようにしました。
以上で、携帯で見るページの相対リンクにセッションIDを付加できました。
追記
2009/02/07
ドコモの携帯電話から端末ID(携帯電話製造番号)を送信した場合、セッションが継続されませんでした。
そこで、Session.checkAgentという設定をtrueからfalseに変更してみました。
app/config/bootstrap.php 抜粋
PHP:
-
// 2009/02/08 20:35 ドコモのみユーザーエージェントをチェックしないように変更
-
if (IS_MOBILE) {
-
if (UAGENT_KIND == UAGENT_DOCOMO) {
-
// こうしないとドコモ端末から端末IDを送信したとき、セッションが継続されないようだ
-
Configure::write('Session.checkAgent', false);// falseにしなければならない端末からの接続のときのみ、falseにしたほ\
-
うがよい
-
}
-
else {
-
// ドコモ以外は必要に応じて実装
-
}
-
}
これで、ドコモの携帯電話から端末IDを送信してもセッションが継続されるようになりました。
2009/02/07 20:05
初回の投稿のapp/config/sess_pc_mobile.phpでは、session.use_cookiesをoffにしていました。
しかし、あえてoffにしない方がよかったですoffにすべきではありませんでした。
クッキーを利用できる端末があるので。