Formularvorlage 01-A (Basisformular mit SPAM-Schutz + Captcha)
Das Basis-Formular für den Anfang mit 3 farbig gekennzeichneten Pflichtfeldern. Bereits ausgestattet mit einem Email-Spider-Schutz und einem mathematischen Captcha zum Schutz vor Absendung durch einen Roboter. Einfach Quellcode kopieren und einfügen.
|
|
Formularforlage 01A - Formular mit 3 Pflichtfeldern
Erklärungen auch unter: Basiswissen Spam
Basiswissen CAPTCHAs
Aufbau des Formulars
Dieses Formular hat 5 Eingabefelder. Davon werden lediglich 3 überprüft.
Die Eingabebereiche für die Emailadresse, das Textfeld für die Nachricht und das Captcha-Feld sind Pflichtfelder und dürfen nicht leer sein! Bei der Eingabe der Emailadresse wird zusätzlich geprüft, ob das Zeichen '@' und ein Punkt vorkommt. Für die Eingabe des Codes wird die Gültigkeit geprüft.
Für dieses Formular gilt:
- Email, Nachricht und Code sind Pflichtfelder
- Eine Prüfung (leer?) erfolgt nur für die Felder Email und Nachricht
- Prüfung auf gültige Eingabe beim Eingabefeld Email
- Prüfung auf gültige Eingabe beim Eingabefeld Code
| Fehler melden / Was kann ich verbessern? |
|
Bitte bedenken Sie, das man den Besucher mit unnötigen Pflicht-Eingaben beim Ausfüllen eines Formulars abschreckt. Wenn sie ein Feedback möchten, verlangen sie nicht zu viel. Die Abfrage einer Adresse oder der Telefonnummer sollte man nur erzwingen, wenn die Daten auch wirklich benötigt werden (z.B. bei einer Versandanschrift).
Aufwand zur Übernahme in ihre Seite
Den Quellcode entnehmen sie der Textdatei (Link oben in der Kopfzeile) und kopieren die Elemente in ihre HTML-Datei.
- CSS-Anweisungen für die Formatierungen in den Head-Bereich kopieren
- JavaSCript-Code in den Head-Bereich kopieren
- Formularcode in den Body-Bereich kopieren
- Email-Adresse anpassen
Um die Emailadresse anzupassen suchen sie den unten aufgeführten Quellcode und ersetzen meine Vorgaben JuppZupp@web.de mit der Emailadresse des Empfängers (sonst bekommt Jupp Zupp die Post):
document.write('<form action="mailto:JuppZupp');
document.write('@');
document.write('web.de"');
Das war's schon! Sie müssen ja nicht gleich alles verstehen um diese Vorlage zu verwenden. Wenn sie das Formular nicht verändern müssen, reicht es für den Anfang wenn sie den Quellcode kopieren / einfügen und die Empfänger-Emailadresse anpassen können.
Wenn Ihnen das als Einstieg ausreicht öffnen Sie die Quellcodeseite, kopieren den Code in Ihre Seite und experimentieren weiter.

Wenn sie mehr über Funktion und Anpassungen erfahren möchten, lesen sie ab hier weiter. Sie können diese Vorlage um einige Formularfelder erweitern, Prüfungen ausklammern oder hinzufügen und die Formatierung des Textes oder der Eingabefelder durch eigene CSS-Angaben anpassen.
Aktion auslösen
Das übliche einleitende Form-Tag für ein Formular, das per Email versand werden soll, hat das Attribut 'action=mailto:'. Dahinter wird einen Emailadresse notiert.
<form action="mailto:JuppZupp@abc.de" method="post" ...
Diese Aktion (Formular als Mail versenden) wird ausgelöst, sobald der Sende-Button (Submit-Button) angeklickt wird. Damit die Post auch ankommt müssten sie natürlich die entsprechende Empänger-Emailadresse eintragen.
Der Eintrag JuppZupp@abc.de würde also durch die echte Emailadresse ersetzt, sonst käme sämtliche Post bei Jupp Zupp an.
Da aber zumindest ein Basis-Spiderschutz intergriert werden soll, bleibt es nicht bei dieser einfachen Notierung des <table>Tags in dieser Art und Weise (siehe nächsten Absatz). Ausführliche Erklärungen zu Spiderschutz: Basiswissen Spam
Basis-Spiderschutz
Das einleitende Form-Tag, das sie normalerweise als HTML-Code im Dokument notieren, wird ersetzt durch JavaScript Schreibanweisungen. Das JavaScript schreibt dann das einleitende Form-Tag in das Dokument.
So hat man die Möglichkeit, die Emailadresse zu zerstückeln und sie erscheint nicht mehr als zusammenhängender Text im Quellcode der Seite.
|
 |
Der Aufbau des einleitenden <form>-Tags ...
a) mit Emailadresse, Formularnamen und Angaben zur Textcodierung:
<form action="mailto:JuppZupp@abc.de"
name="vorlage01" method="post"
enctype="text/plain">
b) mit zusätzlich eingebunderner Prüffunktion:
<form action="mailto:JuppZupp@abc.de"
name="vorlage01" method="post"
onSubmit="return Pruefen01();"
enctype="text/plain">
c) von einem JavaScript geschrieben:
<script type="text/javascript" language="JavaScript">
<!--
document.write('<form action="mailto:JuppZupp');
document.write('@');
document.write('abc.de"');
document.write(' name="vorlage01" method="post"');
document.write(' onSubmit="return Pruefen01();"');
document.write(' enctype="text/plain">');
//-->
</script>
Beim Absenden prüfen!
Die Prüfung der Eingaben soll beim Klicken des Submit-Buttons (Sende-Buttons) eingeleitet werden. Beim Klicken wird die Funktion 'Prüfen01' aufgerufen. Alle Prüfungen die sie innerhalb dieser Funktion 'Prüfen01' notieren werden ausgeführt.
a) Einbindung als HTML-Code im <form>-Tag
onSubmit="return Pruefen01()
b) Einbindung im <form>-Tag durch JavaScript geschrieben
document.write(' onSubmit="return Pruefen01();"');
Die Funktion 'Pruefen01()' steht im JavaScript das im HEAD-Bereich notiert wurde.
function Pruefen01()
{
hier steht die Prüfung 1 (Eingabe Emailadresse leer)
hier steht die Prüfung 2 (Eingabe Emailadresse gültig)
hier steht die Prüfung 3 (Eingabe Text leer)
hier steht die Prüfung 4 (Capcha gültig)
...
}
Bei diesem Formular werden 3 Eingabebereiche vor dem Absenden geprüft. Grundsätzlich dürfen diese Felder nicht leer sein. Bei 2 der 3 Eingaben wird außerdem die Eingabe selbst noch einmal genauer geprüft. Wie eine Prüfung der Emailadresse auf Gültigkeit aufgebaut ist, lesen sie im Beispiel Eingabe Prüfen 02 (Email).
Andere Filter / Prüfungen finden sie im Menü 4
Prüfung ob leer
Hier erkläre ich kurz die Arbeitsweise der Überprüfung ob ein Eingabefeld leer ist. Das gewählte Beispiel bezieht sich auf des mehrzeiligen Eingabebereich (textarea) für die Nachricht!
Der HTML-Code für den Eingabebereich 'nachricht':
<textarea name="nachricht" cols="20" rows="4">
Im Tag erkennen sie die Vergabe eines Namens für den mehrzeiligen Eingabebereich. Anhand dieses Namens wird innerhalb der Funktion zur Prüfung der Eingabe, das Formularelement identifiziert.
Beim Absenden
... onSubmit="return Pruefen01();">
wird die Funktion Pruefen01() aufgerufen, die sämtliche Prüfungsroutinen enthält. Für den Eingabebereich 'nachricht' wird geprüft, ob das Feld leer ist.
Hier den Teil für die Prüfung des Eingabebereichs 'nachricht' zusammenhängend:
// Prüfung ist das Feld Nachricht leer?
if(document.vorlage01.nachricht.value == "") {
alert("Bitte Text eintragen!");
document.vorlage01.nachricht.focus();
return false;
}
Schrittweise:
Wenn im Formular mit dem Namen 'vorlage01' der Eingabebereich mit dem Namen 'nachricht' leer ist, wird eine Alert-Box mit einer entsprechenden Meldung angezeigt.
alert("Bitte Text eintragen!");
Das sieht etwa so aus: Alert-Box
Danach wird die Eingabemarke im Formular mit dem Namen 'vorlage01' in das Feld mit dem Namen 'nachricht' gesetzt durch
document.vorlage01.nachricht.focus();
mathematisches CAPTCHA
Der vom Benutzer eingetragene Captcha-Code soll weitestgehend verhindern, dass das Formular von einem Roboter abgeschickt wird.
Bei dieser mathematischen Fragestellung einer Addition werden die verwendeten beiden Summanden per Zufallsgenerator ermittelt. Das Ergebnis wird mit dem eingetragenen Code verglichen.
Ich verwende hier zur Ermittlung der beiden Zufallzahlen die Sekunden- und Minutenwerte der Systemzeit. Da ich den oberen Grenzwert bei 10 festgelegt habe, sollte die Aufgabe leicht lösbar sein, solange die Addition im Zahlenraum bis 20 beherrscht wird.
Formular erweitern
Wenn sie das Formular um ein Eingabefeld erweitern für das keine 'Prüfung ob leer' durchgeführt werden soll, fügen sie ein <input>-Tag hinzu. Weiter müssen sie nichts unternehmen.
Wenn sie das Formular um ein Eingabefeld erweitern für das eine 'Prüfung ob leer' durchgeführt werden soll, müssen 3 Arbeitsschritte vorgenommen werden:
- ein Eingabefeld <input> innerhalb des Formulars notieren
- das Eingabefeld muss das Attribut 'name' haben
- eine Routine zu Prüfung für das Feld mit diesem Namen muss erstellt werden
a) neues Eingabefeld 'Bundesland':
Bundesland: <input type="Text" name="bland" value="">
Im Tag erkennen sie die Vergabe eines Namens für das Eingabefeld. Anhand dieses Namens wird bei der Prüfung das Formularelement identifiziert. Der Name muss eindeutig sein, darf also nicht mehrmals vorkommen und für ein anderes Feld bereits verwendet worden sein.
Die neue Routine zur 'Prüfung ob leer' des Eingabefeldes :
// Prüfung ist das Feld Bundesland leer?
if(document.vorlage01.bland.value == "") {
alert("Bitte Bundesland eintragen!");
document.vorlage01.bland.focus();
return false;
}
Innerhalb der Funktion Pruefen01() sind sämtliche Prüfungen zusammen gefasst. Bisher sind dort lediglich 3 Prüfungen eingetragen (Email, Nachricht, Capcha). Dort innerhalb der geschweiften Klammern muss auch die neue, zusätzliche Routine zur Prüfung eingetragen werden.
function Pruefen01()
{
hier steht die Prüfung 1 (Emailadresse)
hier steht die Prüfung 2 (Eingabe)
hier steht die Prüfung 3 (Capcha)
hier die Prüfung 4 eintragen (Bundesland)
}
Nach diesem Schema gehen sie für weitere Eingabefelder vor:
b) neues Eingabefeld 'Telefon':
Telefon: <input type="Text" name="tel" value="">
Die neue Routine zur 'Prüfung ob leer' des Eingabefeldes :
if(document.vorlage01.tel.value == "") {
alert("Bitte Telefonnummer eintragen!");
document.vorlage01.tel.focus();
return false;
}

|