PHP编程的一种失误

嘎嘎,在群里看到xi4oyu发的一个后台的登陆验证部分,当登陆不成功是通过javascript来转向的,但他没有控制后面的输出是否停止,这就引起,当用户浏览器禁用JAVASCRIPT的时候,登陆验证失效,可以直接登陆。

1
2
3
4
5
6
7
8
9
10
11
12
<?php
include("functions.inc.php");
 
if(!logged_in()) {
	echo<<<EOD
	<script language="JavaScript">
	alert("登陆失败!");
	location.href="index.php";
	</script>
EOD;
}
?>

其中logged_in()应该是检测是否登陆的函数,不管结果是正确的还是错误的,只要调过去后面的JAVASCRIPT转向,这个都等于虚设。
在ASP中,我们碰到上面的问题,其实只需要在输出错误信息后,直接一个Response.End就搞定了。但PHP中没有,我们就可以在上面加一个Exit;即可

1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
include("functions.inc.php");
 
if(!logged_in()) {
	echo<<<EOD
	<script language="JavaScript">
	alert("登陆失败!");
	location.href="index.php";
	</script>
EOD;
Exit;
}
?>

ASP缓存类含调用演示

< %
'by xilou,www.chinacms.org,20090115
'最后更新:20090115
'修改记录:无

CONST CACHEPREFIX = "CACHE_" '缓存前缀,不能为空

'说明:
' 1,缓存的格式为Application(CACHEPREFIX & key) = array("缓存key","缓存时间","缓存内容","缓存说明","到期时间")
' 2,缓存key不区分大小写

'添加缓存,不检查缓存是否存在,如果存在则相当于更新缓存
'varAry : 参数,格式为:array("缓存key","缓存时间","缓存内容","缓存说明")
' 缓存key :application()格式相同
' 缓存时间:单位秒,可以为负数,表示立即过期,可以为空,空或不是数字则默认为20分钟过期
' 缓存内容:缓存数据,不支持对对象的缓存
' 缓存说明:缓存描述说明
Function AddCache(varAry)
Dim c,ary(4)
If Not IsArray(varAry) Then
Response.Write "Error:AddCache(varAry)参数错误,参数不是数组"
Response.End()
End If
If UBound(varAry) <> 3 Then
Response.Write "Error:AddCache(varAry)参数错误,数组长度错误"
Response.End()
End If
If varAry(0) = "" Then
Response.Write "Error:AddCache(varAry)错误,key不能为空"
Response.End()
End If
If varAry(1) = "" or Not IsNumeric(varAry(1)) Then varAry(1) = 1200
Application.Lock()
Application(CACHEPREFIX & varAry(0)) = array(varAry(0),varAry(1),varAry(2),varAry(3),DateAdd("s",varAry(1),Now()))
Application.UnLock()
End Function
Read the rest of this entry

ASP 事件类 eventProvider

asp事件类,功能说明:
1,showInfo(e_title,c_url,e_num,e_des,e_time,opera,ip,reurl):显示错误信息
2,getIP():取得客户IP
3,checkPost():验证是否是站外提交
4,getReferer():来路记录
5,getCurURL():取得当前页面路径
6,isRefresh(s1,s2,maxtimes):防刷新 Read the rest of this entry

ASP 通用函数库

< %
    '******************************
    '类名:
    '名称:通用库
    '日期:2008/10/28
    '作者:by xilou
    '网址:http://www.chinacms.org
    '描述:通用库
    '版权:转载请注名出处,作者
    '******************************
    '最后修改:20090108
    '修改次数:2
    '修改说明:
    '20090108 增加下列函数:
    '    A2U(),U2A(),UrlEncode(),UrlDecode(),GBToUTF8(),Bytes2Str(),Str2Bytes()
    '20090108 增加下列函数:
    '    AryToVbsString(arr)
    '目前版本:
    '******************************/
 
    '输出
    Sub Echo(str)
        Response.Write str
    End Sub
 
    '断点
    Sub Halt()
        Response.End()
    End Sub
 
    '输出并换行
    Sub Br(str)
        Echo str & "<br />" & vbcrlf
    End Sub
 
    '简化Request.Form()
    'f : 表单名称
    Function P(f)
        P = Replace(Request.Form(f), Chr(0), "")
    End Function
 
    '接收表单并替换单引号
    Function Pr(f)
        Pr = Replace(Request.Form(f), Chr(0), "")
        Pr = Replace(Pr, "'", "''")
    End Function
 
    '简化Request.Querystring()
    'f : 表单名称
    Function G(f)
        G = Replace(Request.QueryString(f), Chr(0), "")
    End Function
 <a href="http://www.lixiaopeng.org/asp-general-library/#more-967" class="more-link">Read the rest of this entry</a>
当要进行MD5加密的字符串不含中文时,那么ASP.NET的加密结果和ASP是一致的:
 
 
 
Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile("www.mzwu.com", "MD5")); 
//结果:D66E1F138689B9B5AA4C520D9EAFFB61
 
 
 
 
Response.Write(MD5("www.mzwu.com",32))
'结果:d66e1f138689b9b5aa4c520d9eaffb61
 
当要进行MD5加密的字符串含中文时,两者的加密结果就不一致了:
 
 
 
Response.Write(FormsAuthentication.HashPasswordForStoringInConfigFile("木子屋", "MD5")); 
//结果:34D9CBD5164C47058DFA3AF832E2D1DC
 
 
Response.Write(MD5("木子屋",32))
'结果:0a40a90190da023ae7aa17771663a41e
 
 
我们知道,ASP.NET默认使用utf-8编码格式,而ASP使用的是gb2312编码格式,正是由于这编码格式不同,才导致了两者对中文加密结果的不同。下边我们看看怎么让ASP.NET的编码结果和ASP一样,那也就意味着要让ASP.NET采用gb2312编码格式,这点FormsAuthentication.HashPasswordForStoringInConfigFile()方法是办不到的,我们得使用System.Security.Cryptography.MD5CryptoServiceProvider对象的ComputeHash方法来进行加密:
 
MD5CryptoServiceProvider MD5 = new MD5CryptoServiceProvider();
Response.Write(BitConverter.ToString(MD5.ComputeHash(Encoding.GetEncoding("gb2312").GetBytes("木子屋"))).Replace("-", ""));
//结果:0A40A90190DA023AE7AA17771663A41E
 
 <a href="http://www.lixiaopeng.org/aspnet-md5-encryption-solution-results-and-asp-chinese-inconsistencies/#more-729" class="more-link">Read the rest of this entry</a>

ASP错误代码总结

Microsoft VBScript语法错误(0x800A03E9)-->内存不足
Microsoft VBScript语法错误(0x800A03EA)-->语法错误
Microsoft VBScript语法错误(0x800A03EB)-->缺少 ':'
Microsoft VBScript语法错误(0x800A03ED)-->缺少 '('
Microsoft VBScript语法错误(0x800A03EE)-->缺少 ')'
Microsoft VBScript语法错误(0x800A03EF)-->缺少 ']'
Microsoft VBScript语法错误(0x800A03F2)-->缺少标识符
Microsoft VBScript语法错误(0x800A03F3)-->缺少 '='
Microsoft VBScript语法错误(0x800A03F4)-->缺少 'If'
Microsoft VBScript语法错误(0x800A03F5)-->缺少 'To'
Microsoft VBScript语法错误(0x800A03F6)-->缺少 'End'
Microsoft VBScript语法错误(0x800A03F7)-->缺少 'Function'
Microsoft VBScript语法错误(0x800A03F8)-->缺少 'Sub'
Microsoft VBScript语法错误(0x800A03F9)-->缺少 'Then'
Microsoft VBScript语法错误(0x800A03FA)-->缺少 'Wend'
Microsoft VBScript语法错误(0x800A03FB)-->缺少 'Loop'
Microsoft VBScript语法错误(0x800A03FC)-->缺少 'Next'
Microsoft VBScript语法错误(0x800A03FD)-->缺少 'Case'
Microsoft VBScript语法错误(0x800A03FE)-->缺少 'Select'
Microsoft VBScript语法错误(0x800A03FF)-->缺少表达式
Microsoft VBScript语法错误(0x800A0400)-->缺少语句
Microsoft VBScript语法错误(0x800A0401)-->语句未结束
Microsoft VBScript语法错误(0x800A0402)-->缺少整型常数
Microsoft VBScript语法错误(0x800A0403)-->缺少 'While' 或 'Until'
Microsoft VBScript语法错误(0x800A0404)-->缺少 'While', 'Until' 或语句未结束
Microsoft VBScript语法错误(0x800A0405)-->缺少 'With'
Microsoft VBScript语法错误(0x800A0406)-->标识符过长
Microsoft VBScript语法错误(0x800A0407)-->无效数字
Microsoft VBScript语法错误(0x800A0408)-->无效字符
Microsoft VBScript语法错误(0x800A0409)-->未结束的字符串常量
Microsoft VBScript语法错误(0x800A040A)-->注释未结束
Microsoft VBScript语法错误(0x800A040D)-->无效使用 'Me' 关键字
Microsoft VBScript语法错误(0x800A040E)-->'loop' 语句缺少 'do'
Microsoft VBScript语法错误(0x800A040F)-->无效的 'exit' 语句
Microsoft VBScript语法错误(0x800A0410)-->循环控制变量 'for' 无效
Microsoft VBScript语法错误(0x800A0411)-->名称重定义
Microsoft VBScript语法错误(0x800A0412)-->必须是行中的第一个语句
Microsoft VBScript语法错误(0x800A0413)-->不能为 non-ByVal 参数赋值
Microsoft VBScript语法错误(0x800A0414)-->调用子程序时不能使用括号
Microsoft VBScript语法错误(0x800A0415)-->缺少文字常数
Microsoft VBScript语法错误(0x800A0416)-->缺少 'In'
Microsoft VBScript语法错误(0x800A0417)-->缺少 'Class'
Microsoft VBScript语法错误(0x800A0418)-->必须在一个类的内部定义
Microsoft VBScript语法错误(0x800A0419)-->在属性声明中缺少 Let , Set 或 Get
Microsoft VBScript语法错误(0x800A041A)-->缺少 'Property'
Microsoft VBScript语法错误(0x800A041B)-->在所有属性的规范中,变量的数目必须一致
Microsoft VBScript语法错误(0x800A041C)-->在一个类中不允许有多个缺省的属性/方法
Microsoft VBScript语法错误(0x800A041D)-->类的初始化或终止程序没有参数
Microsoft VBScript语法错误(0x800A041E)-->属性的 set 或 let 必须至少有一个参数
Microsoft VBScript语法错误(0x800A041F)-->错误的 'Next'
Microsoft VBScript语法错误(0x800A0420)-->'Default' 只能在 'Property' , 'Function' 或 'Sub' 中指定
Microsoft VBScript语法错误(0x800A0421)-->指定 'Default' 时必须同时指定 'Public' ")
Microsoft VBScript语法错误(0x800A0422)-->只能在 Property Get 中指定 'Default'
Microsoft VBScript 运行时错误(0x800A0005)-->无效的过程调用或参数
Microsoft VBScript 运行时错误(0x800A0006)-->溢出
Microsoft VBScript 运行时错误(0x800A0007)-->内存不足
Microsoft VBScript 运行时错误(0x800A0009)-->下标越界
Microsoft VBScript 运行时错误(0x800A000A)-->该数组为定长的或临时被锁定
Microsoft VBScript 运行时错误(0x800A000B)-->被零除
Microsoft VBScript 运行时错误(0x800A000D)-->类型不匹配
Microsoft VBScript 运行时错误(0x800A000E)-->字符串空间不够
Microsoft VBScript 运行时错误(0x800A0011)-->不能执行所需的操作
Microsoft VBScript 运行时错误(0x800A001C)-->堆栈溢出
Microsoft VBScript 运行时错误(0x800A0023)-->未定义过程或函数
Microsoft VBScript 运行时错误(0x800A0030)-->加载 DLL 时出错
Microsoft VBScript 运行时错误(0x800A0033)-->内部错误
Microsoft VBScript 运行时错误(0x800A0034)-->错误的文件名或号码
Microsoft VBScript 运行时错误(0x800A0035)-->文件未找到
Microsoft VBScript 运行时错误(0x800A0036)-->错误的文件模式
Microsoft VBScript 运行时错误(0x800A0037)-->文件已经打开
Microsoft VBScript 运行时错误(0x800A0039)-->设备 I/O 错误
Microsoft VBScript 运行时错误(0x800A003A)-->文件已存在
Microsoft VBScript 运行时错误(0x800A003D)-->磁盘已满
Microsoft VBScript 运行时错误(0x800A003E)-->输入超出了文件尾
Microsoft VBScript 运行时错误(0x800A0043)-->文件过多
Microsoft VBScript 运行时错误(0x800A0044)-->设备不可用
Microsoft VBScript 运行时错误(0x800A0046)-->没有权限
Microsoft VBScript 运行时错误(0x800A0047)-->磁盘没有准备好
Microsoft VBScript 运行时错误(0x800A004A)-->重命名时不能带有其他驱动器符号
Microsoft VBScript 运行时错误(0x800A004B)-->路径/文件访问错误
Microsoft VBScript 运行时错误(0x800A004C)-->路径未找到
Microsoft VBScript 运行时错误(0x800A005B)-->对象变量未设置
Microsoft VBScript 运行时错误(0x800A005C)-->For 循环未初始化
Microsoft VBScript 运行时错误(0x800A005E)-->无效使用 Null
Microsoft VBScript 运行时错误(0x800A0142)-->不能创建所需的临时文件
Microsoft VBScript 运行时错误(0x800A01A8)-->缺少对象
Microsoft VBScript 运行时错误(0x800A01AD)-->ActiveX 部件不能创建对象
Microsoft VBScript 运行时错误(0x800A01AE)-->类不能支持 Automation 操作
Microsoft VBScript 运行时错误(0x800A01B0)-->Automation 操作中文件名或类名未找到
Microsoft VBScript 运行时错误(0x800A01B6)-->对象不支持此属性或方法
Microsoft VBScript 运行时错误(0x800A01B8)-->Automation 操作错误
Microsoft VBScript 运行时错误(0x800A01BD)-->对象不支持此操作
Microsoft VBScript 运行时错误(0x800A01BE)-->对象不支持已命名参数
Microsoft VBScript 运行时错误(0x800A01BF)-->对象不支持当前区域设置
Microsoft VBScript 运行时错误(0x800A01C0)-->未找到已命名参数
Microsoft VBScript 运行时错误(0x800A01C1)-->参数是必选项
Microsoft VBScript 运行时错误(0x800A01C2)-->错误的参数个数或无效的参数属性值
Microsoft VBScript 运行时错误(0x800A01C3)-->对象不是一个集合
Microsoft VBScript 运行时错误(0x800A01C5)-->未找到指定的 DLL 函数
Microsoft VBScript 运行时错误(0x800A01C7)-->代码资源锁定错误
Microsoft VBScript 运行时错误(0x800A01CA)-->变量使用了一个 VBScript 中不支持的 Automation 类型
Microsoft VBScript 运行时错误(0x800A01CE)-->远程服务器不存在或不可用
Microsoft VBScript 运行时错误(0x800A01E1)-->无效图片
Microsoft VBScript 运行时错误(0x800A01F4)-->变量未定义
Microsoft VBScript 运行时错误(0x800A01F5)-->非法赋值
Microsoft VBScript 运行时错误(0x800A01F6)-->对象不能安全地使用 Script 编程
Microsoft VBScript 运行时错误(0x800A01F7)-->对象不能安全初始化
Microsoft VBScript 运行时错误(0x800A01F8)-->对象不能安全创建
Microsoft VBScript 运行时错误(0x800A01F9)-->无效的或无资格的引用
Microsoft VBScript 运行时错误(0x800A01FA)-->类没有被定义
Microsoft VBScript 运行时错误(0x800A01FB)-->出现一个意外错误
Microsoft VBScript 运行时错误(0x800A1398)-->缺少常规表达式对象
Microsoft VBScript 运行时错误(0x800A1399)-->常规表达式语法错误
Microsoft VBScript 运行时错误(0x800A139A)-->错误的数量词
Microsoft VBScript 运行时错误(0x800A139B)-->常规表达式中缺少 ']'
Microsoft VBScript 运行时错误(0x800A139C)-->常规表达式中缺少 ')'
Microsoft VBScript 运行时错误(0x800A139D)-->字符集越界
Microsoft VBScript 运行时错误(0x800A802B)-->未找到元素
ActiveServerPages,ASP0126(0x80004005)-->找不到包含文件
Microsoft OLEDBProviderforODBCDrivers(0x80040E14)-->sql语句出错(字段名错误,或数据类型不匹配)
Microsoft OLEDBProviderforODBCDrivers(0x80040E07)-->sql语句出错(要插入或更新的字段的类型与变量数据类型不匹配)
Microsoft OLEDBProviderforODBCDrivers(0x80040E57)-->sql语句出错(要插入或更新的数据溢出)
Microsoft OLEDBProviderforODBCDrivers(0x80040E10)-->sql语句出错(update字段名或要更新的数据类型错误)
Microsoft OLEDBProviderforODBCDrivers(0x80004005)-->sql语句出错(要插入或更新的字段的数值不能为空值)
Microsoft OLEDBProviderforODBCDrivers(0x80004005)-->打开数据库出错,没有在指定目录发现数据库
Microsoft OLEDBProviderforODBCDrivers(0x80040E37)-->没有发现表
ODBCDrivers(0x80040E21)-->sql语句出错(数据类型不匹配或表/字段错误或处于编辑状态,或不存在于conn打开的数据库中)
ADODB.Recordset(0x800A0BB9)-->sql语句出错(sql语句或conn语句未定义或对一个rs属性进行赋值时发生错误)
ADODB.Recordset(0x800A0CC1)-->rs对像出错(rs对像本身不存在或错误地引用了一个不存在的字段名)
ADODB.Recordset(0x800A0BCD)-->rs对像出错(记录集中没有记录却对记录集进行操作)
ADODB.Recordset(0x800A0E78)-->rs对像出错(记录集不存在,缺少rs.open语句)
ADODB.Recordset(0x800A0CC1)-->rs对像出错(引用了一个不存在的字段名)
ADODB.Recordset(0x800A0E7D)-->conn定义错误 Read the rest of this entry

Asp伪静态html实现方法

Asp伪静态html实现方法
数据库是access,表名article,里面有id,title,content
config.asp连接数据库文件

< % 
'功能:asp实现伪静态的例子 
'数据库链接 
db="data.mdb" 
Set conn = Server.CreateObject("ADODB.Connection") 
connstr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath(db) 
conn.open connstr 
If Err Then 
err.Clear 
Set conn = Nothing 
Response.Write "数据库连接出错,请检查连接字串。" 
Response.End 
End If 
'定义新闻阅读界面的读取 
Dim News_title,News_content 
Sub ReadNews() 
set rs1=server.createobject("adodb.recordset") 
sql1="select id,title,content from article where id="& ID 
rs1.open sql1,conn,3,3 
News_title=rs1("title") 
News_content=rs1("content") 
rs1.close 
set rs1=Nothing 
End Sub 
%>

Read the rest of this entry

Asp实现屏蔽IP地址访问的代码

<%
'受屏蔽IP地址(段)集合,星号为通配符,通常保存于配置文件中。
Const BadIPGroup = "220.200.59.136|220.205.168.141"
If IsForbidIP(BadIPGroup) = True Then
Response.Write(GetUserIP &#038;"IP地址禁止访问")
Response.End()
End If
'****************************************************************
'参数vBadIP:要屏蔽的IP段,IP地址集合,用|符号分隔多个IP地址(段)
'返回Bool:True用户IP在被屏蔽范围,False 反之
'****************************************************************
Function IsForbidIP(vBadIP)
Dim counter, arrIPPart, arrBadIP, arrBadIPPart, i, j
arrBadIP = Split(vBadIP, "|")
arrIPPart = Split(GetUserIP(), ".")
For i = 0 To UBound(arrBadIP)
counter = 0
arrBadIPPart = Split(arrBadIP(i), ".")
For j = 0 To UBound(arrIPPart)
If (arrBadIPPart(j)) = "*" or Cstr(arrIPPart(j)) = Cstr(arrBadIPPart(j)) Then
counter = counter + 1
End If
Next
If counter = 4 Then
IsForbidIP = True
Exit Function
End If
Next
IsForbidIP = False
End Function
'***************
'返回客户IP地址
'***************
Function GetUserIP()
Dim IP
IP = Request.ServerVariables("HTTP_X_FORWARDED_FOR")
If IP = "" Then IP = Request.ServerVariables("REMOTE_ADDR")
GetUserIP = IP
End Function
%>

转自:http://www.54rk.cn//blogview.asp?id=273

Request对象用于接受所有从浏览器发往你的服务器的请求内的所有信息。集合

Request.ClientCertificate(key[SubField])

所有客户证书的信息的集合。对于Key,该集合具有如下的关键字:

Subject
证书的主题。包含所有关于证书收据的信息。能和所有的子域后缀一起使用。

Issuer
证书的发行人。包含所有关于证书验证的信息。除了CN外,能和所有的子域后缀一起使用。

VadidFrom
证书发行的日期。使用VBScript格式。

ValidUntil
该证书不在有效的时间。

SerialNumber
包含该证书的序列号。

Certificate
包含整个证书内容的二进制流,使用ASN.1格式。
对于SubField,Subject和Issuer关键字可以具有如下的子域后缀:(比如:SubjectOU或IssuerL)

C
起源国家。

O
公司或组织名称。

OU
组织单元。

CN
用户的常规名称。

L
局部。

S
州(或省)。

T
个人或公司的标题。

GN
给定名称。

I
初始。
当文件cervbs.inc(VBScript使用)或cerjavas.inc(Jscript使用)通过使用#INCLUDE导向包含在你的Active Server Page里时,下面两个标志可以使用:

ceCertPresent
指明客户证书是否存在,其值为TRUE或FALSE。

ceUnrecongnizedIssure
指明在该链表中的最后的证书的发行者是否未知,其值为TRUE或FALSE。
Request.Cookies(Cookie[(key).Attribute])

Cookie的集合。允许获得浏览器的Cookie。Cookie指明返回那一个Cookie。Key用于从Cookie字典中返回具有某一关键字的Cookie值。对于Attribute,你能使用属性HasKeys来确定某一Cookie是否具有子关键字。HasKeys的值为TRUE或FALSE。

Request.Form(Parameter)[(Index).Count]

填写在HTML的表单中所有的数据的集合。Parameter是在HTML表单中某一元素的名称。当某一参数具有不止一个值(比如,当在<SELECT>中使用MULTIPLE属性时)时,使用Index。当某一参数具有多值时,Count指明多值个数。

Request.QueryString(Varible)[(Index).Count]

查询字符串的所有值的集合。Varible是在查询字符串某一变量的名称。当某一变量具有多于一个值时,使用Index。当某一参数具有多值时,Count指明值的个数。

Request.ServerVaribles(Server Environment Variable)

环境变量的集合。允许读取HTTP头。你可以通过使用HTTP_前缀来读取任何头信息。比如,HTTP_USER_AGENT接受客户代理HTTP头(浏览器类型)。除此外,你可以使用下表所示的变量获得任何环境信息。

ALL_HTTP
客户端发送的所有HTTP标头,他的结果都有前缀HTTP_。

ALL_RAW
客户端发送的所有HTTP标头,其结果和客户端发送时一样,没有前缀HTTP_

APPL_MD_PATH
应用程序的元数据库路径。

APPL_PHYSICAL_PATH
与应用程序元数据库路径相应的物理路径。

AUTH_PASSWORD
当使用基本验证模式时,客户在密码对话框中输入的密码。

AUTH_TYPE
这是用户访问受保护的脚本时,服务器用于检验用户的验证方法。

AUTH_USER
代验证的用户名。

CERT_COOKIE
唯一的客户证书ID号。

CERT_FLAG
客户证书标志,如有客户端证书,则bit0为0。如果客户端证书验证无效,bit1被设置为1。

CERT_ISSUER
用户证书中的发行者字段。

CERT_KEYSIZE
安全套接字层连接关键字的位数,如128。

CERT_SECRETKEYSIZE
服务器验证私人关键字的位数。如1024。

CERT_SERIALNUMBER
客户证书的序列号字段。

CERT_SERVER_ISSUER
服务器证书的发行者字段

CERT_SERVER_SUBJECT
服务器证书的主题字段。

CERT_SUBJECT
客户端证书的主题字段。

CONTENT_LENGTH
客户端发出内容的长度。 Read the rest of this entry

asp内置对象 session 详解

可以使用 Session 对象存储特定用户会话所需的信息。这样,当用户在应用程序的 Web 页之间跳转时,存储在 Session 对象中的变量将不会丢失,而是在整个用户会话中一直存在下去。当用户请求来自应用程序的 Web 页时,如果该用户还没有会话,则 Web 服务器将自动创建一个 Session 对象。当会话过期或被放弃后,服务器将终止该会话。

Session 对象最常见的一个用法就是存储用户的首选项。例如,如果用户指明不喜欢查看图形,就可以将该信息存储在 Session 对象中。有关使用 Session 对象的详细信息,请参阅"ASP 应用程序"部分的"管理会话"。

注意 会话状态仅在支持 cookie 的浏览器中保留。

语法
Session.collection|property|method

集合
Contents 包含已用脚本命令添加到会话中的项目。
StaticObjects 包含通过 <OBJECT> 标记创建的并给定了会话作用域的对象。
属性
CodePage 将用于符号映射的代码页。
LCID 现场标识。
SessionID 返回用户的会话验证。
Timeout 应用程序会话状态的超时时限,以分钟为单位。
方法
Abandon 该方法破坏 Session 对象并释放其资源。
事件
global.asa 文件中声明下列事件的脚本。

Session_OnEnd
Session_OnStart
有关以上事件及 global.asa 文件的详细信息, 请参阅 Global.asa 参考.

注释
您可以在 Session 对象中存储值。存储在 Session 对象中的信息在会话及会话作用域内有效。下列脚本演示两种类型的变量的存储方式。

<%
Session("username") = "Janine"
Session("age") = 24
%> Read the rest of this entry