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"]){
      "The background of this page"    +
      "changes based on the 'bgcolor'" +
      "each user has in session."      +
      "Last access time: #{lastaccess}"
    }
  }
}

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

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


CGI::Session クラス

CGI::Session は、ユーザーと CGI 環境の間で永続的な状態を維持します。 セッションはメモリ上またはハードドライブ上に存在できます。

クラスメソッド

Rubyクラスの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 です。デフォルトはファイルストアです。

  • tmpdir: FileStore の場合、セッションのエラー保存ディレクトリ。

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

インスタンス化メソッド

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