Kenichi Ando
neo.k****@gmail*****
2008年 1月 11日 (金) 17:58:26 JST
bossamaです。 早速ですが、アクセスカウンターのようなサンプルプログラムを 作って携帯でのセッションの指針を図りたいと考えます。 CIで普通に作ると、次のようになりますかね。 controllers/session.php <?php class Session extends Controller { function Session() { parent::Controller(); $this->load->library('session'); $this->load->helper('url'); } function index() { if (!$this->session->userdata('conut')) { $this->session->set_userdata('conut', 1); } else { $count = $this->session->userdata('conut'); $count++; $this->session->set_userdata('conut', $count); } echo 'セッションID:' . $this->session->userdata('session_id') . '<br>'; echo '訪問回数:' . $this->session->userdata('conut') . '<br>'; echo anchor('session', '再読み込み'); } } ?> パソコンのブラウザでは正常にカウンターが追加されていきます。 しかし携帯では一切動きません。セッションIDも毎回新しく なります。当然ですよね。クッキーに保存できないからです。 携帯でお試しください。 http://codeigniter.jp/mobile/session そこで昔からある方法を載せていきます。 <?php session_start(); if (!isset($_SESSION['count'])) { $_SESSION['count'] = 0; } $_SESSION['count']++; echo 'セッションID:' . session_id() . '<br>'; echo '訪問回数:' . $_SESSION['count'] . '<br>'; echo '<a href="session.php?' . session_name() . '=' . strip_tags(session_id()) . '">再読み込み</a>'; ?> これだと、PC、モバイル両方で完璧に動きます。 http://codeigniter.jp/session.php たぶん、携帯サイトが発展した、日本CIユーザ会の独自テーマにできるのでは ないかなぁ、なんて思っています。 方法はいくらかありますが、シンプルに行きたいなと思います。 //bossatama 08/01/10 に Kenichi Ando<neo.k****@gmail*****> さんは書きました: > bossatamaです。 > > TIPSなどが滞っているのと、自分自身がそろそろ業務でCIを使い始めたいなぁ > という思いもあり、問題を投げかけてみます。 > > 会員制のモバイルサイトをCIでどう構築したら良いのか? > という重い問題を提起します(笑) > > PHPセッション通常ですと、 > > Mypage.php?sessid=セッションID > みたいなセッションIDの尾びれ引っ張り回します。 > このやり方が、モバイルサイトの常套手段ではないのかなぁと > 思います。 > <a>タグのリンクも同様に?を付けてセッションIDを付加させて > おきます。 > > CakePHPでは、 > > <a herf="/m/mobile/auth?<?php eho h(CAKE_SESSION_COOKIE); ?>= > <?php echo h(session_id(); ?>"リンク名</a> > > みたにできるみたいです。 > > ところが、CIでは、?のようなURIは標準では使えません。 > (クエリ文字ベースアプローチ) > 標準のURIルーティング定義としても難しいのではないでしょうか。 > > さて、どのように解決していきましょうかね。 > > 参考Wiki > http://codeigniter.com/wiki/PHPSession/ > > > //bossatama >