webForumDet fria alternativet

Förhindra spam från formulär

JavaScript

7 svar · 1 362 visningar · startad av norra54

Medlem sedan sep. 2003110 inlägg
Frågan#1

Hej.

Jag har ett mycket enkelt FormMail-fomulär där jag senaste tiden bombarderas av Spambots, dvs inget vettigt skickas. Bara en massa %&#((( osv.

Hur kan jag mha javascript validera formuläret innan det skickas?
Helst skulle jag önska att i ett av fälten MÅSTE man skriva ett visst tal kanske, vad blir 5+5 t ex.

Hur skulle det se ut?

Jag vill helst fortsätta med FormMail-scriptet annars finns det också möjlighet att stoppa in lite php.

Medlem sedan sep. 2003110 inlägg
#2

Testar lite med Jojoxx´s valid-script:

<script type="text/javascript">
/* Detta script finns att hämta på http://www.jojoxx.net och
   får användas fritt så länge som dessa rader står kvar. */

String.prototype.isValidEmail = function(){
	return !!this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}
function validateForm() {
	if (document.f.namn.value=="") {
		alert("Du måste fylla i ett namn.");
		return false;
	} else if (document.f.spamkontroll.value=="") {
		alert("Du måste ange vad 10 + 5 blir.");
		return false;
	} else if (!document.f.email.value.isValidEmail()) {
		alert("Du måste fylla i korrekt en E-mail adress.");
		return false;
	} else if (document.f.url.value.indexOf("://") == -1) {
		alert("Du glömde fylla i din hemsidesadress ordentligt.");
		return false;
	} else if (!document.f.ruta.checked) {
		alert("Du måste fylla i kryssrutan.");
		return false;
	} else {
		alert("Ditt meddelande har skickats iväg.");
		return true;
	}
}
</script>
	} else if (document.f.spamkontroll.value=="") {
		alert("Du måste ange vad 10 + 5 blir.");
		return false;

Har jag lagt till men det fungerar ju naturligtvis inte så långt. Någon som vill/kan fylla på?

Medlem sedan mars 2006296 inlägg
#3

De flesta SpamBotar använder inte JavaScript så du bör använda php eller liknande istället.

Medlem sedan sep. 2003110 inlägg
#4

Ok, tack.

Får man be Moderatorn att flytta denna tråd till PHP-avdelningen?

Medlem sedan juli 20041 183 inlägg
#5

Jag ser 4 mer eller mindre bra lösningar varav de flesta har kommit upp tidigare på detta forum.

  1. Be användaren svara på 1 + 2, vilken färg texten har eller liknande

  2. Byt ut ett hidden-värde mha javascript och kontrollera detta på serversidan. Eftersom robotar inte använder javascript kommer det outbytta värden när det är en robot (eller när någon har javascript avstängt)

  3. Använda captcha (bild med förvrängd text på som användaren skall skriva in i en ruta.

  4. Tror du kan införa http://akismet.com/development/ på din sida. Denna lösning kommer som standard med Wordpress.

Medlem sedan sep. 2004828 inlägg
#6

http://grubblar.nu ombeds man skriva siffran sju i ett fält när man kommenterar ett inlägg. Min blogg är iallafall helt spam-fri, och de andra jag har läst där också.

Medlem sedan sep. 2003110 inlägg
#7

Jag började om och har nu ett fungerande (hittills vill säga) spam-skydd i PHP.
Det är hämtat från http://designskolan.net/skapa-ett-mail-formular-med-livevalidation-och-ett-enkelt-spamskydd/

Tack alla iaf

Medlem sedan juli 20041 183 inlägg
#8

norra54 skrev:

Jag började om och har nu ett fungerande (hittills vill säga) spam-skydd i PHP.
Det är hämtat från http://designskolan.net/skapa-ett-mail-formular-med-livevalidation-och-ett-enkelt-spamskydd/

Tack alla iaf

Det där kommer antagligen inte fungera. Precis som det står i första kommentaren använder robotar oftast inte JavaScript. Du behöver en validering på servern. Detta kan du i ditt fall åstadkomma om du sparar det genererade svaret i en sessionsvariabel som du sedan kontrollerar emot när mailet skall skickas i php-koden.

Eller så kör du på samma tal hela tiden och lägger in en if-sats i php-koden som kontrollerar att detta tal finns. Fungerar antagligen precis lika bra.

298 ms totalt · 4 externa anrop · v20260731065814-full.e96017d9
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
170 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)