<?php
include_once $_SERVER['DOCUMENT_ROOT'] . '/include/shared-manual.inc';
$TOC = array();
$TOC_DEPRECATED = array();
$PARENTS = array();
include_once dirname(__FILE__) ."/toc/refs.basic.session.inc";
$setup = array (
  'home' => 
  array (
    0 => 'index.php',
    1 => 'PHP Manual',
  ),
  'head' => 
  array (
    0 => 'UTF-8',
    1 => 'ja',
  ),
  'this' => 
  array (
    0 => 'book.session.php',
    1 => 'Sessions',
    2 => 'セッション処理',
  ),
  'up' => 
  array (
    0 => 'refs.basic.session.php',
    1 => 'セッション関連',
  ),
  'prev' => 
  array (
    0 => 'refs.basic.session.php',
    1 => 'セッション関連',
  ),
  'next' => 
  array (
    0 => 'session.setup.php',
    1 => 'インストール/設定',
  ),
  'alternatives' => 
  array (
  ),
  'source' => 
  array (
    'lang' => 'ja',
    'path' => 'reference/session/book.xml',
  ),
  'history' => 
  array (
  ),
  'extra_header_links' => 
  array (
    'rel' => 'alternate',
    'href' => '/manual/en/feeds/book.session.atom',
    'type' => 'application/atom+xml',
  ),
);
$setup["toc"] = $TOC;
$setup["toc_deprecated"] = $TOC_DEPRECATED;
$setup["parents"] = $PARENTS;
manual_setup($setup);

contributors($setup);

?>
<div id="book.session" class="book">
 
 <h1 class="title">セッション処理</h1>
 

 
 <div id="intro.session" class="preface">
  <h1 class="title">はじめに</h1>
  <p class="para">
   PHPのセッションサポート機能は、複数回のアクセスを通じて特定のデータを保持する手段を実現するものです。
  </p>
  <p class="para">
   Web サイトの訪問者にはセッションIDというセッションIDと呼ばれるユニークなIDが割りつけられ
   ます。このIDは、ユーザー側にクッキーとして保存するか、または、URL
   に埋め込みます。
  </p>
  <p class="para">
   セッションサポート機能により、スーパーグローバル配列
   <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var>
   を使ってリクエスト間でデータを格納できるようになります。
   来訪者がサイトにアクセスした際、
   PHP は特定のセッションIDがリクエストとともに送信されているかどうかを
   (<a href="session.configuration.php#ini.session.auto-start" class="link">
    <code class="literal">session.auto_start</code></a>が1の場合は)自動的に、または
   (<span class="function"><a href="function.session-start.php" class="function">session_start()</a></span> により明示的な)
   要求を受けて確認します。
   このIDが送信されている場合には、以前保存された変数が再現されます。
  </p>
  <div class="caution"><strong class="caution">警告</strong>
   <p class="para">
    <a href="session.configuration.php#ini.session.auto-start" class="link">session.auto_start</a>
    をオンにした場合にオブジェクトをセッションに代入する唯一の方法は、
    クラスの定義を
    <a href="ini.core.php#ini.auto-prepend-file" class="link">auto_prepend_file</a>
    でロードしておき、オブジェクトを
    <span class="function"><a href="function.serialize.php" class="function">serialize()</a></span> したうえで後で
    <span class="function"><a href="function.unserialize.php" class="function">unserialize()</a></span> することです。
   </p>
  </div>
  <p class="para">
   <var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> (およびそこに登録されたすべての変数)
   は、リクエストが終了したときに PHP が内部的にシリアライズします。
   シリアライズの方式として、ini 設定
   <a href="session.configuration.php#ini.session.serialize-handler" class="link">session.serialize_handler</a>
   で指定したハンドラを使います。
   未定義の登録変数は、未定義としてマーク付けされます。
   これらの変数は、後でユーザーが定義しない限り、以降のアクセスにおいて
   セッションモジュールにより定義されません。
  </p>
  <div class="warning"><strong class="warning">警告</strong>
   <p class="para">
    セッションデータはシリアライズされるので、
    <span class="type"><a href="language.types.resource.php" class="type resource">resource</a></span> 型の変数はセッションに格納できません。
   </p>
   <p class="para">
     シリアライズハンドラ (<code class="literal">php</code>
     および <code class="literal">php_binary</code>) は、register_globals
     の制約を引き継いでいます。
     そのため、数値のインデックスや特殊文字 (<code class="literal">|</code>
     や <code class="literal">!</code>) を含む文字列のインデックスは使えません。
     これらを使っていると、スクリプトのシャットダウン時にエラーが発生します。
     <code class="literal">php_serialize</code> には、そのような制約はありません。
   </p>
  </div>
  <blockquote class="note"><p><strong class="note">注意</strong>: 
   <p class="para">
    セッションを処理している時、
    スーパーグローバル配列<var class="varname"><a href="reserved.variables.session.php" class="classname">$_SESSION</a></var> へ新しいキーを
    追加して変数が登録されるまで、
    セッションのレコードは作成されないことに注意してください。
    これは、セッションが
    <span class="function"><a href="function.session-start.php" class="function">session_start()</a></span>
    関数により開始されている場合でも当てはまります。
   </p>
  </p></blockquote>
 </div>
 

 









 








 









 









 







 









 





 






 





 






<ul class="chunklist chunklist_book"><li><a href="session.setup.php">インストール/設定</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="session.requirements.php">要件</a></li><li><a href="session.installation.php">インストール手順</a></li><li><a href="session.configuration.php">実行時設定</a></li></ul></li><li><a href="session.constants.php">定義済み定数</a></li><li><a href="session.examples.php">例</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="session.examples.basic.php">基本的な使用法</a></li><li><a href="session.idpassing.php">セッションIDの受渡し</a></li><li><a href="session.customhandler.php">カスタムセッションハンドラ</a></li></ul></li><li><a href="session.upload-progress.php">セッションのアップロード状況</a></li><li><a href="session.security.php">セッション と セキュリティ</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="features.session.security.management.php">セッション管理の基礎</a></li><li><a href="session.security.ini.php">セッションに関連する INI 設定をセキュアにする</a></li></ul></li><li><a href="ref.session.php">セッション関数</a><ul class="chunklist chunklist_book chunklist_children"><li><a href="function.session-abort.php">session_abort</a> — session 配列の変更を破棄してセッションを終了する</li><li><a href="function.session-cache-expire.php">session_cache_expire</a> — 現在のキャッシュの有効期限を取得/設定する</li><li><a href="function.session-cache-limiter.php">session_cache_limiter</a> — 現在のキャッシュリミッタを取得または設定する</li><li><a href="function.session-commit.php">session_commit</a> — session_write_close のエイリアス</li><li><a href="function.session-create-id.php">session_create_id</a> — 新しいセッションIDを作成する</li><li><a href="function.session-decode.php">session_decode</a> — セッションエンコードされた文字列からセッションデータをデコードする</li><li><a href="function.session-destroy.php">session_destroy</a> — セッションに登録されたデータを全て破棄する</li><li><a href="function.session-encode.php">session_encode</a> — 現在のセッションデータを、セッションエンコードされた文字列に変換する</li><li><a href="function.session-gc.php">session_gc</a> — セッションデータのガベージコレクションを実行する</li><li><a href="function.session-get-cookie-params.php">session_get_cookie_params</a> — セッションクッキーのパラメータを得る</li><li><a href="function.session-id.php">session_id</a> — 現在のセッション ID を取得または設定する</li><li><a href="function.session-module-name.php">session_module_name</a> — 現在のセッションモジュールを取得または設定する</li><li><a href="function.session-name.php">session_name</a> — 現在のセッション名を取得または設定する</li><li><a href="function.session-regenerate-id.php">session_regenerate_id</a> — 現在のセッションIDを新しく生成したものと置き換える</li><li><a href="function.session-register-shutdown.php">session_register_shutdown</a> — セッションのシャットダウン関数</li><li><a href="function.session-reset.php">session_reset</a> — session 配列を元の値で再初期化する</li><li><a href="function.session-save-path.php">session_save_path</a> — 現在のセッションデータ保存パスを取得または設定する</li><li><a href="function.session-set-cookie-params.php">session_set_cookie_params</a> — セッションクッキーパラメータを設定する</li><li><a href="function.session-set-save-handler.php">session_set_save_handler</a> — ユーザー定義のセッション保存関数を設定する</li><li><a href="function.session-start.php">session_start</a> — 新しいセッションを開始、あるいは既存のセッションを再開する</li><li><a href="function.session-status.php">session_status</a> — 現在のセッションの状態を返す</li><li><a href="function.session-unset.php">session_unset</a> — 全てのセッション変数を開放する</li><li><a href="function.session-write-close.php">session_write_close</a> — セッションデータを書き込んでセッションを終了する</li></ul></li><li><a href="class.sessionhandler.php">SessionHandler</a> — SessionHandler クラス<ul class="chunklist chunklist_book chunklist_children"><li><a href="sessionhandler.close.php">SessionHandler::close</a> — セッションを閉じる</li><li><a href="sessionhandler.create-sid.php">SessionHandler::create_sid</a> — 新規セッション ID を返す</li><li><a href="sessionhandler.destroy.php">SessionHandler::destroy</a> — セッションを破棄する</li><li><a href="sessionhandler.gc.php">SessionHandler::gc</a> — 古いセッションを削除する</li><li><a href="sessionhandler.open.php">SessionHandler::open</a> — セッションを開始する</li><li><a href="sessionhandler.read.php">SessionHandler::read</a> — セッションのデータを読み込む</li><li><a href="sessionhandler.write.php">SessionHandler::write</a> — セッションのデータを書き込む</li></ul></li><li><a href="class.sessionhandlerinterface.php">SessionHandlerInterface</a> — SessionHandlerInterface クラス<ul class="chunklist chunklist_book chunklist_children"><li><a href="sessionhandlerinterface.close.php">SessionHandlerInterface::close</a> — セッションを閉じる</li><li><a href="sessionhandlerinterface.destroy.php">SessionHandlerInterface::destroy</a> — セッションを破棄する</li><li><a href="sessionhandlerinterface.gc.php">SessionHandlerInterface::gc</a> — 古いセッションを削除する</li><li><a href="sessionhandlerinterface.open.php">SessionHandlerInterface::open</a> — セッションを開始する</li><li><a href="sessionhandlerinterface.read.php">SessionHandlerInterface::read</a> — セッションのデータを読み込む</li><li><a href="sessionhandlerinterface.write.php">SessionHandlerInterface::write</a> — セッションのデータを書き込む</li></ul></li><li><a href="class.sessionidinterface.php">SessionIdInterface</a> — SessionIdInterface クラス<ul class="chunklist chunklist_book chunklist_children"><li><a href="sessionidinterface.create-sid.php">SessionIdInterface::create_sid</a> — セッションIDを作成する</li></ul></li><li><a href="class.sessionupdatetimestamphandlerinterface.php">SessionUpdateTimestampHandlerInterface</a> — SessionUpdateTimestampHandlerInterface クラス<ul class="chunklist chunklist_book chunklist_children"><li><a href="sessionupdatetimestamphandlerinterface.updatetimestamp.php">SessionUpdateTimestampHandlerInterface::updateTimestamp</a> — タイムスタンプを更新する</li><li><a href="sessionupdatetimestamphandlerinterface.validateid.php">SessionUpdateTimestampHandlerInterface::validateId</a> — セッションIDを検証する</li></ul></li></ul></div><?php manual_footer($setup); ?>