<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Affenformular</id>
	<title>Affenformular - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://wiki-de.moshellshocker.dns64.de/index.php?action=history&amp;feed=atom&amp;title=Affenformular"/>
	<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Affenformular&amp;action=history"/>
	<updated>2026-05-30T20:00:47Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in Wikipedia (Deutsch) – Lokale Kopie</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://wiki-de.moshellshocker.dns64.de/index.php?title=Affenformular&amp;diff=404891&amp;oldid=prev</id>
		<title>imported&gt;Invisigoth67: form</title>
		<link rel="alternate" type="text/html" href="https://wiki-de.moshellshocker.dns64.de/index.php?title=Affenformular&amp;diff=404891&amp;oldid=prev"/>
		<updated>2024-05-02T15:34:57Z</updated>

		<summary type="html">&lt;p&gt;form&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Als &amp;#039;&amp;#039;&amp;#039;Affenformular&amp;#039;&amp;#039;&amp;#039; wird ein [[Programmierung|Programmieransatz]] der [[Hypertext Markup Language|HTML]]-[[Formular]]verarbeitung von [[Webseite]]n bezeichnet. Hierbei befinden sich das HTML-Formular und die Gültigkeitsabfrage innerhalb eines Skriptes, und das Formular ruft sich daher beim Absenden immer wieder selbst auf, solange ungültige Daten eingegeben werden.&lt;br /&gt;
&lt;br /&gt;
Die Bezeichnung &amp;#039;&amp;#039;Affenformular&amp;#039;&amp;#039; leitet sich davon ab, dass selbst der millionenfache Aufruf des Formulars durch eine Million [[Affen]], also das Nachäffen oder Wiederholen des unveränderten Aufrufs, nichts bewirken wird, ohne dass sinnvolle oder logische Daten angegeben bzw. sinnlose Daten geändert werden.&lt;br /&gt;
&lt;br /&gt;
[[Datei:Affenformular.png|mini|380px|Struktureller Aufbau eines Affenformulars]]&lt;br /&gt;
__TOC__&lt;br /&gt;
&lt;br /&gt;
== Ansatz ==&lt;br /&gt;
Beim Programmieransatz für ein Affenformular wird üblicherweise ein serverseitiges [[PHP]]-, [[Python (Programmiersprache)|Python]]- oder [[Perl (Programmiersprache)|Perl]]-Skript verwendet, das sich am Anfang der Datei oder in einer separaten Datei befindet und über das [[Common Gateway Interface]] (CGI) die eingegebenen Daten empfängt, auf gültige Eingaben überprüft und bei Fehleingaben gegebenenfalls das Formular erneut anzeigt. Dabei werden die Formularfelder mit den bereits zuvor eingegebenen Daten vorbelegt und der Nutzer kann seine Eingaben korrigieren oder ergänzen.&lt;br /&gt;
&lt;br /&gt;
== Technische Umsetzung ==&lt;br /&gt;
* Der erste Schritt ist die Erstellung eines HTML-Formulars.&lt;br /&gt;
* Im zweiten Schritt wird mit Hilfe der verwendeten serverseitigen [[Programmiersprache]] dafür gesorgt, dass das Formular vom [[Webbrowser|Browser]] immer an „sich selbst“ (also die ursprünglich aufgerufene [[Uniform Resource Locator|URL]]) gesendet wird. Üblicherweise wird dazu entweder der eigene Name des Skriptes oder die [[Umgebungsvariable]], die den Namen der Seite enthält, in das &amp;lt;code&amp;gt;action&amp;lt;/code&amp;gt;-Attribut des &amp;lt;code&amp;gt;form&amp;lt;/code&amp;gt;-Tags eingetragen.&lt;br /&gt;
* Schritt drei sorgt dann dafür, dass alle Formulareingaben beim Absenden des Formulars als [[Voreinstellung|Vorbelegung]] der Formularfelder in der erneuten Ausgabe unverändert wieder erscheinen.&lt;br /&gt;
* 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 –&amp;amp;nbsp;andernfalls aber wieder das Formular mit einem entsprechenden Fehlertext anzuzeigen.&lt;br /&gt;
&lt;br /&gt;
== Beispiel ==&lt;br /&gt;
Nachfolgendes einfaches Beispiel eines Affenformulars zeigt die notwendigen Codeschnipsel in HTML und PHP, die sich in der Regel innerhalb eines Skriptes befinden.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;php&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;?php&lt;br /&gt;
// Verarbeitung nur bei abgesendetem Formular starten&lt;br /&gt;
if (!empty($_POST)) {&lt;br /&gt;
&lt;br /&gt;
    $fehler = array();&lt;br /&gt;
&lt;br /&gt;
    // Inhaltsprüfungen&lt;br /&gt;
    if(empty($_POST[&amp;#039;textfeld&amp;#039;])) {&lt;br /&gt;
        $fehler[&amp;#039;textfeld&amp;#039;] = &amp;#039;Textfeld darf nicht leer sein&amp;#039;;&lt;br /&gt;
    }&lt;br /&gt;
    // weitere Prüfungen hier einfügen&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    if (empty($fehler)) {&lt;br /&gt;
        // Verarbeitung war erfolgreich&lt;br /&gt;
        // Weiterleiten beispielsweise zu einer Dankesseite&lt;br /&gt;
        header(&amp;quot;Location: http://example.com/danke.php&amp;quot;);&lt;br /&gt;
        exit;&lt;br /&gt;
&lt;br /&gt;
    } else {&lt;br /&gt;
&lt;br /&gt;
        // Ausgabe der gesammelten Fehlermeldungen&lt;br /&gt;
        echo &amp;quot;&amp;lt;ul class=&amp;#039;errors&amp;#039;&amp;gt;\n&amp;quot;;&lt;br /&gt;
        foreach ($fehler as $feldname =&amp;gt; $meldung) {&lt;br /&gt;
            printf(&amp;quot;&amp;lt;li&amp;gt;%s&amp;lt;/li&amp;gt;\n&amp;quot;, htmlspecialchars($meldung));&lt;br /&gt;
        }&lt;br /&gt;
        echo &amp;quot;&amp;lt;/ul&amp;gt;\n&amp;quot;;&lt;br /&gt;
    }&lt;br /&gt;
}&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;html&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;form action=&amp;quot;&amp;lt;?php echo $_SERVER[&amp;#039;SCRIPT_NAME&amp;#039;]; ?&amp;gt;&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;text&amp;quot; name=&amp;quot;textfeld&amp;quot;&lt;br /&gt;
        value=&amp;quot;&amp;lt;?php echo isset($_POST[&amp;#039;textfeld&amp;#039;]) ? htmlspecialchars($_POST[&amp;#039;textfeld&amp;#039;]) : &amp;#039;&amp;#039;; ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
    &amp;lt;input type=&amp;quot;submit&amp;quot; name=&amp;quot;submit&amp;quot; value=&amp;quot;Absenden&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/form&amp;gt;&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Siehe auch ==&lt;br /&gt;
* [[Infinite-Monkey-Theorem]]&lt;br /&gt;
&lt;br /&gt;
== Weblinks ==&lt;br /&gt;
* [https://www.php-faq.de/q/q-stil-normalform.html Affenformular in PHP]&lt;br /&gt;
* [http://wiki.perl-community.de/cgi-bin/foswiki/view/Wissensbasis/AffenFormular Affenformular in Perl]&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Web-Entwicklung]]&lt;br /&gt;
[[Kategorie:Algorithmus]]&lt;/div&gt;</summary>
		<author><name>imported&gt;Invisigoth67</name></author>
	</entry>
</feed>