Das Internet lebt von den Eingaben der Benutzer. Formulare stellen eine Möglichkeit dar, wie Daten zum Webserver übertragen werden können. Diese Methode wird Post-Methode genannt.
Die übermittelten Parameter werden auch POST-Variablen genannt und stehen in PHP in der Systemvariablen $_POST zur Verfügung.

HTML-Formular
<form action="testpost.php" method="post">
  <label for="benutzer">Benutzername:</label><input type="text" id="benutzer" name="benutzer" />
  <label for="pass">Passwort:</label><input type="password" id="pass" name="pass" />
  <input type="submit" name="senden" value="einloggen" />
</form>
Wichtig ist, dass im HTML-Formular method="post" und bei jedem Formular-Element das Attribut name gesetzt ist. Nur so kann per PHP auf die Inhalte der Formularelemente zugegriffen werden.
Mit dem Attribut action wird festgelegt, an welches PHP-Skript das Formular gesendet werden soll. Im Beispiel ist es die Datei testpost.php.
Zugriff auf POST-Variablen
<?php
  echo($_POST['benutzer']); // Inhalt vom Benutzername-Feld
  echo($_POST['pass']);     // Eingabe vom Password-Feld
  echo($_POST['senden']);   // der Wert wurde mit value="einloggen" gesetzt
?>
   
Der Code links als testpost.php gespeichert, gibt die von obigem Formular gesendeten Inhalte aus.
Beispiel I
Radio-Buttons &
Checkboxen
Ausschnitt aus HTML-Datei:
<form action="testradiocheck.php" method="post">
  <h2>Pizza-Bestellung</h2>
  <p>Groesse:
    <input type="radio" id="groesse_kl" name="groesse" value="20" /> 
    <label for="groesse_kl">klein</label>
<input type="radio" id="groesse_mi" name="groesse" value="24" /> <label for="groesse_mi">mittel</label>
<input type="radio" id="groesse_gr" name="groesse" value="30" /> <label for="groesse_gr">gross</label> </p> <p> Belag: <input type="checkbox" id="schinken" name="belag[]" value="Schinken" /> <label for="schinken">Schinken</label>
<input type="checkbox" id="lachs" name="belag[]" value="Lachs" /> <label for="lachs">Lachs</label>
<input type="checkbox" id="thon" name="belag[]" value="Thon" /> <label for="thon">Thon</label>
</p> <p> <input type="submit" name="senden" value="bestellen" /> </p> </form>
PHP-Codeausschnitt aus testradiocheck.php:
<?php
  echo('bestellte Groesse: '. $_POST['groesse'].'<br />'); //Wert des Radiobuttons Grösse
  echo('gewuenschte Zutaten: ');
  // for-Schleife durchlaeuft alle Eintraege im Array 'belag'
  for ($i=0; $i < count($_POST['belag']); $i++) {
    echo($_POST['belag'][$i].' ');             // i-ter Eintrag und 1 Leerschlag ausgegeben
  }
?>
   
Das Beispiel zeigt oben den <form>-Abschnitt aus der HTML-Datei und unten die PHP-Auswertung aus der im Attribut action definierten PHP-Datei, hier testradiocheck.php.
Beispiel II
Dropdown-Listen
Ausschnitt aus HTML-Datei:
<form action="testdropdown.php" method="post">
  <label for="benutzername">Benutzername:</label>
  <select id="benutzer" name="benutzer">
    <option value="1">Administrator</option>
    <option value="2">User</option>
    <option value="3">Gast</option>
    <option value="divers">anderer</option>
  </select>
  <input type="submit" name="senden" value="los" />
</form>				
   
PHP-Codeausschnitt aus testdropdown.php:

<?php
  echo('Folgende Option wurde gewählt: '. $_POST['benutzername']); // Wert der Dropdownliste Benutzername
?>
Dieses Beispiel zeigt ebenfalls den <form>-HTML-Abschnitt (oben) und den PHP-Code aus der im Attribut action definierten PHP-Datei (unten).
Affenformular
<?php
if(isset($_POST['senden']))
{
  $name = $_POST['benutzer'];
  $pw = $_POST['pass'];
  echo('<h2>POST-Anfrage</h2>');
  echo('Der Benutzer '.$name.' möchte mit Passwort '.$pw.' einloggen.');
}
?>
<h2>Login-Formular</h2>
<form method="post" action="<?php echo($_SERVER['PHP_SELF']); ?>">
  <label for="benutzer">Benutzername:</label> <input type="text" id="benutzer" name="benutzer" />
  <label for="pass">Passwort:</label> <input type="password" id="pass" name="pass" />
  <input type="submit" name="senden" value="einloggen" />
</form>   
Affenformular meint die Integration des Formulars und dessen Verarbeitung in einer einzigen Datei. Das Skript ruft sich beim Senden des Formulars selber auf und verarbeitet die eingegebenen Parameter. $_SERVER['PHP_SELF'] ist eine PHP Servervariable, die den Namen des aufrufenden Scripts enthält.
Es gilt zu beachten, dass die Bezeichnung in der if(isset(...)) Abfrage in der zweiten Zeile mit der Eigenschaft name des Submit-Buttons genau übereinstimmt.