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