【 セッション 】

1. セッション使用の際、最初に認識すべき事
2. セッションの開始と変数の登録と廃棄
3. session.auto_start
4. session_id
5. クライアントでクッキーが無効になっている場合の対処

認識の前提条件
  • セッションについて熟知している事が前提です。セッションを知らない
    者がその利用環境について考えるのは問題があります。それほど開
    発においては重要でかつ有益なものであり、問題発生時の具体的解
    決のヒントに最も短い時間で到達する可能性が少ない事は避けなけ
    ればなりません


  • PHPのセッションのデフォルトはファイルに保存されます。通常の CGI であれば当然の事です。とすれ
    ば、その保存環境について知る事が最も優先されます

  • ファイルの保存位置は php.ini の session.save_path に記述されています。デフォルトでは /tmp と記述
    されています

  • これは、php のソースコードが存在するドライブのルートにある tmp ディレクトリを指します。このディレ
    クトリは事前に作成されなければなりません

  • php.ini の session.gc_probability エントリはガーベージコレクションが各リクエストにおいて開始される確
    率をパーセントを指定します。デフォルトは 1 です

  • ガーベージコレクションは、不要なファイルの削除処理の事です。CGI は、リクエストがあった時しかメモ
    リ上に無いわけですから、このようなリクエストの確率を削除タイミングとするしかありません

  • これらの情報以外にも有用なエントリの情報が 「セッション処理関数」で説明されています。これらには
    必要に応じて目を通して下さい


  • 最も重要な事
  • PHP は日々進化している為、多くの書籍と Web のマニュアルとの違
    いを常に認識していなければなりません。特に重要な開始と登録と廃
    棄は現在の指針では非常に単純なものとなっています。逆に言えば、
    これさえ知っていれば問題の発生を避けながら自然とセッションを利
    用できるはずです


  • 開始
    session_start();
     
    


    登録
    $_SESSION['KEY'] = 値 または 変数;
     
    


  • リソース変数を登録することは現在できません


  • 廃棄
    $_SESSION = array();
     
    


  • unset($_SESSION) は使用しないで下さい。$_SESSION そのものが廃棄されて登録が不可能になり
    ます


  • これは、php.ini にあるエントリの一つで、自動的にセッションを開始する手法ですが、問題点があるので
    使用しないほうが良いでしょう。だいたいにおいて、世の中の「自動」というオプションはシステムを管理
    するものにとってはやっかいなものになる可能性があります

  • 問題点は、オブジェクトをセッション変数に代入することができなくなる事です。クラスを使った変数の擬
    似構造体によって、まとめて保持できないのならば使用すべきでは無いでしょう


  • session_id はセッション固有の番号を取得する為の関数です。この有用性は、このIDを利用した名前付
    けにおいて効力を発揮します。

  • セッションID を設定も可能ですが、使用しないほうが賢明です

  • この関数は、クッキーにおいて正しくセッションが動作しているかどうかを確かめるのにも有効です。
    以下のようなソースコードで、ブラウザの更新ボタンを押した時にセッションID が変われば、クッキーが
    ブロックされています
  • <?
    # **********************************************************
    # セッションの有効性の確認
    # **********************************************************
    session_start();
     
    print session_id();
     
    ?>
    
  • このテストを localhost で行なう為には、hosts ファイルを編集して適当に 127.0.0.1 lightbox.com 等
    のエントリを追加し、そのサイト名でクッキーをブロックして下さい
  • php.ini の session.use_trans_sid エントリを 1 に設定して下さい。これによって、クッキーが無効な場
    合は、PHP が自動的に FORM タグ内に hidden フィールドを作成して、セッションの正しい実行を継
    続してくれます

  • 但し、フォームのメソッドが get の場合は、どのようなアプリケーションでも、アドレスバーにセッション
    IDが表示されるようになる為、それを隠す手段としてはフレームを使用する他は無いでしょう。