🚀 Was ist PHP?
Eine etablierte serverseitige Programmiersprache für dynamische Webanwendungen. Von den Grundlagen bis zu fortgeschrittenen Konzepten – alles in einem Leitfaden.
🛠️ Empfohlene Tools für PHP-Entwickler
Diese Tools nutze ich selbst – sie helfen Ihnen, Ihre PHP-Projekte professionell umzusetzen und zu vermarkten.
⚡ ExeOutput for PHP
PHP-Anwendungen in eigenständige Windows-EXE-Dateien kompilieren – perfekt für den professionellen Vertrieb.
Jetzt ansehen →📄 HTML Executable
HTML-Dateien und Websites als eigenständige Windows-EXE-Dateien kompilieren.
Jetzt ansehen →🔒 XLS Padlock
Excel-Arbeitsmappen als EXE kompilieren und schützen – perfekt für den professionellen Vertrieb.
Jetzt ansehen →🐍 VBA Padlock
VBA-Code kompilieren und Office-Lösungen verkaufen – ohne Source-Code-Weitergabe.
Jetzt ansehen →📦 Paquet Builder
Professionelle Windows-Installationsprogramme für Ihre Anwendungen erstellen.
Jetzt ansehen →* Affiliate-Links: Bei einem Kauf über diese Links erhalten wir eine kleine Provision – für Sie entstehen keine zusätzlichen Kosten.
1. Einführung: Was ist PHP?
PHP (rekursive Abkürzung für "PHP: Hypertext Preprocessor") ist eine serverseitige Skriptsprache, die speziell für die Web-Entwicklung entwickelt wurde. Anders als JavaScript, das im Browser des Besuchers läuft, wird PHP auf dem Server ausgeführt – der Besucher sieht nur das fertige Ergebnis.
📊 PHP im Überblick
| Merkmal | Einordnung |
|---|---|
| Aktuelle Hauptversion | PHP 8.5 (veröffentlicht im November 2025) |
| Aktueller Stand dieses Leitfadens | PHP 8.5.8, veröffentlicht im Juli 2026 |
| Bekannte PHP-Projekte | WordPress, Drupal, Laravel, Symfony, Magento und Shopware |
| Typische Einsatzbereiche | Webseiten, APIs, Kommandozeilenprogramme und Hintergrundprozesse |
| Lizenz und Plattformen | Open Source; verfügbar unter anderem für Linux, Windows und macOS |
🧩 Wofür wird PHP eingesetzt?
- ✅ Dynamische Webseiten – Inhalte, die sich für jeden Besucher ändern
- ✅ Content-Management-Systeme – WordPress, Joomla, Drupal
- ✅ Webshops – Magento, WooCommerce, Shopware
- ✅ Datenbankanwendungen – Benutzerverwaltung, Bestellsysteme
- ✅ APIs & Webservices – REST-APIs für mobile Apps
- ✅ Formulare & Kontaktseiten – Verarbeitung von Benutzereingaben
- ✅ Login-Systeme – Benutzerregistrierung und Authentifizierung
2. Die Geschichte von PHP
PHP wurde 1994 von Rasmus Lerdorf entwickelt – ursprünglich als kleine Sammlung von Perl-Skripten, um seine eigene Homepage zu verwalten. Aus dem Hobbyprojekt wurde schnell eine der erfolgreichsten Programmiersprachen der Welt.
📅 Zeitleiste der PHP-Entwicklung
| Jahr | Version | Bedeutung |
|---|---|---|
| 1994/1995 | Personal Home Page Tools | Rasmus Lerdorf entwickelt die ersten Werkzeuge; 1995 werden sie öffentlich angekündigt. |
| 1998 | PHP 3.0 | Neu entwickelte Sprachversion und wichtige Grundlage für die breite Verbreitung. |
| 2000 | PHP 4.0 | Die Zend Engine wird zur neuen Ausführungsbasis. |
| 2004 | PHP 5.0 | Deutlich erweitertes Objektmodell und neue Sprachfunktionen. |
| 2015 | PHP 7.0 | Große Verbesserungen bei Laufzeit, Speicherbedarf und Typsystem. |
| 2020 | PHP 8.0 | JIT, Union Types, Attribute, benannte Argumente und match. |
| 2024 | PHP 8.4 | Property Hooks, asymmetrische Sichtbarkeit und eine modernisierte DOM-API. |
| 2025 | PHP 8.5 | URI-Erweiterung, Pipe-Operator und weitere Sprachverbesserungen. |
3. Wie funktioniert PHP?
PHP-Code wird auf dem Server ausgeführt. Bei einem Seitenaufruf verarbeitet die Anwendung die Anfrage und sendet anschließend eine fertige Antwort an den Browser.
🔁 Der Ablauf im Detail
- Zunächst ruft der Browser eine URL auf, zum Beispiel
https://beispiel.de/produkte. - Anschließend verarbeitet der Webserver die Anfrage und übergibt sie entsprechend seiner Konfiguration an die PHP-Laufzeit.
- Die PHP-Anwendung führt ihre Logik aus und prüft bei Bedarf Sitzung, Eingaben und Berechtigungen.
- PHP greift gegebenenfalls auf Datenbanken oder Dienste zu und erstellt eine Antwort.
- Der Server sendet die Antwort, beispielsweise als HTML oder JSON.
- Der Browser verarbeitet die Antwort und stellt den Inhalt dar.
Der Browser erhält die erzeugte Antwort, beispielsweise HTML oder JSON – nicht den serverseitigen PHP-Quellcode.
4. Erste Schritte mit PHP
Um PHP auszuprobieren, brauchen Sie einen Webserver mit PHP-Unterstützung.
Für den lokalen Einstieg können Sie ein fertiges Entwicklungspaket, eine Container-Umgebung
oder eine direkt installierte, unterstützte PHP-Version verwenden. Prüfen Sie anschließend im Terminal
mit php --version, welche Version tatsächlich ausgeführt wird.
📝 Ihr erstes PHP-Skript
<!DOCTYPE html>
<html>
<head>
<title>Mein erstes PHP-Skript</title>
</head>
<body>
<?php
// Das ist ein Kommentar – er wird nicht ausgeführt
echo "<h1>Hallo Welt! 👋</h1>";
echo "<p>Mein erster PHP-Code läuft!</p>";
?>
<p>Das ist normaler HTML-Code.</p>
</body>
</html>
🔍 Erklärung Zeile für Zeile
<?php– öffnet den PHP-Block//– einzeiliger Kommentar (wird ignoriert)echo "Hallo Welt!";– gibt den Text "Hallo Welt!" aus?>– schließt den PHP-Block- Alles außerhalb von
<?php ... ?>ist normaler HTML-Code
Hallo Welt! 👋
Mein erster PHP-Code läuft!
Das ist normaler HTML-Code.
?> üblicherweise weggelassen.
5. Variablen & Datentypen
Variablen sind Behälter für Daten. In PHP beginnen sie immer mit einem Dollarzeichen ($).
📝 Beispiele für Variablen
<?php
// Text (String)
$name = "Anna";
$stadt = "Berlin";
// Ganze Zahlen (Integer)
$alter = 28;
$anzahl = 5;
// Kommazahlen (Float)
$preis = 19.99;
// Wahr/Falsch (Boolean)
$ist_aktiv = true;
$ist_geloescht = false;
// Ausgabe
echo "Name: " . $name . "<br>";
echo "Alter: " . $alter . "<br>";
echo "Preis: " . $preis . " €<br>";
?>
Name: Anna
Alter: 28
Preis: 19.99 €
📊 Die wichtigsten Datentypen in PHP
| Typ | Beschreibung | Beispiel |
|---|---|---|
string |
Text / Zeichenkette | "Hallo Welt" |
int |
Ganze Zahl | 42 |
float |
Kommazahl | 3.14 |
bool |
Wahr / Falsch | true / false |
array |
Liste / Sammlung von Werten | ["Apfel", "Banane", "Kirsche"] |
null |
Kein Wert / leer | null |
🔗 Strings verknüpfen (Konkatenation)
Strings werden mit einem Punkt (.) verbunden – nicht mit einem Pluszeichen (+).
<?php
$vorname = "Anna";
$nachname = "Schmidt";
$vollname = $vorname . " " . $nachname;
echo "Vollständiger Name: " . $vollname;
// Ausgabe: Vollständiger Name: Anna Schmidt
?>
echo "Hallo $vorname, schön dich zu sehen!";
6. Bedingungen & Schleifen
Mit Bedingungen können Sie Entscheidungen treffen. Mit Schleifen können Sie Code wiederholen.
🔀 if / else – Entscheidungen treffen
<?php
$alter = 16;
if ($alter >= 18) {
echo "Sie sind volljährig – willkommen!";
} else {
echo "Sie sind noch minderjährig.";
}
// Ausgabe: Sie sind noch minderjährig.
// Mehrere Bedingungen mit elseif
$note = 2;
if ($note == 1) {
echo "Sehr gut!";
} elseif ($note == 2) {
echo "Gut!";
} elseif ($note == 3) {
echo "Befriedigend";
} else {
echo "Nicht bestanden";
}
// Ausgabe: Gut!
?>
🔄 for-Schleife – Wiederholungen
<?php
// Zahlen von 1 bis 5 ausgeben
for ($i = 1; $i <= 5; $i++) {
echo "Zahl: " . $i . "<br>";
}
/* Ausgabe:
Zahl: 1
Zahl: 2
Zahl: 3
Zahl: 4
Zahl: 5
*/
?>
🔄 foreach – Arrays durchlaufen
<?php
$farben = ["Rot", "Grün", "Blau", "Gelb"];
foreach ($farben as $farbe) {
echo "Farbe: " . $farbe . "<br>";
}
/* Ausgabe:
Farbe: Rot
Farbe: Grün
Farbe: Blau
Farbe: Gelb
*/
?>
foreach ist die einfachste Art, Arrays
zu durchlaufen – keine Zählervariable nötig!
7. Funktionen selbst schreiben
Funktionen sind wiederverwendbare Code-Blöcke. Sie machen Ihren Code übersichtlicher und wiederverwendbar.
📝 Eigene Funktion erstellen
<?php
// Eine einfache Funktion
function begruessung($name) {
return "Hallo " . $name . "!";
}
// Funktion aufrufen
echo begruessung("Anna"); // Ausgabe: Hallo Anna!
echo begruessung("Ben"); // Ausgabe: Hallo Ben!
// Funktion mit mehreren Parametern
function summe($a, $b) {
return $a + $b;
}
echo summe(5, 3); // Ausgabe: 8
?>
📦 Vordefinierte Funktionen in PHP
| Funktion | Beschreibung | Beispiel |
|---|---|---|
strlen() |
Länge eines Strings in Bytes | strlen("Hallo") → 5 |
strtoupper() |
Alles in Großbuchstaben | strtoupper("hallo") → "HALLO" |
strtolower() |
Alles in Kleinbuchstaben | strtolower("HALLO") → "hallo" |
count() |
Anzahl der Elemente in einem Array | count(["a","b","c"]) → 3 |
date() |
Datum oder Uhrzeit formatieren | date("d.m.Y") |
random_int() |
Kryptografisch sichere Ganzzahl | random_int(1, 10) |
strlen() zählt Bytes. Für die Anzahl von Zeichen in UTF-8-Texten verwenden Sie – sofern die Erweiterung verfügbar ist – mb_strlen().
8. PHP & Datenbanken (MySQL)
PHP unterstützt über Erweiterungen verschiedene Datenbanken. Eine verbreitete Kombination ist PHP mit MySQL oder MariaDB. PDO stellt dafür eine einheitliche Schnittstelle bereit.
📝 Datenbankverbindung mit PDO (empfohlen)
<?php
// Zugangsdaten in der Praxis aus sicherer Konfiguration laden
$host = "localhost";
$dbname = "meine_datenbank";
$user = "app_benutzer";
$password = "GEHEIMNIS_NICHT_IM_REPOSITORY";
$dsn = "mysql:host=$host;dbname=$dbname;charset=utf8mb4";
$optionen = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
PDO::ATTR_EMULATE_PREPARES => false,
];
try {
$pdo = new PDO($dsn, $user, $password, $optionen);
} catch (PDOException $e) {
error_log($e->getMessage());
http_response_code(500);
exit("Die Datenbank ist vorübergehend nicht erreichbar.");
}
?>
📝 Daten aus einer Tabelle abfragen
<?php
// ... Verbindung aus vorherigem Beispiel ...
// Daten abfragen
$sql = "SELECT * FROM benutzer WHERE stadt = :stadt";
$stmt = $pdo->prepare($sql);
$stmt->execute(['stadt' => 'Berlin']);
$benutzer = $stmt->fetchAll();
foreach ($benutzer as $b) {
$name = htmlspecialchars(
$b['name'],
ENT_QUOTES | ENT_SUBSTITUTE,
'UTF-8'
);
$email = htmlspecialchars(
$b['email'],
ENT_QUOTES | ENT_SUBSTITUTE,
'UTF-8'
);
echo "Name: $name<br>";
echo "E-Mail: $email<br><br>";
}
?>
9. Fortgeschrittene Konzepte
🧩 Objektorientierte Programmierung (OOP)
Modernes PHP bietet Klassen, Interfaces, Traits, Sichtbarkeiten, Typdeklarationen und weitere Werkzeuge für objektorientierte Programmierung. OOP kann größere Anwendungen strukturieren, ist aber kein Ersatz für ein verständliches fachliches Design.
<?php
declare(strict_types=1);
final class Auto
{
public function __construct(
public readonly string $marke,
public readonly string $modell,
public readonly int $ps,
) {
}
public function beschreibung(): string
{
return "$this->marke $this->modell mit $this->ps PS";
}
}
$meinAuto = new Auto("BMW", "3er", 184);
echo $meinAuto->beschreibung();
// Ausgabe: BMW 3er mit 184 PS
🔒 Fehlerbehandlung mit try/catch
<?php
try {
$ergebnis = 10 / 0; // Fehler: Division durch Null
} catch (DivisionByZeroError $e) {
error_log($e->getMessage());
echo "Die Berechnung konnte nicht ausgeführt werden.";
} finally {
// Aufräumarbeiten, falls erforderlich
}
10. Praxis-Beispiele
📧 Beispiel 1: Kontaktformular
<?php
session_start();
$_SESSION['csrf_token'] ??= bin2hex(random_bytes(32));
$fehler = [];
$erfolg = false;
function e(string $wert): string
{
return htmlspecialchars(
$wert,
ENT_QUOTES | ENT_SUBSTITUTE,
'UTF-8'
);
}
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$token = (string) ($_POST['csrf_token'] ?? '');
$name = trim((string) ($_POST['name'] ?? ''));
$emailEingabe = trim((string) ($_POST['email'] ?? ''));
$nachricht = trim((string) ($_POST['nachricht'] ?? ''));
$email = filter_var($emailEingabe, FILTER_VALIDATE_EMAIL);
if (!hash_equals($_SESSION['csrf_token'], $token)) {
$fehler[] = 'Die Anfrage ist abgelaufen. Bitte erneut versuchen.';
}
if ($name === '' || $email === false || $nachricht === '') {
$fehler[] = 'Bitte alle Felder korrekt ausfüllen.';
}
if ($fehler === []) {
// In Produktion: gepflegte Mailer-Bibliothek verwenden.
// Absender fest konfigurieren, validierte Adresse als Reply-To.
$erfolg = true;
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Kontakt</title>
</head>
<body>
<?php foreach ($fehler as $meldung): ?>
<p class="fehler"><?= e($meldung) ?></p>
<?php endforeach; ?>
<?php if ($erfolg): ?>
<p class="erfolg">Ihre Nachricht wurde angenommen.</p>
<?php endif; ?>
<form method="post">
<input type="hidden" name="csrf_token"
value="<?= e($_SESSION['csrf_token']) ?>">
<label for="name">Name</label>
<input id="name" type="text" name="name" required maxlength="100">
<label for="email">E-Mail</label>
<input id="email" type="email" name="email" required maxlength="254">
<label for="nachricht">Nachricht</label>
<textarea id="nachricht" name="nachricht" required maxlength="5000"></textarea>
<button type="submit">Absenden</button>
</form>
</body>
</html>
📊 Beispiel 2: Zufälliges Zitat
<?php
$zitate = [
"Code spricht, wenn der Entwickler schweigt.",
"PHP ist die Sprache, die das Web zusammenhält.",
"Ein guter Programmierer ist ein fauler Programmierer.",
"Debugging ist wie Detektivarbeit – nur der Täter ist Ihr eigener Code."
];
$zufall = random_int(0, count($zitate) - 1);
$zitat = htmlspecialchars(
$zitate[$zufall],
ENT_QUOTES | ENT_SUBSTITUTE,
'UTF-8'
);
echo "<blockquote>$zitat</blockquote>";
?>
11. Tipps & Best Practices
📋 PHP-Code-Standards (PSR)
- PSR-1: Grundlegende Code-Standards
- PSR-12: Aktueller erweiterter Stilstandard; ersetzt PSR-2
- PSR-4: Autoloading-Standard für Klassen
Diese Standards werden von der PHP-FIG (Framework Interop Group) veröffentlicht. Ein Projekt sollte die für seinen Technologie-Stack vereinbarten Standards konsequent anwenden; WordPress besitzt beispielsweise zusätzlich eigene Coding Standards.
12. Weiterführende Ressourcen
Nutzen Sie für Versions-, Syntax- und Sicherheitsfragen möglichst die aktuelle Primärdokumentation. Blogbeiträge und Bücher können beim Lernen helfen, veralten jedoch schneller.
13. PHP-Lern-Checkliste
Markieren Sie die Themen, die Sie bereits praktisch in einem eigenen Testprojekt angewendet haben. Die Auswahl bleibt nur während dieses Seitenaufrufs erhalten.
0 von 10 Punkten erledigt
14. Häufige Fragen zu PHP
Ist PHP nur für Webseiten geeignet?
Nein. PHP kann auch Kommandozeilenprogramme, Hintergrundaufgaben, APIs und verschiedene Automatisierungen ausführen. Der Schwerpunkt bleibt die serverseitige Webentwicklung.
Welche PHP-Version sollte ich verwenden?
Verwenden Sie eine von PHP.net unterstützte Version, die Ihr Framework, CMS und Hosting freigeben. Installieren Sie aktuelle Patch-Versionen nach kontrollierten Tests.
Ist PHP-Code im Browser sichtbar?
Bei korrekter Serverkonfiguration sieht der Browser nur die erzeugte Antwort. Öffentlich erreichbare Backups, Repositorys oder Konfigurationsfehler können Quelltext dennoch offenlegen.
Reicht htmlspecialchars() für jede Sicherheit?
Nein. Die Funktion hilft bei HTML-Textausgabe. SQL benötigt Parameterbindung; URLs, JavaScript und andere Kontexte benötigen jeweils passende Behandlung. Zusätzlich bleiben Berechtigungen, CSRF-Schutz und sichere Sessions erforderlich.
PDO oder MySQLi?
Beide Schnittstellen unterstützen sichere parametrisierte Abfragen. PDO bietet eine einheitliche API für mehrere Datenbanksysteme; MySQLi konzentriert sich auf MySQL. Entscheidend ist die korrekte, konsequente Nutzung.
Brauche ich sofort ein Framework?
Für die Grundlagen ist kleines, übersichtliches PHP hilfreich. Bei produktiven Anwendungen vermeiden gepflegte Framework-Komponenten viel fehleranfälligen Eigenbau, insbesondere bei Routing, Validierung, Authentifizierung und Schutzmechanismen.