DVBBS中使用到的一些共用Function

 <%
' 判斷髮言是否來自外部
Public Function ChkPost()
    
Dim server_v1,server_v2
    Chkpost
=False 
    server_v1
=Cstr(Request.ServerVariables("HTTP_REFERER"))
    server_v2
=Cstr(Request.ServerVariables("SERVER_NAME"))
    
If Mid(server_v1,8,len(server_v2))=server_v2 Then Chkpost=True 
End Function
'系統分配隨機密碼
Public Function Createpass()
    
Dim Ran,i,LengthNum
    LengthNum
=16
    Createpass=""
    For i=1 To LengthNum
        
Randomize
        Ran = CInt(Rnd * 2)
        
Randomize
        If Ran = 0 Then
            Ran = CInt(Rnd * 25+ 97
            Createpass =Createpass& UCase(Chr(Ran))
        
ElseIf Ran = 1 Then
            Ran = CInt(Rnd * 9)
            Createpass 
= Createpass & Ran
        
ElseIf Ran = 2 Then
            Ran = CInt(Rnd * 25+ 97
            Createpass =Createpass& Chr(Ran)
        
End If
    Next
End Function
'重寫了execute
Rem Function 
Public Function Execute(Command)
    
If Not IsObject(Conn) Then ConnectionDatabase
    
'檢查權限,防止注入攻擊。
    If InStr(LCase(Command),"dv_admin")>0 And Left(ScriptName,6)<> "admin_" Then 
        Response.Write SaveSQLLOG(
Command,"")'翻譯成英文
        Command=Replace(LCase(Command),"dv_admin","dv<i>"&Chr(95)&"</i>admin"
    
End If                
    
If IsDeBug = 0 Then 
        
On Error Resume Next
        Set Execute = Conn.Execute(Command)
        
If Err Then
            err.Clear
            
Set Conn = Nothing
            '以下信息要翻譯成英文
            Response.Write SaveSQLLOG(Command,"查詢數據的時候發現錯誤,請檢查您的查詢代碼是否正確。<br>基於安全的理由,只顯示本信息,要查看詳細的錯誤信息,請修改您的程序文件conn.asp。把""Const IsDeBug = 0""改為:""Const IsDeBug = 1""")
            Response.End
        
End If
    Else
        'Response.Write command & "<br>"
        Set Execute = Conn.Execute(Command)
    
End If    
    SqlQueryNum 
= SqlQueryNum+1
End Function

'記錄查詢錯誤事件
Public Function SaveSQLLOG(sCommand,message)
    
Dim lConnStr,lConn,ldb,SQL,RS
    ldb 
= "data/DvSQLLOG.mdb"
    lConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(ldb)
    
Set lConn = Server.CreateObject("ADODB.Connection")
    lConn.Open lConnStr
    
Set Rs = Server.CreateObject("adodb.recordset")
    Sql
="select * from dv_sql_log"
    Rs.open sql,lconn,1,3
    Rs.addnew
    Rs(
"ScriptName")=ScriptName
    Rs(
"S_Info")=Left(sCommand,255)
    Rs(
"ip")=UserTrueIP
    Rs.update
    Rs.close
    lConn.Execute(SQL)
    lConn.Close
    
Set lConn = Nothing 
    SaveSQLLOG 
= message
End Function

'IP/來源
Public Function address(sip)
    
Dim aConnStr,aConn,adb
    
Dim str1,str2,str3,str4
    
Dim  num
    
Dim country,city
    
Dim irs,SQL
    
If IsNumeric(Left(sip,2)) Then
        If sip="127.0.0.1" Then sip="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)
        
If isNumeric(str1)=0 or isNumeric(str2)=0 or isNumeric(str3)=0 or isNumeric(str4)=0 Then
        Else        
            num
=CLng(str1)*16777216+CLng(str2)*65536+CLng(str3)*256+CLng(str4)-1
            adb = "data/ipaddress.mdb"
            aConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(adb)
            
Set AConn = Server.CreateObject("ADODB.Connection")
            aConn.Open aConnStr

            sql
="select top 1 country,city from dv_address where ip1 <="&num&" and ip2 >="&num&""
            Set irs=aConn.execute(sql)
            
If irs.EOF And irs.bof Then
                country="亞洲"
                city=""
            Else
                country=irs(0)
                city
=irs(1)
            
End If
            Set irs=Nothing
            Set aConn = Nothing 
            SqlQueryNum 
= SqlQueryNum+1
        End If
        address=country&city
    
Else 
        address
="未知"
    End If
End Function
    
'用於用戶發佈的各種信息過濾,帶髒話過濾
Public Function HTMLEncode(fString)
    
If Not IsNull(fString) Then
        fString = replace(fString, ">""&gt;")
        fString 
= replace(fString, "<""&lt;")
        fString 
= Replace(fString, CHR(32), " ")        '&nbsp;
        fString = Replace(fString, CHR(9), " ")            '&nbsp;
        fString = Replace(fString, CHR(34), "&quot;")
        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> ")
        fString
=ChkBadWords(fString)
        HTMLEncode 
= fString
    
End If
End Function
'用於論壇本身的過濾,不帶髒話過濾
Public Function iHTMLEncode(fString)
    
If Not IsNull(fString) Then
        fString = replace(fString, ">""&gt;")
        fString 
= replace(fString, "<""&lt;")
        fString 
= Replace(fString, CHR(32), " ")
        fString 
= Replace(fString, CHR(9), " ")
        fString 
= Replace(fString, CHR(34), "&quot;")
        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> ")
        iHTMLEncode 
= fString
    
End If
End Function
Public Function strLength(str)
    
If isNull(strOr Str = "" Then
        StrLength = 0
        Exit Function
    End If
    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
        Next
        strLength=t
    
Else 
        strLength
=len(str)
    
End If
End Function
Public Function ChkBadWords(Str)
    
If IsNull(StrThen Exit Function
    Dim i
    
For i = 0 To Ubound(BadWords)
        
If i > UBound(rBadWord) Then
            Str = Replace(Str,BadWords(i),"*")
        
Else
            Str = Replace(Str,BadWords(i),rBadWord(i))
        
End If
    Next
    ChkBadWords = Str
End Function
Public Function Checkstr(Str)
    
If Isnull(StrThen
        CheckStr = ""
        Exit Function 
    
End If
    CheckStr = Replace(Str,"'","''")
End Function
'取得帶端口的URL,推薦使用
Property Get Get_ScriptNameUrl()
    
If request.servervariables("SERVER_PORT")="80" Then
        Get_ScriptNameUrl="http://" & request.servervariables("server_name")&replace(lcase(request.servervariables("script_name")),ScriptName,"")
    
Else
        Get_ScriptNameUrl="http://" & request.servervariables("server_name")&":"&request.servervariables("SERVER_PORT")&replace(lcase(request.servervariables("script_name")),ScriptName,"")
    
End If
End Property

function IsValidEmail(email)

dim names, name, i, c

'Check for valid syntax in an email address.

IsValidEmail = true
names = Split(email, "@")
if UBound(names) <> 1 then
   IsValidEmail = false
   exit function
end if
for each name in names
   
if Len(name) <= 0 then
     IsValidEmail = false
     exit function
   end if
   for i = 1 to Len(name)
     c 
= Lcase(Mid(name, i, 1))
     
if InStr("abcdefghijklmnopqrstuvwxyz_-.", c) <= 0 and not IsNumeric(c) then
       IsValidEmail = false
       exit function
     end if
   next
   if Left(name, 1= "." or Right(name, 1= "." then
      IsValidEmail = false
      exit function
   end if
next
if InStr(names(1), "."<= 0 then
   IsValidEmail = false
   exit function
end if
= Len(names(1)) - InStrRev(names(1), ".")
if i <> 2 and i <> 3 then
   IsValidEmail = false
   exit function
end if
if InStr(email, ".."> 0 then
   IsValidEmail = false
end if

end function

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 cutStr(str,strlen)
    
dim l,t,c
    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
    cutStr=left(str,i)&""
    exit for
    else
    cutStr=str
    end if
    next
    cutStr=replace(cutStr,chr(10),"")
end function

Function fixjs(Str)
    
If Str <>"" Then
        str = replace(str,"/""//")
        
Str = replace(strchr(34), "/""")
        
Str = replace(strchr(39),"/'")
        
Str = Replace(strchr(13), "/n")
        
Str = Replace(strchr(10), "/r")
        
str = replace(str,"'""'")
    
End If
    fixjs=Str
End Function
Function enfixjs(Str)
    
If Str <>"" Then
        Str = replace(str,"'""'")
        
Str = replace(str,"/""" , chr(34))
        
Str = replace(str"/'",chr(39))
        
Str = Replace(str"/r"chr(10))
        
Str = Replace(str"/n"chr(13))
        
Str = replace(str,"//""/")
    
End If
    enfixjs=Str
End Function


Class Cls_Browser
    
Public Browser,version ,platform
    
Private Sub Class_Initialize()
        Browser
="unknown"
        version="unknown"
        platform="unknown"
        Dim Agent
        Agent
=Request.ServerVariables("HTTP_USER_AGENT")
        Agent
=Split(Agent,";")
        
If InStr(Agent(1),"MSIE")>0 Then
            Browser="Microsoft Internet Explorer "
            version=Trim(Left(Replace(Agent(1),"MSIE",""),6))
        
ElseIf InStr(Agent(4),"Netscape")>0 Then 
            Browser
="Netscape "
            Dim tmpstr
            tmpstr
=Split(Agent(4),"/")
            version
=tmpstr(UBound(tmpstr))
        
End If
        If InStr(Agent(2),"NT 5.2")>0 Then
            platform="Windows 2003"
        ElseIf InStr(Agent(2),"NT 5.1")>0 Then
            platform="Windows XP"
        ElseIf InStr(Agent(2),"NT 5.0")>0 Then
            platform="Windows 2000"
        ElseIf InStr(Agent(2),"9x")>0 Then
            platform="Windows ME"
        ElseIf InStr(Agent(2),"98")>0 Then
            platform="Windows 98"
        ElseIf InStr(Agent(2),"95")>0 Then
            platform="Windows 95"
        End If    
        
'記錄未知Agent
        If Browser="unknown" Or version="unknown" Or platform="unknown" Then
            Agent=Dvbbs.checkStr(Request.ServerVariables("HTTP_USER_AGENT"))
            
Dim lConnStr,lConn,ldb
            ldb 
= "data/DvSQLLOG.mdb"
            lConnStr = "Provider = Microsoft.Jet.OLEDB.4.0;Data Source = " & Server.MapPath(ldb)
            
Set lConn = Server.CreateObject("ADODB.Connection")
            lConn.Open lConnStr
            lConn.Execute(
"insert into [Agent](UserAgent)Values('" & Agent & "')")
            lConn.Close
            
Set lConn = Nothing 
        
End If
    End Sub 
End Class

%>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值