Websiteentwicklung: PHP: Grundlagen

Aus Wikibooks

PHP-Scripte sind reine Textdateien (auch plaintext genannt), die mit jedem einfachen Text-Editor-Programm erstellt werden können. Die Scripte müssen jedoch eine bestimmte Endung (Erweiterung oder auch Extension) aufweisen, um vom Webserver als solche erkannt zu werden. Welche Endungen das sind, ist nicht festgelegt und kann über den Webserver konfiguriert werden. Üblich sind die Erweiterungen .php, .phtml, .php4 oder auch .php5. Oft benutzt man die Versionsnamen als Endung, wenn auf dem Server aus Kompatibilitätsgründen zwei (z.B. PHP 4 & 5) PHP Versionen installiert sind und diese dann durch die Endung unterschieden werden. Die Endung .php ist hierbei zu empfehlen, da sie am weitesten verbreitet ist.

PHP Tags[Bearbeiten]

Ein PHP-Block wird mit folgenden Tags geöffnet und wieder geschlossen:

  • <?php ... ?>

Der PHP-Parser erkennt diese Tags und arbeitet die PHP-Befehle zwischen diesen Tags ab. Man sollte diese Form benutzen, da sie von allen Servern interpretiert werden kann. Außerdem ist die Schreibweise <?php ... ?> XML-konform und schon aus diesem Grund zu empfehlen.

Daneben existieren weitere Möglichkeiten, die teilweise von Einstellungen in der PHP-Installation abhängen:

  • <script language="php"> ... </script>
  • <? ... ?> (Abhängig von.. short-open-tags)
  • <?= ... ?> als eine Kurzform von <? echo ...; ?> (Abhängig von.. short-open-tags)
  • <% ... %> (Abhängig von.. asp-tags)
  • <%= ... %> als eine Kurzform von <% echo ...; ?> (Abhängig von.. asp-tags)


Hallo Welt, eine Beispieldatei[Bearbeiten]

Eine Beispieldatei könnte so aussehen:

<?php

echo 'Hallo Welt!';

?>

Ausgabe:

Hallo Welt!

So sieht ein Script in einer reinen PHP-Datei aus. Der Befehl echo gibt den Text der in doppelten oder einfachen Anführungszeichen angegeben ist aus. Eine Anweisung (wie echo) wird mit einem Semikolon am Ende der Zeile beendet.

PHP und HTML in einer Datei[Bearbeiten]

Ein PHP-Script wird oft in eine HTML-Datei eingebunden. Das heißt irgendwo in der Datei kann ein PHP-Block geöffnet und wieder geschlossen werden. Bevor der Webserver die HTML-Datei ausliefert, reicht er sie an den PHP-Parser weiter, der dann die PHP-Blöcke abarbeitet.

Beispiel:

<!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="de" lang="de" dir="ltr">
<head>
  <title>Eine PHP-Testseite</title>
</head>
<body>
  <?php echo '<p>Eingebetteter PHP-Code</p>'; ?>
</body>
</html>

Ausgabe im Browser (für den Benutzer sichtbar):

Eingebetteter PHP-Code

Obwohl der PHP-Code innerhalb eines HTML-Codes steht, muss die Datei auf .php enden, damit der Parser auch die Datei bzw. den PHP-Code in dieser Datei abarbeitet, wobei das von den Einstellungen des Servers abhängig ist. So kann man auch erzwingen, dass eine Datei geparst wird, die z.B. auf .html endet, selbst wenn sie keinen PHP-Code enthält.

Header und Content[Bearbeiten]

Beim Aufruf einer Internetseite bekommt der Browser (bzw. ein ähnliches Programm, das mit HTTP arbeitet) zwei Teile zugesandt. Einmal ist das der Header und einmal der Content.

Header[Bearbeiten]

Die Daten, die in diesem Bereich stehen, beschreiben den folgenden Content. Hier sind Informationen wie Dateigröße und Dateityp hinterlegt. Teile des Headers könnten wie folgt aussehen:

Content-Type: text/html
Content-Size: 4356

Content[Bearbeiten]

Hier befindet sich der eigentliche Inhalt, mit dem der Browser arbeitet. Je nach den Daten in den Headern führt der Browser eine entsprechende Aktion aus. HTML-Daten werden interpretiert, Bild-Daten werden angezeigt, ZIP-Daten werden gespeichert...

Mit PHP ist es möglich beide Teile zu verändern, wenn dies denn Sinn hat. Dabei muss man die Reihenfolge beachten, in der man diese Teile verändert. Man darf die Headerangaben nur dann verändern, wenn man noch keinen Inhalt/Content erzeugt hat. Dies ist z.B. bei Cookies wichtig, da Cookies Headerangaben sind. Oder auch, wenn man mit PHP Bilder erzeugen möchte. Auch HTML-Code gehört zum Content. Wenn also außerhalb von PHP HTML-Code ausgegeben wird (weil z. B. PHP in HTML-Code eingebettet wurde) ist es nicht mehr möglich den Headerteil zu verändern. Dies wird spätestens anhand der Fehlermeldung Warning: Cannot add header information - headers already sent ... deutlich.