セッション : PHP
セッションをPHPで利用する際の覚書。
セッションとは
セッション機能は、クライアントのクッキーには、ユーザーを識別する識別番号(セッションID)のみを保持させ、その他の意味のある情報は、識別番号をもとにサーバー側で保持する機能。セッション機能により、クッキーはユーザーの意味のある情報を保持する必要がなくなりセキュリティーが高まる。
※デフォルトではPHPはCookieのPHPSESSIDにセッションIDを持たせる。
セッションを開始
注 session_start() は、セッションを作成します。 (もしくは、リクエスト上でGET,POSTまたはクッキーにより渡されたセッションIDセッショ ンに基づき現在のセッションを復帰します)
名前付きのセッションを使用したい場合、 session_start()の前に session_name()をコールする必要があります。
この関数は常に TRUE を返します。
注意: クッキーに基づくセッションを使用している場合、ブラウザに何か出力 を行う前にsession_start()をコールする必要がる。
セッションの初期設定
以下の関数は全てsession_startが呼ばれる前に呼び出す必要がある。
session_name関数
引数を指定せずに呼び出すと現在のセッション名を返す(※デフォルトではPHPSESSID)。
引数を指定して呼び出すと指定した値にセッション名が変更される。
セッション名は、リクエストが開始された際に セッション名に保存された session.name の デフォルト値にリセットされます。よって、各リクエスト毎に(そして session_start() または session_register() をコールする前に) session_name() をコールする必要があります。
session_id関数
引数を指定せずに呼び出すと現在のセッションIDが返される。
引数を指定して呼び出すとその値にセッションIDが設定される。
session_start関数が呼ばれる前に記述する必要がある。
session_save_path関数
現在のセッションデータ保存パスが返される。
デフォルトのセッションデータの保存パスは/tmpでありWindowsの場合C:\tmpになる。
セッションデータに値を設定する方法は、『セッションデータを保存する』の項目を参照。
※セッションID(PHPSESSID)自体はWindowsXpの場合C:\Documents and Settings\USERNAME\Cookiesディレクトリに保存される。
session_set_cookie_params関数
ファイルphp.iniで定義されたクッキーパラメータを設定します。 この関数の効果が持続するのは、スクリプトの実行が終了するまでです。 したがって、リクエスト毎や session_start() がコールされる前に session_set_cookie_params() をコールする必要があります。
セッションデータを保存する
$_SESSION['name'] = $value
※session_save_pathで設定されたパスに作成されるファイルに内容が保存される。
ページ間でのセッションIDの受け渡し
複数のページで同一のセッションを維持するにはページ間でセッションIDを受け渡す必要がある。セッションIDの受け渡しは大きく2つの状況で分類できる。
- ブラウザのCookieが有効な場合
- ブラウザのCookieが無効な場合
Cookieが有効な場合
Cookieによって自動的にセッションIDの受け渡しが行われる。
Cookieが無効な場合
Cookieが無効な場合はsession.use_trans_sidの値によって更に2つの場合に分類される
session.use_trans_sidの値が1の場合
URL Rewriting機能が有効になり、URLのクエリとしてPHPSESSID=セッションIDが自動的に付与される。またHTMLフォームの場合はhiddenによりセッションIDが自動的に渡される。
session.use_trans_sidの値が0の場合
URL Rewriting機能が無効になり自動的にセッションID1が受け渡されることがなくなりコードで明示的に受け渡しを行う。
php.iniの設定
php.iniでセッションに関係設定はセッション処理関数 実行時設定
を参照
セキュリティー関係
session.auto_start
offの場合は、セッションを開始・継続するには明示的にsession_start関数を呼び出さなければならない。onの場合はsession_startが呼ばれなくてもセッションが自動的に開始・継続される。
session.use_cookies
onの場合は、セッションIDの保存先としてクッキーを利用する。
session.use_only_cookies
onの場合は、セッションIDの保存先としてクッキーのみを利用する。
※session.use.only_cookieをonにすると、session.use_trans_sid の設定は意味がないので、session.use_trans_sid はoffにする。
session.use_trans_sid
onの場合、URL Rewriting機能が有効になり、URLのクエリとしてPHPSESSID=セッションIDが自動的に付与される。また、HTMLフォ ームの場合はhiddenによりセッションIDが自動的に渡される。offの場合、URL Rewriting機能が無効になり自動的にセッションID1が受け渡されることがなくなりコードで明示的に受け渡しを行う。
※PHP 4.3.1 以下では、セキュリティーの問題があるためsession.use_trans_sid は有効にしない。
session.refere_check
リファラーが外部からの場合GETからのセッションの取得はおこなわない。
その他
session.cookie_lifetime
session.gc_maxlifetime
session.save_path
参考記事
PHPとWebアプリケーションのセキュリティーについて
とても分かりやすく記載がされている。
コメントはまだありません。
コメントの投稿
改行と段落タグは自動で挿入されます。メールアドレスは表示されません。
利用可能な HTML タグ :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite="">
<cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>