Begriffsbildung, zudem URV vom Isotopp. --jha 20:23, 12. Sep 2006 (CEST)
Als Affenformulare bezeichnet man HTML-Formulare auf Internetseiten, die sich beim Absenden immer wieder selbst aufrufen. Hierbei werden am Anfang der Seite über ein Skript die übergebenen Parameter ausgewertet. Die Bezeichnung Affenformular leitet sich davon ab, dass eine Million Affen ein solches Formular eine Million mal aufrufen können, ohne etwas zu bewirken.

Ansatz
Beim Programmieransatz für ein Affenformular wird üblicherweise ein serverseitiges PHP- oder Perl-Skript verwendet, das sich am Anfang der Seite befindet und die eingegeben Daten empfängt, auf gültige Eingaben überprüft und bei Fehleingaben gegebenenfalls erneut das Formular anzeigt. Dabei werden die Formularfelder mit den bereits zuvor eingegeben Daten vorbelegt und der Nutzer kann seine Eingaben korrigieren oder ergänzen.
Technische Umsetzung
- Der erste Schritt ist die Erstellung eines HTML-Formulars.
- Im zweiten Schritt wird mit Hilfe der verwendeten serverseitigen Programmiersprache dafür gesorgt, dass das Formular vom Browser immer an „sich selbst“ (also die ursprünglich aufgerufene URL) gesendet wird.
- Schritt drei sorgt dann dafür, dass alle Formulareingaben beim Absenden des Formulars als Vorbelegung der Formularfelder in der erneuten Ausgabe unverändert wieder erscheinen.
- Ein Formular in diesem Zustand wird als Affenformular bezeichnet und kann im vierten Schritt als Grundlage für die weitere Programmierung verwendet werden. Beispielsweise kann eine Prüfung der Formularwerte ergänzt werden, um bei fehlerfreier Dateneingabe zur Datenverarbeitung und -speicherung zu verzweigen – andernfalls aber wieder das Formular mit einem entsprechendem Fehlertext anzuzeigen.
Beispiel
Nachfolgendes einfaches Beispiel eines Affenformulars zeigt die notwendigen Codeschnipsel in HTML und PHP, die sich in der Regel innerhalb eines Skriptes befinden.
HTML-Code
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST"> <input type="text" name="textfeld" value="<?php if (isset($_POST['textfeld'])) { echo htmlspecialchars($_POST['textfeld']); } ?>"> <input type="submit" name="submit" value="Absenden"> </form>
PHP-Code
if(empty($_POST['textfeld'])) { $error = 1; } else { header("Location: $redirect_url"); exit; }