SSoulGodMedlem sedan aug. 20051 200 inlägg Vet att detta varit uppe på tapeten ett antal gånger,
och jag har läst diverse lösningar som jag också prövat på.
Men jag har fortfarande problem på sidan
(http://www.reklamracing.se)
Ca 800 inlägg som är spam.
Har jobbat fram ett ip-blockeringsscript, dock funkar det endast när man går in och "markerar" det som spam.
Laddade även ner en färdig gästbok som skulle innehålla någon simplare version av spamskydd (Gruvsjo om jag inte minns fel) men det fungerar inte heller.
Jag funderar på att blockera all text som innehåller [fet]http://[/fet] & [fet]www[/fet] ...
Hur gör jag det?
Är en MS Access databas. Ska jag blockera det på något sätt i databasen,
eller är det lättare att lägga in det i scriptet innan det förs in i databasen?
Mvh
Du får göra en validering (regExp) för att kolla om innehållet i meddelandet innehåller http:// om det är det du vill stoppa. Vilken databas är inte direkt intressant det är hur du validera indatan innan du sparar ner det till en databas.
SSoulGodMedlem sedan aug. 20051 200 inlägg I det nuvarande gb-scriptet som ligger,
så finns följande kod:
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://")
Borde inte den lösa problemet?
Eller är jag helt fel ute?
Mvh Martin
SSoulGodMedlem sedan aug. 20051 200 inlägg http://www.reklamracing.se/gb/gastbok.asp
Där har du länken till gästboken där spam kommer.
Är det en specifik länk som är problemet? Om det är ett visst mönster så kan man ju alltid använda InStr. Eller som sagt RegExp om den matchar ett visst mönster så skall du stoppa postningen till db.
Function SpamPattern(str)
Dim re, FoundMatch
Set re = New RegExp
re.IgnoreCase = True
re.MultiLine = True
re.Pattern = "http://mipagina\.aol\.com\.mx/wqkwnwoex/april-\d+\.html"
FoundMatch = re.Test(str)
Set re = Nothing
End Function
If SpamPattern(textFromForm) Then
'Contains spam url!
Else
'Do the posting of message
End If
SSoulGodMedlem sedan aug. 20051 200 inlägg Vart ska denna läggas in?
Bifogar länk till hela gb-koden
http://rafb.net/p/gicoVv54.html
1. Placera funktionen utan för loopar/if frågor osv. Placera denna efter din andra funktion "link" eller vad den heter
ersätt:
Conn.Execute("Insert Into gastbok(namn, mail, url, msg,ip, rubrik) Values('"& namn &"','"& mail &"','"& url &"','"& msg &"','"& Ip &"','"& rubrik &"')")
med:
If Not SpamPattern(msg) Then
Conn.Execute("Insert Into gastbok(namn, mail, url, msg,ip, rubrik) Values('"& namn &"','"& mail &"','"& url &"','"& msg &"','"& Ip &"','"& rubrik &"')")
End If
Exempelvis.
+ tips från coachen: Bifoga aldrig var du har din databas. ändra path så folk inte hittar din databas.
SSoulGodMedlem sedan aug. 20051 200 inlägg Tack för hjälpen, skall pröva det omgående.
Antar dock att man kan ändra din kod där,
så den t.ex tar en länk
re.Pattern = "http://mipagina*"
Alltså en * , som förkortar ner adressen?
Och ang. ditt tips från coachen, adressen är ändrad,
ligger en "fejkdatabas" där som dubblett för vissa inlägg.
---------------
Lade upp följande:
Function SpamPattern(str)
Dim re, FoundMatch
Set re = New RegExp
re.IgnoreCase = True
re.MultiLine = True
re.Pattern = "http://mywebpage.netscape.com/qsfegzfuy/april-773.html"
FoundMatch = re.Test(str)
Set re = Nothing
End Function
If SpamPattern(textFromForm) Then
Response.Write("Your Message Contains A Spam Classed Link")
Else
Conn.Execute("Insert Into gastbok(namn, mail, url, msg,ip, rubrik) Values('"& namn &"','"& mail &"','"& url &"','"& msg &"','"& Ip &"','"& rubrik &"')")
End If
OCh det fungerade tyvärr inte...
Går fortfarande att lägga in inlägg med den länken i
(prövade även att ändra länken som du ser)
Är jag helt korkad ? :(
förkorta? Nej men du kan däremot öka vad regExp skall leta efter om du vill det. Om det är alla url:er från mipagina så har du bara:
"http://mipagina\.aol\.com\.mx"
vilket borde träffa alla ändå.
SSoulGodMedlem sedan aug. 20051 200 inlägg http://rafb.net/p/1pkn2H49.html
Detta är min kompletta gastbok-kod,
dock fungerar inte koden.
Har jag gjort något fel? Förmodligen heh
ja du gör fel var kommer variablen textFromForm ifrån? När du försöker köra den? Min gissning är att du vill använda dig av variablen Msg istället.
SSoulGodMedlem sedan aug. 20051 200 inlägg Problemet kvarstår tyvärr.
Spelar det någon roll vart jag lägger in definitionen av funktionen?
prövat både högst upp på sidan, och precis ovanför funktionen.
Har ändrat till Msg / msg , men funkar ändå inte..
Jag måste va korkad
Function SpamPattern(str)
Dim re
Set re = New RegExp
re.IgnoreCase = True
re.MultiLine = True
re.Pattern = "http://mipagina\.aol\.com\.mx"
[b]SpamPattern[/b] = re.Test(str)
Set re = Nothing
End Function
SSoulGodMedlem sedan aug. 20051 200 inlägg Nu funkade det - tack så hemskt mycket.
Dock - hur gör jag om jag ska spärra fler adresser?
Måste jag skriva flera sådana "sektioner";
eller räcker det med ett nytt pattern bara?
Tack för din hjälp - uppskattas mycket!
Function SpamPattern(str)
Dim re
Set re = New RegExp
re.IgnoreCase = True
re.MultiLine = True
re.Pattern = "([url]http://mipagina\.aol\.com\.mx[/url][b]|[url]http://bob\.com)[/url][/b]"
SpamPattern = re.Test(str)
Set re = Nothing
End Function
SSoulGodMedlem sedan aug. 20051 200 inlägg Tack - du är underbar! :)
SSoulGodMedlem sedan aug. 20051 200 inlägg Då fortsätter jag med mina idiotiska frågor...
Det spamskyddet funkade, dock efter att ha lagt till 6 nya adresser i pattern,
så fortsätter dom att byta adresser, blir ett helvetes jobb.
Finns det något att göra, så att man kanske inte kan posta samma msg flera ggr i rad? Eller har ni något tips på bästat sättet att få stopp på det?
Kommer 60-80 inlägg per dag som minst.
Jag hade inte gjort så att man meddelar varför inlägget inte postas.
If Not SpamPattern(Msg) Then
Conn.Execute("Insert Into gastbok(namn, mail, url, msg,ip, rubrik) Values('"& namn &"','"& mail &"','"& url &"','"& msg &"','"& Ip &"','"& rubrik &"')")
End If
Men visst.. kollar kanske de top 10 senaste inläggen och om meddelandet är densamma som personen skickar så stoppar du inte in inlägget heller.
Annars så kan man nog göra så OveRRidE har gett tips om tidigare: http://www.webforum.nu/showthread.php?p=1169257#post1169257