|
Asp网页编程经验谈 一.VBScript语法简介 VBScript语句是一种基于VB的一种脚本语言,主要用于WEB服务器端的程序开发,我这里只介绍一些简单的语句,主要是操作数据库的几种常见的语句 <1>.vbscript的标识 <% 语句 …… %> <2>定义变量dim语句 <% dim a,b a=10 b=”ok!” %> 注意:定义的变量可以是数值型,也可以是字符或者其他类型的 <3>简单的控制流程语句 1. If 条件1 then 语句1 elseif 条件2 then 语句2 else 语句3 endif 2.while 条件 语句 wend 3.for count=1 to n step m 语句1 exit for 语句2 next 二.ASP数据库简单操作教程 <1>.数据库连接(用来单独编制连接文件conn.asp) <% Set conn = Server.CreateObject("ADODB.Connection") conn.Open "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("\bbs\db1\user.mdb") %> (用来连接bbs\db1\目录下的user.mdb数据库) <2>显示数据库记录 原理:将数据库中的记录一一显示到客户端浏览器,依次读出数据库中的每一条记录 如果是从头到尾:用循环并判断指针是否到末 使用: not rs.eof 如果是从尾到头:用循环并判断指针是否到开始 使用:not rs.bof <!--#include file=conn.asp--> (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库) <% set rs=server.CreateObject("adodb.recordset") (建立recordset对象) sqlstr="select * from message" ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表) rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式) rs.movefirst ---->(将指针移到第一条记录) while not rs.eof ---->(判断指针是否到末尾) response.write(rs("name")) ---->(显示数据表message中的name字段) rs.movenext ---->(将指针移动到下一条记录) wend ---->(循环结束) ------------------------------------------------------ rs.close conn.close 这几句是用来关闭数据库 set rs=nothing set conn=nothing ------------------------------------------------------- %> 其中response对象是服务器向客户端浏览器发送的信息 <3>增加数据库记录 增加数据库记录用到rs.addnew,rs.update两个函数 <!--#include file=conn.asp--> (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库) <% set rs=server.CreateObject("adodb.recordset") (建立recordset对象) sqlstr="select * from message" ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表) rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式) rs.addnew 新增加一条记录 rs("name")="xx" 将xx的值传给name字段 rs.update 刷新数据库 ------------------------------------------------------ rs.close conn.close 这几句是用来关闭数据库 set rs=nothing set conn=nothing ------------------------------------------------------- %> <4>删除一条记录 删除数据库记录主要用到rs.delete,rs.update <!--#include file=conn.asp--> (包含conn.asp用来打开bbs\db1\目录下的user.mdb数据库) <% dim name name="xx" set rs=server.CreateObject("adodb.recordset") (建立recordset对象) sqlstr="select * from message" ---->(message为数据库中的一个数据表,即你要显示的数据所存放的数据表) rs.open sqlstr,conn,1,3 ---->(表示打开数据库的方式) ------------------------------------------------------- while not rs.eof if rs.("name")=name then rs.delete rs.update 查询数据表中的name字段的值是否等于变量name的值"xx",如果符合就执行删除, else 否则继续查询,直到指针到末尾为止 rs.movenext emd if wend ------------------------------------------------------ ------------------------------------------------------ rs.close conn.close 这几句是用来关闭数据库 set rs=nothing set conn=nothing ------------------------------------------------------- %> <5>关于数据库的查询 (a) 查询字段为字符型 <% dim user,pass,qq,mail,message user=request.Form("user") pass=request.Form("pass") qq=request.Form("qq") mail=request.Form("mail") message=request.Form("message") if trim(user)&"x"="x" or trim(pass)&"x"="x" then (检测user值和pass值是否为空,可以检测到空格) response.write("注册信息不能为空") else set rs=server.CreateObject("adodb.recordset") sqlstr="select * from user where user='"&user&"'" (查询user数据表中的user字段其中user字段为字符型) rs.open sqlstr,conn,1,3 if rs.eof then rs.addnew rs("user")=user rs("pass")=pass rs("qq")=qq rs("mail")=mail rs("message")=message rs.update rs.close conn.close set rs=nothing set conn=nothing response.write("注册成功") end if rs.close conn.close set rs=nothing set conn=nothing response.write("注册重名") %> (b)查询字段为数字型 <% dim num num=request.Form("num") set rs=server.CreateObject("adodb.recordset") sqlstr="select * from message where id="&num (查询message数据表中id字段的值是否与num相等,其中id为数字型) rs.open sqlstr,conn,1,3 if not rs.eof then rs.delete rs.update rs.close conn.close set rs=nothing set conn=nothing response.write("删除成功") end if rs.close conn.close set rs=nothing set conn=nothing response.write("删除失败") %> <6>几个简单的asp对象的讲解 response对象:服务器端向客户端发送的信息对象,包括直接发送信息给浏览器,重新定向URL,或设置cookie值 request对象:客户端向服务器提出的请求 session对象:作为一个全局变量,在整个站点都生效 server对象:提供对服务器上方法和属性的访问 (a) response对象的一般使用方法 比如: <% resposne.write("hello, welcome to asp!") %> 在客户端浏览器就会看到 hello, welcome to asp! 这一段文字 <% response.Redirect("www.sohu.com") %> 如果执行这一段,则浏览器就会自动连接到 “搜狐” 的网址 关于response对象的用法还有很多,大家可以研究研究 request对象的一般使用方法 比如客户端向服务器提出的请求就是通过request对象来传递的 列如 :你在申请邮箱的所填写的个人信息就是通过该对象来将 你所填写的信息传递给服务器的 比如:这是一段表单的代码,这是提供给客户填写信息的,填写完了按 “提交”传递给request.asp文件处理后再存入服务器数据库 <form name="form1" method="post" action="request.asp"> <p> <input type="text" name="user"> </p> <p> <input type="text" name="pass"> </p> <p> <input type="submit" name="Submit" value="提交"> </p> </form> 那么request.asp该如何将其中的信息读入,在写入数据库,在这里就要用到 request对象了,下面我们就来分析request.asp的写法 <% dim name,password (定义user和password两个变量) name=request.form(“user”) (将表单中的user信息传给变量name) password=request.form(“pass”) (将表单中的pass信息传给变量password) %> 通过以上的几句代码我们就将表单中的数据读进来了,接下来我们要做的就是将 信息写入数据库了,写入数据库的方法上面都介绍了,这里就不一一复述了。 ASP 编程中非常有用的例子
(通过上面的学习大家完全可以自己做一个留言版了) 1. 如何用Asp判断你的网站的虚拟物理路径 答:使用Mappath方法 < p align="center" >< font size="4" face="Arial" >< b > The Physical path to this virtual website is: < /b >< /font > < font color="#FF0000" size="6" face="Arial" > < %= Server.MapPath("\")% > < /font >< /p > 2.我如何知道使用者所用的浏览器? 答:使用the Request object方法 strBrowser=Request.ServerVariables("HTTP_USER_AGENT") If Instr(strBrowser,"MSIE") < > 0 Then Response.redirect("ForMSIEOnly.htm") Else Response.redirect("ForAll.htm") End If 3.如何计算每天的平均反复访问人数 答:解决方法 < % startdate=DateDiff("d",Now,"01/01/1990") if strdate< 0 then startdate=startdate*-1 avgvpd=Int((usercnt)/startdate) % > 显示结果 < % response.write(avgvpd) % > that is it.this page have been viewed since November 10,1998 4.如何显示随机图象 < % dim p,ppic,dpic ppic=12 randomize p=Int((ppic*rnd)+1) dpic="graphix/randompics/"&p&".gif" % > 显示 < img src="< %=dpic% >" >
5.如何回到先前的页面 答:< a href="< %=request.serverVariables("Http_REFERER")% >" >preivous page< /a > 或用图片如:< img src="arrowback.gif" alt="< %=request.serverVariables("HTTP_REFERER")% >" >
6.如何确定对方的IP地址 答:< %=Request.serverVariables("REMOTE_ADDR)% > 7.如何链结到一副图片上 答:< % @Languages=vbs cript % > < % response.expires=0 strimagename="graphix/errors/erroriamge.gif" response.redirect(strimagename) % >
8.强迫输入密码对话框 答:把这句话放载页面的开头 < % response.status="401 not Authorized" response.end % > 9.如何传递变量从一页到另一页 答:用 HIDDEN 类型来传递变量 < % form method="post" action="mynextpage.asp" > < % for each item in request.form % > < input namee="< %=item% >" type="HIDDEN" value="< %=server.HTMLEncode(Request.form(item)) % >" > < % next % > < /form > 10.为何我在 asp 程序内使用 msgbox,程序出错说没有权限 答:由于 asp 是服务器运行的,如果可以在服务器显示一个对话框,那么你只好等有人按了确定之后,你的程序才能继续执行,而一般服务器不会有人守着,所以微软不得不禁止这个函数,并胡乱告诉你 (:) 呵呵) 没有权限。但是ASP和客户端脚本结合倒可以显示一个对话框,as follows: < % yourVar="测试对话框"% > < % s cript language=''javas cript'' > alert("< %=yourvar% >") < /s cript >
11.有没有办法保护自己的源代码,不给人看到 答:可以去下载一个微软的Windows s cript Encoder,它可以对asp的脚本和客户端javas cript/vbs cript脚本进行加密。。。不过客户端加密后,只有ie5才能执行,服务器端脚本加密后,只有服务器上安装有s cript engine 5(装一个ie5就有了)才能执行。 12.怎样才能将 query string 从一个 asp 文件传送到另一个? 答:前者文件加入下句: Response.Redirect("second.asp?" & Request.ServerVariables("QUERY_STRING")) 13.global.asa文件总是不起作用? 答:只有web目录设置为web application, global.asa才有效,并且一个web application的根目录下global.asa才有效。IIS4可以使用Internet Service Manager设置application setting 怎样才能使得htm文件如同asp文件一样可以执行脚本代码?
14.怎样才能使得htm文件如同asp文件一样可以执行脚本代码? 答:Internet Sevices Manager - > 选择default web site - >右鼠键- >菜单属性-〉主目录- > 应用程序设置(Application Setting)- > 点击按钮 "配置"- > app mapping - >点击按钮"Add" - > executable browse 选择 \WINNT\SYSTEM32\INETSRV\ASP.DLL EXTENSION 输入 htm method exclusions 输入PUT.DELETE 全部确定即可。但是值得注意的是这样对htm也要由asp.dll处理,效率将降低。 15.如何注册组件 答:有两种方法。 第一种方法:手工注册 DLL 这种方法从IIs 3.0一直使用到IIs 4.0和其它的Web Server。它需要你在命令行方 式下来执行,进入到包含有DLL的目录,并输入:regsvr32 component_name.dll 例如 c:\temp\regsvr32 AspEmail.dll 它会把dll的特定信息注册入服务器中的注册表中。然后这个组件就可以在服务器上使用了,但是 这个方法有一个缺陷。当使用这种方法注册完毕组件后,该组件必须要相应的设置NT的匿名帐号有权限执行这个 dll。特别是一些组件需要读取注册表,所以,这个注册组件的方法仅仅是使用在服务器上没有MTS的情况下,要取消注册这个dll,使用:regsvr32 /u aspobject.dll example c:\temp\regsvr32 /u aneiodbc.dll
第二种方法:使用MTS(Microsoft Transaction Server) MTS是IIS 4新增特色,但是它提供了巨大的改进。MTS 允许你指定只有有特权的用户才能够访问组件,大大提高了网站服务器上的安全性设置。在MTS上注册组件的步 骤如下: 1) 打开IIS管理控制台。 2) 展开transaction server,右键单击"pkgs installed"然后选择"new package"。 3) 单击"create an empty package"。 4) 给该包命名。 5) 指定administrator帐号或则使用"interactive"(如果服务器经常是使用administrator 登陆的话)。 6) 现在使用右键单击你刚建立的那个包下面展开后的"components"。选择 "new then component"。 7) 选择 "install new component" 。 8) 找到你的.dll文件然后选择next到完成。 要删除这个对象,只要选择它的图标,然后选择delete。 附注:特别要注意第二种方法,它是用来调试自己编写组件的最好方法,而不必每次都需要重新启动机器了。 16. ASP与Access数据库连接: 17. ASP与SQL数据库连接:
数据库成绩查询实例 数据库连接页: <% set conn=Server.CreateObject("ADODB.connection") conn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("score.mdb") %> 提交页: <form action="find.asp" method="post" name="form1" id="form1"> <input name="stu_name" type="text" id="stu_name"> <input type="submit" name="Submit" value="提交"> </form> 后台处理页:find.asp <!--#Include file=conn.asp--> <% dim name,cp name=request.form("stu_name") set rs=server.createobject("adodb.recordset") sqlstr="select * from cj" rs.open sqlstr,conn,1,3 rs.movefirst while not rs.eof if name=rs("name") then cp=1 response.write(rs("xuehao")) response.write(rs("name")) end if rs.movenext wend if cp=0 then response.write("无此记录") rs.close conn.close set rs=nothing set conn=nothing %> 注册页: <!--#Include file=conn.asp--> <% dim name,password name=request.form("user") password=request.form("pass") set rs=server.createobject("adodb.recordset") sqlstr="select * from cj" rs.open sqlstr,conn,1,3 rs.addnew rs("name")=name rs("xuehao")=password rs.update response.write("注册完成") %> 链接页: <!--include file=conn.asp--> <% response.Redirect("www.sohu.com") %>
|