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
>