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.
<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å?
Jag ser 4 mer eller mindre bra lösningar varav de flesta har kommit upp tidigare på detta forum.
Be användaren svara på 1 + 2, vilken färg texten har eller liknande
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)
Använda captcha (bild med förvrängd text på som användaren skall skriva in i en ruta.
På 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å.
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.
291 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2