2010年11月13日土曜日

 

【PHP】携帯でセッション【モバイル】

第5回 携帯サイトでセッションを取り扱う - gihyo.jp > 初めての携帯サイト構築
携帯でuse_trans_sidを使ったセッションの扱い 前編 - 携帯サイトをつくろう。
PHPでケータイからセッションを使う場合の設定方法 - ke-tai.org

リンクの内容は大体同じです。

方針

・Cookie未対応の携帯(Docomoとか)を考慮してURLにセッションIDを付加する
・セッションIDはアクセスごとに変更する

セッションの設定

「.htaccess」で設定する場合
php_flag session.use_only_cookies Off
php_flag session.use_trans_sid On
「php.ini」で設定する場合
session.use_only_cookies= 0
session.use_trans_sid = 1
PHPファイルで設定する場合

コードの一番最初に記述します(「session_start()」より前)。

ini_set('use_only_cookies' , '0');
ini_set('session.use_trans_sid', '1');

セッションIDの再生成

続いて、PHPのコードは以下のようにします。
これによりセッションののっとりを防ぎます。

PHP5の場合
session_start();
session_regenerate_id(true);
PHP4の場合
session_start();
// セッションを退避
$sess_tmp = $_SESSION;

session_destroy();
// セッションIDを再生成
session_start();
session_regenerate_id();
// セッションを元に戻す 
$_SESSION = $sess_tmp;

ini_set(‘session.use_trans_sid’, 1)とすると全てのフォームもリンクもセッションIDを付加してくれるが、URLをhttp://~の絶対パスで記述すると付加してくれません。外部サーバは不可。
同様にSSLを使ってhttp://~とhttps://~を行き来することも出来ません。サイトの全てをどちらかで作る必要が有ります。

今日のメモ「携帯におけるセッションとセキュリティ(PHP)」 - -OASIS-
携帯電話向けWebアプリのセッション管理はどうなっているか - ockeghem(徳丸浩)の日記

session_regenerate_id()」を使うと通信が途切れたり、戻るボタンでセッションが継続出来ないデメリットも有ります。
その場合、セッションIDの再発行は行わず、Zend FrameworkやPEAR::Net_UserAgent_Mobileで判別して、Cookieが使えない場合は上記の方法を取ります。

ラベル: ,


コメント: コメントを投稿

登録 コメントの投稿 [Atom]



この投稿へのリンク:

リンクを作成



<< ホーム

This page is powered by Blogger. Isn't yours?

登録 投稿 [Atom]

Google