next up previous contents
Nächste Seite: Architektur Aufwärts: Aufbau des Benutzerverwaltungssystems Vorherige Seite: Einsatz von PHP   Inhalt

Auswertung der Formulare mit PHP

Ein Formular besteht aus unterschiedlichen Elementen wie zum Beispiel Textfelder zur direkten Texteingabe, Listenfelder zum Einträgeauswählen und Buttons zum Anklicken. Ein HTML-Formular stellt die Möglichkeit dar, die vom Nutzer durch Eingeben, Auswählen, und Anklicken gesammelten Daten zum Web-Server zu übertragen und damit zu dem zuständigen PHP-Skript zu gelangen. In HTML werden die Formulare mittels <FORM>-Tag definiert:

<FORM ACTION="URl" METHOD="GET"|"POST">

... Formularinhalte ...

</FORM>

Das URL vom Attribut ACTION ist in unserem Fall das Zielskript auf dem Web-Server, das die übertragenen Formulardaten auswertet bzw. weiterleitet. Die Übertragung der Daten zum Web-Server übernimmt HTTP mit den Methoden GET oder POST. HTTP-Nachrichten enthalten drei Bestandteile, das URI, das Kommando und die Nachricht. Die Nachricht besteht aus Header und Body(der Nachrichtinhalt). Die Methode GET nutzt das URI zur Übertragung, hängt die Daten an die URL mit an, die Methode POST hingegen verfasst die Daten im Bodyteil einer Nachricht. Jedes Formularelement ist durch die Attribute name und value als Wert gekennzeichnet. Im PHP-Skript wird der Name eines Formularelements als eine Variable und der Value als den entsprechenden Wert dieser Variable ausgewertet.

Ab der aktuellen Version von PHP(4.1.0) hat der PHP-Team[php] aus Sicherheitsgründen empfohlen, die Einstellung von register_globals in der Konfigurationsdatei php.ini auf ``off" als Standardwert zu setzen, damit alle Formularelemente, die sowohl durch GET-Methode als auch durch POST-Methode übertragen wurden, nicht mehr direkt mit dem Elementnamen als Variable in PHP-Skript ansprechbar sind. Um sie in Anspruch nehmen zu können, bietet der PHP-Team einige neue spezielle Variablen:

Diese speziellen Variablen sind assoziative Arrayvariablen. Die Formularelemente sind nur noch erreichbar, indem man den Elementnamen als Schlüssel gemäß der Übertragungsmethode, die Variable $_GET[] oder $_POST[] einsetzt. Um das im folgenden Beispiel angezeigte Inputelement im PHP-Skript auswerten zu können, verwendet man nicht wie gewohnt die Variable $username, sondern die Variable $_POST["username"] oder $_REQUEST[" username"].

<FORM ACTION="ziel.php" METHOD="POST">
<INPUT TYPE="TEXT" NAME="username" VALUE=" loginname">
... andere Formularelemente ...
</FORM>

Diese Umstellung führt dazu, dass man die Formularvariablen für alle bisherigen Anwendungen entsprechend ändern soll. Diejenigen Anwendungen, die nur bei der Einstellung von register_globals auf `` on" ablaufen können, sogar nicht mehr funktionieren. Dieser Fopra hat diese Umstellung inzwischen erlebt, und dies hat einen großen zusätzlichen Arbeitsaufwand verursacht. Laut dem PHP-Team sind die alten globalen Variablen wie beispielsweise $HTTP_GET_VARS oder $HTTP_POST_VARS zwar noch einsetzbar, aber es lohnt sich, die neuen Variablen zu benutzen.


next up previous contents
Nächste Seite: Architektur Aufwärts: Aufbau des Benutzerverwaltungssystems Vorherige Seite: Einsatz von PHP   Inhalt
Zhongshi Wang 2002-04-11