2007年3月29日星期四

Ruby on Rails之会话

Ruby on Rails之会话

1,进行session跟踪的地层机制有若干种:

  • 把session信息编码到每一页的表格数据中。
  • 把session ID加入到每个URL的结尾处,即所谓的URL重写选项。
  • cookie。

2,Rails使用基于cookie的会话跟踪方式。
所以若要使用Rails站点,则浏览器必须允许cookie。

3,类hash的集合

  • 在Rails中,controller之内,Rails维护这一个特殊的类hash的集合,就被称为session。任何你保存到key/value对数据,在处理随后的来自相同浏览器的请求时,这些数据都是可以获得的。
  • 默认情况下,Rails把session信息存储在服务端的一个文件中。

web之会话

web之会话

1,什么是会话控制

  • HTTP是无状态的协议,即HTTP协议是没有一个内建的机制来维护两个事务之间的状态。当一个用户请求一个页面后再请求另一个页面,HTTP将无法告诉我们这两个请求来自同一个用户。
  • 如果我们可以根据一个会话来跟踪用户,那么就很容易做到对用户登陆的支持,并根据授权级别和个人喜好显示相应的内容,并根据会话控制纪录该用户的行为。

2,基本的会话功能

  • PHP的会话是通过唯一的ID来驱动的,会话ID是一个加密的随机数字。
  • 会话ID由PHP声称,在会话的生命周期中都会保存在客户端。
  • 它在客户端存在的形式:保存在用户机器里的cookie,或者通过URL在网络上传递。
    • 有一些网站,它们将会话ID保存到URL中,如果URL中有一串看起来象随机数字的字符串,可能它就是某种形式的会话控制。
    • cookie也解决了多个事务间保持状态的问题,同时它还可以帮助保持一个整洁的URL。
  • 会话ID就像一把钥匙,允许我们注册一些特定的变量,称为会话变量。
  • 会话变量的内容保存在服务器端,而会话ID是用户唯一可见的信息。
  • 即在一个特定的网站连接中,客户端可以通过cookie或URL看到会话ID,而我们就可以访问该ID指定的会话保存在服务端上的会话变量。

2.1,什么是cookie

  • cookie是一小段信息,可以由脚本在客户端机器保存。
  • 可以通过发送一个包含特定数据并且具有如下格式的HTTP标题头,在用户端机器设置一个cookie:
    • set-cookie: NAME=VALUE; [expires=DATE;][path=PATH;][domain=DOMAIN_NAME;][secure]
  • 当浏览器连接一个URL时,首先要搜索当地保存的cookie。如果有任何与正在连接的URL相关的cookie,浏览器将它提交到服务器。

3,实现简单的会话

基本步骤如下:

I、开始一个会话;

II、注册会话变量

III、使用会话变量

IV、注销变量并销毁会话。

这些步骤不一定都要发生在同一个脚本中,其中的一些步骤可以在多个脚本中发生。