PHP-Dateien sind im Grunde genommen ganz normale HTML-Dateien, die an beliebigen
Stellen ein oder mehrere PHP-Element(e) enthalten. PHP wird auf dem Webserver
interpretiert (falls dieser entsprechend eingerichtet ist).
Der Browser des Users kriegt nur den Output (das Resultat des PHP-Skripts) zu
sehen, und das ist im Normalfall ganz normales HTML (oder auch JavaScript, wenn
man Freude hat :-).
Die Datei ist auf dem Webserver gespeichert ("statischer Quelltext"). Sobald ein Browser die Datei anfordert, wird die Datei durch den Webserver interpretiert, und das Resultat davon (ich nenne es "dynamisch erzeugter Quelltext") wird an den Browser geschickt. Dieser wertet das Resultat aus und zeigt es an.
"Statischer" Quelltext der Datei auf dem Server | "Dynamisch erzeugter" Quelltext, den der Server an den Browser schickt | Resultat: Browser-Anzeige |
---|---|---|
... |
...
|
... Normaltext Fett ... |
|
<HEAD> <LINK REL="stylesheet" HREF="ersatz.css"
TYPE="text/css">
|
Anzeige mithilfe der Layout-Angaben in der externen CSS-Datei ersatz.css |
Wichtige Unterschiede zu JavaScript:
Hinweis zur Syntax:
Ein Anführungszeichen (") wird mit einem vorhergehenden Backslash (\)
sogenannt "auskommentiert":
Folgendes ist richtig:
echo "<LINK REL=\"stylesheet\" HREF=\"ersatz.css\"
TYPE=\"text/css\">";
Folgendes wäre falsch:
Hier würde PHP den Befehl echo nur bis zum ersten zweiten Anführungszeichen
interpretieren:
echo "<LINK REL="stylesheet" HREF="ersatz.css" TYPE="text/css">";
echo "<LINK REL="
Das Resultat wäre eine Fehlermeldung von PHP, oder es würde also nur
folgender "dynamisch erzeugter Quelltext" an den Browser geschickt:
<LINK REL=
Damit eine Datei vom Webserver als PHP-Datei erkannt wird, muss sie die Endigung
.php haben, also z.B. dateiname.php
Der PHP-Code kann theoretisch auf verschiedene Weise in HTML integriert werden:
Schreibweise | Bemerkungen |
---|---|
<script language="php"> |
Dies ist die unproblematischste
Schreibweise. Funktioniert wahrscheinlich auf jedem Server, der PHP kann. |
<?php echo "Hallo Welt.";
?> |
Etwas kürzer zu schreiben. Führt zu Problemen bei lokaler Bearbeitung der Dateien (siehe unten). Funktioniert wahrscheinlich auf jedem Server, der PHP kann. |
<? echo "Hallo Welt.";
?> |
Noch kürzere Variante; gleiche
Probleme. (Auf gewissen Servern nicht erlaubt). |
<% echo "Hallo Welt.";
%> |
Gleich kurze Variante; gleiche Probleme. (Auf gewissen Servern nicht erlaubt). |
Manche Probleme treten nur dann auf, wenn man HTML-Dateien mit PHP-Elementen auf dem eigenen Rechner speichert, anzeigt und bearbeitet:
Je nachdem, wie der PHP-Code in HTML integriert ist, und je nach Browser kriegt man unterschiedliche Resultate.
Die Schreibweise mit <script language="php">PHP-Befehle</script>
ist grundsätzlich unproblematisch. Browser zeigen im Normalfall nichts
an.
Bei der Schreibweisen mit <?php PHP-Befehl ?>
und <?PHP-Befehl
?>
zeigen manche Browser (gerade auch die neueren: MS IE 5.x,
Netscape 6.0, Opera 5) den Quelltext oder Teile davon an.
Je nachdem, wie der PHP-Code in HTML integriert ist, wird er eher in Ruhe gelassen oder eher zerstört.
Die Schreibweise mit <script language="php">PHP-Befehle</script>
ist grundsätzlich unproblematisch. MS Frontpage 2000 und Dreamweaver 4
lassen den Quelltext in Ruhe.
Gefährlicher sind die Schreibweisen mit <?php PHP-Befehl ?>
und <? PHP-Befehl ?> -
MS Frontpage 2000
zerstört den Quelltext. (Dreamweaver 4 lässt den Quelltext auch
hier in Ruhe)
Das folgende Beispiel schreibt eine Zeile mit einem LINK-Tag in den Kopf einer HTML-Datei.
Es ist wichtig, dass der so geschriebene LINK an der letzten Position der Liste steht, und dass er kein TITLE-Tag hat.
Damit der PHP-Code bei lokal gespeicherten Dateien von den Browsern nicht angezeigt
wird, und damit WYSIWYG-Editoren den PHP-Code nicht zerstören, empfehle
ich die folgende Notation:
<HEAD>
<TITLE>Testseite fuer PHP-verlinkte CSS</TITLE>
<LINK REL="stylesheet" HREF="standard.css" TYPE="text/css">
<script language="php">
echo "<LINK REL=\"stylesheet\" HREF=\"ersatz.css\"
TYPE=\"text/css\">";
</script>
</HEAD>
Das Beispiel in dieser Form soll nur zeigen, wie man eine Zeile HTML-Code mit PHP in eine HTML-Datei schreiben kann.
Ein möglicher Verwendungszweck wäre z.B. folgendes:
Eine PHP-Routine prüft zuerst, ob auf dem Computer des Users ein Cookie
mit einem bestimmten Wert gesetzt ist.
Wenn ja, schreibt es das LINK-Tag in die HTML-Datei, und es wird das Stylesheet
ersatz.css angewendet.
Wenn nein, wird nichts weiteres in die HTML-Datei geschrieben, und es kommt
das Stylesheet standard.css zum Einsatz.
Autor: Thomas Lüthi, luthi@my-mail.ch - Letzte Änderung: 27.12.2001