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:
  1. Configure::write('Session.save', 'sess_pc_mobile');
  2.  
  3. Configure::write('Session.cookie', 'sess');

app/configディレクトリにsess_pc_mobile.phpファイルを作成し、次の内容を追加します。

app/config/sess_pc_mobile.php 抜粋
PHP:
  1. // cake/libs/session.phpのCakeSession::__initSession()内からインクルードされるファイルです。
  2.  
  3. ini_set('session.name', Configure::read('Session.cookie'));
  4. ini_set('session.cookie_lifetime', $this->cookieLifeTime);
  5. ini_set('session.cookie_path', $this->path);
  6. ini_set('session.auto_start', 0);
  7. ini_set('session.save_path', TMP . 'sessions');
  8. ini_set('session.use_cookies', 1);// onにする。(追記2009/02/08)
  9.  
  10. // ドコモ端末のみURLにセッションIDを付加するように変更 2009/02/08 20:36
  11. if (IS_MOBILE) {
  12.   if (UAGENT_KIND == UAGENT_DOCOMO) {
  13.     // ドコモ携帯端末の場合、URLにセッションIDを付加する
  14.     ini_set('session.use_trans_sid', 1);
  15.     ini_set('session.use_only_cookies', 'Off');
  16.   }
  17.   else {
  18.     // ドコモ以外は必要に応じて実装
  19.   }
  20. }

携帯から接続すると、session.use-trans-sidを1に設定して、URLにセッションIDを追加するようにしました。

以上で、携帯で見るページの相対リンクにセッションIDを付加できました。

追記

2009/02/07

ドコモの携帯電話から端末ID(携帯電話製造番号)を送信した場合、セッションが継続されませんでした。

そこで、Session.checkAgentという設定をtrueからfalseに変更してみました。

app/config/bootstrap.php 抜粋
PHP:
  1. // 2009/02/08 20:35 ドコモのみユーザーエージェントをチェックしないように変更
  2. if (IS_MOBILE) {
  3.   if (UAGENT_KIND == UAGENT_DOCOMO) {
  4.     // こうしないとドコモ端末から端末IDを送信したとき、セッションが継続されないようだ
  5.     Configure::write('Session.checkAgent', false);// falseにしなければならない端末からの接続のときのみ、falseにしたほ\
  6. うがよい
  7.   }
  8.   else {
  9.     // ドコモ以外は必要に応じて実装
  10.   }
  11. }

これで、ドコモの携帯電話から端末IDを送信してもセッションが継続されるようになりました。

2009/02/07 20:05

初回の投稿のapp/config/sess_pc_mobile.phpでは、session.use_cookiesをoffにしていました。
しかし、あえてoffにしない方がよかったですoffにすべきではありませんでした。
クッキーを利用できる端末があるので。

リンク

Tags: , , , ,

コメントをどうぞ