ASP与数据库运用:密码验证

数据|数据库

文/龙儿 (2000/10/30 )

  Microsoft 的大作ASP(Active Server Pages)以其易学易用、扩充性好、功能多而强等优点正掀起一场新的web编程革命(从严格意义上讲,编写asp并不是编程),它以令人吃惊的发展和普及速度大有取代由perl等语言编写的CGI(Common Gateway Interface,通用网关接口) 的势头。基于web page方式的web管理模式已经成为潮流,看看现在的网管们,有谁不会asp的编写呢?要管理?那你可能就要用到我这里要说的“密码验证”了。简单地说,密码验证就是首先判断你是不是有登录权限,如果有,就继续,否则,哼哼……。什么?你到现在还不知道ASP是什么东东?“该程序执行了非法操作,即将被关闭。如仍有问题,请与程序供应商联系。”----------系统语

  下面,我们就来看看实现密码验证的ASP需要些什么吧。

  一、 ASP运行环境:

  Windows 95/98单机平台:PWS (Personal Web Server)4.0 、windows NT 4.0/5.0服务器平台:IIS(Internet Information Server )Service Pack 3 及其以上版本)

  NT workstation 4.0 工作站平台:PWS(Personal Web Server )NT workstation版及最新版的IE浏览器。

  二、 用于制作ASP的软件

  Windows FrontPage 98/2000 、Dreamweaver 3.0 ,如果这些软件你都没有,那你就用windows 中的Notepad 当一次“代码编写狂”吧。不过ASP中很多代码仍是需要我们手工编写大量代码的,用专用的网页制作软件只不过是偷一丁点懒而已。

  三、 用哪一种数据库作为储存用户资料(用户名及密码)的数据库呢?

  SQL Server、Microsoft Access 97/2000等都可以。本人建议你使用Access,因为你可能对它比较熟悉,一旦有问题,解决起来比较容易,更深的原因是:Microsoft Access相对于其它非服务器等级的数据库执行的效率要高得多。

  好了,废话说了这么多,可能你早已经不耐烦了。不过,这对于一些ASP的初学者可能还是有帮助的,对于这部分读者,你们可能还得要看看关于ASP方面的书籍或网站来增加你对ASP基本语法的了解。

  让我们一步一步来做这个密码验证吧,我采用的是Windows 98 + PWS 4.0平台,IE 5.0浏览器,网页制作软件:FrontPage 2000. Go!

  一、创建用户密码数据库

  先用Access建立一个用户密码数据库,建立字段名id和psd,并添加值.如:id的值我设为:admin,psd的值为:www,当然,你还可以继续添加用户id及psd,完成后保存为:psd.mdb。

  二、编写psd.asp(用户登录界面页,完成验证的功臣就是它了)及log.asp(成功登录后显示的页面)。在编写之前,我们来分析一下常见的用户登录界面,比如说你想收取基于web page方式免费邮件箱的登录界面:管理用户登录的文件名常常为log.*,开始登录时是这个文件,登录完成后浏览器的地址栏中还是显示的这个文件名,这是怎么回事儿呢?用ASP的方法来讲,原来,用户登录的文件被包含在登录完成后的文件中。以我现在要讲的这个例子来说,psd.asp就是被包含在log.asp中了。用户登录时看到的文件名将是:log.asp,而log.asp要求系统先执行psd.asp,通过验证之后才看到真正的log.asp网页。对了!实际上密码验证的关键在psd.asp。在你读完本文后,你会深深体会这一点。既然psd.asp文件是关键,那我们就先来看看psd.asp是怎么写的。

  运行FrontPage新建一个文件,并保存为:psd.asp(在FrontPage 的保存类型中选取“Active Server Pages”)。在FrontPage 左下角选取“HTML”先在它的顶部进行ASP源代码的编写,内容如下(以下源代码中凡出现“‘……”的均为注释):

  <%

  function checkPwd(id,psd) '检测用户id及密码

  dim conn,param,rs

  set conn=server.createobject("adodb.connection") '创建数据库连接对象conn

  param="driver={microsoft access driver (*.mdb)}" ‘指定数据库驱动程序,不可省略写为“access diver(*.mdb)”

  conn.open param & ";dbq=" & server.mappath("psd.mdb") '用指定的数据库驱动程序打开数据库,并指定数据路径

  sql="select*from psd where id='" & id & "' and psd='" & psd & "'" ‘定义sql从数据库中读取id及psd的值,本行中的第一个psd是指数据库名,以后的psd是指psd.mdb中的psd字段。

  set rs=conn.execute(sql) '打开数据库

  if rs.eof then

  checkpwd=false

  else

  checkpwd=true

  end if

  end function ‘以上几句判断是否已经读完数据库中的记录,如果没有,就向后读,如果已经完成,则验证用户名及密码。如果验证通过,则为true,反之为flase

  %>

  <%

  if isEmpty(session("passed")) then session("passed")=false '判断用户输入信息

  id=request("id") ‘获取用户id(用户名)

  psd=request("psd") ‘获取用户psd(密码)

  if id="" or psd="" then

  response.write"请输入您的登录名及密码。" '如果用户没有输入完整的信息,返回出错信息。

  elseif not checkpwd(id,psd) then

  response.write"用户名或密码错误!<br>请检查你的用户名及密码然后再试一次!" ‘如果用户已经输入完整信息,但输入错误也返回出错信息。

  else session("passed")=true

  end if

  if not session("passed") then%> ‘用户输入的信息完全正确并验证通过,以下开始编写html代码,做一个用户登录界面。

  <html>

  <head>

  <meta http-equiv="Content-Type" content="text/html; charset=gb2312">

  <title>请您输入您的用户名及密码!</title>

  </head>

  <body bgcolor="#000000" text="#FFFFFF">

  <p align="center"> 

  <p align="center"> </p>

  <p align="center"><b><font face="黑体" size="6">用户登录首页</font></b></p>

  <p align="center"> </p>

  <form method="POST" action="<%=request.serverVariables("psd.mdb")%>">

  <table border="0" width="100%" cellspacing="0" cellpadding="0">

  <tr>

  <td width="41%" align="right">用户名:</td>

  <td width="59%"><input type="text" name="id" size="20" value="<%=id%>"></td>

  </tr>

  <tr>

时间: 2024-08-31 08:40:17

ASP与数据库运用:密码验证的相关文章

如何在asp查看数据库用户名密码

问题描述 <%'optionexplicitdimstartime,conn,connstr,db,rs,rs_s,rs_s1startime=timer()db="../data/Iheeo_DB.mdb"Setconn=Server.CreateObject("ADODB.Connection")connstr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPa

ASP程序密码验证问题 (MS,缺陷)

涉及程序: MS IIS   描述 国内一大学生发现的NT网站的ASP程序密码验证漏洞   详细 来自: benjurry@263.net原文如下: 很早就发现很多国内程序员对密码验证不注意,今天去了陈水扁(www.abian.net)的网沾,随手一试,居然发现有这种漏洞,真是让人笑破肚皮!原理:很多网站把密码放到数据库中,在登陆验证中用以下sql,(以asp为李)sql="select * from user where username='"&username&&q

ASP程序密码验证问题

程序|问题 涉及程序: MS IIS 描述 国内一大学生发现的NT网站的ASP程序密码验证漏洞 详细 来自: benjurry@263.net原文如下: 很早就发现很多国内程序员对密码验证不注意,今天去了陈水扁(www.abian.net)的网沾,随手一试,居然发现有这种漏洞,真是让人笑破肚皮!原理:很多网站把密码放到数据库中,在登陆验证中用以下sql,(以asp为李)sql="select * from user where username='"&username&

asp.net (C#)登陆用户名和密码验证,用dr.Read()方法会出现大小写不区分!!(例如:我注册了大写账号,用小写账号也可以登陆).求各位大神帮我解答

问题描述 asp.net(C#)登陆用户名和密码验证,用dr.Read()方法会出现大小写不区分!!(例如:我注册了大写账号,用小写账号也可以登陆).求各位大神帮我解答!! 解决方案 解决方案二:你的代码贴出来解决方案三:SQLServer数据库??如果是,那应该不是asp.net(C#)的原因,是数据库的原因,SQLServer不区分大小写.解决方案四:谁知道你是什么方法做的验证呀解决方案五:mssql可以配置是否区分大小写,这不是c#的问题解决方案六:这里只用dr.Read()方法验证判断了

windows身份验证-ASP.NET 使用Windows身份验证 怎么获取登陆用户的密码?

问题描述 ASP.NET 使用Windows身份验证 怎么获取登陆用户的密码? 我现在想在web程序中发送邮件(或类似需要域验证的功能),其中Credentials我想使用当前登陆用户的. 请问在这个时候怎么获取密码或有什么别的方式处理? 解决方案 无法获取的,如果可以获取的话,你的电脑系统就没有任何安全性可言... 解决方案二: 只知道里面有个SAM文件 解决方案三: 你指的是,我发布个ASP.NET应用程序,你访问了,我就可以获取到你的windows登录用户和密码? 你觉得这可能么

密码验证 (转载)

Microsoft 的大作ASP(Active Server Pages)以其易学易用.扩充性好.功能多而强等优点正掀起一场新的web编程革命(从严格意义上讲,编写asp并不是编程),它以令人吃惊的发展和普及速度大有取代由perl等语言编写的CGI(Common Gateway Interface,通用网关接口) 的势头.基于web page方式的web管理模式已经成为潮流,看看现在的网管们,有谁不会asp的编写呢?要管理?那你可能就要用到我这里要说的"密码验证"了.简单地说,密码验证

用ASP访问数据库的几种常见方式

用ASP访问数据库的几种常见方式 ActiveX Data Objects (ADO) 是一项容易使用并且可扩展的将数据库访问添加到 Web 页的技术.可以使用 ADO 去编写紧凑简明的脚本以便连接到 Open Database Connectivity (ODBC) 兼容的数据库和 OLE DB 兼容的数据源.如果您是一个对数据库连接有一定了解的脚本编写人员,那么您将发现 ADO 命令语句并不复杂而且容易掌握.同样地,如果您是一个经验丰富的数据库编程人员,您将会正确认识 ADO 的先进的与语言

实现网页密码验证的两个基本方法

   我们在访问一些网站时,经常会碰到需要输入"用户名和密码"的网页,用户名和密码的验证给网站的安全带来保障,一般网页的安全设置以目录为单位,通过设置目录的属性可以保证网站的安全,这样的网页是如何制作出来的呢? 下面笔者将介绍在网页设计中密码验证的两种方法,希望能给网页设计者有所帮助. 一.使用IIS所提供的工具 如果设计者是管理员级的用户,我们可以用一种简单的方法来实现密码验证.假设你安装的Web服务器是IIS,我们可以通过IIS所提供的"Internet服务管理员&quo

ASP.NET讲座(3)-输入验证控件

asp.net|控件 3.1 ASP.net解决了ASP的难题:验证表单填写的正确性 如今的商业网站,或者个人网站,多少都有客户调查啊,用户注册之类的东西,必然会用到表单,这些表单的填写正确与否,明显是由手写代码的方式来控制的.我承认编写代码,是一项有趣的工作,不过每次验证表单都来手写代码,我们希望提高我们的工作效率,并不是把我们很有限的时间花在表单的验证工作上. 基于另外的一些原因,Web应用程序很不好验证用户的输入,HTML 3.2 规范可以让你控制用户的反馈,但恶意的或者技术高超的用户可以