Startseite --> Hilfen & Technische Artikel --> Codeschnipsel --> PHP: Formulardaten auslesen

PHP: Formulardaten auslesen

Da ich es aufgrund einer schlechten PHP-Dokumentation nicht besser wusste, habe ich in meinen sehr frühen Scripts die Formulardaten immer mit Hilfe des aktivierten register_globals ausgelesen. Als ich dann irgendwann mal PHP auf meinem Rechner aktualisiert hatte, war ich natürlich ziemlich verwirrt (mittlerweile verstehe ich natürlich, warum diese Option deaktiviert wurde und in PHP 6 endgültig verschwinden wird). Irgendwann habe ich mir dann eine kleine Funktion geschrieben, durch die ich auch bei deaktiviertem register_globals einfach an die Formulardaten rankommen kann (ähnlich der param()-Methode des CGI-Moduls von Perl) und die sich auch gleichzeitig um die nervigen Magic Quotes kümmert (auch die werden in PHP 6 vollständig entfernt).

Eine ältere Variante der folgenden Funktion (die übrigens in all meinen PHP-Scripts zum Einsatz kommt) sollte ursprünglich mal Thema eines SELFHTML Tipp&Trick sein. Einigen der Developer hat die Funktion auch ganz gut gefallen, anderen leider nicht, weshalb ich den Artikel dann doch nicht veröffentlicht habe.

Wie auch immer, hier ist die Funktion:

function formdata($param)
{
 switch($_SERVER['REQUEST_METHOD'])
 {
  case 'GET':
   if(isset($_GET[$param]))
   {
    $value = $_GET[$param];
    break;
   }
   else return null;

  case 'POST':
   if(isset($_POST[$param]))
   {
    $value = $_POST[$param];
    break;
   }
   else return null;

  default:
   return null;
 }

 if(get_magic_quotes_gpc())
 {
  if(is_array($value)) return array_map('stripslashes',$value);
  else return stripslashes($value);
 }
 else return $value;
}

Die Funktion prüft zunächst, ob als HTTP-Zugriffsmethode GET oder POST gewählt wurde und es wird geprüft ob das angeforderte Formularelement in dem entsprechenden Array vorhanden ist. Sofern es vorhanden ist, wird der Wert in die Variable $value kopiert. Wenn weder mit GET noch mit POST zugegriffen wurde oder das Formularelement nicht gefunden werden konnte, wird null, also im Grunde genommen nichts zurückgegeben. Anschließend wird geprüft, ob in der PHP-Konfiguration magic_quotes_gpc aktiviert ist. Wenn das der Fall ist, wird als nächstes geprüft, ob das ausgewählte Formularelement ein Array darstellt. In diesem Falle werden mit array_map() in Verbindung mit stripslashes() die Backslashes vor den Anführungszeichen in sämtlichen Array-Elementen entfernt und das Array zurückgegeben. Wenn es kein Array ist, wird der Wert einfach mit stripslashes() bearbeitet und zurückgegeben. Wenn magic_quotes_gpc nicht aktiviert ist, wird ganz einfach das Array oder der Wert zurückgegeben.

Benutzen können Sie die Funktion folgendermaßen:

$wert = formdata('Name des Formularfeldes');

Achtung: Die Funktion hat leider einige Einschränkungen:

Startseite --> Hilfen & Technische Artikel --> Codeschnipsel --> PHP: Formulardaten auslesen