Zitat von "lauras"Oder ein leichter SPAM-Schutz. Die meisten Bots füllen alle Felder aus, also einfach überprüfen ob das Feld leer ist
LG
Ein Beispiel:
Man baut sich eine Registration:
benutzername
passwort
email-adresse
Jetzt wissen wir einfach mal, das Bots Felder die mail oder email heißen ausfüllen.
Das nutzen wir aus, wir erstellen unser Formular wie folgt:
<form action="<?php $_SERVER['PHP_SELF'] ?>" method="post">
<p>
Benutzername:<br />
<input type="text" name="username" />
</p>
<p>
Passwort:<br />
<input type="password" name="pass" />
</p>
<p>
Passwort wiederholen:<br />
<input type="password" name="rep_pass" />
</p>
<p>
E-Mail Adresse:<br />
<input type="text" name="<?php print mktime(); ?>" />
</p>
<p>
<input type="hidden" name="email" />
<input type="submit" value="Absenden" />
</p>
</form>
Alles anzeigen
Zur Erläuterung:
<?php print mktime(); ?>
Das gibt den aktuellen "Epochen-Zeitstempel" zurück, das heißt, uns wird in das value Attribut das jetzige Datum + Uhrzeit in Form von 1338837900 eingetragen, dieser Zeitstempel ändert sich sekündlich und ist somit quasi einzigartig, man kann auch einfach Sachen wie "hallo_wie_gehts" eintragen, das ist allerdings nicht ganz so sicher.
Das Feld welches wir email genannt haben, wird dem Benutzer nicht angezeigt (type="hidden"), noch besser ist, das ganze als text zu nutzen, und per CSS unsichtbar zu machen, erhöht die Sicherheit, ist aber nicht zwingend erforderlich.
Das Feld wird Benutzern nicht angezeigt, Bots jedoch lesen es sehr wohl aus, und werden es daher auch ausfüllen, wohingegen Benutzer es frei lassen.
Per PHP prüfen wir nun einfach ob email ausgefüllt wurde, wenn ja, soforrt abbrechen und NICHTS ausgeben.