您的位置:首页 > 其它

COM组件技术在用户身份登陆验证中的运用

2009-03-26 20:17 232 查看
摘要:COM组件编程是一种面向对象编程方法,在大型应用系统开发中,com组件起着中间件的作用.com组件往往封装的是业务逻辑处理,只需编写相应函数入口和函数出口,该com组件就可以在任何程序中调用.利用com组件编程方法使程序结构性更强,代码不容易泄漏,因为dll是无法被编译和破解的.当然,com组件也有不足,就是业务逻辑修改后,该组件需要重新编译,这往往使得com组件利用起来很麻烦.本文将具体介绍如何利用VB6.0制作com组件,以及该组件在ASP中如何调用.
关键字:com组件,中间件,业务逻辑,DLL
1.引言:
com组件技术是软件开发中一项重要技术,其封装性好,保密性强,源码不易泄漏,更为重要的是,com组件复用性更好,编写一次,到处使用.另外,由于com组件具有语言和平台无关的特性,因此任何程序员都可以编写自已擅长的com组件.
2.环境介绍:
com组件编写我采用vb6.0,数据库使用微软的SQL2000,客户端采用asp3.0,利用服务器软件IIS5.1解释执行.
3.具体准备:
身份验证我采用存储过程来处理.因为存储过程编译一次之后常驻内存,相当于一个缓存机制,第二次调用从内存中读取,不占系统资源.另外,使用存储过程来传递参数可以杜绝SQL注入,因为存储过程使用的是参数化传递.最后,使用存储过程可以使系统架构更清晰,结构性更强.
新建的存储过程如下:
CREATE PROCEDURE checklogin
@username varchar(20),
@password varchar(20)
AS
SELECT * FROM user_info WHERE username=#username and password=#password
GO
这个存储过程很简单啦,具体我不解释.将上面的#号换成@
4.制作com组件
需要安装微软VB6.0运行环境.安装好后运行该软件.



新建一个Active DLL项目.
在窗口中输入如下代码,如下图:



这些代码主要是基于对存储过程的调用,并返回一个调用结果.代码解释如下:
Public Function checkuser(ByVal username As String, ByVal password As String) As Boolean 'username和password是传递参数,均是string类型,函数传的是布尔值(两种结果False和True),ByVal 关键字指出参数是按值来传递的,具体使用参考vb语法手册
Dim conn As New ADODB.Connection '建立ADO连接对象,这里New一下,相当于建一个实例
conn.Open "Provider=SQLOLEDB;User ID=sa;Password=123;database=jsjdjks;server=127.0.0.1"'这里简单啦,连接sql数据库,通过SA和密码连接
Set cmd = New ADODB.Command'建立Command对象,因为我用了存储过程,这是必须的
cmd.ActiveConnection = conn '连接参数传值
cmd.CommandType = adCmdStoredProc '这里表明执行的是存储过程类型
cmd.CommandText = "checklogin" '调用的存储过程名称

cmd.Parameters.Append cmd.CreateParameter("username", adVarChar, adParamInput, 20, username)'外来参数向存储过程里传递数值
cmd.Parameters.Append cmd.CreateParameter("password", adVarChar, adParamInput, 20, password)'外来参数向存储过程里传递数值
Set rs = cmd.Execute '执行存储过程
If rs.EOF Then '看执行成功没有
checkuser = False '没有执行成功
Else
checkuser = True '执行成功了
End If
rs.Close '关闭对象,释放内存
Set rs = Nothing '同上
Set cmd.ActiveConnection = Nothing '关闭数据库连接
End Function '函数结束
写好上面代码后,再对该工程和类重新命名.默认的工程名是"工程1",默认类名是"Class1"
这里我把工程名命名为:wz(看个人喜好啦),类名命名为:ft(看个人喜好啦)
下面是重要的最为关键的一步,将这个函数编译成一个DLL文件.具体步骤如下:
工程-->引用
在引用的列表中,一定要钩选下面三个选项:
a.COM+ Services Type Library
b.MicroSoft Active Server Pages Type Library
c.Microsoft Activex Data Object 2.7 Library
钩选之后确定就可以了.
然后在"文件"下面,点击"生成wz.dll",就大功告成了.

.注册这个组件
我把组件注册在D盘,在D盘一定会看到wz.dll这个文件,呵呵!
好了,不多说,开始-->运行-->敲入"regsvr32 D:/wz.dll"
这样组件就注册好了.

6.在asp代码去调用这个组件
编写代码如下:
<%@ Language=VBScript %>
<HTML>
<BODY>
<p>
<%
username=request("username")'表单取值
password=request("password")'表单取值
Dim obj
set obj=server.CreateObject("wz.ft") '调用那个wt组件中的fz类
if obj.checkuser(username,password) then'判断用户名和密码是否正确
Response.Write ("登录成功!")
Else
Response.Write ("登录失败!")
End If
%>
</p>
<form name="form1" method="post" action="a.asp">
<p>
<input type="text" name="username">
</p>
<p>
<input type="text" name="password">
<input type="submit" name="Submit" value="提交">
</p>
</form>
<p> </p>
</BODY>
</HTML>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐