ASP Session 对象
- 上一页 ASP Cookies
- 下一页 ASP Application
Session 对象用于存储用户的信息。存储于 session 对象中的变量持有单一用户的信息,并且对于一个应用程序中的所有页面都是可用的。
Session 对象
当您操作某个应用程序时,您打开它,做些改变,然后将它关闭。这很像一次对话(Session)。计算机知道您是谁。它清楚您在何时打开和关闭应用程序。但是在因特网上有一个问题:由于 HTTP 地址无法存留状态,web 服务器并不知道您是谁以及您做了什么。
ASP 通过为每位用户创建一个唯一的 cookie 的方式解决了这个问题。cookie 被传送至客户端,它含有可识别用户的信息。这种接口被称作 Session 对象。
Ang Session object ay ginagamit upang imbakin ang impormasyon tungkol sa user, o upang itakda ang mga pagbabago ng session para sa isang user. Ang mga variable na nakaimbak sa Session object ay may impormasyon tungkol sa isang solong user, at ayon sa lahat ng pahina sa aplikasyon. Ang impormasyon na nakaimbak sa Session object ay karaniwang may pangalan, id at mga parameter. Ang server ay magbibigay ng bagong Session para sa bawat bagong user, at magpawalang-bisa ang Session object kapag ang session ay nagtatapos.
Kailan nagsimula ang Session?
Kapag ang Session ay nagsimula:
- Kapag ang isang bagong user ay gumawa ng kahilingan sa isang ASP file, at ang Global.asa file ay nagtutukoy ng Session_OnStart subroutine;
- Kapag ang isang halaga ay inilagay sa Session variable;
- Kapag ang isang user ay gumawa ng kahilingan sa isang ASP file, at ang Global.asa ay gumagamit ng <object> tag upang magpakita ng isang object sa pamamagitan ng scope ng session;
Kailan nagtatapos ang Session?
Kung ang user ay hindi gumagamit ng aplikasyon o nagrefresh ng pahina sa nakatakdang oras, ang session ay matatapos. Ang default ay 20 minuto.
Kung gusto mong itakda ang mas mahabang o mas maikling timeout interval, maaaring itakda: Timeout Atribute.
Ang halimbawa sa ibaba ay nagtatalaga ng 5 minutong timeout interval:
<% Session.Timeout=5 %>
Para sa agad na pagtatapos ng session, maaaring gamitin: Abandon Mga paraan:
<% Session.Abandon %>
Pansin:Ang pangunahing problema sa paggamit ng session ay kung kailan ito ay dapat matapos. Hindi namin alam kung ang huling kahilingan ng user ay ang huling kahilingan. Kaya hindi namin alam kung kailan dapat ito "magpatuloy" ang session. Ang paghihintay ng napakahabang oras sa isang walang ginagamit na session ay maaaring magamit ng server resources. Gayunpaman, kung ang session ay pinapawalang-bisa mabilis, ang user ay dapat magsimula muli mula sa simula, dahil ang server ay pinawalang-bisa ang lahat ng impormasyon. Ang paghahanap ng tamang timeout interval ay mahirap.
Mga tagubilin:Kung ikaw ay gumagamit ng session variable, huwag lagyan ng malaking dami ng data sa loob nito.
Pag-iimbak at pagkuha ng session variable
Ang pinakamalaking kaarawan ng Session object ay ang paglalagay ng variable na maaring gamitin ng mga susunod na pahina, ang saklaw nito ay napakalaking saklaw.
Ang halimbawa sa ibaba ay nagtatalaga sa "Donald Duck" sa variable na session na tinatawag na username, at nagtatalaga sa "50" sa variable na session na tinatawag na age:
<% Session("username")="Donald Duck" Session("age")=50 %>
Una beses ang halaga ay nakatago sa variable na session, ito ay maaaring gamitin ng anumang pahina sa ASP application:
Welcome <%Response.Write(Session("username"))%>
上面这行程序返回的结果是: "Welcome Donald Duck"。
也可以在 session 对象中保存用户参数,然后通过访问这些参数来决定向用户返回什么页面。
下面的例子规定,假如用户使用低显示器分辨率,则返回纯文本版本的页面:
<%If Session("screenres")="low" Then%> This is the text version of the page <%Else%> This is the multimedia version of the page <%End If%>
移除 session 变量
contents 集合包含所有的 session 变量。
可通过 remove 方法来移除 session 变量。
在下面的例子中,假如 session 变量 "age" 的值小于 18,则移除 session 变量 "sale":
<% If Session.Contents("age")<18 then Session.Contents.Remove("sale") End If %>
如需移除 session 中的所有变量,请使用 RemoveAll 方法:
<% Session.Contents.RemoveAll() %>
遍历 contents 集合
contents 集合包含所有的 session 变量。可通过遍历 contents 集合,来查看其中存储的变量:
<% Session("username")="Donald Duck" Session("age")=50 dim i For Each i in Session.Contents Response.Write(i & "<br />") Next %>
结果:
username age
如果需要了解 contents 集合中的项目数量,可使用 count 属性:
<% dim i dim j j=Session.Contents.Count Response.Write("Session variables: " & j) For i=1 to j Response.Write(Session.Contents(i) & "<br />") Next %>
结果:
Session variables: 2 Donald Duck 50
遍历 StaticObjects 集合
可通过循环 StaticObjects 集合,来查看存储在 session 对象中所有对象的值:
<% dim i For Each i in Session.StaticObjects Response.Write(i & "<br />") Next %>
- 上一页 ASP Cookies
- 下一页 ASP Application