ケータイサイトでの認証とかについて 実装「セッション」編
ページごとにセッションを使うかどうかを一括してコントロールしたいので初期実行ファイル(init.php)でセッションを使うページを配列として定義する。
セッション管理をするためのクラス(Session.class.php)で、実行ファイル(メインスクリプト)の判定処理とセッション制御処理を挿入する。
セッションを有効にするページ以外にアクセスしてもsession_start()は呼ばれないので、検索エンジンのクローラのアクセスにセッションidが取り込まれることがなくなる。
- init.php
<?php /* * セッションを有効にするスクリプトの定義 */ static $__SESSION_CLASS_CONTROL__ = array( 'commentEntry.php', 'delete.php', 'detail.php', 'registAndJump.php', 'sharedCheck.php', 'top.php', 'viewfile.php' ); include_once('Session.class.php'); /* * セッションを有効にするページでは * セッションの再生成をおこなってSessionIDを書換える */ if ( __IS_SESSION_CLASS_CALLED__ ) { if ( isset($_SESSION) ) sessionRegenerate(); } ?>
- Session.class.php の冒頭部分
<?php /* -*-java-*- */ /* * セッションの有効無効を管理するには * 定数配列 __SESSION_CLASS_CONTROL__ にスクリプト名を代入する * この定数が宣言されていなければ、これまで通りに使用できる。 */ if ( isset( $__SESSION_CLASS_CONTROL__ ) ) { if ( in_array( basename($_SERVER['SCRIPT_FILENAME']), $__SESSION_CLASS_CONTROL__ ) ) { define('__IS_SESSION_CLASS_CALLED__', TRUE ); } else { define('__IS_SESSION_CLASS_CALLED__', FALSE ); } } else { define('__IS_SESSION_CLASS_CALLED__', TRUE ); } /* * セッション有効の場合だけ、session_start()する。 */ if ( __IS_SESSION_CLASS_CALLED__ ) { session_start(); } ?>