PHP kennenlernen

Aus LinuxUser 08/2005

PHP kennenlernen

Werkzeug für die Homepage

PHP steckt hinter vielen großen Webanwendungen. Doch bereits für die Zwecke einer kleinen Privat-Homepage lohnt es sich, diese Skriptsprache kennen zu lernen.

Wer im World Wide Web surft, bekommt längst nicht mehr nur Webseiten zu sehen, die als fertige HTML-Seiten auf den Webservern gespeichert sind. Aktuelle Websites werden nach Wunsch generiert: Suchfunktionen finden genau die Treffer, die zur Anfrage des Benutzers passen. Gästebücher, Foren und Wikis lassen sich von den Besuchern sogar verändern.

Serverseitige Verarbeitung

Bei all diesen Funktionen findet eine Vorverabeitung der Seiten auf dem Server statt, bevor dieser die fertiggestellte Seite an den Rechner des Surfers ausliefert. Unter den Technologien für diese Verarbeitung erfreut sich die Skriptsprache PHP [1] besonderer Beliebtheit. Mit ihr lassen sich Programmieranweisungen leicht in HTML-Code einbetten. Daneben bringt PHP viele vorgefertigte Funktionen für das Web mit und ist auch für Programmieranfänger leicht erlernbar. Erfolge in Form von ansprechenden Webseiten stellen sich schnell ein. Selbst umfangreiche Anwendungen für das Web sind häufig in PHP geschrieben, beispielsweise die mächtige Mediawiki-Software [2], die hinter der freien Online-Enzyklopädie Wikipedia steht.

Doch bereits mit wenigen Zeilen PHP können Sie die sich den Betrieb und die Aktualisierung einer kleinen Internetpräsenz erleichtern – und lernen dabei die Grundlagen dieser Sprache kennen.

Dieser Artikel geht davon aus, dass Ihr Webspace-Provider bereits PHP installiert hat – das ist heute in vielen Hosting-Angeboten enthalten, und das schon ab Preisen von wenigen Euro monatlich. Möchten Sie einen Webserver mit PHP und weiteren Funktionen zum Ausprobieren zuhause installieren, greifen Sie am einfachsten zu dem Software-Paket XAMPP [2].

Um zunächst festzustellen, ob PHP installiert und richtig konfiguriert ist, bedienen Sie sich der eingebauten Diagnosefunktion von PHP. Schreiben Sie eine Textdatei mit folgendem Inhalt und benennen Sie sie info.php:

<?php
phpinfo();
?>

Diese Datei kopieren Sie in das Document-Root-Verzeichnis Ihres Webservers – bei vielen Webspace-Angeboten handelt es sich dabei um jenes Verzeichnis, in dem Sie sich befinden, wenn sie eine FTP oder SFTP-Verbindung zu Ihrem Webserver aufbauen. Rufen Sie sie nun im Browser auf:

http://ihredomain/info.php

Wenn Sie eine Seite wie in Abbildung 1 mit der installierten PHP-Version und einer Fülle von weiteren Informationen sehen, steht Ihnen PHP zur Verfügung.

Abbildung 1: PHP ist einsatzbereit: Die Funktion "phpinfo()" liefert diagnostische Informationen über die installierte PHP-Engine.

Abbildung 1: PHP ist einsatzbereit: Die Funktion “phpinfo()” liefert diagnostische Informationen über die installierte PHP-Engine.

Navigation ausgliedern

Ein typischer Internet-Auftritt besteht aus zahlreichen HTML-Seiten, die sich über einen Navigationsbreich mit Links erreichen lassen (Abbildung 2). Das Navigationsmenü wiederholt sich auf jeder einzelnen Seite. Möchten Sie nun dieses Menü ändern, beispielsweise weil weitere Seiten hinzukommen, ist die Aktualisierung der Links in jeder einzelnen HTML-Datei zeitraubend und fehlerträchtig. Bereits eine einzige Zeile PHP schafft hier Abhilfe.

Abbildung 2: Die Navigation links ist ein Element, das sich auf jeder Seite eines Web-Auftritts wiederholt. Die Include-Funktion von PHP vereinfacht die Wartung dieses Menüs.

Abbildung 2: Die Navigation links ist ein Element, das sich auf jeder Seite eines Web-Auftritts wiederholt. Die Include-Funktion von PHP vereinfacht die Wartung dieses Menüs.

Dazu verwenden Sie die PHP-Funktion include(). Sie veranlasst den Webserver, vor dem Ausliefern einer Seite den Inhalt der in Klammern angegebenen Datei einzufügen. Kopieren Sie den HTML-Code, der die Navigaton Ihrer Website ausmacht, in eine eigene Datei namens menu.php. In den Inhaltsseiten ersetzen Sie nun das gesamte HTML des Navigationsmenüs durch folgenden Code:

<?php
include("menu.php");
?>

Die Konfiguration der meisten Webserver verlangt allerdings, dass Sie nun auch die Dateinamenerweiterung der Inhaltsseiten von *.html zu *.php ändern. Nur dann übergibt der Webserver die Datei an den PHP-Interpreter, der die enthaltenen Programmieranweisungen auswertet. Die Bereiche der Datei, die PHP-Befehle enthalten, erkennt er daran, dass sie mit <?php und ?> umschlossen sind.

Diese Einbettung in HTML-Dateien stellt übrigens einer der Vorteile von PHP dar. Bei der älteren Methode, dynamische Webseiten mit C oder Perl über die CGI-Schnittstelle zu erzeugen, mussten die CGI-Programme den HTML-Code der gesamten Seite ausgeben. Mit PHP hingegen schreiben Sie hauptsächlich wie gewohnt HTML und fügen Programmcode nur ein, wo nötig.

Auf einen Streich

Wenn Sie nun die Links in der Navigation anpassen, damit Sie auf die umbenannten Inhaltsseiten zeigen, profitieren Sie bereits von den Vorteilen einer zentral verwalteten Navigation: Statt vieler einzelner Dateien brauchen sie nur menu.php zu bearbeiten – den Rest erledigt der Include-Mechanismus. Näheres zu include() und allen weiteren PHP-Funktionen können Sie in der duchsuchbaren Dokumentation auf der PHP-Homepage [1] nachschlagen.

Dynamische Hervorhebung

Mit ein wenig mehr Aufwand setzten Sie einen beliebten Effekt bei Web-Navigationsmenüs um: die optische Hervorhebung der Seite, auf der sich der Surfer im Augenblick befindet (Abbildung 2). Als ersten Schritt lassen Sie sich den Namen der aufgerufenen Seite ausgeben, den PHP in einer eingebauten Server-Variablen vorhält. Fügen Sie folgende Zeilen in menu.php ein, um den Dateinamen der aktuellen Seite anzuzeigen:

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

Laden Sie nun die Seite im Browser neu. PHP zeigt nun den Dateinamen der aufgerufenen Seite (nicht den des Includes) an.

Wie in der Bash-Programmierung ist echo der Ausgabebefehl in PHP. In der PHP-Standardkonfiguration können Sie die obigen Zeilen allerdings auch vereinfacht schreiben, dabei sogar auf den Echo-Befehl verzichten und so PHP-Code platzsparend in HTML einbetten:

<?=$_SERVER["SCRIPT_NAME"]?>

Die Übereinstimmung mit dem Seitennamen verwenden Sie nun als Bedingung in einem If-Block. Trifft diese zu, soll PHP dem HTML-Element eine CSS-Klasse hinzufügen, die für die grafische Hervorhebung des Navigationspunkts sorgt. Der Übersicht halber weist Zeile 3 in Listing 2 die aktuelle Seite zunächst der Variablen $seite zu. Danach sieht der If-Block beispielsweise für die Seite about.php so aus:

<?if ($seite == "/about.php"){?
?> class="hi"<?}?>

Wenn also der Inhalt der Server-Variablen $_SERVER["SCRIPT_NAME"] gleich der Zeichenkette /about.php ist, schreibt PHP die CSS-Klasse hi für “Highlight” (also Hervorhebung), in den HTML-Code. Beachten Sie, dass der Vergleichsoperator == lautet. Das einfache Gleichheitszeichen = würde der Variablen $seite einfach einen neuen Wert zuweisen – eine häufige Fehlerquelle in PHP-Skripten.

Die grafische Darstellung der eingefügten CSS-Klasse beschreibt das Stylesheet style.css (Listing 3). Die Angabe list-style-type: none; entfernt übrigens das Aufzählungszeichen vor den Listenelementen.

Ein Skript für alles

Mit den beschriebenen Arbeitsschritten sind Sie schon ein gutes Stück Wegs weg von einer Unzahl statischer Seiten hin zu einem dynamischen Webauftritt gegangen. Der nächste Schritt könnte der Abschied von mehreren Dateien für die Inhaltsseiten sein. Einen kleiner Internetauftritt lässt sich durchaus mit einer einzigen PHP-Seite umsetzen. Das Umschalten zwischen verschiedenen Inhalten erfolgt dann über einen so genannten HTTP-GET-Parameter in der aufgerufenen URL:

http://example.com/?
index.php?seite=impressum

Das PHP-Skript kann den GET-Parameter seite auswerten und je nach dessen Inhalt unterschiedlichen HTML-Code ausgeben. Wie das funktioniert, können Sie im Probekapitel aus dem Buch “PHP 5 aus erster Hand” nachlesen, das sie auf der Heft-CD finden.

Daneben kann PHP Inhalte auch aus einer Datenbank beziehen. Schnittstellen zu zahlreichen Datenbankservern bringt die Skriptsprache mit. Besonders beliebt ist dabei der Einsatz der Datenbank MySQL in einem “LAMP”-System (“Linux-Apache-MySQL-PHP”). Für solche Systeme gibt es ebenfalls günstige Webspace-Angebote. Auch XAMMP – Sie haben es erraten – ist ein LAMP-System, das zweite “P” steht dabei für die Programmiersprache Perl, das “X” für eines der Betriebssysteme, auf denen XAMPP läuft, beispielsweise Linux, Windows oder Mac OS X.

Hier hört die Funktionsvielfalt von PHP noch lange nicht auf: Aktuelle PHP-Versionen unterstützen auch objektorientierte Programmierung und bringen eine Unzahl von fertigen Bibliotheken mit. Längst ist PHP eine ausgewachsene Programmiersprache, die sich auch für umfangreiche professionelle Anwendungen eignet. Schön, dass der Einstieg dennoch so leicht fällt.

Listing 1

PHP-Seite mit Include-Anweisung

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <title>Einführung in PHP</title>
    <style type="text/css" media="all">
        @import "style.css";
    </style>
</head>
<body>
<?php
//Navigationsmenü einfügen
include("menu.php");
?>
    <div id="content">
        <h1>Einführung in PHP</h1>
        <p>Hier stehen Ihre Inhalte … <p>
    </div>
</body>
</html>

Listing 2

menu.php

<?php
/* Aktuelle Seite feststellen */
$seite = $_SERVER["SCRIPT_NAME"];
?>
<div id="menu">
    <ul>
        <li<?if ($seite == "/index.php"){?> class="hi"<?}?>><a href="index.php">Home</a></li>
        <li<?if ($seite == "/about.php"){?> class="hi"<?}?><a href="about.php">Über diese Website</a></li>
        <li<?if ($seite == "/contact.php"){?> class="hi"<?}?>><a href="contact.php">Kontakt</a></li>
        <li<?if ($seite == "/legal.php"){?> class="hi"<?}?>><a href="legal.php">Impressum</a></li>
    </ul>
</div>

Listing 3

style.css

body {
    font-family: sans-serif;
    background: #fff;
    color: #333;
}
/* Positionen für Menü und Inhalt */
#menu {
    position: absolute;
    left: 0;
    width: 160px;
    background: #fff;
}
#content {
    margin-left: 220px;
    background: #fff;
}
/* Stil für Links und Listenelement */
a {
    text-decoration: none;
    color: #00f;
}
li {
    list-style-type: none;
    padding: 5px;
    background: #ddd;
}
/* Stil für Links und Listenelement
im hervorgehobenen Navigationspunkt*/
li.hi a {
        font-weight: bold;
        text-decoration: none;
        color: #fff;
}
li.hi {
        background: red;
}

Infos

[1] http://www.php.net

[2] Elisabeth Bauer, “Mediawiki & Wikipedia lokal installieren”, LinuxUser 11/2004, S. 55 ff.

[3] XAMPP: http://www.apachefriends.org/de/xampp.html

LinuxUser 08/2005 KAUFEN
EINZELNE AUSGABE
ABONNEMENTS
TABLET & SMARTPHONE APPS
E-Mail Benachrichtigung
Benachrichtige mich zu:

Hinweis: Dieser Artikel ist älter als ein Jahr, enthaltene Informationen sind möglicherweise veraltet.

0 Kommentare
Älteste
Neuste Beste Bewertung
Inline Feedbacks
Alle Kommentare anzeigen
Nach oben