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"用户名或密码错误! 请检查你的用户名及密码然后再试一次!"
‘如果用户已经输入完整信息,但输入错误也返回出错信息。
else session("passed")=true
end if
if not session("passed") then%>
‘用户输入的信息完全正确并验证通过,以下开始编写html代码,做一个用户登录界面。
》》》》》》》》》》》》》》》》》》》》》》----------------------------------
在提交帖之后:
<%
if Response.Cookies("time")<>"" then
if DateDiff('s',Response.Cookies("time"),now())<20 '隔20s才能再发帖
Response.Write ""
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 Conn,Rs_News
Set Conn = server.CreateObject("ADODB.CONNECTION")
Conn.Open "cpm","cpm","cpm"
Dim Sql
Sql = "Select * from News"
Set Rs_News = Server.CreateObject("ADODB.RECORDSET")
Rs_News.Open Sql,Conn,1,3 '获取的记录集
'公共翻页模块开始%>
<%
Dim RowCount
RowCount = 10 '每页显示的记录条数
Call TurnPage(Rs_News,RowCount)
'公共翻页模块结束%>
新闻编号
新闻标题
发布日期
<%
If Not Rs_News.eof
Do while Not Rs_News.eof and RowCount>0
%>
<%=Rs_News("ID")%>
<%=Rs_News("Name")%>
<%=Rs_News("Date")%>
<%
RowCount = RowCount - 1
Rs_News.MoveNext
Loop
End If
%>
(出处:www.dev-club.com)
--------------------------------------------------------------------
在提交帖之后:
<%
if Response.Cookies("time")<>"" then
if DateDiff('s',Response.Cookies("time"),now())<20 '隔20s才能再发帖
Response.Write ""
response.End
end if
end if
Response.Cookies("time")=now()
…… '将帖子入库
最近mysql数据库经常死掉,用命令net stop mysql命令也无法停掉,关闭Tomcat的时候,出现Waiting for N instance(s) to be deallocated 信息。查了下,大概就是程序没有对数据库连接释放,导致Connection泄露了。因为用的是开元集成的平台,内部程序也不可能一下子给改掉的,就验证一下咯。启动Tomcat,用户登录系统,用netstat -
var a=document.getElementsByClassName('textinput');
var b=[];
for(var m=0;m<a.length;m++){
if(a[m].getAttribute('placeholder')!=null)
b.push(a[m])
}
var l
错误信息:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'cartService': Scope 'session' is not active for the current thread; consider defining a scoped
这个开源软件包是国内的一位高手自行研制开发的,正如他所说的一样,我觉得它可以使一个工作流引擎上一个台阶。。。。。。欢迎大家使用,并提出意见和建议。。。
----------转帖---------------------------------------------------
IK Expression是一个开源的(OpenSource),可扩展的(Extensible),基于java语言
1.在thingking in java 的第四版第六章中明确的说了,子类对象中封装了父类对象,
2."When you create an object of the derived class, it contains within it a subobject of the base class. This subobject is the sam
http://www.sap.com/corporate-en/press.epx?PressID=14787
有机会研究下EIM家族的两个新产品~~~~
New features of the 4.0 releases of BI and EIM solutions include:
Real-time in-memory computing –
结构
继承关系
public final class Manifest extends Objectjava.lang.Objectandroid.Manifest
内部类
class Manifest.permission权限
class Manifest.permission_group权限组
构造函数
public Manifest () 详细 androi
关键字:Oracle实现类split函数的方
项目里需要保存结构数据,批量传到后他进行保存,为了减小数据量,子集拼装的格式,使用存储过程进行保存。保存的过程中需要对数据解析。但是oracle没有Java中split类似的函数。从网上找了一个,也补全了一下。
CREATE OR REPLACE TYPE t_split_100 IS TABLE OF VARCHAR2(100);
cr