Ruby CGI Session
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{ 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" 將翻到下一頁 red 為單個用戶為每個連續命中,直到一個新的 "bgcolor" 能過URL指定。
會話數據存儲在一個臨時文件,為每個會話 prefix參數指定一個字符串附加到文件名前麵,讓會話易於識彆在服務器上的文件係統。
CGI::Session 仍然缺少很多功能,如能力來存儲對象之外字符串,跨多個服務器會話存儲等。
CGI::Session 類:
A CGI::Session Web用戶保持一個持久的狀態,在CGI環境。會話可能在內存中或者存儲在磁盤上。
類方法:
Ruby 類 Class CGI::Session 提供了一個單一的類的方法創建一個會話:
CGI::Session::new( cgi[, option])
啟動一個新的CGI會話並返回相應的 CGI::Session 對象。選項是一個可選項哈希值,指定一個或多個下列:
-
session_key: 索引鍵名稱會話ID。默認是_session_id。 is _session_id.
-
session_id: Unique session ID. Generated automatically
-
new_session: If true, create a new session id for this session. If false, use an existing session identified by session_id. If omitted, use an existing session if available, otherwise create a new one.
-
database_manager: Class to use to save sessions; may be CGI::Session::FileStore or CGI::Session::MemoryStore. Default is FileStore.
-
tmpdir: For FileStore, directory for session files.
-
prefix: For FileStore, prefix of session filenames.
實例方法:
SN | 方法說明 |
---|---|
1 |
[ ] Returns the value for the given key. See example above. |
2 |
[ ]= Sets the value for the given key. See example above. |
3 |
delete Calls the delete method of the underlying database manager. For FileStore, deletes the physical file containing the session. For MemoryStore, removes the session from memory. |
4 |
update Calls the update method of the underlying database manager. For FileStore, writes the session data out to disk. Has no effect with MemoryStore. |