Spamsikring

Indlæs andet indhold på denne side:

Validering i javascript

Siden er opdateret 14.1.2007

Validering af formdata med henblik på spamsikring bør laves med enten asp eller php, hvis du overhovedet har mulighed for det.

Nedenstående javascript kan i teorien gøre det, men jeg ved ikke noget om, om det virker i praksis. Det er et spørgsmål om, hvorvidt spambotter afvikler javascripts eller ej.

Først lægges der i formularen et inputfelt, der ikke må skrives i:

<span class="ikkese">
<label for="t22">Message: </label>
<textarea id="t22" name="message" rows="2" cols="30"></textarea>
</span>

Der er så i css lavet en definition for klassen .ikkese:

.ikkese {
 display: none;
 }

Det bevirker, at levende brugere - som ser formularen i en browser - ikke får vist feltet og derfor ikke skriver i feltet. Men spambotterne forstår (endnu) ikke css, så de ser feltet og skriver i det.

Tricket er så, at man ved valideringen af input fra formularen - javascript, asp eller php - tjekker, at det "forbudte" felt er tomt. Er feltet ikke tomt, er mailen fra en spambot og mailen bliver blokeret.

Scriptet tjekker, om feltet message er tomt. Er feltet ikke tomt, stoppes afviklingen og der sendes videre til blokeret.html

<script type="text/javascript">
function valider() {
  if (document.forms[0].message.value != "") {
  window.location="blokeret.html";
  return false;   }
}
</script>

Nullet i forms[0] betyder, at det er den første formular i sidens kildekode. Er der en formular før den aktuelle, retter du 0 til 1: forms[1].

Koden herover kaldes af et funktionskald i formularens starttag:

<form method="post" action="/cgi-bin/formmail" onsubmit="return valider();">

Tjek med support på dit webhotel hvordan du præcist skal adressere cgi-scriptet. det varierer nemlig ret meget. Se mere herom på min side om cgi-baseret formular.

Er feltet tomt, afvikles det cgi-script, som er defineret til at modtage og behandle data fra formularen.

Man kan eventuelt, vhis cgi-scriptet ikke indeholder mulighed for at tjekke, om de obligatoriske felter er udfyldt, supplere javascriptet herover med et tjek af, om disse felter er tomme - det bør de ikke være - og så udskrive nogle fejlmeddelelser:

  if (document.forms[0].navn.value == "") {
    alert ("Du har ikke udfyldt Navn");
    document.forms[0].navn.focus();
    return false;
  }
  if (document.forms[0].email.value == "") {
    alert ("Du har ikke udfyldt Email");
    document.forms[0].email.focus();
    return false;
  }
  if (document.forms[0].emne.value == "") {
    alert ("Du har ikke udfyldt Emne");
    document.forms[0].emne.focus();
    return false;
  }
  if (document.forms[0].besked.value == "") {
    alert ("Du har ikke udfyldt Besked");
    document.forms[0].besked.focus();
    return false;
  }
Valid XHTML og CSS / Copyright © Hjemmesideskolen januar 2007
Hjemmesideskolen
Du er her: Forsiden - scripts - Spamsikring
Brugere lige nu: 1
Home Mail