Ruby-cgi-sessions

提供:Dev Guides
移動先:案内検索

Ruby-CGIセッション

CGI
Sessionは、CGI環境でWebユーザーの永続的な状態を維持します。 セッションは使用後に閉じてください。これにより、セッションにデータが確実にストアに書き込まれます。 セッションを完全に終了したら、それを削除する必要があります。
#!/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 {
   cgil {
      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」にアクセスすると、URLを介して新しい「bgcolor」が指定されるまで、連続するヒットごとに1人のユーザーのページが赤になります。

セッションデータは各セッションの一時ファイルに保存され、プレフィックスパラメーターはファイル名の前に追加する文字列を割り当てるため、サーバーのファイルシステムでセッションを簡単に識別できます。

CGI
Sessionには、文字列以外のオブジェクトを保存する機能や、複数のサーバーにまたがるセッションストレージなど、多くの機能がまだありません。
=== クラスCGI
Session
CGI
Sessionは、CGI環境でWebユーザーの永続的な状態を維持します。 セッションは、メモリに常駐することも、ディスクに保存することもできます。

クラスメソッド

Rubyクラス_Class CGI
Session_は、セッションを作成するための単一のクラスメソッドを提供します-
CGI::Session::new( cgi[, option])
新しいCGIセッションを開始し、対応するCGI
Sessionオブジェクトを返します。 _option_は、次の1つ以上を指定するオプションハッシュである可能性があります-
  • session_key -セッションIDを保持するキー名。 デフォルトは_session_idです。
  • session_id -一意のセッションID。 自動生成
  • new_session -trueの場合、このセッションの新しいセッションIDを作成します。 falseの場合、session_idで識別される既存のセッションを使用します。 省略した場合、既存のセッションが使用可能であればそれを使用し、そうでない場合は新しいセッションを作成します。
* database_manager -セッションを保存するために使用するクラス。 CGI
Session :: FileStoreまたはCGI :: Session :: MemoryStoreの場合があります。 デフォルトはFileStoreです。
  • tmpdir -FileStoreの場合、セッションファイルのディレクトリ。
  • prefix -FileStoreの場合、セッションファイル名のプレフィックス。

インスタンスメソッド

Sr.No. Methods & Description
1

[ ]

指定されたキーの値を返します。 上記の例を参照してください。

2

[ ]=

指定されたキーの値を設定します。 上記の例を参照してください。

3

delete

基になるデータベースマネージャーの削除メソッドを呼び出します。 FileStoreの場合、セッションを含む物理ファイルを削除します。 MemoryStoreの場合、メモリからセッションを削除します。

4

update

基になるデータベースマネージャーの更新メソッドを呼び出します。 FileStoreの場合、セッションデータをディスクに書き込みます。 MemoryStoreでは効果がありません。