目的に応じて適材適所で使うPHPライブラリ(11)
WINGSプロジェクト 片渕 彼富 [著] 山田 祥寛 [監修] 2010/10/01 14:00

サンプルファイル 12.43 KB
← 1 2 3 4 5 6 →

セッション更新時のデバッグ

 開発時にセッション更新前後のデータを参照したい場合があると思います。

 その際には.htaccessに以下の設定を記述することでセッション更新画面の前後でPHPを実行し、セッション内容を参照することができます。

.htaccess設定
設定意味
php_value auto_prepend_file [PHPファイル名]対象PHP実行前に呼び出すPHPを指定する
php_value auto_append_file [PHPファイル名]対象PHP実行後に呼び出すPHPを指定する

 サンプルでは以下のように記述してデバッグしました。

リスト15 .htaccess(抜粋)
php_value auto_prepend_file output_session.php
php_value auto_append_file  output_session.php
リスト16 output_session.php
<hr>
<?php
require_once 'Session.class.php';
$ss = & new Session();
var_dump ($_SESSION);
?>
<hr>

 セッション管理クラスを呼び出し、セッションを開始した後にセッション変数「$_SESSION」を参照してセッション内のすべてのキーと値を出力しています。ユーザー名を「鳩山」から「菅」に変更した場合の例が下図になります。

セッション更新時のデバッグ実行例
セッション更新時のデバッグ実行例

 セッション更新の前後で「user_name」の値が変更されていることが分かります。

ログイン / 未ログインの状態に応じてコンテンツを出し分ける例

 image.php内でセッションよりログイン、未ログインの状態を判断して画像を出し分けています。

リスト17 image.php
// セッションクラス
$ss = & new Session();

// ログインしている場合
if($ss->isLogin()){
    header('Content-Type: image/gif');
    readfile('images/member.gif');
}
// 未ログインの場合
else{
    header('Content-Type: image/gif');
    readfile('images/non_member.gif');
}

 index.php内でimage.phpをimgタグで呼び出す際にはsession.use_trans_sidパラメータによるセッション引数の自動付加が行われませんのでセッション管理クラスのメソッドを使って以下のように明示的に記述します。

リスト18 index.php(抜粋)
<img src="image.php?<?php echo $ss->getSessionName(); ?>=<?php echo $ss->getSessionId(); ?>" />

 ログイン、未ログイン時にindex.phpにアクセスすると以下のように画像が表示されます。

ログイン時
ログイン時
未ログイン時
未ログイン時

 セッションを利用するとimage.phpのようにPHP内部でアクセスされた時点での状態を判断してコンテンツを出し分けることができます。

 ヘッダを指定することで画像だけでなく、FLASHやデコメール素材等の出力も可能です。

ログアウト

 ログアウトする場合はセッション管理クラスのセッション破棄メソッドを使ってセッションを破棄しています。

リスト19 logout.php(抜粋)
// セッションクラス
$ss = & new Session();
// セッションの破棄
$ss->destroy();

 logout.php内の「トップ」リンクからindex.phpに遷移すると、前項のimage.phpにより未ログインの場合の画像が表示され、セッション上のユーザーデータがなくなっていることが分かります。

まとめ

 session.use_trans_sidパラメータを利用するとクッキーを利用できない携帯電話ブラウザでもセッションを利用でき、プログラム内で特に意識しなくてもセッションを各画面で利用することができます。

 セッション管理ライブラリHTTP_Session2を利用するとPHPのセッション関連の関数を意識して記述することなく、メソッドの呼び出しのみで比較的容易にセッションを利用したシステムを開発できます。

 最近増えている携帯向けゲームサイトやコミュニケーションサイトの構築に役に立つのではないでしょうか。


プロフィール
WINGSプロジェクト 片渕 彼富 カタフチ カノトミ

WINGSプロジェクトについて>
有限会社 WINGSプロジェクトが運営する、テクニカル執筆プロジェクト(代表 山田祥寛)。海外記事の翻訳から、主にWeb開発分野の書籍・
雑誌/Web記事の執筆、講演等を幅広く手がける。2008年8月時点での登録メンバは25名で、現在も一緒に執筆をできる有志を募集中。執筆に興味のある方は、どしどし応募頂きたい。著書多数


プロフィール
山田 祥寛 ヤマダ ヨシヒロ

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for ASP/ASP.NET。執筆コミュニティ「WINGSプロジェクト」代表。
主な著書に「入門シリーズ(サーバサイドAjax/XMLDB/PEAR/Smarty)」「独習シリーズ(ASP.NET/PHP)」「10日でおぼえる入門教室シリーズ(ASP.NET/PHP/Jakarta/JSP&サーブレット/XML)」「Pocket詳解辞典シリーズ(ASP.NET/PHP/Perl&CGI)」「今日からつかえるシリーズ(PHP/JSP&サーブレット/XML/ASP)」「書き込み式 SQLのドリル」他、著書多数


注目の求人情報
システムエンジニア/オンラインゲーム会社
◇こんな会社です: ・オンラインゲームの企画開発、運営を主な事業としています。自社開発コンテンツ...
システムエンジニア/人材紹介WEBポータル
・UNIX、Linuxベースの開発経験 ・PHP、JAVA、PostgreSQL、MySQLなどの経験2年以上 ・オブジェクト指...
コンサルタント/コンサルティング企業
エクセレントカンパニーを対象とし、全体最適の視点を持ったITのグランド・デザインから構築・運用ま...

(最新日付順)
名前(ゲストの方もコメントをどうぞ):*
アイコン:
なし

内容(テキストのみ1200文字まで):*

投稿規定に同意して

スポンサーサイト

この記事のトラックバックURL: