分享
 
 
 

ASP与数据库,有用的代码

王朝asp·作者佚名  2006-12-16
窄屏简体版  字體: |||超大  

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

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>

<td width="41%" align="right">密 码:</td>

<td width="59%"><input type="password" name="psd" size="20"

value="<%=psd%>"></td>

</tr>

<tr>

<td width="41%"></td>

<td width="59%"></td>

</tr>

</table>

<p align="center"><input type="submit" value="提交" name="B1"><input

type="reset" value="清除" name="B1"></p>

</form>

<%response.end

end if %> ‘验证过程结束,进入加密网页。

</body>

</html>

完成了psd.asp的编写,可能你早已经迫不及待地想知道log.asp怎么编写了吧。让我们继续吧!

Log.asp的内容:

<!--#include file="psd.asp"-->

‘在log.asp源代码中的顶部输入这句,作用就是在系统执行log.asp之前先执行psd.asp啦!

<html>

<head>

<title>用户验证通过,您已经成功登录系统</title>

</head>

<body><center><p><p><p><p>用户验证通过,您已经成功登录!<br>

现在你可以进行你想要的操作了。如果你有什么问题,请来信Email<a

href="mailto:kanwo@163.net?subject=问你几个关于密码验证的问题">kanwo@163.net</a></center>

</body>

</html>

呵呵……手写了这么多,还受得了吧。你在编写完成之后,可以移植到其它平台上,比如Windows

NT。最后,将你做的这两个asp文件及psd.mdb数据库放在同一个目录下(该目录必须在PWS或IIS中有www服务),比如:c:\inetpub\wwwroot\。然后,在确保你的PWS或IIS在运行的情况下,在你们IE浏览器的地址栏中输入http://127.0.0.1/log.asp,看看,会有什么!(如果你在登录过程中听到你的硬盘在响,可别吓着了哟!)

q 文 章 点 评 3 篇

>>上篇文章:ASP技术访问WEB数据库

>>下篇文章:制作有管理功能的ASP留言板

第三招:控制你的弹出窗口只弹出一次(如果每进一次,刷新一次就弹出你不觉得很烦和麻烦吗?)有什么好的办法吗?

那是当然的啊,我们现在只要使用cookie来控制就能实现这样的要求了。

首先,你需把将如下代码加入到页面HTML的<HEAD>和</HEAD>之间:

<script>

.function openwin(){

.window.open("pop1.html","","width=120,height=240")

.}

.function get_cookie(Name) {

.var search = Name + "="

.var returnvalue = "";

.if (document.cookie.length > 0) {

.offset = document.cookie.indexOf(search)

.if (offset != -1) {

.offset += search.length

.end = document.cookie.indexOf(";", offset);

.if (end == -1)

.end = document.cookie.length;

.returnvalue=unescape(document.cookie.substring(offset, end))

. }

. }

.return returnvalue;

. }

.function loadpopup(){ //*控制弹出窗口的函数哟,你要使用他的啊

.if (get_cookie('popped')==''){

.openwin()

.document.cookie="popped=yes"

. }

.}

.//-->

</script>

然后,用<body onload="loadpopup()">替换页面中原来的<BODY>这一句就行的了。

》》》》》》》》》》》》》》》》》》》》》》----------------------------------

在提交帖之后:

<%

if Response.Cookies("time")<>"" then

if DateDiff('s',Response.Cookies("time"),now())<20 '隔20s才能再发帖

Response.Write "<script>alert('不能频繁发帖');window.location=history.go(-1)</script>"

response.End

end if

end if

Response.Cookies("time")=now()

…… '将帖子入库

----------------------------------------------------------

ASP项目中的公共翻页模块:

在大型的ASP项目中,很多的页面都涉及到翻页功能。如果每个页面都写一个翻页的程序的话,这样的工作即降低了工作效率,也不利于工程的模块化,不能使代码重用。因此,把翻页这样的功能模块化是很有必要的。

设计方法:

1、调用该模块时,只需要传递记录集和每页显示的记录的条数;

2、可以点击链接进行翻页,也可以直接输入页码,回车后翻页;

3、不要考虑文件名,程序的每次翻页都能在当前页面。

想清楚了上面3个问题,我们的公共翻页模块就可以动手了。

<%

'+++++++++++++++++++++++++++++++++++++

'◆模块名称: 公共翻页模块

'◆文 件 名: TurnPage.asp

'◆传入参数: Rs_tmp (记录集), PageSize (每页显示的记录条数)

'◆输 出: 记录集翻页显示功能

'+++++++++++++++++++++++++++++++++++++

'

Sub TurnPage(ByRef Rs_tmp,PageSize) 'Rs_tmp 记录集 PageSize 每页显示的记录条数;

Dim TotalPage '总页数

Dim PageNo '当前显示的是第几页

Dim RecordCount '总记录条数

Rs_tmp.PageSize = PageSize

RecordCount = Rs_tmp.RecordCount

TotalPage = INT(RecordCount / PageSize * -1)*-1

PageNo = Request.QueryString ("PageNo")

'直接输入页数跳转;

If Request.Form("PageNo")<>"" Then PageNo = Request.Form("PageNo")

'如果没有选择第几页,则默认显示第一页;

If PageNo = "" then PageNo = 1

If RecordCount <> 0 then

Rs_tmp.AbsolutePage = PageNo

End If

||||||'获取当前文件名,使得每次翻页都在当前页面进行;

Dim fileName,postion

fileName = Request.ServerVariables("script_name")

postion = InstrRev(fileName,"/")+1

'取得当前的文件名称,使翻页的链接指向当前文件;

fileName = Mid(fileName,postion)

%>

<table border=0 width='100%'>

<tr>

<td align=left> 总页数:<font color=#ff3333><%=TotalPage%></font>页

当前第<font color=#ff3333><%=PageNo%></font>页</td>

<td align="right">

<%If RecordCount = 0 or TotalPage = 1 Then

Response.Write "首页|前页|后页|末页"

Else%>

<a href="<%=fileName%>?PageNo=1">首页|</a>

<%If PageNo - 1 = 0 Then

Response.Write "前页|"

Else%>

<a href="<%=fileName%>?PageNo=<%=PageNo-1%>">前页|</a>

<%End If

If PageNo+1 > TotalPage Then

Response.Write "后页|"

Else%>

<a href="<%=fileName%>?PageNo=<%=PageNo+1%>">后页|</a>

<%End If%>

<a href="<%=fileName%>?PageNo=<%=TotalPage%>">末页</a>

<%End If%></td>

[1] [2] [3] [4] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有