|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
问题是他们究竟是喜欢他们是使用软件时,速度快还是速度慢好.(当然在3秒以内).无论是他们输入资料时,查找资料时,分析资料时.比来沉沦上作网站了,利用asp开辟,发明asp有很多多少的毛病,并且在一个网站中有很多多少的代码是反复利用的,以是就查询了一些材料发明在asp中可使用类的头脑,以是就写了这个类,写的欠好,可是对照有用。
<metahttp-equiv="Content-Type"content="text/html;charset=gb2312">
<%
ConstBtn_First="<fontface=webdings>9</font>"界说第一页按钮显现款式
ConstBtn_Prev="<fontface=webdings>3</font>"界说前一页按钮显现款式
ConstBtn_Next="<fontface=webdings>4</font>"界说下一页按钮显现款式
ConstBtn_Last="<fontface=webdings>:</font>"界说最初一页按钮显现款式
ClassclsDSJ
Privatep_Error,p_IpAdd,p_Debug,Errs
Privatep_InvaildWords
PrivatetmpStr
PrivateobjConnDivPage,rsDivPage,p_GetSQL,p_nPage
Privatep_rsPageSize,p_intCurPage,p_strURL,p_intTotalPage,p_intTotalRecords
Privatep_dbType,p_dbFolder,p_DataBase,dbPath,p_dbUserID,p_dbPassword,p_sqlDataSource
Privateparam_DataBase,param_dbUserID,param_dbPassword,param_dbType
Property
PublicobjConn,ConnStr,SQLQueryNum
PubliclogDB,WebURL
PublicSaveLog
PublicErrCodes,ErrCode,ErrMsg
PublicScriptFolder,ScriptName
PrivateSubClass_Initialize
p_Debug=True
ClientConnected
SaveLog=True
ErrMsg=""
p_Error=0
SQLQueryNum=0
Rem数据库毗连初始化
dbType=12取1x――Access,2x――SQL;x1――OLEDB,x2――ODBC
dbFolder="Data"
DataBase="zhubizidatabase.MDB"
dbUserID=""
dbPassword=""
sqlDataSource=""
p_rsPageSize=10
p_nPage=2
Ifrequest("page")=""Then
p_intCurPage=1
ElseIfNOTIsNumeric(request("page"))Then
p_intCurPage=1
ElseIfCInt(Trim(request("page")))<1Then
p_intCurPage=1
Else
p_intCurPage=CInt(Trim(request("page")))
EndIf
WebURL="http://blog.csdn.net/alonesword/"
tmpStr=Request.ServerVariables("PATH_INFO")
tmpStr=Split(tmpStr,"/",-1)
ScriptName=Lcase(tmpStr(UBound(tmpStr)))
ScriptFolder=LCase(tmpStr(UBound(tmpStr)-1))&"/"
p_InvaildWords="select|update|delete|insert|@|--|;||#|%|xp|cmd|shell"
EndSub
PrivateSubClass_terminate()
IfIsObject(rsDivPage)ThenrsDivPage.Close:SetrsDivPage=Nothing
IfIsObject(objConn)ThenobjConn.Close:SetobjConn=Nothing
EndSub
PublicPropertyGetVersion
Version="DSJ1.1.0Beta"
EndProperty
PublicPropertyGetError
Error=p_Error
EndProperty
PublicPropertyGetDebug
Debug=p_Debug
EndProperty
PublicPropertyLetDebug(BoolDebug)
IfBoolDebugThen
p_Debug=True
Else
p_Debug=False
EndIf
EndProperty
PublicPropertyGetdbType
dbType=p_dbType
EndProperty
PublicPropertyLetdbType(lngdbType)
IfIsNumeric(lngdbType)Then
p_dbType=lngdbType
Else
p_dbType=12
EndIf
EndProperty
PublicPropertyGetdbFolder
dbFolder=p_dbFolder
EndProperty
PublicPropertyLetdbFolder(strFolder)
IfRight(strFolder,1)=""ORRight(strFolder,1)="/"Then
p_dbFolder=strFolder
Else
If(NOTIsNull(strFolder))OR(strFolder"")Then
p_dbFolder=strFolder&""
Else
p_dbFoler=""
EndIf
EndIf
EndProperty
PublicPropertyGetDatabase
Database=p_dataBase
EndProperty
PublicPropertyLetDatabase(strDataBase)
p_dataBase=strDatabase
EndProperty
PublicPropertyGetdbUserID
dbUserID=p_dbUserID
EndProperty
PublicPropertyLetdbUserID(strDataBaseUserID)
p_dbUserID=strDataBaseUserID
EndProperty
PublicPropertyGetdbPassword
dbPassword=p_dbPassword
EndProperty
PublicPropertyLetdbPassword(strDataBasePassword)
p_dbPassword=strDataBasePassword
EndProperty
PublicPropertyGetSQLDataSource
SQLDataSource=p_sqlDataSource
EndProperty
PublicPropertyLetSQLDataSource(strSQLDataSource)
IfstrsqlDataSource""Then
IfLeft(p_dbType,1)=2Then
p_sqlDataSource=strSQLDataSource
Else
AddErrorCode(110)
p_sqlDataSource=""
EndIf
EndIf
EndProperty
PublicPropertyLetPageSize(int_PageSize)
IfIsNumeric(Int_Pagesize)Then
p_rsPageSize=CLng(int_PageSize)
EndIf
EndProperty
PublicPropertyGetPageSize
Ifp_rsPageSize=""orNOTIsNumeric(p_rsPageSize)Then
PageSize=8
Else
PageSize=p_rsPageSize
EndIf
EndProperty
PublicPropertyGetGetRs()
IfNOTDebugThenOnErrorResumeNext
IfNOTIsObject(objConn)ThenConnectionDataBasedbDataBase,dbUserID,dbPassword,dbType
IfNOTIsObject(rsDivPage)Then
SetrsDivPage=Server.createobject("adodb.recordset")
rsDivPage.OpenGetSQL,objConn,1,1
rsDivPage.PageSize=PageSize
Ifnot(rsDivPage.eofandrsDivPage.BOF)Then
Ifp_intCurPage>rsDivPage.PageCountThen
p_intCurPage=rsDivPage.PageCount
EndIf
rsDivPage.AbsolutePage=p_intCurPage
EndIf
IfErrThen
Err.Clear
rsDivPage.Close
SetrsDivPage=Nothing
IfSaveLogThen
tmpMsg="毗连数据库毛病,请反省您的查询代码是不是准确。<br>基于平安的来由,只显现本信息,要检察具体的毛病信息,请设置dsj.Debug=True"
Response.WriteSaveSQLLog(cmd,tmpMsg)
Else
Response.Write"毗连数据库毛病,请反省您的查询代码是不是准确。"
EndIf
Response.End()
EndIf
SQLQueryNum=SQLQueryNum+1
SetGetRs=rsDivPage
EndIf
EndProperty
PublicPropertyLetGetSQL(str_sql)
Ifstr_sql""Then
p_GetSQL=str_sql
Else
AddErrorCode(111)
IfDebugThenShowErrMsg()
p_GetSQL="ThePropertyofGetSQLisNULL."
EndIf
EndProperty
PublicPropertyGetGetSQl()
GetSQL=p_GetSQL
EndProperty
******************************
称号:gotTopic
参数:str,strlen
前往值:被限定后的字符串
创立工夫:2005年3月3日
感化:限定被限定的字符串
******************************
PublicFunctionGotToPic(str,strlen)
Rem限定字符串显现长度在必定的局限内
Dimi,StringLen,CharSize,EchoCharType
StringLen=len(str)
CharSize=0
Fori=1toStringLen
EchoCharType=Abs(Asc(Mid(str,i,1)))
IfEchoCharType>255Then
CharSize=CharSize+2
Else
CharSize=CharSize+1
EndIf
IfCharSize>strlenThen
gotTopic=Left(str,i)&"..."
ExitFor
Else
gotTopic=str&""
EndIf
Next
EndFunction
******************************
称号:ChkInvStr
参数:Str
前往值:True/False
创立工夫:2005年5月2日
感化:反省参数是不是有不法字符
******************************
PublicFunctionChkInvStr(Str)
Rem界说必要过滤得不法字符
DimInvaildWord,inWords,i
Str=CStr(Str)
ChkInvStr=False
IfLen(Replace(p_InvaildWords,Chr(0),""))<1Then
AddErrorCode(103)invaildwordsisnull
ExitFunction
Else
IfInstr(1,p_Invaildwords,"|")>0Then
InvaildWord=Split(p_InvaildWords,"|")
inWords=LCase(Trim(Str))
Fori=LBound(InvaildWord)ToUBound(InvaildWord)
IfInstr(inWords,InvaildWord(i))>0Then
p_Error=1982
AddErrorCode(105)
ChkInvStr=True
ExitFunction
EndIf
Next
Else
AddErrorCode(104)"|"isrequried.
ExitFunction
EndIf
EndIf
EndFunction
******************************
称号:GetIP
参数:NULL
前往值:NULL
创立工夫:2005年5月3日
感化:失掉用户的ip地点
******************************
PublicFunctionGetIP()
p_IpAdd=Request.ServerVariables("HTTP_X_FORWARDED_FOR")
IfIsNull(p_IpAdd)ORp_IpAdd=""Then
p_IpAdd=Request.ServerVariables("REMOTE_ADDR")
EndIf
GetIp=p_IpAdd
EndFunction
******************************
称号:IPAddress
参数:sip
前往值:County,City
感化:对数据内容举行排版转换
创立工夫:2005年5月6日
www.ckuyun.com
******************************
PublicFunctionIPAddress(sip)
DimIPConnStr,IPConn,IPAddressDB
Dimstr1,str2,str3,str4
Dimnum
Dimcountry,city,address
DimIPRs,SQL
address="未知"
IfIsNumeric(Left(sip,2))Then
Ifsip="127.0.0.1"Thensip="192.168.0.1"
str1=Left(sip,InStr(sip,".")-1)
sip=mid(sip,instr(sip,".")+1)
str2=Left(sip,instr(sip,".")-1)
sip=Mid(sip,InStr(sip,".")+1)
str3=Left(sip,instr(sip,".")-1)
str4=Mid(sip,instr(sip,".")+1)
IfisNumeric(str1)=0orisNumeric(str2)=0orisNumeric(str3)=0orisNumeric(str4)=0Then
Else
num=CLng(str1)*16777216+CLng(str2)*65536+CLng(str3)*256+CLng(str4)-1
IPAddressDB="DSJ_Ipaddress.mdb"
IPConnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(p_dbFolder&IPAddressDB)
SetIPConn=Server.CreateObject("ADODB.Connection")
IPConn.OpenIpConnStr
country="亚洲"
city=""
sql="selecttop1country,cityfromDSJ_IPAddresswhereip1<="&num&"andip2>="&num&""
SetIPRs=IPConn.execute(sql)
IfNot(IPRs.EOFAndIPRs.bof)Then
country=IPRs(0)
city=IPRs(1)
EndIf
IpRs.Close:SetIPRs=Nothing
IPConn.CLose:SetIPConn=Nothing
SqlQueryNum=SqlQueryNum+1
EndIf
IPAddress=country&city
EndIf
EndFunction
******************************
称号:ClientConnected
参数:NULL
前往值:NULL
创立工夫:2005年5月5日
感化:失掉用户是不是与服务器毗连
******************************
PublicSubClientConnected()
IfResponse.IsClientConnectedthen
Response.Flush()
Else
Response.End()
EndIf
EndSub
******************************
称号:ChkPost
参数:NULL
前往值:True/False
创立工夫:2005年5月5日
感化:反省被提交的数据来历
******************************
PublicFunctionChkPost()
DimServer_v1,Server_v2
ChkPost=False
Server_v1=CStr(Request.ServerVariables("HTTP_REFERER"))
Server_v2=CStr(Request.ServerVariables("SERVER_NAME"))
IfMid(Server_v1,8,Len(Server_v2))=Server_v2ThenChkPost=True
EndFunction
******************************
称号:AddErrorCode
参数:ErrCode
前往值:ErrCodes
创立工夫:2005年5月3日
感化:增加毛病代码到ErrCodes中
******************************
PublicSubAddErrorCode(ErrCode)
IfErrCodes=""Then
ErrCodes=ErrCode
Else
ErrCodes=ErrCodes&","&ErrCode
EndIf
EndSub
******************************
称号:ShowErrMsg
参数:NULL
前往值:NULL
创立工夫:2005年5月3日
感化:显现具体的毛病信息
******************************
PublicFunctionShowErrMsg()
IfNOTp_DebugThenOnErrorResumeNext
IfErrCodes""Then
iErrCodes=Split(ErrCodes,",",-1,Binary)
Fori=LBound(iErrCodes)ToUBound(iErrCodes)
tmpErrCode=CLng(iErrCodes(i))
IfIsNumeric(tmpErrCode)Then
ErrMsg=ErrMsg&ErrDetails(tmpErrCode)
EndIf
Next
EndIf
ShowErrMsg=ErrMsg
EndFunction
******************************
称号:ConnectionDataBase
参数:DataBase,p_dbUserID,p_dbPassword,p_dbType
前往值:NULL
感化:毗连到数据库
创立工夫:2005年5月6日
******************************
PublicFunctionConnectionDataBase(param_DataBase,param_dbUserID,param_dbPassword,param_dbType)
IfNotp_DebugThenOnErrorResumeNext
ClientConnected
IfIsNumeric(param_dbType)Then
SetobjConn=Server.CreateObject("ADODB.Connection")
objConn.ConnectionTimeOut=10设置毗连超时为10秒
dbPath=Server.MapPath(p_dbFolder¶m_DataBase)
Response.WritedbPath
SelectCaseparam_dbType
Case11:AccessDataBase(OLEDB)
ConnStr="Provider=Microsoft.Jet.Oledb.4.0;DataSource="&dbPath&";UserID="¶m_dbUserID&";Password="¶m_dbPassword&""
Case21:SQLServer(OLEDB)
ConnStr="Provider=SQLOLEDB;InitialCatalog="¶m_DataBase&";DataSource="&p_sqlDataSource&";UserID="¶m_dbUserID&";Password="¶m_dbPassword&""
Case12:AccessDataBase(ODBC)
ConnStr="Driver={MicrosoftAccessDriver(*.mdb)};DBQ="&dbPath&";UserID="¶m_dbUserID&";Password="¶m_dbPassword
Case22:SQLServer(ODBC)
ConnStr="Driver={SQLServer};DataBase="¶m_DataBase&";Server="&p_sqlDataSource&";UserID="¶m_dbUserID&";Password="¶m_dbPassword&""
CaseElse:
AddErrorCode(100)
Ifp_DebugThenResponse.WriteShowErrMsg()
ExitFunction
EndSelect
objConn.ConnectionString=ConnStr
objConn.Open
SetConnectionDataBase=objConn
IfErrThen
Err.Clear
IfSaveLogThen
tmpMsg="数据库毗连时呈现毛病,请反省您的查询代码是不是准确。<br>基于平安的来由,只显现本信息,要检察具体的毛病信息,请设置dsj.Debug=True"
cmd="Executethecommandof:"¶m_dbtype
Response.WriteSaveSQLLog(cmd,tmpMsg)
Else
Response.Write"数据库毗连时呈现毛病,请反省您的查询代码是不是准确。"
EndIf
AddErrorCode(101)
SetobjConn=Nothing
Response.End()
EndIf
EndIf
EndFunction
******************************
称号:SaveSQLLog
参数:sCommand,Msg
前往值:msg
感化:存储日记
创立工夫:2005年5月6日
******************************
PublicFunctionSaveSQLLog(sCommand,Msg)
IfNotp_DebugThenOnErrorResumeNext
logDB="DSJ_SQLLog.mdb"
ConnectionDataBaselogDB,p_dbUserID,p_dbPassword,12
logConnStr="Provider=Microsoft.Jet.OLEDB.4.0;DataSource="&Server.MapPath(p_dbFolder&logDB)
SetlogConn=Server.CreateObject("ADODB.Connection")
logConn.OpenlogConnStr
IfSaveLogThen
DimlogCmd
logCmd="INSERTINTODSJ_SQL_Log(Command,ScriptName,logUser,IP)VALUES"
logCmd=logCmd&"("&Replace(Left(sCommand,255),"","")&","&(ScriptFolder&ScriptName)&","&Session("User")&","&GetIP&")"
Response.Write"Needtoexecutecommandis:<br><fontcolor=red>"&logCmd&"</font><BR>"
logConn.Execute(logCmd)
EndIf
logConn.Close
SetlogConn=Nothing
SaveSQLLog=msg
SQLQueryNum=SQLQueryNum+1
EndFunction
******************************
称号:ExecuteCmd
参数:cmd
前往值:RecordSet
感化:前往由cmd创立的纪录集
创立工夫:2005年5月6日
******************************
PublicFunctionExecuteCmd(cmd)
IfNOTIsObject(objConn)ThenConnectionDataBasep_DataBase,p_dbUserID,p_dbPassword,p_dbType
IfNOTp_DebugThenOnErrorResumeNext
ClientConnected
SetExecuteCmd=objConn.Execute(cmd)
IfErrThen
Err.Clear
objConn.Close
SetobjConn=Nothing
IfSaveLogThen
tmpMsg="查询数据的时分发明毛病,请反省您的查询代码是不是准确。<br>基于平安的来由,只显现本信息,要检察具体的毛病信息,请设置dsj.Debug=True"
Response.WriteSaveSQLLog(cmd,tmpMsg)
Else
Response.Write"查询数据的时分发明毛病,请反省您的查询代码是不是准确。"
EndIf
Response.End()
EndIf
SQLQueryNum=SQLQueryNum+1
EndFunction
******************************
称号:HTMLEncode
参数:fString
前往值:HTMLEncode
感化:对数据内容举行排版转换
创立工夫:2005年5月6日
******************************
PublicFunctionHTMLEncode(fString)
IfNotIsNull(fString)OrfString""Then
fString=Replace(fString,"<","<")
fString=Replace(fString,">",">")
fString=Replace(fString,Chr(9),"")倾斜字体
fString=Replace(fString,Chr(13),"")
fString=Replace(fString,Chr(32),"")转换空格
fString=Replace(fString,Chr(34),""")转换双引号
fString=Replace(fString,Chr(39),"")转换单引号
fString=Replace(fString,Chr(10),"</p><p>")转换成段落格局
fString=Replace(fString,Chr(10),"<BR>")转换为下一行
fString=Replace(fString,Chr(13),"<BR>")
fString=Replace(fSting,vbCrlf,"<BR>")
fString=LinkFriend(fString)
fString=ChkBadWords(fString)
HTMLEncode=fString
EndIf
EndFunction
******************************
称号:LinkFriend
参数:fContent
前往值:LinkFriend
感化:举行友谊毗连交换
创立工夫:2005年5月6日
******************************
PublicFunctionLinkFriend(fContent)
IfNOTp_DebugThenOnErrorResumeNext
IfNOTIsObject(objConn)ThenConnectionDataBaseDataBase,dbUserID,dbPassword,dbType
SetrsFriend=ExecuteCmd("SelectTitle,URLFromdsj_FriendLink")
IfrsFriend.EofAndrsFriend.BofThen
Else
DoWhileNOTrsFriend.Eof
strTitle=rsFriend.Fields.Item("Title")
URl=rsFriend.Fields.Item("URL")
IfLCase(Left(URL,1))"h"ThenURL=Replace(URl,Left(URL,1),"")
strLink="<atarget=_blanktitle="&strTitle&"href="&URL&">"
strLink=strLink&strTitle&"</a>"
IfInstr(fContent,strTitle)>0ThenfContent=Replace(fContent,strTitle,strLink)
rsFriend.MoveNext
Loop
LinkFriend=fContent
EndIf
rsFriend.Close
SetrsFriend=Nothing
SQLQueryNum=SQLQueryNum+1
EndFunction
***************************************************************
称号:ShowPage
参数:NULL
前往值:NULL
感化:显现经由分页后的纪录导航
申明:
原作:zykj2000网站:http://bbs.513soft.net
修正:孤剑网站:http://blog.csdn.net/alonesword/
工夫:2005年5月7日
******************************************************************
PublicSubShowPage()
Dimstr_tmp
p_intTotalRecords=rsDivPage.RecordCount
Ifp_intTotalRecords<=0Then
p_Error=p_Error&"总纪录数为零,请输出数据"
CallShowError()
EndIf
Ifp_intTotalRecords<=PageSizeTHen
p_intTotalPage=1
Else
Ifp_intTotalRecordsmodPageSize=0Then
p_intTotalPage=CLng(p_intTotalRecords/PageSize*-1)*-1
Else
p_intTotalPage=CLng(p_intTotalRecords/PageSize*-1)*-1+1
EndIf
EndIf
Ifp_intCurPage>p_intTotalPageThen
p_intCurPage=p_intTotalPage
EndIf
Response.WriteShowFirstPrv
showNumBtn
Response.WriteShowNextLast&""
Response.WriteShowPageInfo
response.writestr_tmp
EndSub
PrivateFunctionShowFirstPrv()
DimStr_tmp,int_prvpage
int_prvpage=p_intCurPage-1
Ifint_prvpage<1Thenint_prvpage=1
Btn_FirstLink="<atitle=第1页href="&AddnPageURL&"1>"&Btn_First
Btn_PrevLink="<atitle=第"&int_prvpage&"页href="&AddnPageURL&p_intCurPage-1&">"&Btn_Prev
Ifp_intCurPage=1Then
str_tmp=Btn_FirstLink&"</a>"&Btn_PrevLink&"</a>"
Else
int_prvpage=p_intCurPage-1
str_tmp=""&Btn_FirstLink&"</a>"&Btn_PrevLink&"</a>"
EndIf
ShowFirstPrv=str_tmp
EndFunction
PrivateFunctionShowNextLast()
Dimstr_tmp,int_Nextpage
int_NextPage=p_intCurPage+1
Ifp_intCurPage+1>p_intTotalPageThenint_NextPage=p_intTotalPage
Btn_NextLink="<atitle=第"&int_NextPage&"页href="&AddnPageURL&p_intCurPage+1&">"&Btn_Next
Btn_LastLink="<atitle=第"&p_intTotalPage&"页href="&AddnPageURL&p_intTotalPage&">"&Btn_Last
Ifp_intCurPage>=p_intTotalPageThen
str_tmp=Btn_NextLink&"</a>"&Btn_LastLink&"</a>"
Else
Int_NextPage=p_intCurPage+1
str_tmp=""&Btn_NextLink&"</a>"&Btn_LastLink&"</a>"
EndIf
ShowNextLast=str_tmp
EndFunction
PrivateFunctionshowNumBtn()
Dimi,str_tmp
DimPageLink
str_tmp=""
Fori=1top_intTotalPageStep1
PageLink="<atitle=第"&i&"页href="&AddnPageURL&i&">"&i&"</a>"
Ifi=p_intCurPageThenPageLink="<atitle=第"&i&"页href="&AddnPageURL&i&"><fontcolor=red>"&i&"</font></a>"
Response.WritePageLink
Next
showNumBtn=str_tmp
EndFunction
PrivateFunctionShowPageInfo()
Dimstr_tmp
str_tmp="页次:"&p_intCurPage&"/"&p_intTotalPage&"页共"&p_intTotalRecords&"笔记录"&p_rsPageSize&"条/每页"
ShowPageInfo=str_tmp
EndFunction
PrivateFunctionAddnPageURL()
Dimi,j,search_str,result_url
search_str="page="
str_params=Request.ServerVariables("QUERY_STRING")
Ifstr_params=""Then
result_url=ScriptName&"?page="
Else
IfInstrRev(str_params,search_str)=0Then
result_url=ScriptName&"?"&str_params&"&page="
Else
j=InstrRev(str_params,search_str)-2
Ifj=-1Then
result_url=ScriptName&"?page="
Else
str_params=Left(str_params,j)
result_url=ScriptName&"?"&str_params&"&page="
EndIf
EndIf
EndIf
AddnPageURL=result_url
EndFunction
******************************************************************
PublicFunctionGetName(Options)
DimtmpName
tmpName=Request.ServerVariables("PATH_INFO")
arrTmpName=Split(tmpName,"/")
IfOptions=0ThenGetName=Server.Mappath(".")&GetName(1)
IfOptions=1ThenGetName=LCase(arrTmpName(UBound(arrTmpName)))
IfOptions=2ThenGetName=LCase(arrTmpName(UBound(arrTmpName)-1))&"/"
EndFunction
EndClass
%>
缺乏可以共同遵循的行业标准,ASP还处在发展初期,大家对它的理解不同,如产品和服务标准,收费标准等,不利于行业的健康发展。 |
|