发信人: superplayboy(快乐的粉肠)
整理人: qcrsoft(2002-05-13 00:55:35), 站内信件
|
【 在 superplayboy 的大作中提到:】
:session.contents(X),这里X是具体的值
:这种用法有可能在不支持ASP3.0的IIS里无效
:我在《ASP3高级编程》里找到关于session.contents集合的相关资料,这有可能是ASP3.0的方法,总之,在我的机器和我的服务器上运行一切正常。
:机器配置:
:win2000 advance server(sp1)
:
:......
具体例子:我的虚拟社区
登陆文件:
======login.asp====
.........
......'验证密码资料
if 验证通过 then
session("id")=rs("id")
session("name")=rs("name")
session("pass")=true
end if
rs.close
application.lock
updata.execute("update 数据库表 set online=0 where id="&session("id"))
application.unlock
conn.close
response.redirect "index.asp"'跳转到虚拟社区首页
在这个例子里:
session.contents(1)的值等于session("id")
session.contents(2)的值等于session("name")
session.contents(3)的值等于session("pass")
如果赋值的顺序不同,以上的值也不同
======global.asa====放在服务器的根目录
......
sub application_onstart
set application("conn")=server......'将application("conn")设置为connection,具体的单词我忘了
application("database")=server.mappath("数据库的路径")'最好用绝对路径
end sub
sub application_OnEnd
set application("conn")=nothing
end sub
sub session_OnStart
end sub
sub session_OnEnd
if session.contents(3) then 'contents(3)相当于session("pass")
application("conn").open...dbq="&application("database")'打开数据库,具体单词我也忘了
application.lock
application("conn").execute("updata 数据库表 set online=0 where id="&session.contents(1)) '将用户表的online设置为否
application.unlock
application("conn").close
end if
end sub
注意事项:
1,session变量的赋值顺序会影响contents数组值的顺序,contents(1)是指服务器对该用户分配的第一个SESSION变量,contents(2)为第二个。假如在本例中,用户最先调用的不是login.asp,而是default.asp,而在default.asp里又有如下语句:
session("pass")=true
session("id")=rs("id")
session("name")=rs("name")
这样的话,contents数组的值就变为
session.contents(1)=session("pass")=true
session.contents(2)=session("id")
session.contents(3)=session("name")
2,在application和session的ONEND事件里是不允许使用response、server、request等等对象的,所以本例中要用到server.mappath等就必须在onstart事件里预先处理
3,假设上面application_onstart里取得数据库的实际路径那句用的不是绝对路径而是相对路径的话:
application("database")=server.mappath("../database/test.mdb")
假设服务器的根目录是d:\inetpub\wwwroot\,本意是要指定数据库的地址是d:\inetpub\database\test.mdb,但实际情况是:
假如第一个访问本服务器的用户最先访问的是www.e0759.com/borders/friends下的default.asp,application("database")的值就变为d:\inetpub\wwwroot\borders\database\test.mdb。使用相对路径的话只有当第一个用户访问的是站点根目录的地址时才可以得到期望的结果。所以在本例中要对进行一些处理:
db=server.mappath("/")'读取根目录的实际目录d:\inetpub\wwwroot
temp=instrrev(db,"\")'temp的值在此例是11
db=left(db,temp) 'db="d:\inetpub"
db=db&"\database\test.mdb"
如果用户的数据库不是放在根目录之前的目录相对来说处理要简单一些,例如:
application("db")=server.mappath("db/test.mdb")
本意是d:\inetpub\wwwroot\db\test.mdb,所以只要加个“/”就完成了
application("db")=server.mappath("/db/test.mdb")
以上是新手特别容易遗忘的地方,我就曾经在这上面浪费了很多时间,希望大家引以为鉴。。。
yahao,够详细了吧。。嘿嘿。。。。
---- 我撒了一泡长长的尿,尿线冲激着洁白的便盆,从盆底冲出一些微黄色的泡沫,
泡沫慢慢地增多,直至完全覆盖着了尿液,我也慢慢地恢复了自我的感觉。
我是http://www.LoneTear.com的老大 |
|