Einführung in PHP: PHP-Code in HTML einbauen
Sie befinden sich:
Home >
Php >
Einführung in PHP: PHP-Code in HTML einbauen
In diesem Kapitel geht es darum, wie PHP überhaupt in eine HTML-Seite kommt und welche Schritte nötig sind, damit aus Ihrem Code eine fertige Webseite wird. Wer noch keinen Webserver am Laufen hat, sollte vorher kurz den Artikel zu XAMPP oder zu PHP mit Docker lesen, denn ohne lokale Umgebung wirst Sie keine PHP-Datei testen können. Wie der Browser zu Ihrem PHP-Ergebnis kommtEine reine HTML-Seite landet ohne Umweg im Browser. Der Server liefert die Datei genau so aus, wie Sie sie geschrieben hast. Bei einer PHP-Datei ist ein zusätzlicher Schritt zwischengeschaltet: Der PHP-Parser lesen die Datei, ersetzen jeden PHP-Block durch seine Ausgabe und sendet erst danach das Ergebnis an den Browser. Im Quelltext im Browser ist dadurch nie PHP zu sehen, sondern immer fertiges HTML. flowchart TD
A[Browser fragt .php an] --> B[Webserver]
B --> C[PHP-Parser]
C --> D{PHP-Block?}
D -- ja --> E[Code ausfuehren]
E --> F[HTML zusammenbauen]
D -- nein --> F
F --> G[Fertiges HTML]
G --> B
B --> A
Damit dieser Mechanismus funktioniert, müssen Sie nur zwei Dinge sicherstellen: Die Datei endet auf .php und liegt in einem Verzeichnis, das vom Webserver mit PHP ausgeführt wird. Welche PHP-Tags Sie wirklich nutzen solltestPHP-Code muss in einer HTML-Datei eindeutig markiert sein, damit der Parser ihn erkennt. Dafür gibt es drei Schreibweisen, von denen heute nur eine die richtige Wahl ist. Die einzige Variante, die Sie brauchenDie Standardform setzen sich aus <?php und ?> zusammen. Diese Form funktioniert auf jedem Server und ist seit den ersten PHP-Versionen stabil: <?php
echo 'Hallo Welt';
?>
Beim Aufruf wird der Browser nur das Wort „Hallo Welt“ sehen. Den Tag selbst sieht er nie. Wenn die Datei nur PHP enthältBei reinen PHP-Dateien, also Dateien ohne HTML drumherum, ist es Konvention, das schließende ?> wegzulassen. Das verhindert ein häufiges Problem mit unsichtbaren Leerzeichen am Dateiende, die später zu „Headers already sent“-Fehlern führen können. <?php
declare(strict_types=1);
function begruessung(string $name): string
{
return 'Hallo, ' . $name . '!';
}
echo begruessung('PHP-Space');
Was Sie nicht mehr nutzen solltestEs gibt noch zwei alte Schreibweisen, die Sie in alten Tutorials oder uralten Codebasen finden. Beide sind heute eine schlechte Idee: <? ... ?> (Short Tags). Funktioniert nur, wenn short_open_tag in der php.ini aktiv ist. Auf vielen Webhostern ist sie deaktiviert, Ihr Code würde dort einfach im Quelltext landen.<% ... %> (ASP-Style). Wurde mit PHP 7.0 komplett entfernt und funktioniert nirgends mehr.
Halten Sie sich an <?php ?>, dann läuft Ihr Code überall, wo PHP überhaupt installiert ist. PHP und HTML mischenIm Alltag steht PHP selten allein. Meistens ist es in HTML eingebettet, etwa um eine dynamische Begrüßung anzuzeigen oder um Inhalte aus einer Datenbank in eine Tabelle zu schreiben. Sie können PHP-Blöcke beliebig oft in eine Datei einsetzen. <!DOCTYPE html>
<html lang="de">
<head><meta charset="utf-8"><title>Mein erstes PHP</title></head>
<body>
<h1>Hallo PHP-Space</h1>
<p>Es ist gerade <?php echo date('H:i'); ?> Uhr.</p>
<ul>
<?php
$sprachen = ['PHP', 'JavaScript', 'Go', 'Python'];
foreach ($sprachen as $sprache) {
echo '<li>' . htmlspecialchars($sprache) . '</li>';
}
?>
</ul>
</body>
</html>
Wichtig dabei: Wer Daten in HTML ausgibt, sollte sie immer durch htmlspecialchars() schicken. Das verhindert, dass Sonderzeichen den HTML-Code zerstören oder Angreifer Schadcode einschleusen. Speichern, ablegen, aufrufenEine PHP-Datei muss eine bestimmte Endung haben und an der richtigen Stellen Sie liegen, sonst wird sie vom Server entweder ignoriert oder als reiner Text angezeigt. - Endung
.php. Eine Datei kontakt.html wird als HTML behandelt, eine Datei kontakt.php wird vom Parser ausgewertet. - Im Webserver-Verzeichnis. Bei XAMPP ist das standardmäßig
htdocs, bei Docker das in der Konfiguration festgelegte Volume. - Aufruf über den Webserver, nicht per Doppelklick.
http://localhost/kontakt.php funktioniert. file:///.../kontakt.php nicht.
Ihr erstes komplettes SkriptHier ist ein vollständiges Beispiel, das alle bisher genannten Punkte vereint. Speichern Sie die Datei als begruessung.php im htdocs-Verzeichnis und rufe sie im Browser auf. <?php
declare(strict_types=1);
$name = 'PHP-Space';
$jetzt = date('H:i');
if ((int) date('H') < 12) {
$gruss = 'Guten Morgen';
} elseif ((int) date('H') < 18) {
$gruss = 'Guten Tag';
} else {
$gruss = 'Guten Abend';
}
?>
<!DOCTYPE html>
<html lang="de">
<head><meta charset="utf-8"><title>Begruessung</title></head>
<body>
<h1><?= htmlspecialchars($gruss) ?>, <?= htmlspecialchars($name) ?>!</h1>
<p>Es ist <?= $jetzt ?> Uhr.</p>
</body>
</html>
An diesem Beispiel sehen Sie gleich mehrere wichtige Bausteine: Eine Variable, die date()-Funktion, die if-Anweisung mit elseif und die kurze Echo-Schreibweise <?= ?>, die einfach „<?php echo ?>“ abkürzt und seit PHP 5.4 immer aktiv ist. Häufige Stolpersteine am AnfangWenn das erste Skript nicht läuft, liegt es fast immer an einer dieser Kleinigkeiten: - Der Browser zeigt nur den Quelltext. Dann läuft die Datei nicht durch den PHP-Parser. Prüfe Endung und Aufruf-URL.
- Eine weiße Seite. Schalte das Error-Reporting ein und schau in die Logs. Hilfe dazu liefert der Artikel zu
error_reporting(). - „Headers already sent“. Meist ein Leerzeichen oder eine Zeile vor dem ersten
<?php. Datei ohne BOM speichern und das schließende ?> in reinen PHP-Dateien weglassen. - Variablen sind nicht gefüllt. Sieh sich mit
var_dump() an, was wirklich drinsteht.
Welche Schritte als nächstes lohnenMit dem, was Sie jetzt wissen, können Sie den nächsten Schritt gehen. Diese Themen bauen logisch aufeinander auf: - Variablen verstehen, denn ohne sie geht in PHP nichts.
- Mit
echo und print Inhalte gezielt ausgeben. - Datum und Uhrzeit mit
date() formatieren. - Mit der
if-Anweisung Bedingungen prüfen. - Mit Schleifen wie
for, while und foreach Wiederholungen elegant lösen. - Eigene Funktionen definieren.
- Mit Arrays Listen verwalten.
- Daten aus Formularen entgegennehmen.
Klassisches Beispiel zum VergleichDamit Sie auch alte Schreibweisen wiedererkennen, hier das ursprüngliche Einstiegsbeispiel dieser Seite. Es funktioniert weiterhin, ist aber nicht mehr das, was man heute schreiben würde: <?php
$test = "Das ist unser erster PHP-Befehl!";
echo $test;
?>
Auffällig: keine Typdeklaration, kein declare(strict_types=1), einfache Anführungszeichen wären ausreichend gewesen, das schließende ?> ist in einer reinen PHP-Datei unnötig. Für ein erstes Lebenszeichen reicht es trotzdem aus. Wer von hier aus tiefer einsteigen will, findet in unserer Tutorial-Übersicht hunderte einzelne Tutorials zu spezifischen Funktionen. Die offizielle Dokumentation liegt unter php.net/manual/de.
weiter zum nächsten Kapitel:
PHP Variablen und ihre Verwendung
|