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. |