RSS | Twitter | Facebook
Home » PHP » セッション : PHP

セッション : PHP

セッションをPHPで利用する際の覚書。

セッションとは

セッション機能は、クライアントのクッキーには、ユーザーを識別する識別番号(セッションID)のみを保持させ、その他の意味のある情報は、識別番号をもとにサーバー側で保持する機能。セッション機能により、クッキーはユーザーの意味のある情報を保持する必要がなくなりセキュリティーが高まる。
※デフォルトではPHPはCookieのPHPSESSIDにセッションIDを持たせる。

セッションを開始

session_start関数

注 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つの状況で分類できる。

  1. ブラウザのCookieが有効な場合
  2. ブラウザの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アプリケーションのセキュリティーについて
とても分かりやすく記載がされている。

このページの上へ移動

  Yahoo!ブックマークに登録    Google  この記事をクリップ!  BuzzurlにブックマークBuzzurlにブックマーク

2008/8/31 日 | PHP, basic | 固定リンク |

コメントはまだありません。

コメントの投稿

改行と段落タグは自動で挿入されます。メールアドレスは表示されません。
利用可能な HTML タグ :
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite="">
<cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

(必須)

(必須)


トラックバックURL

このページの上へ移動