我学asp的总结,希望能给学php的有一点帮助
时间:2008-08-25
来源:互联网
一、网站页面基本的设计
(1)公共连接数据库页面conn .asp
1、实例一
<%
Set conn = Server.CreateObject("ADODB.Connection")
connstr="DBQ="+server.mappath("#qi163.mdb")+";DefaultDir=;DRIVER={Microsoft Access Driver (*.mdb)};"
conn.open connstr
%>
2、实例二
<%
dim conn
dim connstr
connstr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Server.MapPath("database/#ghwz.mdb")
set conn= Server.CreateObject("ADODB.Connection") '声明一个连接对象
conn.Open connstr
%>
(2)include语句的使用
<!--#include file="conn.asp"-->
<!--#include file="top.asp"-->
一般将公共连接页面,网站头部和底部页面通过此语句包含在网站所需要显示的每一个页面中,这样可以节省大量的代码,提高代码利用率。
(3)用户登陆页及登陆检查页
一般在用户登陆页面设计好之后,要把表单设置一下,如:<form method="POST" action="logins.asp">
其中method为表单提交方式。action为表单要提交到的页面,(也可以是一个函数或过程,此主要用作自认提交给自身页面,其中<form method="POST" action="logins.asp?action=chklogin">)。
1、Longins.asp登陆检查页的代码一般如下:
<!--#include file="conn.asp"-->
<%
use=request.form("use")
pass=request.form("pass")
Set rs = Server.CreateObject("ADODB.Recordset")
sql="select * from admin"
rs.open sql,conn,1,1
if use=rs("usename") and pass=rs("password") then
session("mofeichenck")="true"
response.redirect("****.asp") ‘此处为登陆成功后要返回的页面,一般为贴子显示页面
else
response.redirect("****.asp") ‘此处为登陆失败后要返回的页面,一般为登陆页面
end if
%>
2、Chklogin过程代码如下(此过程相当上述登陆检查页的代码):
<% if request("action")="chklogin" then
call chklogin()
end if
%>
<% '检查管理员的登录信息,成功则返回到管理界面,失败则给出相应提示
sub chklogin() '定义一个chklogin过程
dim name
dim pwd
name=trim(request.form("admin"))
pwd=trim(request.form("pwd"))
if name="" or pwd="" then
response.write"<script>alert('请输入你的用户名和密码!');</script> "
%>
<!--#include file="end.asp"--> ‘在点击提示后重新引用页面底部文件
<% response.end
else
set rs=server.createobject("adodb.recordset")
sql="select * from [cpadmin]"
rs.open sql,conn,3,3
if rs("name")=name and rs("psw")=pwd then
session("name")=rs("name")
response.redirect "cpzs.asp" ‘登陆成功则进入相应的页面
else
response.write"<script>alert('用户名或密码错误,请重新输入!');</script>"
%>
<!--#include file="end.asp"--> ‘在点击提示后重新引用页面底部文件
<%response.end
end if
rs.close
set rs1=nothing
end if
end sub
%>
<!--#include file="end.asp"--> ‘在正常情况下引用页面底部文件
(4)用户退出登陆页
实例一:<% Session.Abandon ‘是将服务器上的所有session都删除,一般用于单个用户
Response.Redirect "***.asp"‘重定向的页面
%>
实例二:<%session("mofeichenck")="" ‘将单个session对象清空,一般用于多用户
response.redirect("***.asp")
%>
(5)用户注册页***.asp(一般签写留言、回复留言,发表论坛帖子等基本和此页面相同)
在界面设计好之后,就要向数据库里面添加信息。
实例一:<form method="POST" action="***.asp"> 表单信息action为表单要提交的写入数据库页面
该页面代码如下:
<%@ language="VBScript"%>
<!--#include file="conn.asp"--> ‘将需要用到的公共页面包含进来
<!--#include file="ubb.asp"-->
<!--#include file="top.asp"-->
<link rel="stylesheet" href="css/css.css"> ‘引用css样式表文件
<%
use1=request.form("use001") ‘在vbscript中变量一般不需要声明就可使用。
email1=request.form("email001")
qq1=request.form("qq001")
home1=request.form("home001")
where1=request.form("where001")
face1=request.form("face001")
title1=request.form("title001")
mofei1=request.form("mofei001")
mofei1=htmlencode2(mofei1) ‘调用ubb页面函数
mofei1=UBBDecode(mofei1) ‘调用ubb页面函数
ip1=Request.servervariables("REMOTE_ADDR")
if use1="" or email1="" or title1="" or mofei1="" then
Response.Write "<Script>alert('*******不能为空!');</Script>"
Response.End
%>
<%else
set sql=conn.execute("Insert Into mofeibook(use_,email_,qq_,home_,where_,face_,title_,mofei_,ip_,time_) Values ('"&use1&"','"&email1&"','"&qq1&"','"&home1&"','"&where1&"','"&face1&"','"&title1&"','"&mofei1&"','"&ip1&"','"&now()&"')")
set sql=nothing
response.redirect("default.asp")
end if
%>
实例二:<form name="form1" method="post" action="tjcp.asp?action=SaveWrite">此情况一般在本身页面之内 表单信息action为表单要提交的写入数据库信息要调用的过程或函数。
该页面代码如下:
<% If Request("action") = "SaveWrite" Then
Call SaveWrite()
End If
%>
<%'保存签写的各种信息
Sub SaveWrite() ‘定义一个过程savewrite
Dim cpname ‘声明变量
Dim cpjg
Dim cptp
Dim cpnr
cpname = Trim(Request.Form("cpname")) ‘把表单所取得的信息赋值给相应变量
cpjg = Trim(Request.Form("cpjg"))
cptp = Trim(Request.Form("cptp"))
cpnr = Trim(Request.Form("cpnr"))
If cpname = "" Or cpnr = "" Then
Response.Write "<Script>alert('产品名称和产品介绍不能为空!');</Script>"
Response.End
ElseIf cpjg <> "" And IsNumeric(cpjg) = False Then
Response.Write "<Script>alert('产品价格只能为数字!');</Script>"
Response.End
Else
Set Rs = Server.CreateObject("ADODB.Recordset")
Sql = "Select * From [info] " ‘数据库和表名一般可以根据实际情况更改
Rs.Open Sql,conn,3,3
Rs.AddNew ‘向数据库写入新信息
Rs("cptitle") = cpname
Rs("cpjg") = cpjg
If cptp <> "" Then
Rs("cpimage") = cptp
End If
Rs("cpjj") = cpnr
Rs.Update
Rs.Close
Set Rs = nothing
Response.Redirect "cpzs.asp"
End If
End Sub
%>
(6)ubb页面
UBB标签就是不允许使用HTML语法的情况下,通过论坛的特殊转换程序,以至可以支持少量常用的、无危害性的HTML效果显示。使用方法是在要使用的页面内引用即可<!--#include file="ubb.asp"-->。
代码如下:
<%
Function UBBDecode(str)
Dim oReg
Dim strTmp
Set oReg=New RegExp
strTmp=str
oReg.Global=True
oReg.IgnoreCase=True
'下划线
oReg.Pattern="\[U\]"
strTmp=oReg.Replace(strTmp,"<U>")
oReg.Pattern="\[\/U\]"
strTmp=oReg.Replace(strTmp,"</U>")
'粗体
oReg.Pattern="\[B\]"
strTmp=oReg.Replace(strTmp,"<B>")
oReg.Pattern="\[\/B\]"
strTmp=oReg.Replace(strTmp,"</B>")
'斜体
oReg.Pattern="\[I\]"
strTmp=oReg.Replace(strTmp,"<I>")
oReg.Pattern="\[\/I\]"
strTmp=oReg.Replace(strTmp,"</I>")
'删除线
oReg.Pattern="\[S\]"
strTmp=oReg.Replace(strTmp,"<STRIKE>")
oReg.Pattern="\[\/S\]"
strTmp=oReg.Replace(strTmp,"</STRIKE>")
'上标
oReg.Pattern="\[SUP\]"
strTmp=oReg.Replace(strTmp,"<SUP>")
oReg.Pattern="\[\/SUP\]"
strTmp=oReg.Replace(strTmp,"</SUP>")
'上标
oReg.Pattern="\[SUB\]"
strTmp=oReg.Replace(strTmp,"<SUB>")
oReg.Pattern="\[\/SUB\]"
strTmp=oReg.Replace(strTmp,"</SUB>")
'向中看齐
oReg.Pattern="\[C\]"
strTmp=oReg.Replace(strTmp,"<CENTER>")
oReg.Pattern="\[\/C\]"
strTmp=oReg.Replace(strTmp,"</CENTER>")
'超链接
oReg.Pattern="\[URL\=([a-zA-Z0-9\-\_\/\:\.\?\&\%\+\=]+)\](.+)\[\/URL\]"
strTmp=oReg.Replace(strTmp,"<A HREF=""$1"" TARGET=""_BLANK"">$2</A>")
'超链接2
oReg.Pattern="\[URL\]([a-zA-Z0-9\-\_\/\:\.\?\&\%\+\=]+)\[\/URL\]"
strTmp=oReg.Replace(strTmp,"<A HREF=""$1"" TARGET=""_BLANK"">$1</A>")
'邮件超链接
oReg.Pattern="\[MAIL\=([a-zA-Z0-9\-\_\.\?\@]+)\](.+)\[\/MAIL\]"
strTmp=oReg.Replace(strTmp,"<A HREF=""[url=mailto:$1]$2mailto:$1"">$2</A[/url]>")
'图片
oReg.Pattern="\[IMG\]([a-zA-Z0-9\-\_\/\:\.\?\&\%\+\=]+)\[\/IMG\]"
strTmp=oReg.Replace(strTmp,"<a href=""$1"" target=_blank><img src=""$1"" width=100% border=0 alt=""$1""></a>")
'飞行字
oReg.Pattern="\[FLY\]"
strTmp=oReg.Replace(strTmp,"<MARQUEE>")
oReg.Pattern="\[\/FLY\]"
strTmp=oReg.Replace(strTmp,"</MARQUEE>")
'字体颜色
oReg.Pattern="\[COLOR\=(\#[0-9A-Fa-f]{6})\]"
strTmp=oReg.Replace(strTmp,"<FONT COLOR=""$1"">")
'字体大小
oReg.Pattern="\[SIZE\=([1-7])\]"
strTmp=oReg.Replace(strTmp,"<FONT SIZE=""$1"">")
'字体名称
oReg.Pattern="\[FONT\=([^\]\[\s]+)\]"
strTmp=oReg.Replace(strTmp,"<FONT FACE=""$1"">")
'字体相关属性结尾
oReg.Pattern="\[\/COLOR\]"
strTmp=oReg.Replace(strTmp,"</FONT>")
oReg.Pattern="\[\/SIZE\]"
strTmp=oReg.Replace(strTmp,"</FONT>")
oReg.Pattern="\[\/FONT\]"
strTmp=oReg.Replace(strTmp,"</FONT>")
UBBDecode=strTmp
End Function
'过程二
function htmlencode2(str)
dim result
dim l
if isNULL(str) then
htmlencode2=""
exit function
end if
l=len(str)
result=""
dim i
for i = 1 to l
select case mid(str,i,1)
case "<"
result=result+"<"
case ">"
result=result+">"
case chr(13)
result=result+"<br>"
case chr(34)
result=result+"""
case "&"
result=result+"&"
case chr(32)
'result=result+" "
if i+1<=l and i-1>0 then
if mid(str,i+1,1)=chr(32) or mid(str,i+1,1)=chr(9) or mid(str,i-1,1)=chr(32) or mid(str,i-1,1)=chr(9) then
result=result+" "
else
result=result+" "
end if
else
result=result+" "
end if
case chr(9)
result=result+" "
case else
result=result+mid(str,i,1)
end select
next
htmlencode2=result
end function
(7)信息删除页
实例一:<% '若是管理员登录,则显示编辑和删除
If Session("name") <> "" Then %>
<a href="javascript:if(window.confirm('你确实要删除此条产品信息吗?') == true){window.location = 'Delete.asp?action=Delete&id=<%=Rs("id")%>';}"><img src="Images/delete.gif" width="47" height="18" border="0" alt="删除此信息"></a>
<% End If %>
Delete.asp代码如下:
<!--#include file="conn.asp"-->
<% '删除页面
id = Request("id")
Set Rs = Server.CreateObject("ADODB.RecordSet")
Sql = "Select * From info Where id="&id
Rs.Open Sql,conn,3,3
Rs.Delete
Rs.Update
Rs.Close
Set Rs = nothing
Response.Redirect "***.asp"
%>
实例二:
<!--#INCLUDE FILE="conn.asp" -->
<%
if not session("mofeichenck")="true" then
response.redirect("login.asp")
else
id=Request.QueryString("id")
Set book=server.createobject("adodb.recordset")
SQLstr="Delete * from mofeibook where id = " & id
conn.Execute SQLstr
set book=nothing
conn.close
set conn=nothing
%>
<%response.redirect("qi163_admin.asp")%>
<%end if%>
(8)md5加密,本身与数据库没有关系,加密是在asp页面代码本身。在网上可以随便下载md5.asp加密文件。在此代码就省略掉。在md5.asp中有一个mda()函数。
假如在数据库中的密码字段为password,在asp代码中,表示密码的变量为pwd。则md5(pwd)后就是md5加密过后的密文了。然后用insert或其它ADO方法将这个密文件存入数据库,就好了。验证密码的时候同样用md5(pwd),生成密文,然后和数据库中的密文相比较,如果一致,则说明输入的密码和数据库中的吻合,如果不一致,则不吻合。
就是在上传数据的时候加MD5:
<!--#include file=”conn.asp”-->
<!--#include file=”md5.asp”-->
<%
Sql=”select * from user”
Rs.open sql,conn,1,3
Rs.add new
Rs(“user”)=request.form(“user”)
Rs(“password”)=md5(request.form(“password”))
…….
Rs.update
%>
(9)网站文本计数器
适用于首页,且文本文件必须有一个初始值为0.
<% filename=server.MapPath("a.txt") '设置文本记数器的位置
set fs=CreateObject("scripting.filesystemobject") ' 建立一个文本对象fs
set f=fs.opentextfile(filename) ' 设置打开文本文件的变量f
num=f.readline ' 用f的方法readline读取一行
f.close '关闭文件
num=num+1 '使变量加1
set ff=fs.createtextfile(filename)
ff.writeline(num)
ff.close
%>
你是第<font size="15"><%=num%></font>位浏览者<a href="shouye.asp">
(10)收藏本站代码
<span style="CURSOR: hand" onClick="window.external.addFavorite('http://flysky2557.icpcn.com','※☆飞扬天空工作室☆※')" title="※☆飞扬天空工作室☆※">收藏本站</span>
(11)设为首页代码
<a style="cursor:hand" onClick="this.style.behavior='url(#default#homepage)';this.setHomePage(' http://flysky2557.icpcn.com ');">设为首页</a>
二、asp网站access数据库一些防下载方法
(1)发挥想象力,修改数据库文件名
(2)数据库后缀名改为asa,asp的办法。
此办法要进行一些设置,否则就会出现数据库无法访问的问题。
(3)数据库名前加“#”和空格
只需要把数据库文件前名加上#和空格,然后修改数据库连接文件(如conn.asp)中的数据库地址。原理是我们下载的时候只能识别 ,#前的部分,对于后面的自动去掉。
(4)给数据库加密码
三、用纯asp代码实现图片上传
用asp编写网站应用程序时间长了,难免会遇到各式各样的问题,其中关于如何上传文件到服务器恐怕是遇见最多的问题了,尤其是上传图片,比如你想要在自己的社区里面实现类似网易虚拟社区提供的“每日一星”的功能,就要提供给网友上传照片的功能。上传图片文件到服务器可以使用各种免费的文件上传组件,使用起来功能虽然很强大,但是由于很多情况下,我们只能使用免费的支持asp的空间或者租用别人的虚拟空间,对于第一种情况,我们根本就没有可能来使用文件上传组件;至于第二种情况,我们也要付出不少的“银子”才可以。除非你拥有自己的虚拟主机,你就可以随便的在服务器上面安装自己所需要的组件,这种情况对于大多数人来说是可望而不可及的。那我们就没有办法了吗?呵呵,答案是肯定的(当然是肯定的了,要不然我也没法写出这篇文章啊)。下面就让我们一起来使用纯asp代码来实现图片的上传以及保存到数据库的功能(顺便也实现显示数据库中的图片到网页上的功能)。
首先我们先来熟悉一下将要使用的对象方法。我们用来获取上一个页面传递过来的数据一般是使用request对象。同样的,我们也可以使用request对象来获取上传上来的文件数据,使用的方法是request.binaryread()。而我们要从数据库中读出来图片的数据显示到网页上面要用到的方法是:
request.binarywrite()。在我们得到了图片的数据,要保存到数据库中的时候,不可以直接使用insert语句对数据库进行操作,而是要使用ado的appendchunk方法,同样的,读出数据库中的图片数据,要使用getchunk方法。各个方法的具体语法如下:
*request.binaryread语法:
variant=request.binaryread(count)
参数
variant
返回值保存着从客户端读取到数据。
count
指明要从客户端读取的数据量大小,这个值小于或者等于使用方法request.totalbytes得到的数据量。
*request.binarywrite语法:
request.binarywritedata
参数
data
要写入到客户端浏览器中的数据包。
*request.totalbytes语法:
variant=request.totalbytes
参数
variant
返回从客户端读取到数据量的字节数。
*appendchunk语法
将数据追加到大型文本、二进制数据field或parameter对象。
object.appendchunkdata
参数
objectfield或parameter对象
data变体型,包含追加到对象中的数据。
说明
使用field或parameter对象的appendchunk方法可将长二进制或字符数
据填写到对象中。在系统内存有限的情况下,可以使用appendchunk方法对长整型值进行部分而非全部的操作。
*getchunk语法
返回大型文本或二进制数据field对象的全部或部分内容。
variable=field.getchunk(size)
返回值
返回变体型。
参数
size长整型表达式,等于所要检索的字节或字符数。
说明
使用field对象的getchunk方法检索其部分或全部长二进制或字符数据。在系统内存有限的情况下,可使用getchunk方法处理部分而非全部的长整型值。
getchunk调用返回的数据将赋给“变量”。如果size大于剩余的数据,则
getchunk仅返回剩余的数据而无需用空白填充“变量”。如果字段为空,则
getchunk方法返回null。
每个后续的getchunk调用将检索从前一次getchunk调用停止处开始的数据。但是,如果从一个字段检索数据然后在当前记录中设置或读取另一个字段的值,ado将认为已从第一个字段中检索出数据。如果在第一个字段上再次调用getchunk方法,ado将把调用解释为新的getchunk操作并从记录的起始处开始读取。如果其他recordset对象不是首个recordset对象的副本,则访问其中的字段不会破坏getchunk操作。
如果field对象的attributes属性中的adfldlong位设置为true,则可以对该字段使用getchunk方法。
如果在field对象上使用getchunk方法时没有当前记录,将产生错误3021(无当前记录)。
接下来,我们就要来设计我们的数据库了,作为测试我们的数据库结构如下(access2000):
字段名称 类型 描述
id 自动编号 主键值
img ole对象 用来保存图片数据
对于在mssqlserver7中,对应的结构如下:
字段名称 类型 描述
id int(identity) 主键值
img image 用来保存图片数据
现在开始正式编写我们的纯asp代码上传部分了,首先,我们
有一个提供给用户的上传界面,可以让用户选择要上传的图片。代码如下
(upload.htm):
<html>
<body>
<center>
<form name="mainform" enctype="multipart/form-data" action="process.asp" method=post>
<inputtype=filename=mefile><br>
<inputtype=submitname=okvalue="ok">
</form>
</center>
</body>
</html>
注意enctype="multipart/form-data",一定要在form中有这个属性,否则,将无法得到上传上来的数据。接下来,我们要在process.asp中对从浏览器中获取的数据进行必要的处理,因为我们在process.asp中获取到的数据不仅仅包含了我们想要的上传上来的图片的数据,也包含了其他的无用的信息,我们需要剔除冗余数据,并将处理过的图片数据保存到数据库中,这里我们以access2000为例。具体代码如下(process.asp):
<%
response.buffer=true
formsize=request.totalbytes
formdata=request.binaryread(formsize)
bncrlf=chrb(13)&chrb(10)
divider=leftb(formdata,clng(instrb(formdata,bncrlf))-1)
datastart=instrb(formdata,bncrlf&bncrlf)+4
dataend=instrb(datastart+1,formdata,divider)-datastart
mydata=midb(formdata,datastart,dataend)
setconngraph=server.createobject("adodb.connection")
conngraph.connectionstring="driver={microsoftaccessdriver(*.mdb)};dbq="&server.mappath("images.mdb")&";uid=;pwd=;"
conngraph.open
setrec=server.createobject("adodb.recordset")
rec.open"select*from[images]whereidisnull",conngraph,1,3
rec.addnew
rec("img").appendchunkmydata
rec.update
rec.close
setrec=nothing
setconngraph=nothing
%>
好了,这下我们就把上传来的图片保存到了名为images.mdb的数据库中了,剩下的工作就是要将数据库中的图片数据显示到网页上面了。一般在html中,显示图片都是使用<img>标签,也就是<imgsrc="图片路径">,但是我们的图片是保存到了数据库中,“图片路径”是什么呢?呵呵,其实这个src属性除了指定路径外,也可以这样使用哦:
<imgsrc="showimg.asp?id=xxx">
所以,我们所要做的就是在showimg.asp中从数据库中读出来符合条件的
数据,并返回到src属性中就可以了,具体代码如下(showimg.asp):
<%
setconngraph=server.createobject("adodb.connection")
conngraph.connectionstring="driver={microsoftaccessdriver(*.mdb)};dbq="&
server.mappath("images.mdb")&";uid=;pwd=;"
conngraph.open
setrec=server.createobject("adodb.recordset")
strsql="selectimgfromimageswhereid="&trim(request("id"))
rec.openstrsql,conngraph,1,1
response.contenttype="image/*"
response.binarywriterec("img").getchunk(7500000)
rec.close
setrec=nothing
setconngraph=nothing
%>
注意在输出到浏览器之前一定要指定response.contenttype="image/*",
以便正常显示图片。
最后要注意的地方是,我的process.asp中作的处理没有考虑到第一页(upload.htm)中还有其他数据,比如<input type=tesxt name=userid>等等,如果有这些项目,你的process.asp就要注意处理掉不必要的数据。
作者: flysky2557 发布时间: 2008-08-25
作者: ryen 发布时间: 2008-08-28
顶一下
谢谢分享。呵呵
作者: php好1 发布时间: 2008-08-28
作者: 神啊 发布时间: 2008-08-28

作者: yuanweiphp 发布时间: 2008-09-12
作者: 一意孤行 发布时间: 2008-09-22
作者: hxybiseng 发布时间: 2008-09-22






作者: zhangcjl 发布时间: 2009-03-16
作者: c.kits 发布时间: 2009-06-04
[url=http://www.86801.com]捐卵[/url]
[url=http://www.86233. com.cn/]代孕[/url]
[url=http://www.zs188.net]代孕[/url]
[url=http://www.dai-yun.net/]代孕妈妈[/url]
[url=http://www.zs188.com]代孕[/url]
[url=http://www.wangzuo.net]代孕[/url]
作者: 11 发布时间: 2010-04-13
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28