- Ruby基础知识
- Ruby - 主页
- Ruby - 概述
- Ruby - 环境设置
- Ruby - 语法
- Ruby - 类和对象
- Ruby - 变量
- Ruby - 运算符
- Ruby - 评论
- Ruby - IF...ELSE
- Ruby - 循环
- Ruby - 方法
- Ruby - 块
- Ruby - 模块
- Ruby - 字符串
- Ruby - 数组
- Ruby - 哈希
- Ruby - 日期和时间
- Ruby - 范围
- Ruby - 迭代器
- Ruby - 文件 I/O
- Ruby - 例外
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 { 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”将在每次连续点击时将单个用户的页面变为红色,直到通过 URL 指定新的“bgcolor”为止。
会话数据存储在每个会话的临时文件中,前缀参数分配一个要添加到文件名前面的字符串,使您的会话在服务器的文件系统上易于识别。
CGI::Session 仍然缺乏许多功能,例如存储字符串以外的对象的能力、跨多个服务器的会话存储。
CGI::会话类
CGI::Session 为 CGI 环境中的 Web 用户维护持久状态。会话可以驻留在内存中,也可以存储在磁盘上。
类方法
Ruby 类Class CGI::Session提供了一个类方法来创建会话 -
CGI::Session::new( cgi[, option])
启动一个新的 CGI 会话并返回相应的 CGI::Session 对象。选项可以是指定以下一项或多项的选项哈希 -
session_key - 保存会话 ID 的密钥名称。默认为_session_id。
session_id - 唯一的会话 ID。自动生成
new_session - 如果为 true,则为此会话创建一个新的会话 ID。如果为 false,则使用由 session_id 标识的现有会话。如果省略,则使用现有会话(如果可用),否则创建一个新会话。
database_manager - 用于保存会话的类;可能是 CGI::Session::FileStore 或 CGI::Session::MemoryStore。默认为文件存储。
tmpdir - 对于 FileStore,会话文件的目录。
prefix - 对于 FileStore,会话文件名的前缀。
实例方法
先生。 | 方法与说明 |
---|---|
1 | [ ] 返回给定键的值。请参阅上面的示例。 |
2 | [ ]= 设置给定键的值。请参阅上面的示例。 |
3 | 删除 调用底层数据库管理器的删除方法。对于 FileStore,删除包含会话的物理文件。对于 MemoryStore,从内存中删除会话。 |
4 | 更新 调用底层数据库管理器的更新方法。对于 FileStore,将会话数据写入磁盘。对 MemoryStore 没有影响。 |