Home > PHP

PHPの基本的なセッション

 セッションは間違いなくいかなるスクリプトでも必要な最も基本的なルーチンだと思います。特にログインを必要とするようなWebページの構成には必ず必要になってきます。というのもログインという概念は反対にログアウトという概念があり、そのログアウトをクライアントが明示的に行うことが前提になっていればセッションは必要ありません。しかしインターネット上の遥か遠くに存在するクライアントがログアウトしてくれたかどうかはいつも不確定です。そのためログインがどれだけの間有効に働くかというのを管理者がある程度コントロールする必要があります。個人情報や大切な情報がたった一回のログイン後にほぼ永久に閲覧できるというのはパスワード保護の意味を殆ど失っているも同然です。
 またパスワード保護やログインといった概念の他にもショッピングサイトでの「買い物かご」や、ゲーム的な要素のあるページ構成など使いどころは多種多様です。
 セッションについての基本的な使い方はこちらを最初にご覧ください

セッションを使ったDemo画面

 まずは、セッションがどういうものか確かめてみるとよいと思います。
1. ユーザー名(user)とパスワード(1234)でログインするとログイン後の最初のページが表示されます。このページがパスワードで保護されたページなっています。(前略).../session.phpはログイン後には30以上放置しておくとセッションアウト、つまり自動的にログアウトしてしまいます。ログイン後試しに30秒間待ってみてください。30秒後にリロード、または別のページリンクから移動しようと思うと各ページは閲覧できなくなっています。つまり、BookMarkを無効にすることができます。ブックマークをしてもセッションアウトした時点で最初のログイン画面に強制的に戻されます。
2. サンプルではログイン後のトップページに移動すると明示的にログアウトが可能です。ログアウトをクリックするとセッションが終了し30秒以内でも強制的にセッションを終了します。もう一度NameとPasswordを入力しないとセッションは開始されません。

使い方

 Basic sessionをダウンロードしてから適当な場所に解凍展開してください。内包されているファイルは以下のようになります。
basic_session [D]
|-- login.php [F]
|-- page1.php [F]
|-- page2.php [F]
|-- page3.php [F]
|-- page4.php [F]
|-- sess_func.php [F]
|-- session.php [F]
`-- startpage.html [F]
 設定ファイルはsess_func.phpです。30行目辺りの設定部分を書き換えます。まずセッション持続時間を書き換えてください。デフォルトでは30秒になっていますが、30秒は実際的なセッション時間ではないので10分から20分辺りが適当です。秒で設定しますので600秒または1200秒辺りで設定してください。
 次にbasic_sessionを置くサーバーパスに合せてログイン後最初のページの相対パスを設定します。これはセッションが活性化された後に自動的にジャンプするログイン後の初期ページになります。このパスを設定しないとログイン後の画面に移動できないので気をつけてください。
    # タイムアウト
    $timeout = 30;    #600(10分)から1200(20分)ぐらいが適当か?
   
    # 認証後の初期画面(ドメイン以下のパス)
    $firstpage = '/omnioolab/upload/sample_script/php/basic_session/login.php';
 セッションが活性化すると各ページに移動できます。各ページ(サンプルではpage1.phpからpage4.php)の冒頭で、
    require("sess_func.php");
    $ip = $_SERVER['REMOTE_ADDR'];
    $re = basic_session ($ip);
    if ($re) {
        ... (セッション有効な場合の操作)
    } else {
        ... (セッション無効な場合の操作)
    }
を挿入します。セッションの有無での挙動を指定します。$reにブール値が入ってくるので正の場合はセッションが有効な場合、0または空の場合はセッションが無効な状態です。環境やデザインに合せて調整してください。
 また、このファイルの100行目辺りから詳しい解説が記載されているので一読してみてください。








プロフィール



  • Name :: 山上オサム ♂(37)
  • Hobby :: 武術
  • Work :: Web Designer