Umgebungsinformationen und Formulardaten
In PHP gibt es drei wichtige assoziative Arrays, mit welchen Umgebungsinformationen, URL-Parameter sowie Formulardaten abgerufen werden können. Des Weiteren kann man von PHP aus, einige Seiteninformationen ändern, um somit z. B. eine Weiterleitung durchzuführen.
Umgebungsinformationen
PHP bietet den Zugriff auf verschiedene Umgebungsinformationen an. Hierfür wird das assoziative Array $_SERVER
genutzt. Bei $_SERVER
handelt es sich um eine sogenannte Superglobale. Superglobale sind in jedem
Gültigkeitsbereich (Scope) verfügbar. Um alle verfügbaren Umgebungsinformationen zu sehen, können Sie entweder das Array
mittels print_r
ausgeben oder sich den Bereich „PHP Variables“ in der Ausgabe der Funktion phpinfo()
anschauen (siehe Bild).
Das untenstehende Beispiel sollte selbsterklärend sein. Ein paar Informationen noch, was Sie mit den Informationen anfangen können: Der User-Agent kann z. B. für einfache serverseitige Statistiken genutzt werden, da dieser, sofern er vom Benutzer nicht verändert wurde, den Browser und das Betriebssystem enthält. Die Remote-Adresse enthält die IP-Adresse des Besuchers und kann z. B. beim Dokumentieren von Anmeldungen auf der Webseite verwendet werden (bitte lokal geltendes Gesetz beachten!). Des Weiteren finden sich in den Umgebungsinformationen einige Pfadangaben, um den Dateinamen des aktuellen Skripts / der aktuellen Anfrage bzw. dessen Pfad zu ermitteln.
<?php echo 'Host: '.$_SERVER['HTTP_HOST'].'<br />'; echo 'User-Agent: '.$_SERVER['HTTP_USER_AGENT'].'<br />'; echo 'Server-Adresse: '.$_SERVER['SERVER_ADDR'].'<br />'; echo 'Remote-Adresse: '.$_SERVER['REMOTE_ADDR'].'<br />'; echo 'Protokoll: '.$_SERVER['SERVER_PROTOCOL']; ?>
Weiterleitung
Eine Weiterleitung oder andere Änderungen am HTTP-Header können Sie mittels der Funktion header()
durchführen. Um mit der Funktion header()
eine Weiterleitung durchzuführen, übergeben Sie der Funktion eine
Zeichenkette mit dem Inhalt 'Location: pfad/zur/datei.php'
. Alle weiteren Header haben einen identischen Aufbau:
Name des Header-Felds, Doppelpunkt, Leerzeichen und der Wert für das Header-Feld. Alle verfügbaren Header-Felder entnehmen
Sie RFC 2616. Der Aufruf der Funktion
header()
muss zwingend vor allen anderen Ausgaben und jeglichem HTML-Code erfolgen, andernfalls kann die
Weiterleitung nicht mehr erfolgen, da der HTTP-Header bereits vollständig versendet wurde. Nach dem Aufruf der
header()
-Funktion muss die Funktion exit()
aufgerufen werden, um somit die Skriptausführung zu
stoppen. exit
ist ein Sprachkonstrukt, weshalb die Klammern weggelassen werden können.
<?php header('Location: umgebung.php'); exit(); ?>
URL-Parameter
URL-Parameter werden, wie der Name schon sagt, in der URL mitgegeben. Dabei wird hinter dem Ordner- und Dateiname ein
Fragezeichen ?
angehängt. Anschließend folgt eine Angabe in der Form name=wert
. Werden mehrere
Werte übergeben, so wird dazwischen ein Und-Zeichen &
angegeben. Dies sieht dann z. B. so aus:
?name1=wert1&name2=wert2&name3=wert3
. Diese URL-Parameter können Sie z. B. in HTML-Links mitgeben.
Des Weiteren werden solche Parameter zur Weitergabe von Formulardaten verwendet, sofern die Methode im form
-Element
auf GET
eingestellt ist (bzw. das Attribut weggelassen wird). Der Zugriff auf die URL-Parameter von PHP aus,
erfolgt mittels des assoziativen Arrays $_GET
, wobei es sich um eine Superglobale handelt. Möchten Sie
prüfen, ob ein URL-Parameter mitgesendet wurde, so können Sie die Funktion isset()
verwenden. Der
Funktion isset()
übergeben Sie als Parameter die zu prüfende Variable (siehe Beispiel). Als Rückgabewert gibt
die Funktion einen Wert vom Typ Boolean
zurück.
<?php echo 'Wert a: '.(isset($_GET['a']) ? $_GET['a'] : '-').'<br />'; echo 'Wert b: '.(isset($_GET['b']) ? $_GET['b'] : '-').'<br />'; ?> <br /> <b>Links:</b><br /> <a href="url-parameter.php">A: -, B: -</a><br /> <a href="url-parameter.php?a=7">A: 7, B: -</a><br /> <a href="url-parameter.php?b=4">A: -, B: 4</a><br /> <a href="url-parameter.php?a=8&b=3">A: 8, B: 3</a>
Formulardaten
Bei den meisten HTML-Formularen wird als Methode POST verwendet. Der Vorteil von POST ist, dass die Daten „unsichtbar“
versendet werden. Des Weiteren ist es dem Besucher dadurch z. B. nicht möglich, einen Link der Seite zu speichern, in welcher
die Formulardaten mit enthalten sind (was in den meisten Fällen unerwünscht wäre). Die URL-Parameter und somit die Methode
GET wird hauptsächlich bei der Filterung von Daten (z. B. aus einer Datenbank) oder auch für die in Shops, Foren und
Blogs verbreiteten Blätter-Funktionen verwendet. Auf die (POST-)Formulardaten können Sie in PHP mittels dem
superglobalen assoziativen Array $_POST
zugreifen. Die Funktion isset()
kann auch hier zur Prüfung,
ob der Wert vorhanden ist, verwendet werden.
<?php echo 'Wert "anrede": '.(isset($_POST['anrede']) ? $_POST['anrede'] : '-').'<br />'; echo 'Wert "vorname": '.(isset($_POST['vorname']) ? $_POST['vorname'] : '-').'<br />'; echo 'Wert "nachname": '.(isset($_POST['nachname']) ? $_POST['nachname'] : '-').'<br />'; ?> <br /> <form action="formulardaten.php" method="post"> <table> <tr> <td style="width: 100px;">Anrede:</td> <td> <select name="anrede"> <option value="H">Herr</option> <option value="F">Frau</option> </select> </td> </tr> <tr> <td style="width: 100px;">Vorname:</td> <td><input type="text" name="vorname" /></td> </tr> <tr> <td style="width: 100px;">Nachname:</td> <td><input type="text" name="nachname" /></td> </tr> <tr> <td></td> <td><input type="submit" value="Absenden" /></td> </tr> </table> </form>