动网论坛,站长建站首选,国内使用量最多的论坛软件 动网论坛官方技术讨论区 站长工具 申请属于您自己的免费论坛
首页 | 新闻资讯 | 网站运营 | 网络编程 | 数据库 | 服务器 | 网页设计 | 图像媒体 | 网络应用 | 搜索优化 | 资源下载 | 动网主机 | DVBOX
    本站内  互联网 ASP论坛  ASP.Net论坛  PHP论坛
  
   .Net → 阅读文章

 Session 物件

作者来源: 
阅读 1545 人次 , 2006-3-29 4:31:00 


session 对象的功能和application 对象一样,都是用来储存跨网页程序的变量或是对象,但session 对象和application 对象变量有些特性不太一样。session 对象变量只针对单一网页使用者,也就是说各个联机的机器有各自的session 对象变量,不同的联机无法互相取。application对象变量中止于停止iis 服务,但是session 对象变量终止于联机机器离线时,也就是当网页使用者关掉浏览器或超过设定session 变量对象的有效时间时,session 对象变量就会消失。session 对象正确的对象类别名称是httpsessionstate,application 对象一样是属于page对象的成员;所以可以直接使用。session 对象的使用方式和application 对象变量相当类似,其使用语法如下:

session("变量名")="内容"

session 也可以存放com 组件,其使用语法如下:

session("名称")=server.createobject(progid)

下表为session 对象常用的属性:



下表为session 对象常用方法:



session 对象变量最常应用在存放使用者的状态。例如在使用者登入的页面上,我们可以将代表使用者登入网页的成功与否状态储存到一个变量中,然后在其它网页加入判断使用者是否登入成功与否的程序代码。如果登入成功才可以浏览某些网页,如果登入失败则限制或拒绝使用者的浏览。下列范例使用者必须成功通过登入网页ex16.aspx 的验证,才可以浏览ex17.aspx 网页。其验证的程序从会员数据表中判断使用者所填入的名称及密码是否正确,如下所示:

sub btnsubmit_click(sender as object,e as eventargs)
dim strconstr as string = "provider=microsoft.jet.oledb.4.0;" & _
"data source=c:\inetpub\wwwroot\cr\ch08\myweb.mdb"
dim strcomstr as string = "select * from members where userid = '" &
txtid.text & "' and userpwd = '" & txtpassword.text & "'"
dim dsca as adodatasetcommand = new
adodatasetcommand(strcomstr,strconstr)
dim dsdataset as dataset = new dataset()
dsca.filldataset(dsdataset, "members")
if dsdataset.tables("members").rows.count=1 then
session("id")=txtid.text
session("ispassed")="true"
page.navigate("ex17.aspx") '将连结导向至ex17.aspx
else
label1.text="验证失败! 请重新输入"
end if
end sub
sub btnreset_click(sender as object,e as eventargs)
txtid.text=""
txtpassword.text=""
end sub
</script>
</html>

上述范例我们将使用者所输入的使用者名称及密码转成sql 查询叙述,并存放于变量strcomstr中;如下所示:

dim strcomstr as string = "select * from members where userid = '" & _
txtid.text & "' and userpwd = '" & txtpassword.text & "'"

倘若使用者输入的账号及密码分别为「rex」以及「sewq」,则strcomstr 的内容为「select * frommembers where userid = 'rex' and userpwd = 'sewq'」。由于sql 的语法规定字符串必需被单引号「'」包围,所以请特别注意单引号的部分。我们将上述sql 陈述的执行结果填入dataset对象中,并且判断datatable 对象rows 集合的count 属性,如果为1 就表示有找到该使用者;如下程序代码片段所示:

if dsdataset.tables("members").rows.count=1 then
session("id")=txtid.text
session("ispassed")="true"
page.navigate("ex17.aspx") '将连结导向至ex17.aspx
else
label1.text="验证失败! 请重新输入"
end if

上述程序代码若使用者通过验证,则将session 对象的id 变量以及ispassword 变量的值分别填入使用者所数入的账号以及true,然后将网页连结导向ex17.aspx。我们就可以在ex17.aspx在page_load 事件程序中取回session 对象中ispassed 变量,如下程序所示:

<html>
您的输入已经通过验证.
<script language="vb" runat="server">
sub page_load(sender as object,e as eventargs)
if session("ispassed")=nothing or session("ispassed")<>"true" then
response.redirect("ex16.aspx")
end if
end sub
</script>
</html>

如果我们通过验证,就可以成功的浏览ex17.aspx 网页。倘若我们尝试直接利用浏览器直接浏览ex17.aspx 网页时,因为session("ispassed") 变量内并没有内容,所以网页会自动导向ex16.aspx 登入网页。

 本文Tagssession  
 收藏本文  打印本文  论坛讨论  关闭窗口
· 上一篇:设定Session 对象变量的有效期限
· 下一篇:锁定Application 物件
· 黑客写出了针对.Net平台的反编译器
· 一个功能完善的专栏管理的程序->这是asp.net的第二个应用(五)
· 用asp.net画饼图(可用于各种投票程序)
· C/C++中利用空指针简化代码,提高效率
· ADO.NET 基本概念


关于本站 | 联系我们 | 业务合作 | 客户案例 | 诚聘英才 | 广告合作 | 收藏本站
海口动网先锋网络科技有限公司版权所有
Copyright © 2000 - 2006 Cndw.Com
中华人民共和国电信与信息服务业务经营许可证编号 琼 ICP 020077