English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Ruby CGI セッション

CGI::SessionはユーザーやCGI環境に持続可能なセッション状態を保存できます。セッションを使用した後は閉じる必要があり、これによりデータが格納されることを保証します。セッションが完了したら、データを削除する必要があります。

オンラインサンプル

#!/usr/bin/ruby
 
require 'cgi'
require 'cgi/session'
cgi = CGI.new("html4")
 
sess = CGI::Session.new(cgi, "session_key" => "a_test",
                              "prefix" => "rubysess.")}}
lastaccess = sess["lastaccess"].to_s
sess["lastaccess"] = Time.now
if cgi['bgcolor'][0] =~ /[a-z]/
  sess["bgcolor"] = cgi['bgcolor']
end
 
cgi.out{
  cgi.html {
    cgi.body ("bgcolor" => sess["bgcolor"]){
      "このページの背景"    +
      "'bgcolor'に基づいて変更されます" +
      "各ユーザーがセッションを持っています"      +
      "最終アクセス時間: #{lastaccess}"
    }
  }
}

アクセス "/cgi-bin/test.cgi?bgcolor=red"とアクセスすると、指定された背景色のページにジャンプします。

セッションデータはサーバーの一時ファイルディレクトリに存在し、prefixパラメータはセッションのプレフィックスを指定し、一時ファイルのプレフィックスとして使用されます。これにより、サーバー上で異なるセッションの一時ファイルを簡単に識別できます。

CGI::Sessionクラス

CGI::Sessionは、ユーザーとCGI環境の持続可能な状態を保持します。セッションはメモリ内、またはハードディスク上に存在できます。

クラスメソッド

RubyクラスClass CGI::Sessionは、セッションを作成するための簡単なメソッドを提供します:

CGI::Session::new( cgi[, option])

新しいCGIセッションを有効にし、対応するCGI::Sessionオブジェクトを返します。オプションはオプションのハッシュで、以下の値が指定できます:

  • session_key: セッションを保存するキー名です。デフォルトは_session_idです。

  • session_id:  ユニークなセッションID。自動生成されます。

  • new_session: trueの場合、現在のセッションに対して新しいセッションIDを作成します。falseの場合、session_idを通じて既存のセッションIDを使用します。 このパラメータを省略した場合、利用可能なセッションがあればそれを使用し、なければ新しいセッションを作成します。

  • database_manager: セッションを保存するクラスであり、CGI::Session::FileStoreまたはCGI::Session::MemoryStoreのいずれかです。デフォルトではFileStoreです。

  • tmpdir:  FileStoreの場合、セッションのエラーストレージディレクトリです。

  • prefix: FileStoreの場合、セッションファイルのプレフィックスです。

メソッドの例

番号メソッドの説明
1[ ]
指定されたキーの値を返します。例を参照してください。
2[ ]=
指定されたキーの値を設定します。例を参照してください。
3delete
基底データベース管理の削除メソッドを呼び出します。FileStoreの場合、セッションを含む物理ファイルを削除します。MemoryStoreの場合は、メモリからセッションデータを削除します。
4update
基底データベース管理の更新メソッドを呼び出します。FileStoreの場合、セッションをディスクに書き込みます。MemoryStoreの場合は効果がありません。