Nützliches

Kommen wir nun zu einem etwas nützlicheren Beispiel. Wir wollen prüfen, welchen Browser die Person, die die Seite besucht, benutzt. Um das zu tun, prüfen wir den "user agent"-String, den der Browser als Teil seiner HTTP-Anforderung sendet. Diese Information ist in einer Variablen abgelegt. In PHP beginnen Variablen immer mit einem Dollar-Zeichen. Die Variable, die uns jetzt interessiert, ist $_SERVER["HTTP_USER_AGENT"].

PHP Autoglobals-Anmerkung: $_SERVER ist eine speziell reservierte PHP-Variable, die alle Informationen über den Webserver enthält. Diese Variable wird auch als auto- oder superglobal bezeichnet. Mehr Informationen darüber Sie auf der Manual-Seite über Autoglobals. Diese speziellen Variablen wurden in PHP 4.1.0 eingeführt. Vorher wurden stattdessen die älteren $HTTP_*_VARS-Arrays benutzt, also z.B. $HTTP_SERVER_VARS. Auch wenn diese Variablen nicht mehr genutzt werden sollen - sie existieren weiterhin. (Beachten Sie auch die Seite Alten Code mit neuen PHP-Versionen benutzen.)

Um die Variable auszugeben, schreiben wir einfach:

Beispiel 2-2. Variable ausgeben (Array-Element)

<?php echo $_SERVER["HTTP_USER_AGENT"]; ?>

Die Ausgabe dieses Beispiel könnte so aussehen:
Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)

Es gibt viele Typen von Variablen. Im obigen Beispiel haben wir ein Array-Element ausgegeben. Arrays können sehr nützlich sein.

$_SERVER ist nur eine von vielen Variablen, die Ihnen automatisch von PHP zur Verfügung gestellt werden. Eine Liste finden Sie auf der Seite Reservierte Variablen im Manual. Eine vollständige Liste können Sie auch bekommen, wenn Sie eine Datei wie die folgende erstellen:

Beispiel 2-3. Alle vordefinierten Variablen mit phpinfo() ausgeben

<?php phpinfo(); ?>

Wenn Sie diese Datei in Ihrem Browser öffnen, sehen Sie eine Seite mit vielen Informationen über PHP zusammen mit einer Liste aller für Sie verfügbaren Variablen.

Sie können mehrere PHP-Anweisungen innerhalb eines PHP-Tags platzieren und so kleine Code-Blöcke schreiben, die mehr als nur eine Ausgabe mit echo() enthalten. Wenn wir zum Beispiel prüfen möchten, ob es sich beim Browser des Besuchers um den Internet Explorer handelt, können wir folgenden Code benutzen:

Beispiel 2-4. Beispiel, das Kontrollstrukturen und Funktionen benutzt

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
  echo
"Sie benutzen Internet Explorer<br />";
}
?>

Die Ausgabe dieses Skripte könnte so aussehen:
Sie benutzen Internet Explorer<br />

Hier haben wir Ihnen eine ganze Reihe von neuen Konzepten vorgestellt. Wir haben hier zuerst eine if-Anweisung. Wenn Sie mit der Grundlagen-Syntax von der Programmiersprache C vertraut sind, sollte Ihnen dies logisch erscheinen. Wenn Sie C oder eine andere Sprache, die die obige Syntax benutzt, nicht gut genug kennen, dann sollten Sie sich ein Buch mit einer PHP-Einführung besorgen und die ersten Kapitel lesen. Sie können natürlich auch in die Sprachreferenz des Manuals schauen. Eine Liste von PHP-Büchern finden Sie unter http://www.php.net/books.php.

Das zweite hier vorgestellte Konzept ist der Aufruf der Funktion strstr(). strstr ist eine in PHP eingebaute Funktion, die nach einem String in einem anderen String sucht. In diesem Fall suchen wir nach "MSIE" in $_SERVER["HTTP_USER_AGENT"]. Wenn der String gefunden wird, gibt die Funktion TRUE zurück, wird er nicht gefunden, dann wird FALSE zurückgegeben. Wenn TRUE zurückgeben wird, wird die if-Anweisung zu TRUE ausgewertet und der Code innerhalb der geschweiften Klammern wird ausgeführt. Wenn aber FALSE zurückgegeben wird, wird der Code innerhalb der Klammern nicht ausgeführt. Probieren Sie weitere ähnliche Beispiele mit if, else und anderen Funktionen wie strtoupper() oder strlen(). Jede dieser Manual-Seiten enthält weitere Beispiele.

Wir können jetzt einen Schritt weitergehen und sehen, wie Sie innerhalb eines PHP-Blocks den PHP-Modus verlassen und wieder in ihn hinein gelangen können:

Beispiel 2-5. HTML- und PHP-Modus vermischt

<?php
if (strstr($_SERVER["HTTP_USER_AGENT"], "MSIE")) {
?>
<h3>strstr muss true zurückgegeben haben</h3>
<center><b>Sie benutzen Internet Explorer</b></center>
<?php
} else {
?>
<h3>strstr muss false zurückgegeben haben</h3>
<center><b>Sie benutzen nicht Internet Explorer</b></center>
<?php
}
?>

Die Ausgabe dieses Skripts könnte so aussehen:
<h3>strstr muss true zurückgegeben haben</h3>
<center><b>Sie benutzen Internet Explorer</b></center>

Anstatt die PHP echo-Anweisung für die Ausgabe zu benutzen, haben wir den PHP-Modus verlassen und normales HTML verwendet. Der wichtige Punkt hierbei ist, dass der logische Ablauf des Skripts dadurch nicht gestört wird. Nur einer der beiden HTML-Blöcke wird ausgegeben - abhängig davon, ob strstr() TRUE oder FALSE zurückgibt bzw. ob der String MSIE gefunden wird oder nicht.