asp代码精华.docx

上传人:b****7 文档编号:10562570 上传时间:2023-02-21 格式:DOCX 页数:59 大小:39.41KB
下载 相关 举报
asp代码精华.docx_第1页
第1页 / 共59页
asp代码精华.docx_第2页
第2页 / 共59页
asp代码精华.docx_第3页
第3页 / 共59页
asp代码精华.docx_第4页
第4页 / 共59页
asp代码精华.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

asp代码精华.docx

《asp代码精华.docx》由会员分享,可在线阅读,更多相关《asp代码精华.docx(59页珍藏版)》请在冰豆网上搜索。

asp代码精华.docx

asp代码精华

显示页面加载时间

重复域中的斑马线

显示字符串前20个字符并在结尾处添加“……”

如果动态图片为空,使用默认图片代替

如果数据为空,使用默认提示信息代替

●显示页面加载时间

页面顶部添加下面的代码:

<%

DimstrStartTime

DimstrEndTime

strStartTime=Timer'开始时间

%>

页面(同一页)的末尾添加:

<%

'加载完毕的时间

strEndTime=Timer

Response.Write("页面加载时间:

")

Response.WriteFormatNumber(strEndTime-strStartTime,4)

Response.Write("秒.")

%>

●重复域中的斑马线

<%

'此模块放置在重复域之外

DimRecordCounter

Recordcounter=0

%>

<%

'将重复域中第一个标签的CLASS属性代码用本模块替换

'本模块基于CSS来改变单元格背景色,你也可以直接设置背景色来实现斑马线

RecordCounter=Recordcounter+1

IfRecordCounterMod2=1Then

Response.Write"altRow1"

Else

Response.write"altRow2"

EndIf

%>

●显示字符串前20个字符并在结尾处添加“……”

<%

DimCutShort

CutShort=rsYourRecordset.Fields.Item("YourField").Value

Response.WriteLEFT(CutShort,20)&"........"

%>

●如果动态图片为空,用默认图片代替

<%

DimPicShow

PicShow=rsShowHide.Fields.Item("shMainPix").Value

IFPicShow<>""THEN%>

">

<%ELSE%>

<%EndIf%>

●如果数据为空,用默认提示信息代替。

<%

DimstrShowHide

strShowHide=rsYourRecordset.Fields.Item("YourDataField").Value

IFstShowHide<>""THEN%>

数据为空

<%ENDIF%>

纯编码实现Access数据库的建立或压缩

<%

'#######以下是一个类文件,下面的注解是调用类的方法################################################

'#注意:

如果系统不支持建立Scripting.FileSystemObject对象,那么数据库压缩功能将无法使用

'#Access数据库类

'#CreateDbFile建立一个Access数据库文件

'#CompactDatabase压缩一个Access数据库文件

'#建立对象方法:

'#Seta=NewDatabaseTools

'#by(萧寒雪)s.f.

'#########################################################################################

ClassDatabaseTools

PublicfunctionCreateDBfile(byValdbFileName,byValDbVer,byValSavePath)

'建立数据库文件

'IfDbVeris0ThenCreateAccess97dbFile

'IfDbVeris1ThenCreateAccess2000dbFile

OnerrorresumeNext

IfRight(SavePath,1)<>"\"OrRight(SavePath,1)<>"/"ThenSavePath=Trim(SavePath)&"\"

IfLeft(dbFileName,1)="\"OrLeft(dbFileName,1)="/"ThendbFileName=Trim(Mid(dbFileName,2,Len(dbFileName)))

IfDbExists(SavePath&dbFileName)Then

Response.Write("对不起,该数据库已经存在!

")

CreateDBfile=False

Else

DimCa

SetCa=Server.CreateObject("ADOX.Catalog")

IfErr.number<>0Then

Response.Write("无法建立,请检查错误信息

"&Err.number&"

"&Err.Description)

Err.Clear

Exitfunction

EndIf

IfDbVer=0Then

callCa.Create("Provider=Microsoft.Jet.OLEDB.3.51;DataSource="&SavePath&dbFileName)

Else

callCa.Create("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&SavePath&dbFileName)

EndIf

SetCa=Nothing

CreateDBfile=True

EndIf

Endfunction

PublicfunctionCompactDatabase(byValdbFileName,byValDbVer,byValSavePath)

'压缩数据库文件

'0为access97

'1为access2000

OnErrorresumenext

IfRight(SavePath,1)<>"\"OrRight(SavePath,1)<>"/"ThenSavePath=Trim(SavePath)&"\"

IfLeft(dbFileName,1)="\"OrLeft(dbFileName,1)="/"ThendbFileName=Trim(Mid(dbFileName,2,Len(dbFileName)))

IfDbExists(SavePath&dbFileName)Then

Response.Write("对不起,该数据库已经存在!

")

CompactDatabase=False

Else

DimCd

SetCd=Server.CreateObject("JRO.JetEngine")

IfErr.number<>0Then

Response.Write("无法压缩,请检查错误信息

"&Err.number&"

"&Err.Description)

Err.Clear

Exitfunction

EndIf

IfDbVer=0Then

callCd.CompactDatabase("Provider=Microsoft.Jet.OLEDB.3.51;DataSource="&SavePath&dbFileName,"Provider=Microsoft.Jet.OLEDB.3.51;Data

Source="&SavePath&dbFileName&".bak.mdb;JetOLEDB;EncryptDatabase=True")

Else

callCd.CompactDatabase("Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&

SavePath&dbFileName,"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&

SavePath&dbFileName&".bak.mdb;JetOLEDB;EncryptDatabase=True")

EndIf

'删除旧的数据库文件

callDeleteFile(SavePath&dbFileName)

'将压缩后的数据库文件还原

callRenameFile(SavePath&dbFileName&".bak.mdb",SavePath&dbFileName)

SetCd=False

CompactDatabase=True

EndIf

endfunction

PublicfunctionDbExists(byValdbPath)

'查找数据库文件是否存在

OnErrorresumeNext

Dimc

Setc=Server.CreateObject("ADODB.Connection")

c.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&dbPath

IfErr.number<>0Then

Err.Clear

DbExists=false

else

DbExists=True

EndIf

setc=nothing

Endfunction

PublicfunctionAppPath()

'取当前真实路径

AppPath=Server.MapPath("./")

Endfunction

PublicfunctionAppName()

'取当前程序名称

AppName=Mid(Request.ServerVariables("SCRIPT_NAME"),(InStrRev(Request.ServerVariables("SCRIPT_NAME"),"/",-1,1))+1,Len(Request.ServerVariables("SCRIPT_NAME")))

EndFunction

PublicfunctionDeleteFile(filespec)

'删除一个文件

Dimfso

Setfso=CreateObject("Scripting.FileSystemObject")

IfErr.number<>0Then

Response.Write("删除文件发生错误!

请查看错误信息

"&Err.number&"

"&Err.Description)

Err.Clear

DeleteFile=False

EndIf

callfso.DeleteFile(filespec)

Setfso=Nothing

DeleteFile=True

Endfunction

PublicfunctionRenameFile(filespec1,filespec2)

'修改一个文件

Dimfso

Setfso=CreateObject("Scripting.FileSystemObject")

IfErr.number<>0Then

Response.Write("修改文件名时发生错误!

请查看错误信息

"&Err.number&"

"&Err.Description)

Err.Clear

RenameFile=False

EndIf

callfso.CopyFile(filespec1,filespec2,True)

callfso.DeleteFile(filespec1)

Setfso=Nothing

RenameFile=True

Endfunction

EndClass

%>

现在已可以压缩有密码的数据库,代码如下,但是压缩之后的数据库密码就没有了!

如何解决?

<%

ConstJET_3X=4

FunctionCompactDB(dbPath,boolIs97)

Dimfso,Engine,strDBPath

strDBPath=left(dbPath,instrrev(DBPath,"\"))

Setfso=CreateObject("Scripting.FileSystemObject")

Iffso.FileExists(dbPath)Then

SetEngine=CreateObject("JRO.JetEngine")

IfboolIs97="True"Then

Engine.CompactDatabase"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&dbpath,_

"Provider=Microsoft.Jet.OLEDB.4.0;JetOLEDB:

DatabasePassword='XXXXXXXX';DataSource="&strDBPath&"temp.mdb;"_

&"JetOLEDB:

EngineType="&JET_3X

Else

Engine.CompactDatabase"Provider=Microsoft.Jet.OLEDB.4.0;JetOLEDB:

DatabasePassword='XXXXXXXX';DataSource="&dbpath,_

"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&strDBPath&"temp.mdb"

EndIf

fso.CopyFilestrDBPath&"temp.mdb",dbpath

fso.DeleteFile(strDBPath&"temp.mdb")

Setfso=nothing

SetEngine=nothing

CompactDB="你的数据库,"&dbpath&",已经压缩成功!

"&vbCrLf

Else

CompactDB="数据库名称或路径不正确.请重试!

"&vbCrLf

EndIf

EndFunction

%>

asp编程有用的例子

(一)

1.如何用Asp判断你的网站的虚拟物理路径

答:

使用Mappath方法

ThePhysicalpathtothisvirtualwebsiteis:

<%=Server.MapPath("\")%>

2.我如何知道使用者所用的浏览器?

答:

使用theRequestobject方法

strBrowser=Request.ServerVariables("HTTP_USER_AGENT")

IfInstr(strBrowser,"MSIE")<>0Then

  Response.redirect("ForMSIEOnly.htm")

Else

  Response.redirect("ForAll.htm")

EndIf

3.如何计算每天的平均反复访问人数

答:

解决方法

<%startdate=DateDiff("d",Now,"01/01/1990")

ifstrdate<0thenstartdate=startdate*-1

avgvpd=Int((usercnt)/startdate)%>

显示结果

<%response.write(avgvpd)%>

thatisit.thispagehavebeenviewedsinceNovember10,1998

4.如何显示随机图象

<%dimp,ppic,dpic

ppic=12

randomize

p=Int((ppic*rnd)+1)

dpic="graphix/randompics/"&p&".gif"

%>

显示

">

5.如何回到先前的页面

答:

">preivouspage

或用图片如:

">

6.如何确定对方的IP地址

答:

<%=Request.serverVariables("REMOTE_ADDR)%>

7.如何链结到一副图片上

答:

<%@Languages=vbscript%>

<%response.expires=0

strimagename="graphix/errors/erroriamge.gif"

response.redirect(strimagename)

%>

8.强迫输入密码对话框

答:

把这句话放载页面的开头

<%response.status="401notAuthorized"

response.end

%>

9.如何传递变量从一页到另一页

答:

用HIDDEN类型来传递变量

<%formmethod="post"action="mynextpage.asp">

<%foreachiteminrequest.form%>

"type="HIDDEN"

value="<%=server.HTMLEncode(Request.form(item))%>">

<%next%>

10.为何我在asp程序内使用msgbox,程序出错说没有权限

答:

由于asp是服务器运行的,如果可以在服务器显示一个对话框,那么你只好等有人按了确定之后,你的程序才能继续执行,而一般服务器不会有人守着,所以微软不得不禁止这个函数,并胡乱告诉你(呵呵)没有权限。

但是ASP和客户端脚本结合倒可以显示一个对话框,asfollows:

<%yourVar="测试对话框"%>

<%scriptlanguage='javascript'>

alert("<%=yourvar%>")

11.有没有办法保护自己的源代码,不给人看到

答:

可以去下载一个微软的WindowsscriptEncoder,它可以对asp的脚本和客户端javascript/vbscript脚本进行加密。

不过客户端加密后,只有ie5才能执行,服务器端脚本加密后,只有服务器上安装有scriptengine5(装一个ie5就有了)才能执行。

12.怎样才能将querystring从一个asp文件传送到另一个?

答:

前者文件加入下句:

Response.Redirect("second.asp?

"&Request.ServerVariables("QUERY_STRING"))

13.global.asa文件总是不起作用?

答:

只有web目录设置为webapplication,global.asa才有效,并且一个webapplication的根目录下global.asa才有效。

IIS4可以使用InternetServiceManager设置applicationsetting怎样才能使得htm文件如同asp文件一样可以执行脚本代码?

14.怎样才能使得htm文件如同asp文件一样可以执行脚本代码?

答:

InternetSevicesManager->选择defaultwebsite->右鼠键->菜单属性->主目录->应用程序设置(ApplicationSetting)->点击按钮"配置"->appmapping->点击按钮"Add"->executablebrowse选择\WINNT\SYSTEM32\INETSRV\ASP.DLLEXTENSION输入htmmethodexclusions输入PUT.DELETE全部确定即可。

但是值得注意的是这样对htm也要由asp.dll处理,效率将降低。

15.如何注册组件

答:

有两种方法。

第一种方法:

手工注册DLL这种方法从IIs3.0一直使用到IIs4.0和其它的WebServer。

它需要你在命令行方式下来执行,进入到包含有DLL的目录,并输入:

regsvr32component_name.dll例如c:

\temp\regsvr32AspEmail.dll它会把dll的特定信息注册入服务器中的注册表中。

然后这个组件就可以在服务器上使用了,但是这个方法有一个缺陷。

当使用这种方法注册完毕组件后,该组件必须要相应的设置NT的匿名帐号有权限执行这个dll。

特别是一些组件需要读取注册表,所以,这个注册组件的方法仅仅是使用在服务器上没有MTS的情况下,要取消注册这个dll,使用:

regsvr32/uaspobject.dllexamplec:

\temp\regsvr32/uaneiodbc.dll

第二种方法:

使用MTS(MicrosoftTransactionServer)MTS是IIS4新增特色,但是它提供了巨大的改进。

MTS允许你指定只有有特权的用户才能够访问组件,大大提高了网站服务器上的安全性设置。

在MTS上注册组件的步骤如下:

1)打开IIS管理控制台。

2)展开transactionserver,右键单击"pkgsinstalled"然后选择"newpackage"。

3)单击"createanemptypackage"。

4)给该包命名。

5)指定administrator帐号或则使用"interactive"(如果服务器经常是使用administrator登陆的话)。

6)现

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1