|
33,写组件DLL时有用的代码 Option Explicit Private objContext As Object Private Response As Response Private Request As Request Private Server As Server Private Application As Application Private Session As Session Private Sub Class_Initialize() Dim objContext As ObjectContext Set objContext = GetObjectContext() Set Response = objContext("Response") Set Request = objContext("Request") Set Server = objContext("Server") Set Application = objContext("Application") Set Session = objContext("Session") End Sub Private Sub Class_Terminate() Set objContext = Nothing Set Response = Nothing Set Request = Nothing Set Server = Nothing Set Application = Nothing Set Session = Nothing End Sub
34,DVBBS7.0中的一段打开Access、SQL数据库的代码 Sub ConnectionDatabase Dim ConnStr If IsSqlDataBase = 1 Then 'sql数据库连接参数:数据库名、用户密码、用户名、连接名(本地用local,外地用IP) Dim SqlDatabaseName,SqlPassword,SqlUsername,SqlLocalName SqlDatabaseName = "dvbbs7" SqlPassword = "" SqlUsername = "dvbbs" SqlLocalName = "(local)" ConnStr = "Provider = Sqloledb; User ID = " & SqlUsername & "; Password = " & SqlPassword & "; Initial Catalog = " & SqlDatabaseName & "; Data Source = " & SqlLocalName & ";" Else '免费用户第一次使用请修改本处数据库地址并相应修改data目录中数据库名称,如将dvbbs6.mdb修改为dvbbs6.asp Db = "data/dvbbs6.mdb" ConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(db) End If On Error Resume Next Set conn = Server.CreateObject("ADODB.Connection") conn.open ConnStr If Err Then err.Clear Set Conn = Nothing Response.Write "数据库连接出错,请检查连接字串。"'注释,需要把这几个字翻译成英文。 Response.End End If End Sub
35,SQL注入防御代码(作者:NB联盟-小竹) Function ReqNum ( StrName ) ReqNum = Request ( StrName ) if Not isNumeric ( ReqNum ) then Response.Write "参数必须为数字型!" Response.End End if End Function
Function ReqStr ( StrName ) ReqStr = Replace ( Request(StrName), "'", "''" ) End Function
以上面三句SQL语句,说明一下调用方法: 1.SQL="Select * from Users where UserID=" & ReqNum("ID") 2.SQL="Select * from Users where UserID='" & ReqStr("ID") & "'" 3.SQL="Select * from Users where UserName like '%" & ReqStr("Name") & "%'"
重申一点:上面的方法无论对SQLServer库还是Access或是其它数据库,都是绝对适用、绝对安全,但注意一点,SQLServer的存储过程是个例外,该情况下要把单引号替换成四个单引号,以保安全。
36,ASP 3.0内置Application、ASPError、Request、Session、ObjectContext、Server等7个对象。
下面的是一段将ADODB.Connection放入Application的方法: Set Application("oConn")=Server.CreateObject("ADODB.Connection") Application("oConn").Open Connstr Set Application("oConn")=Nothing
37,ASP常用的几段代码(来自 动力3.51)
'************************************************** '函数名:gotTopic '作 用:截字符串,汉字一个算两个字符,英文算一个字符 '参 数:str ----原字符串 ' strlen ----截取长度 '返回值:截取后的字符串 '************************************************** function gotTopic(str,strlen) if str="" then gotTopic="" exit function end if dim l,t,c, i str=replace(replace(replace(replace(str," "," "),""",chr(34)),">",">"),"<","<") l=len(str) t=0 for i=1 to l c=Abs(Asc(Mid(str,i,1))) if c>255 then t=t+2 else t=t+1 end if if t>=strlen then gotTopic=left(str,i) & "…" exit for else gotTopic=str end if next gotTopic=replace(replace(replace(replace(gotTopic," "," "),chr(34),"""),">",">"),"<","<") end function
'************************************************** '函数名:strLength '作 用:求字符串长度。汉字算两个字符,英文算一个字符。 '参 数:str ----要求长度的字符串 '返回值:字符串长度 '************************************************** function strLength(str) ON ERROR RESUME NEXT dim WINNT_CHINESE WINNT_CHINESE = (len("中国")=2) if WINNT_CHINESE then dim l,t,c dim i l=len(str) t=l for i=1 to l c=asc(mid(str,i,1)) if c<0 then c=c+65536 if c>255 then t=t+1 end if next strLength=t else strLength=len(str) end if if err.number<>0 then err.clear end function
Function FilterJS(v) if not isnull(v) then dim t dim re dim reContent Set re=new RegExp re.IgnoreCase =true re.Global=True re.Pattern="(javascript)" t=re.Replace(v,"javascript") re.Pattern="(jscript:)" t=re.Replace(t,"jscript:") re.Pattern="(js:)" t=re.Replace(t,"js:") 're.Pattern="(value)" 't=re.Replace(t,"value") re.Pattern="(about:)" t=re.Replace(t,"about:") re.Pattern="(file:)" t=re.Replace(t,"file:") re.Pattern="(document.cookie)" t=re.Replace(t,"documents.cookie") re.Pattern="(vbscript:)" t=re.Replace(t,"vbscript:") re.Pattern="(vbs:)" t=re.Replace(t,"vbs:") re.Pattern="(on(mouse|exit|error|click|key))" t=re.Replace(t,"on$2") 're.Pattern="(&#)" 't=re.Replace(t,"&#") FilterJS=t set re=nothing end if End Function
function dvHTMLEncode(fString) if not isnull(fString) then fString = replace(fString, ">", ">") fString = replace(fString, "<", "<") fString = Replace(fString, CHR(32), " ") fString = Replace(fString, CHR(9), " ") fString = Replace(fString, CHR(34), """) fString = Replace(fString, CHR(39), "'") fString = Replace(fString, CHR(13), "") fString = Replace(fString, CHR(10) & CHR(10), "</P><P> ") fString = Replace(fString, CHR(10), "<BR> ")
dvHTMLEncode = fString end if end function
function dvHTMLCode(fString) if not isnull(fString) then fString = replace(fString, ">", ">") fString = replace(fString, "<", "<") fString = Replace(fString, " "," ") fString = Replace(fString, """, CHR(34)) fString = Replace(fString, "'", CHR(39)) fString = Replace(fString, "</P><P> ",CHR(10) & CHR(10)) fString = Replace(fString, "<BR> ", CHR(10)) dvHTMLCode = fString end if end function
function nohtml(str) dim re Set re=new RegExp re.IgnoreCase =true re.Global=True re.Pattern="(\<.[^\<]*\>)" str=re.replace(str," ") re.Pattern="(\<\/[^\<]*\>)" str=re.replace(str," ") nohtml=str set re=nothing end function
38,注册组件可用到的批处理文件 第一次注册组件.bat:
copy powereasy.dll %windir%\system32 regsvr32 %windir%\system32\powereasy.dll
更新组件.bat: net stop iisadmin /y regsvr32 /u /s %windir%\system32\powereasy.dll copy powereasy.dll %windir%\system32 regsvr32 /s %windir%\system32\powereasy.dll net start w3svc
卸载组件.bat: net stop iisadmin /y regsvr32/u %windir%\system32\powereasy.dll del %windir%\system32\powereasy.dll net start w3svc
39,永远带着框架
在子框架文件中<head></head>之间加入: <SCRIPT language=JavaScript> <!-- if(parent.location == location) location = "框架.htm"; // --> </SCRIPT> 其中,框架.htm为顶层框架文件。
破解方法: <frameset rows="0,100" frameborder="NO" border="0" framespacing="0"> <frame src="blank.html" name="topFrame" scrolling="NO" noresize> <frame src="子框架页地址" name="mainFrame"> </frameset> <noframes><body> </body></noframes>
40,改变IE地址栏的IE图标
我们要先做一个16*16的icon(图标文件),保存为index.ico。把这个图标文件上传到根目录下并在首页<head></head>之间加上如下代码:
<link REL = "Shortcut Icon" href="index.ico">
|