sessionを利用しよう

PHP の session管理機能を使おう

session 管理機能を利用すると、ショッピングカートなど、複数のページを閲覧する場合に、ユーザーの同定や変数の受渡しが簡単にできます。

sessionとは

sessionとは、ユーザーが複数のページを閲覧する場合に、ユーザーの同定や、ページ間での変数の受渡しに利用します。 詳細はsessionの仕組みをごらんください。

sessionを使うには

sessionを使うには、関数 session_start を使用します。

  <?php
  session_start();
  ?>
  

この場合、セッション名は PHPSESSID となりますが、関数 session_name を用いると、セッション名を設定することができます。 session_namesession_start よりも前に書いておきましょう。 session_name を引数無しで使うと、セッション名を取得できます。

  <?php
  session_name(SHOPPING); セッション名をSHOPPINGに設定
  session_start();  セッション開始
  session_name(); セッション名を取得
  ?>
  

セッションIDの取得と設定

セッションを利用するときは、セッションIDと呼ばれる識別IDを利用して、訪問者を特定します。 セッションIDはたいていの場合、数字とアルファベットからなる文字列(32桁)です。

  <?php
  print session_id(); セッションIDを表示
  ?>
  

セッションIDは、通常クッキーに保存されます。 クッキーを使用しないで URL に直接埋め込むこともできますが、この場合ブラウザの履歴等に残ることがあるので、避けたほうが良いでしょう。 なお、設定ファイル php.inisession.use_trans_sid = 0 に設定している場合は、URL にセッションIDを埋め込んで受け渡すことはできません。

セッション変数の利用

セッション変数は、スーパーグローバル変数として扱われます。 $_SESSION['変数名'] の形で利用します。

  <?php
  $_SESSION['shohin_id'] = 1 ;セッション変数に値を代入
  $_SESSION['konyu'] = array(1,3,6); 配列もOK
  ?>
  

セッション変数は、別のページでも$_SESSION['変数名']で呼び出しできます。 また、cookie を利用していれば、ユーザーがいったんブラウザを閉じた場合でも、再接続時には復元されます。

セッションを破棄する

セッションはブラウザを閉じるだけでは終了しません。 セッションを終了する場合は、session_destroy 関数を用いて、明示的に終了させないといけません。 ショッピングカートで購入完了したときや、会員ページからログアウトしたときなど、一連のプロセスが終わったときには、セッションも終了させましょう。

  <?php
  $_SESSION = array() ; すべてのセッション変数を初期化
  session_destroy() ; セッションを破棄
  ?>
  

なお、session_destroy はセッションの終了を指示するだけで、セッション変数自体はそのまま残ります。 セッション変数は、$_SESSION = array() を用いて初期化します。

Copyright (C) 2003-2018. PHP で WEB 作成 All rights reserved.