webForumDet fria alternativet

Hjälp med kodsnutt..

ASP

3 svar · 363 visningar · startad av Lady Mercury

Medlem sedan okt. 2005116 inlägg
Frågan#1

I koden nedan, kan någon hjälpa mig att få till ett fungerande spamskydd?

Medlem sedan aug. 20039 340 inlägg
#2

All data du skriver ut bör du filtrera med Server.HTMLEncode, typ:

Response.Write(Server.HTMLEncode(kommentartext))

Funktionen omvandlar HTML-kod till ofarliga HTML-entities. Annars kan folk göra riktigt fula saker. Detta bör du även göra på fälten för namn och e-post/hemsida eller vad du nu har för fält.
Vidare kan du söka lite, det finns flera trådar som handlar om detta. (Att förghindra spam i gästböcker)

Medlem sedan okt. 2005116 inlägg
#3

Har hittat en kod som kan förhindra spam, men hur lägger jag in dne i min kod? Kan någon hjälpa mig?
Snälla?
Koden är:

Function IsSpam(strValue)
	Dim objRegExp, words
	words = "poker|casino"
	
	Set objRegExp = New RegExp
	objRegExp.Pattern=words
	IsSpam = objRegExp.Test(strValue)
	Set objRegExp = Nothing
End Function

Min gästbokskod är från Gruvsjo.

<%
'##############ÄNDRA DETTA#############################
InlaggPerSida = 10                                  ' Antal nyhetsrubriker per sida
INC                  = "slut.asp"                    ' Sidan du inkluderar gastbok.asp i
db = Server.MapPath("db/gastbok.mdb")   ' Databasens sökväg
'#####################################################

Function Link(strText)
   strText = Server.HTMLEncode(strText)

   Set regExp = New regexp

   regExp.Global = true
   regExp.IgnoreCase = true

   regExp.Pattern = "(http://|www)([\S]*)"
   strText = regExp.Replace(strText,"<a href=""http://$1$2"" target=""_blank"">$1$2</a>")

   regExp.Pattern = "([url]ftp://)([/url][\S]*)"
   strText = regExp.Replace(strText,"<a href=""$1$2"" target=""_blank"">$1$2</a>")

   regExp.Pattern = "([\S]*@[\S]*[.se|.com|.nu|.net|.org])"
   strText = regExp.Replace(strText,"<a href=""mailto:$1"" target=""_blank"">$1</a>")

   regExp.Pattern = "([.|,|!|?|:|;|)|\|&]]*)</a> "
   strText = regExp.Replace(strText,"</a>$1 ")

   regExp.Pattern = "([.|,|!|?|:|;|)|\|&]]*)"" target=""_blank"">([^<]*)</a>"
   strText = regExp.Replace(strText,""">$2</a>")

   strText = Replace(Trim(strText),vbCrLf, "<br>")
   strText = Replace(Trim(strText),"http://http://", "http://")

Link = strText 				' Skriver ut texten, uppdelad och fin!

End Function

Public Function FixSQL(ByVal sString) ' As String
    If Len("" & sString) = 0 Then Exit Function
    sString = Replace(sString, "'","''")
    sString = Replace(sString, "\","\\")
    FixSQL = sString
End Function

Function FixDigits(Value,Digits)
    FixDigits = Space(Digits) & Value
    FixDigits = Right(FixDigits,Digits)
    FixDigits = Replace(FixDigits," ","0")
End Function%>

<!--
##########################################
Gruvsjo Gästbok v3
Åsa Gruvsjö ©
[url]www.gruvsjo.com[/url]
[email]Asa@gruvsjo.se[/email]

Fri att använda om ni låter copyrightkoden stå kvar!
##########################################
-->

<script src="js.js"></script>

<table cellpadding="1" cellspacing="0" width="100%" border="0">

<%Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & db

If Request.Querystring("do")= "" Then%>

<table border="0" width="400" align="center" cellpadding="3" cellspacing="0">
  <form method="post" action="<%=INC%>?do=add" name="gastbok"  onSubmit="return Gb()">
<br>
      <td width="80"><b>Ditt namn:</b><br><input type="text" name="namn" size="25"></td>
      <td><b>Rubrik:</b><br><input type="text" name="rubrik" size="25"></td>
  </tr>
    <tr>
      <td><b>Plats:</b> <br><input type="text" name="url" size="25"></td>
      <td><b>E-mail:</b> valfritt <br><input type="text" name="mail" size="25"></td>
    </tr>
    <tr>
      <td valign="top" colspan="2"> <b>Meddelande:</b><br><textarea name="msg" cols="60" rows="8"></textarea></td>
    </tr>
    <tr>
      <td colspan="2"><input type="submit" value="Posta inlägg"></</td>
    </tr>
  </form>
</table>

<%Set Recset = Server.CreateObject("ADODB.Recordset")

' Sidscriptet är nerladdat från [url]http://www.fatmilk.nu/[/url]
' Skrivet av Ludvig "geek" Lindblom
' [email]geek@fatmilk.nu[/email]

Sidan = Request.QueryString("next")
If Sidan = "" then
    sida = 1
Else
    sida = Sidan
End If

With RecSet
    .CursorLocation = 3
    .CacheSize = InlaggPerSida
End With

SQL = "Select * From gastbok Order By datum desc"
RecSet.Open SQL, Conn

If RecSet.EOF Then%>
<br>
<table border="0" width="590" align="center" cellpadding="3" cellspacing="0">
  <tr>
    <td><i>Inget har skrivit i gästboken.</i></td>
  </tr>
</table>
<%Else%>
<br>
<%With RecSet
     .MoveFirst
     .PageSize = InlaggPerSida
     .AbsolutePage = sida
End With

Sidor =  RecSet.PageCount
If Sidor > 1 Then%>

<table border="0" width="590" align="center" cellpadding="3" cellspacing="0" style="border: 1px solid #000000">
  <tr>
     <td valign="top" bgcolor="#98A9E4">
     <%If (Int(sida)) > 1 Then%>
         <a href="<%=INC%>?next=<%=(Int(sida)-1)%>"><b>Bakåt</b></a> |
     <%Else%><%End If
     For Sid = 1 To Sidor
           If (Int(Sid)) = (Int(sida)) Then%> <b><%=FixDigits(Sid,2)%></b><%Else%> <a href="<%=INC%>?next=<%=Sid%>"><%=FixDigits(Sid,2)%></a><%End If
     Next
     If (Int(sida)) <> (Int(Sidor)) Then%>
           | <a href="<%=INC%>?next=<%=(Int(sida)+1)%>"><b>Framåt</b></a>
     <%Else%><%End If%>
     </td>
   </tr>
</table>
<br>
<%End If
X = 0
Do While Not RecSet.EOF And X < RecSet.PageSize%>
<table border="0" width="590" align="center" cellpadding="3" cellspacing="0" style="border: 1px solid #000000">
  <tr>
    <td bgcolor="#3D4F6B" width="440"><b><font color="white"><%=Recset("rubrik")%></b> | <%=Recset("namn")%> från <%=RecSet("url")%></font></td><td align="right" bgcolor="#3D4F6B" width="200"><img src="bilder/klocka.gif" border="0" alt="<%=FormatDateTime(RecSet("datum"),2)%> (<%=FormatDateTime(RecSet("datum"),4)%>)"> <%If RecSet("mail") <> "" Then%><a href="mailto:<%=RecSet("mail")%>"><img src="bilder/email.gif" border="0" alt="<%=RecSet("mail")%>"></a><%End If%></td>
  </tr>
  <tr>
    <td colspan="2"><%=Link(RecSet("msg"))%></td>
  </tr>
<%If Recset("svar") <> "" Then%>
  <tr>
    <td colspan="2">&nbsp;</td>
  </tr>
  <tr>
    <td colspan="2"><b>Svar:</b> <i><%=Replace(RecSet("svar"), vbCrLf, "<br>")%></i></td>
  </tr>
<%End If%>
</table>
<br>
<%X = X+ 1
Recset.MoveNext
Loop
If Sidor > 1 Then%>

<table border="0" width="590" align="center" cellpadding="3" cellspacing="0" style="border: 1px solid #000000">
  <tr>
     <td valign="top" bgcolor="#98A9E4">
     <%For Sid = 1 To Sidor
         If (Int(Sid)) = (Int(sida)) Then%><b><%=FixDigits(Sid,2)%></b><%Else%> <a href="<%=INC%>?next=<%=Sid%>"><%=FixDigits(Sid,2)%></a> <%End If
     Next%>
     </td>
   </tr>
</table>

<%End If
Recset.Close
Set Recset = Nothing
End If
conn.close:set conn=nothing
ElseIf Request.QueryString("do") = "add" Then

   Namn       = FixSQL(Request.Form("namn"))
   Rubrik      = FixSQL(Request.Form("rubrik"))
   Mail          = FixSQL(Request.Form("mail"))
   Msg	        = FixSQL(Request.Form("msg"))
   Ip   	  = FixSQL(Request.Servervariables("REMOTE_ADDR"))
   Url   	  = FixSQL(Request.Form("url"))
   If Url <> "" Then
     If Left(Url,7) = "http://" Then
       Url = Url
     Else
       Url = "http://" & Url
     End If
   End If

   Conn.Execute("Insert Into gastbok(namn, mail, url, msg,ip, rubrik) Values('"& namn &"','"& mail &"','"& url &"','"& msg &"','"& Ip &"','"& rubrik &"')")
   Conn.Close:Set Conn=Nothing
   Response.Redirect INC
End If%>

</table>
Medlem sedan okt. 2005116 inlägg
#4

Har redan fått 10 spam på 10 min som gästboken varit online. :/

262 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)