Kommen wir nun zu einem etwas nützlicheren Beispiel. Wir wollen prüfen, welchen Browser der Besucher 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'].
Hinweis:
$_SERVER ist eine speziell reservierte PHP-Variable, die alle Informationen über den Webserver enthält. Diese Variable wird auch als superglobal bezeichnet. Mehr Informationen darüber finden Sie auf der Manual-Seite über Superglobals. 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. Beginnend mit PHP 5.4.0 wurden diese älteren Variablen entfernt. (Beachten Sie auch die Seite Alten Code mit neuen PHP-Versionen benutzen.)
Um die Variable auszugeben, schreiben Sie einfach:
Beispiel #1 Variable ausgeben (Array-Element)
<?php
echo $_SERVER['HTTP_USER_AGENT'];
?>
Die Ausgabe dieses Beispiels könnte so aussehen:
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 sich die Ausgabe der phpinfo()-Funktion ansehen, die im Beispiel des vorigen Abschnitts benutzt wurde.
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 Beispiel, das Kontrollstrukturen und Funktionen benutzt
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
echo "Sie benutzen Microsofts Internet Explorer.<br />";
}
?>
Die Ausgabe dieses Skripts könnte so aussehen:
Sie benutzen Microsofts 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 der Programmiersprache C vertraut sind, sollte Ihnen dies logisch erscheinen. Andernfalls 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.
Das zweite hier vorgestellte Konzept ist der Aufruf der Funktion
strpos(). strpos() ist eine
in PHP eingebaute Funktion, die nach einem String in einem anderen
String sucht. In diesem Fall suchen wir nach 'MSIE'
(die so genannte Nadel, engl. needle) in
$_SERVER['HTTP_USER_AGENT'] (der so genannte
Heuhaufen, engl. haystack). Wenn die Nadel im Heuhaufen gefunden
wird, gibt die Funktion die Position der Nadel relativ zum Start
des Heuhaufens zurück. Andernfalls wird FALSE
zurückgegeben.
Wenn nicht FALSE
zurückgeben wird, wird die if-Anweisung
zu TRUE
ausgewertet und der Code innerhalb der geschweiften Klammern
wird ausgeführt. Andernfalls 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. Wenn Sie unsicher sind, wie die Funktionen
benutzt werden, lesen Sie die Handbuch-Seite Wie sind Funktionsdefinitionen
(Prototypen) zu lesen? und den Abschnitt zu den
PHP-Funktionen.
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 #3 HTML- und PHP-Modus vermischt
<?php
if (strpos($_SERVER['HTTP_USER_AGENT'], 'MSIE') !== FALSE) {
?>
<h3>strpos() hat nicht FALSE zurückgegeben</h3>
<p>Sie benutzen Internet Explorer</p>
<?php
} else {
?>
<h3>strpos() hat FALSE zurückgegeben</h3>
<p>Sie benutzen nicht Internet Explorer</p>
<?php
}
?>
Die Ausgabe dieses Skripts könnte so aussehen:
<h3>strpos() hat nicht FALSE zurückgegeben</h3> <p>Sie benutzen Internet Explorer</p>
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, was strpos() zurückgibt bzw. ob der String MSIE gefunden wird oder nicht.