ການສັບສິນບັນດາບັນທຶກ Session ASP

Session Object ໃຊ້ເພື່ອບັນທຶກຂໍ້ມູນຜູ້ນຳໃຊ້. ສິ່ງທີ່ບັນທຶກໃນ session object ບັນຈຸຂໍ້ມູນຜູ້ນຳໃຊ້ດຽວກັນ, ແລະສາມາດໃຊ້ໃນທຸກໜ້າໃນຄອມພິວເຕີ້.

Session Object

ເມື່ອທ່ານເຮັດການຢູ່ກັບຄອມພິວເຕີ້ອົງການໃດໜຶ່ງ, ທ່ານເປີດມັນ, ປ່ຽນແປງບາງຢ່າງ, ແລະສິ້ນສຸດ. ນີ້ຄືກັບການສົນທະນາ (Session). ຄອມພິວເຕີ້ຮູ້ວ່າທ່ານແມ່ນໃຜ. ມັນຮູ້ວ່າເມື່ອທ່ານເປີດແລະປິດຄອມພິວເຕີ້. ແຕ່ມີບັນຫາໃນອິນເຕີເນັດ: ຍ້ອນວ່າທີ່ຢູ່ອິນເຕີເນັດ HTTP ບໍ່ສາມາດກັນຄວາມສະຖານະສະຖານະຂອງລະບົບ, web server ບໍ່ຮູ້ວ່າທ່ານແມ່ນໃຜ ແລະທ່ານໄດ້ເຮັດຫຍັງ.

ASP ທີ່ແກ້ໄຂບັນຫາດັ່ງກ່າວດ້ວຍການສ້າງ cookie ທີ່ມີຄວາມສະເພາະສຳນັກງານວ່າດຽວກັບຜູ້ນຳໃຊ້. Cookie ຖືກສົ່ງໄປຫາຄອນເມັນ, ທີ່ບັນຈຸຂໍ້ມູນທີ່ສາມາດຮູ້ພິມະນະຜູ້ນຳໃຊ້. ບົດສະພາບນີ້ຖືກເອີ້ນວ່າ Session Object.

Session 对象用于存储关于用户的信息,或者为一个用户的 session 更改设置。存储于 session 对象中的变量存有单一用户的信息,并且对于应用程序中的所有页面都是可用的。存储于 session 对象中的信息通常是 name、id 以及参数。服务器会为每个新的用户创建一个新的 Session,并在 session 到期时撤销掉这个 Session 对象。

Session 何时开始?

Session 开始于:

  • 当某个新用户请求了一个 ASP 文件,并且 Global.asa 文件引用了 Session_OnStart 子程序时;
  • 当某个值存储在 Session 变量中时;
  • 当某个用户请求了一个 ASP 文件,并且 Global.asa 使用 标签通过 session 的 scope 来例示某个对象时;

    Session 何时结束?

    假如用户没有在规定的时间内在应用程序中请求或者刷新页面,session 就会结束。默认值为 20 分钟。

    如果您希望将超时的时间间隔设置得更长或更短,可以设置 Timeout ປະສົງ.

    ບົດສະຫຼຸບດັ່ງກ່າວນີ້ກໍານົດຄັ້ງທີ່ຄວນຈະຢຸດສະຫງັກຄູ່ມູນ session 5 ນາທີ:

    <%
    Session.Timeout=5
    %>
    

    ທີ່ຈະຢຸດສະຫງັກ session ແນວໃດ: ຍົກເລີກ ກົນລະຍຸດ:

    <%
    Session.ຍົກເລີກ
    %>
    

    ຄວາມເຫັນຫຍັງ:ບັນຫາຫຼັກທີ່ມີກັບ session ແມ່ນພວກເຂົາຄວນຈະຢຸດສະຫງັກໃນເວລາໃດ. ພວກເຮົາບໍ່ຮູ້ວ່າການຮຽກຮ້ອງສຸດທ້າຍຂອງຜູ້ນຳໃຊ້ຈະເປັນການຮຽກຮ້ອງສຸດທ້າຍຫຼືບໍ່. ເຖິງຢ່າງໃດກໍ່ຕາມພວກເຮົາບໍ່ຮູ້ວ່າຄູ່ມູນ session ຄວນຈະສາມາດຄົງຄວາມຢູ່ເວລາໃດ. ການລໍຖ້າຄູ່ມູນ session ທີ່ຫຼາຍຫຼາຍກວ່າທີ່ຄວນຈະສາມາດລົບພື້ນທີ່ຫຼາຍຢ່າງຫຼາຍຂອງຄວາມຫຼາຍຢ່າງຫຼາຍຂອງບັນດາຄູ່ມູນຂອງທ່ານ. ແຕ່ວ່າຄູ່ມູນ session ໄດ້ຖືກລົບກ່ອນເວລາທີ່ຄວນຈະຖືກລົບຫຼັງຈາກຜູ້ນຳໃຊ້ຈະຕ້ອງໄດ້ເລີ່ມຕົ້ນມາຫຼາຍຄັ້ງກ່ວານີ້ຍ້ອນວ່າຄວາມຂອງທ່ານໄດ້ຖືກລົບອອກຈາກບັນດາຄວາມຂອງທ່ານ. ການຊອກຫາຄັ້ງທີ່ຄວນຈະສາມາດຕອບຄຳພາບຄວາມຫຼາຍຢ່າງຫຼາຍຫຼາຍຄວາມຫຼາຍຢ່າງຫຼາຍ.

    ຄຳແນະນຳ:ຖ້າທ່ານກໍາລັງນຳໃຊ້ຄູ່ມູນ session ທ່ານບໍ່ຄວນບັນທຶກຄວາມຂະໜາດຫຼາຍຂອງຄູ່ມູນ.

    ບັນທຶກ ແລະ ດຶງດູດຄູ່ມູນ session

    ຄວາມດີທີ່ສຸດຂອງບັນດາຄູ່ມູນ Session ແມ່ນສາມາດບັນທຶກຄູ່ມູນເພື່ອຫາມາຫາກບໍ່ດົນນານນີ້ສາມາດອ່ານຄູ່ມູນທີ່ຫາມາຫາກບໍ່ດົນນານນີ້ຫຼາຍຢ່າງຫຼາຍຢ່າງ.

    ບົດສະຫຼຸບດັ່ງກ່າວນີ້ກໍານົດ "Donald Duck" ໃຫ້ເປັນຄູ່ມູນ session ທີ່ຊື່ວ່າ username ແລະ "50" ໃຫ້ເປັນຄູ່ມູນ session ທີ່ຊື່ວ່າ age:

    <%
    Session("username")="Donald Duck"
    Session("age")=50
    %>
    

    ບໍ່ວ່າຄູ່ມູນຈະຖືກບັນທຶກໃນຄູ່ມູນ session ພວກມັນສາມາດນຳໃຊ້ໃນເທັກບໍລິການ ASP ຂອງແຕ່ເທັກພິມເຫດນັ້ນ:

    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 & "
    ") 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 & "
    ") Next %>