SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

目的に応じて適材適所で使うPHPライブラリ

PHPで作成する携帯会員サイトの基本

目的に応じて適材適所で使うPHPライブラリ(11)


  • X ポスト
  • このエントリーをはてなブックマークに追加

ダウンロード sample.zip (14.7 KB)

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

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

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

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

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

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

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

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

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

サンプルではパスワードも同時に変更しておりますが、実際のシステム開発ではパスワード変更前に現在のパスワードでの認証画面を設ける等の対応を行うべきです。

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

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

リスト21 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パラメータによるセッション引数の自動付加が行われませんのでセッション管理クラスのメソッドを使って以下のように明示的に記述します。

リスト22 index.php(抜粋)
$smarty->assign("SessionName", $ss->getSessionName());
$smarty->assign("SessionId", $ss->getSessionId());
リスト23 index.tpl(抜粋)
<img src="image.php?{$SessionName}={$SessionId}" />

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

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

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

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

ログアウト

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

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

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

まとめ

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

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

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

修正履歴

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
目的に応じて適材適所で使うPHPライブラリ連載記事一覧

もっと読む

この記事の著者

山田 祥寛(ヤマダ ヨシヒロ)

静岡県榛原町生まれ。一橋大学経済学部卒業後、NECにてシステム企画業務に携わるが、2003年4月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト」代表。主な著書に「独習シリーズ(Java・C#・Python・PHP・Ruby・JSP&サーブレットなど)」「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravelなど)」「改訂3版JavaScript本格入門」「これからはじめるReact実践入門」「はじめてのAndroidアプリ開発 Kotlin編 」他、著書多数

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

WINGSプロジェクト 片渕 彼富(カタフチ カノトミ)

WINGSプロジェクトについて>有限会社 WINGSプロジェクトが運営する、テクニカル執筆コミュニティ(代表 山田祥寛)。主にWeb開発分野の書籍/記事執筆、翻訳、講演等を幅広く手がける。2018年11月時点での登録メンバは55名で、現在も執筆メンバを募集中。興味のある方は、どしどし応募頂きたい。著書記事多数。 RSS X: @WingsPro_info(公式)、@WingsPro_info/wings(メンバーリスト) Facebook

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/5430 2010/10/18 14:50

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング