Hejsan! Så här t ex: Jag får det inte att fungera, den lägger in inlägget ändå.. ...men... du skall ju inte lägga in Request.Form("msg") i databasen utan bara msg... Ok, men jag vill inte att inlägget ska registreras om msn innehåller "<a href=", nu läggs ju "Stop SPAMMING!" in. För att stoppa gästboks-spam (som auto-postas) kan du använda dig av en dynamiskt framtagen bild som visar en liten "kod". vad ni krånglar till saker.. Javascriptet som säger att det inte tilllåtet att länka, dvs <a href= eller <a out of the blue: ...t ex så här: skillnaden på våra exempel är: hans går att gå förbi om man stänger av javascript.. :P ja... och Daniels postas inte alls om man stänger av javascript... ;) Finns ingen anledning till att göra kontrollen på klient-sidan med javascript. <b>Ta bort alla <a> taggar på server-sidan och problemet är borta.</b> Tack det var precis så jag ville ha det, jag visste inte hur man gjorde. Du kan ju låta användaren räkna:Spärra text i gästbok?
Jag har en gästbok där jag dagligen får SPAM som typ viagra mm...
Jag skulle vilja göra så att "Request.Form("msg")" inte får innehålle frasen "<a href=" för i alla inlägg finns det länkar med. Så om "<a href=" finns med i meddelandet ska det bara stå "Stop SPAMMING!"
Tack på förhand!Sv: Spärra text i gästbok?
<%
Dim msg
msg = Request.Form("msg")
If inStr(msg,"<a href=") Then msg = "Stop SPAMMING!"
%>
...men det kanske vore smartare att stoppa redan vid "inläggandet"... att inlägg innehållande "<a href=" inte får postas överhuvudtaget, dels med javascript på klientsidan samt även då i ASP-koden på serversidan...
Ett ännu bättre sätt är köra HTMLEncode på serversidan... stoppar iofs inte inläggen men gör däremot all HTML-kod ofunktionell... Vill man kunna använda fetstil, bilder, länkar så kan man göra en funktion för BBkod eller nåt liknande...
Sv:Spärra text i gästbok?
<code>
<%
Dim msg
msg = Request.Form("msg")
If inStr(msg,"<a href=") Then msg = "Stop SPAMMING!"
if Request.Querystring("visa") = "spara" then
strNamn = SafeSQL(Request.Form("name"))
strEpost = SafeSQL(Request.Form("epost"))
strHemsida = SafeSQL(Request.Form("site"))
strDatum = now()
strInlagg = SafeSQL(Request.Form("msg"))
strIP = Request.ServerVariables("REMOTE_ADDR")
objConn.Execute("INSERT INTO gastbok(Namn,Epost,Hemsida,Datum,Inlagg,IP) VALUES('" & strNamn & "','" & strEpost & "','" & strHemsida & "','" & strDatum & "','" & strInlagg & "','" & strIP & "')")
Response.Redirect "gbook.asp"
End If
objRS.Close : Set objRS = nothing
objConn.Close : Set objConn = nothing
%>
</code>Sv: Spärra text i gästbok?
<code>
strInlagg = SafeSQL(msg)
</code>
...och du borde kanske i så fall bara söka efter "<a " i Request.Form("msg")... det kan ju hända att dom skriver länkar så här <a title="Klicka här" href="http://www.mydomain.com"> d.v.s. att inte href kommer som första argument...Sv:Spärra text i gästbok?
Sv: Spärra text i gästbok?
Denna skrivs sedan in när inlägget skall skickas. Är inte "koden" rätt så sparas inte inlägget.Sv:Spärra text i gästbok?
förslag 1: Spärra HTML kod i alla inlägg (använd server.htmlencode(textmessage) när du skriver ut inlägget till klienten)
förslag 2: Gör som föreslagits innan, använd javascript och meddela personen ifråga att det inte är tillåtet att posta länkarSv: Spärra text i gästbok?
Sv:Spärra text i gästbok?
<textarea name="meddelande" id="meddelande"></textarea>
<input type="button" value="Skicka inlägg" onclick="sendmyform()" />
function sendmyform() {
var myMessage = document.GetElementById("meddelande").value;
if (myMessage.indexOf('<a') > 0) {
alert("Du får ej posta länkar i min blog, pucko!");
}
else {
document.name_of_your_form_here.submit();
}
}
Sv:Spärra text i gästbok?
<!-- Ditt JavaScript -->
<script type="text/javascript">
function chkform(f) {
if (f.msg.value.indexOf('<a ')>0) {
alert('aja baja, inte spamma');
return false;
}
return true;
}
</script>
<!-- Ditt formulär -->
<form ... onsubmit="return chkform(this);">
...
</form>
//EDIT//
too slow... ;)
Sv: Spärra text i gästbok?
men vi har byggt på samma princid - javascript functionen indexOf
[edit]
(han har rätt i att mitt inte postas alls om javas. är avstängt)
[/edit]Sv:Spärra text i gästbok?
...använder du mitt exempel bör du köra en validering på serversidan med...
Använder du Daniels exempel så kanske du skall lägga till ett mellanslag efter '<a' annars stoppar den även t.ex. <abbr>, <acronym>, <address> osv...Sv: Spärra text i gästbok?
Ta bort alla <a> taggar på server-sidan och problemet är borta.
Eller som Stefan sagt, "HTMLEncode".Sv:Spärra text i gästbok?
nja... jag tror han inte ville att dessa inlägg överhuvudtaget skulle läggas in i databasen... så rättare sagt:
"Spara inga inlägg som innehåller <a>-taggar i databasen och problemet är borta"... ;)
...t.ex:
<%
If inStr(Request.Form("msg"),"<a ") Then
' Felhantering
Response.Redirect("fel.asp") ' eller nåt liknande...
End If
%>
...vidhåller dock fortfarande att:
<info>
Ett ännu bättre sätt är köra HTMLEncode på serversidan... stoppar iofs inte inläggen men gör däremot all HTML-kod ofunktionell... Vill man kunna använda fetstil, bilder, länkar så kan man göra en funktion för BBkod eller nåt liknande...
</info>
Sv: Spärra text i gästbok?
Skrev först såhär:
<code>
If Request.Form("msg") = "<a href" Then
Response.Redirect("gbook.asp")
else
If Request.Querystring("visa") = "save" then
</code>
Tack igen!Sv: Spärra text i gästbok?
<code>
<%@Language="VBScript"%>
<%Option Explicit%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
<title>Untitled Page</title>
</head>
<body>
<%
Sub WriteForm()
Dim A, B, C
A = Fix(2 * Rnd())
B = Fix(10 * Rnd())
C = Fix(10 * Rnd())
%>
<form action="" method="POST">
<p>
<input id="a" name="a" type="hidden" value="<%=A%>" />
<input id="b" name="b" type="hidden" value="<%=B%>" />
<input id="c" name="c" type="hidden" value="<%=C%>" />
<%=B%> <%Array("+", "-")(A)%> <%=C%> = <input id="result" name="result" type="text" /><br />
<textarea id="message" name="message" cols="20" rows="2"><%=Server.HTMLEncode(Request.Form("message"))%></textarea>
<input id="action" name="action" type="submit" value="Skicka" />
</p>
</form>
<%
Function Valid()
Dim A, B, C, Result
A = CInt(Request.Form("a"))
B = CInt(Request.Form("b"))
C = CInt(Request.Form("c"))
Result = Request.Form("result")
If IsNumeric(Result) Then
Select Case A
Case 0
Valid = (Result = (B + C))
Case 1
Valid = (Result = (B - C))
End select
End If
End Function
If Request.Form("action") = "Skicka" Then
If Valid() Then
Response.Write "<h3>Ditt meddelande har lagts till!</h3>"
Else
Response.Write "<h3>Du måste ange rätt tal!</h3>"
WriteForm
End If
Else
WriteForm
End If
%>
</body>
</html>
</code>
Har inte hunit testa/köra koden så det kan finnas buggar/stavfel.