|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
缺点:安全性不是太差了,还行,只要你充分利用系统自带的工具;唯一缺点就是执行效率慢,如何进行网站优化以后,效果会比较好。 利用Session变量的成绩
固然Session变量是复杂易用的,并且比其他办法要平安,但仍是有一些成绩。起首,只要会见者的阅读器撑持cookie时,Session变量才干正常任务。虽然如今大多半阅读器都撑持cookie,然而记住会见者可以回绝利用它(这依附于阅读器的平安设置)。
其次,出格在IIS4中,当阅读器恳求多个页面时,Session变量能够被中途丧失。凡是,遵守上面三个复杂准绳可以将这个破绽削减到最小:
○ 只利用一个global.asa文件,放置在站点的根目次下。附带多个global.asa的嵌套使用法式,能够招致session变量利用越界。
○ 确认IUSE帐号或它所属的组对global.asa文件最少有读的权限,而且IIS具有Anonymous会见权限。
○ 要确认在一切页面中你都利用一样的字符巨细写格局。Netscape(和其他阅读器)关于/ThisFolder/ThisFile.asp 和 /thisfolder/thisfile.asp 这两个链接是看成在两个分歧目次下的两个分歧文件对待的。所以当从页面中取回一个cookie时,能够会由于巨细写成绩产生毛病。
在数据库中保留登录信息
假如需求跟踪大批会见者的信息,仅仅利用include文件的体例就会变得很难办理。这时候,咱们可使用数据库。使用此手艺,一样合用于运转会见者到场或在线挂号的情形,而且将他们到场用户列表。关于这个成绩在此不做进一步切磋。
利用数据库处置全体的进程长短常复杂的!当用户供应了登录信息后,利用SQL的SELECT号令在数据库中查找输出的用户名,并取回婚配的口令。假如取回的口令与输出的口令分歧,就答应他们进入下一步:
strSQL = "SELECT sPassword FROM Users " _ & "WHERE sUsername = " & Request("v1") & ""
到场登录信息的成绩
但是,到场新用户是一个小困难。假如发明用户在数据库中不存在,而且决意利用ASP主动到场他们,咱们就必需注重了。换言之,当用户填写新的信息时,能够有别的的用户利用一样的用户名在做一样的工作,并且后者举措快,起首在数据库中保留了信息,如许,前者的到场任务就不克不及完成。
有2个明显的办法可以免这个景象。一个办法是:主动创立一个带空口令的新纪录,用户往后可以修正它:
strSQL = "INSERT INTO Users (sUserName, sPassword) " _ & "VALUES(" & Request("v1") & ", null)"
一个更好的办法是:假如新纪录创立胜利,就利用一个进程前往一个特别的数值(好比用户名),或,假如不胜利,前往毛病信息。如许,用户就能够选择一个新的用户名。上面的例子是利用SQL Server存储进程,假如到场新纪录胜利,就前往用户名,假如用户名已存在,就前往空字符串:
CREATE PROCEDURE AddUser @s_user varchar(12), @s_pword varchar (12) AS
IF EXISTS (SELECT * FROM Users WHERE sUserName = @s_user)
SELECT
ELSE
BEGIN
INSERT INTO Users (sUserName, sPassword)
VALUES(@s_user, @s_pword)
SELECT sUserName FROM Users WHERE sUsername = @s_user
END
如许就能够在ADO中履行这个进程,并反省前往值来确认是不是添加胜利。假如掉败,就告诉用户选择一个新用户名。这里有一些代码描写了若何利用上述的存储进程,你可以从本文下载的文件中找到这些代码。
以下是从表单中搜集的数据:
strUserName = "NewUser1"
strPassword = "ThePassword"
界说数据库毗连:
strConnect = "DRIVER={SQL Server};SERVER= yourserver ; " _
& "DATABASE= yourdatabase;UID= yourusername;PWD= yourpassword ;"
创立并翻开数据库毗连:
Set oCon = Server.CreateObject("ADODB.Connection")
oCon.Open strConnect
创立command对象,设置属性
Set oCmd = Server.CreateObject("ADODB.Command")
oCmd.ActiveConnection = oCon our open connection
oCmd.CommandType = 4 its a stored procedure
oCmd.CommandText = "AddUser" the procedure name
供应参数履行command对象,失掉了局:
Set oRs = oCmd.Execute (lngRecsAffected, Array(strUserName,strPassword))
strResult = Trim(oRs.Fields(0)) ADO may add a space to the result
显示了局,假如毛病,显示“user exists warning”:
If strResult = "" Then
Response.Write "User Already Exists"
Else
Response.Write "Added new user: 〈 B 〉" & strResult & "〈 /B 〉"
End If
% 〉
asp,jsp,php是web开发的三大技术,asp简单易用且有microsoft做靠山,jsp功能强大是因为有java支持,php则开源跨平台.在国内,asp应用范围最广,jsp发展势头最猛,php则处于劣势.这可能与公司的支持以及技术的培训有关. |
|