PHP Basics - Die Grundlagen
Von "Was ist PHP?" bis zu deinem ersten funktionierenden Code. Easy, verständlich und sicher.
Was ist PHP überhaupt?
PHP steht für "Hypertext Preprocessor" (ja, die Abkürzung macht rekursiv Sinn... oder auch nicht 😄). Es ist eine serverseitige Programmiersprache, die speziell für die Webentwicklung entwickelt wurde.
Das bedeutet, dass PHP-Code auf dem Server ausgeführt wird, bevor die Seite an den Browser geschickt wird. Der Browser sieht nur das fertige HTML-Ergebnis - nicht deinen PHP-Code. Das ist ein großer Unterschied zu JavaScript, das im Browser läuft.
Was kannst du mit PHP machen?
- Dynamische Webseiten erstellen (Inhalte ändern sich je nach Nutzer, Zeit, Daten...)
- Formulare verarbeiten (Kontaktformulare, Login-Systeme, etc.)
- Mit Datenbanken arbeiten (Daten speichern und abrufen)
- Dateien hochladen und verwalten
- Sessions und Cookies verwalten (Nutzer eingeloggt halten)
- APIs erstellen und nutzen
PHP kann sehr mächtig sein - aber auch gefährlich, wenn du Sicherheitsaspekte ignorierst. Wir werden in diesem Tutorial die sichere Variante lernen, auch wenn das manchmal etwas mehr Code bedeutet. In einem separaten Tutorial gehen wir dann tiefer auf PHP Security ein.
PHP zum Laufen bringen
Um PHP zu nutzen, brauchst du einen lokalen Server. PHP-Dateien kannst du nicht einfach wie HTML-Dateien im Browser öffnen - der Server muss den PHP-Code erst verarbeiten.
Optionen für lokale Entwicklung
Option 1: XAMPP (empfohlen für Anfänger)
- Download:
apachefriends.org - Beinhaltet Apache (Webserver), PHP und MySQL (Datenbank)
- Einfach zu installieren und zu nutzen
- Läuft auf Windows, Mac und Linux
Option 2: MAMP (für Mac)
- Download:
mamp.info - Ähnlich wie XAMPP, speziell für Mac optimiert
Option 3: PHP Built-in Server (für Quick Tests)
Wenn du PHP bereits installiert hast, kannst du einen einfachen Server starten:
# Im Terminal/Kommandozeile:
cd /pfad/zu/deinem/projekt
php -S localhost:8000
Dann kannst du über http://localhost:8000 auf deine Dateien zugreifen.
- Bei XAMPP: im Ordner
htdocs(z.B.C:\xampp\htdocs\mein-projekt) - Bei MAMP: im Ordner
htdocsinnerhalb des MAMP-Verzeichnisses - Dann erreichst du deine Datei über:
http://localhost/mein-projekt/datei.php
Dein erstes PHP-Programm
Lass uns mit dem klassischen "Hello World" starten!
PHP-Tags: Der Anfang und das Ende
PHP-Code wird in speziellen Tags geschrieben:
<?php
// Dein PHP-Code hier
?>
<?php- Öffnet PHP-Code?>- Schließt PHP-Code (am Dateiende oft weggelassen)- Alles außerhalb dieser Tags wird als HTML behandelt
- Mit
//kannst du einen Kommentar einfügen
Hello World Beispiel
Erstelle eine Datei hello.php:
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Mein erstes PHP-Programm</title>
</head>
<body>
<h1>
<?php
echo "Hello World!";
?>
</h1>
<p>Das aktuelle Datum ist:
<?php
echo date("d.m.Y");
?>
</p>
</body>
</html>
echogibt Text oder Variablen aus- Jede PHP-Anweisung endet mit einem Semikolon
; date("d.m.Y")gibt das aktuelle Datum formatiert aus- Du kannst PHP-Code überall in dein HTML einbetten
Wenn du Nutzereingaben ausgibst (z.B. aus Formularen), nutze NIEMALS
einfach
echo! Verwende stattdessen htmlspecialchars() - mehr dazu
gleich.
Kommentare in PHP
Kommentare sind super wichtig, um deinen Code zu dokumentieren:
<?php
// Das ist ein einzeiliger Kommentar
# Das ist auch ein einzeiliger Kommentar (seltener verwendet)
/*
Das ist ein mehrzeiliger Kommentar
Er kann über mehrere Zeilen gehen
Praktisch für längere Erklärungen
*/
echo "Dieser Code wird ausgeführt"; // Kommentar am Ende der Zeile
?>
Variablen in PHP
Variablen in PHP beginnen immer mit einem Dollarzeichen $.
Variablen erstellen
<?php
// Variablen deklarieren und zuweisen
$name = "Leo";
$alter = 16;
$preis = 19.99;
$istAktiv = true;
// Variablen ausgeben
echo $name; // Gibt "Leo" aus
echo "Hallo, " . $name . "!"; // Gibt "Hallo, Leo!" aus
?>
- Variablennamen beginnen immer mit
$ - Danach muss ein Buchstabe oder Unterstrich kommen (keine Zahl!)
- Dürfen Buchstaben, Zahlen und Unterstriche enthalten
- Sind case-sensitive:
$name≠$Name - Keine Leerzeichen erlaubt
Strings zusammenfügen (Concatenation)
In PHP verwendest du den Punkt . zum Verketten von Strings:
<?php
$vorname = "Leo";
$nachname = "Müller";
// Mit Punkt verketten
$vollname = $vorname . " " . $nachname;
echo $vollname; // Gibt "Leo Müller" aus
// Alternative: Variablen in doppelten Anführungszeichen
echo "Hallo, $vorname $nachname!"; // Gibt "Hallo, Leo Müller!" aus
// Bei einfachen Anführungszeichen funktioniert das NICHT
echo 'Hallo, $vorname!'; // Gibt wörtlich "Hallo, $vorname!" aus
?>
Datentypen
PHP ist dynamisch typisiert - das bedeutet, du musst den Typ nicht angeben. PHP erkennt ihn automatisch.
<?php
// String (Text)
$text = "Das ist ein String";
// Integer (Ganzzahl)
$zahl = 42;
// Float / Double (Dezimalzahl)
$preis = 19.99;
// Boolean (Wahr/Falsch)
$istWahr = true;
$istFalsch = false;
// Array (Liste von Werten)
$farben = ["rot", "grün", "blau"];
// NULL (kein Wert)
$nichts = null;
// Den Typ einer Variable prüfen
var_dump($zahl); // Zeigt: int(42)
?>
Type Juggling (Automatische Typumwandlung)
PHP wandelt Typen automatisch um, wenn nötig:
<?php
$zahl = "5"; // String
$ergebnis = $zahl + 3; // PHP wandelt "5" automatisch in 5 um
echo $ergebnis; // Gibt 8 aus (als Integer)
// Das kann manchmal zu unerwartetem Verhalten führen!
$text = "10 Äpfel";
echo $text + 5; // Gibt 15 aus (PHP nimmt die 10 am Anfang)
?>
Die automatische Typumwandlung kann praktisch sein, aber auch zu Bugs führen. Achte darauf, welche Typen deine Variablen haben, besonders bei Vergleichen!
Arrays - Listen von Werten
Arrays sind super praktisch, um mehrere Werte in einer Variable zu speichern.
Einfaches Array (numerisch indiziert)
<?php
// Array erstellen
$farben = ["rot", "grün", "blau"];
// Index: 0 1 2
// Wert: "rot" "grün" "blau"
// Alternative (ältere Syntax)
$farben = array("rot", "grün", "blau");
// Auf Elemente zugreifen (Index beginnt bei 0)
echo $farben[0]; // Gibt "rot" aus
echo $farben[1]; // Gibt "grün" aus
// Element hinzufügen
$farben[] = "gelb";
// Anzahl der Elemente
echo count($farben); // Gibt 4 aus
?>
In der Programmierung beginnt man beim Zählen fast immer bei 0 statt bei 1
Assoziatives Array (mit benannten Keys)
Statt Zahlen kannst du auch eigene Schlüssel (Keys) verwenden:
<?php
// Assoziatives Array
$person = [
"name" => "Leo",
"alter" => 18,
"stadt" => "Berlin"
];
// Zugriff über Keys
echo $person["name"]; // Gibt "Leo" aus
echo $person["alter"]; // Gibt 18 aus
// Neues Key-Value-Paar hinzufügen
$person["beruf"] = "Webentwickler";
?>
Mehrdimensionale Arrays
Arrays können auch andere Arrays enthalten:
<?php
$personen = [
[
"name" => "Leo",
"alter" => 18
],
[
"name" => "Andrea",
"alter" => 16
]
];
// Zugriff auf verschachtelte Werte
echo $personen[0]["name"]; // Gibt "Leo" aus
echo $personen[1]["alter"]; // Gibt 16 aus
?>
Array durchlaufen
<?php
$farben = ["rot", "grün", "blau"];
// Mit foreach durchlaufen
foreach ($farben as $farbe) {
echo $farbe . "<br>";
}
// Bei assoziativen Arrays: Key und Value
$person = ["name" => "Leo", "alter" => 18];
foreach ($person as $key => $value) {
echo "$key: $value<br>";
}
// Ausgabe:
// name: Leo
// alter: 18
?>
Operatoren
Arithmetische Operatoren
<?php
$a = 10;
$b = 3;
echo $a + $b; // Addition: 13
echo $a - $b; // Subtraktion: 7
echo $a * $b; // Multiplikation: 30
echo $a / $b; // Division: 3.333...
echo $a % $b; // Modulo (Rest): 1
echo $a ** $b; // Potenz: 1000 (10³)
?>
Vergleichsoperatoren
<?php
$a = 5;
$b = "5";
// Gleich (Wert)
var_dump($a == $b); // true (5 ist gleich "5" als Wert)
// Identisch (Wert UND Typ)
var_dump($a === $b); // false (5 ist nicht identisch mit "5")
// Ungleich
var_dump($a != $b); // false
var_dump($a !== $b); // true (verschiedene Typen)
// Größer/Kleiner
var_dump($a > 3); // true
var_dump($a < 10); // true
var_dump($a >= 5); // true
var_dump($a <= 4); // false
?>
== vs.
===
==vergleicht nur den Wert (mit Typumwandlung)===vergleicht Wert UND Typ (strenger, sicherer)- Best Practice: Nutze immer
===und!==
Logische Operatoren
<?php
$a = true;
$b = false;
// UND (AND)
var_dump($a && $b); // false (beide müssen true sein)
// ODER (OR)
var_dump($a || $b); // true (einer muss true sein)
// NICHT (NOT)
var_dump(!$a); // false (kehrt um)
?>
String-Operatoren
<?php
$vorname = "Leo";
$nachname = "Müller";
// Verkettung mit Punkt
$name = $vorname . " " . $nachname;
// Verkettung mit Zuweisung
$text = "Hallo";
$text .= " Welt"; // Entspricht: $text = $text . " Welt"
echo $text; // Gibt "Hallo Welt" aus
?>
Bedingungen: if, else, elseif
Mit Bedingungen kannst du deinen Code unterschiedlich ausführen, je nachdem, ob etwas wahr oder falsch ist.
Einfaches if
<?php
$alter = 18;
if ($alter >= 18) {
echo "Du bist volljährig!";
}
?>
if-else
<?php
$alter = 16;
if ($alter >= 18) {
echo "Du bist volljährig!";
} else {
echo "Du bist noch minderjährig.";
}
?>
if-elseif-else
<?php
$note = 85;
if ($note >= 90) {
echo "Sehr gut!";
} elseif ($note >= 80) {
echo "Gut!";
} elseif ($note >= 70) {
echo "Befriedigend.";
} else {
echo "Nicht bestanden.";
}
?>
Switch-Case (für viele Bedingungen)
<?php
$tag = "Montag";
switch ($tag) {
case "Montag":
echo "Wochenstart!";
break;
case "Freitag":
echo "Fast Wochenende!";
break;
case "Samstag":
case "Sonntag":
echo "Wochenende!";
break;
default:
echo "Ein normaler Wochentag.";
}
?>
Das break in jedem case ist wichtig! Ohne break
werden
auch die folgenden Cases ausgeführt (sogenannter "Fall-Through"). Das kann manchmal
nützlich
sein, ist aber meistens ein Bug.
Schleifen: Code wiederholen
Schleifen wiederholen Code automatisch - super praktisch!
while-Schleife
Führt Code aus, solange eine Bedingung wahr ist:
<?php
$zahl = 1;
while ($zahl <= 5) {
echo "Durchlauf: $zahl<br>";
$zahl++; // Erhöht $zahl um 1
}
// Ausgabe: Durchlauf 1, 2, 3, 4, 5
?>
do-while-Schleife
Wie while, aber der Code wird mindestens einmal ausgeführt:
<?php
$zahl = 1;
do {
echo "Durchlauf: $zahl<br>";
$zahl++;
} while ($zahl <= 5);
?>
for-Schleife
Wenn du genau weißt, wie oft du etwas wiederholen willst:
<?php
// for (Start; Bedingung; Inkrement)
for ($i = 1; $i <= 5; $i++) {
echo "Durchlauf: $i<br>";
}
?>
foreach-Schleife (für Arrays)
Die beste Wahl für Arrays:
<?php
$farben = ["rot", "grün", "blau"];
foreach ($farben as $farbe) {
echo "Farbe: $farbe<br>";
}
// Mit Index und Wert
foreach ($farben as $index => $farbe) {
echo "Index $index: $farbe<br>";
}
?>
break und continue
<?php
// break: Schleife komplett beenden
for ($i = 1; $i <= 10; $i++) {
if ($i === 5) {
break; // Stoppt bei 5
}
echo "$i ";
}
// Ausgabe: 1 2 3 4
echo "<br>";
// continue: Nur aktuellen Durchlauf überspringen
for ($i = 1; $i <= 5; $i++) {
if ($i === 3) {
continue; // Überspringt 3
}
echo "$i ";
}
// Ausgabe: 1 2 4 5
?>
Funktionen: Code wiederverwenden
Funktionen sind Codeblöcke, die du mit einem Namen versehen und dann immer wieder aufrufen kannst.
Einfache Funktion
<?php
// Funktion definieren
function gruss() {
echo "Hallo Welt!";
}
// Funktion aufrufen
gruss(); // Gibt "Hallo Welt!" aus
?>
Funktion mit Parametern
<?php
function grussPersonal($name) {
echo "Hallo, $name!";
}
grussPersonal("Leo"); // Gibt "Hallo, Leo!" aus
grussPersonal("Andrea"); // Gibt "Hallo, Andrea!" aus
?>
Funktion mit Rückgabewert
<?php
function addiere($a, $b) {
return $a + $b;
}
$ergebnis = addiere(5, 3);
echo $ergebnis; // Gibt 8 aus
// Direkt in echo verwenden
echo addiere(10, 20); // Gibt 30 aus
?>
Standardwerte für Parameter
<?php
function gruss($name = "Gast") {
echo "Hallo, $name!";
}
gruss(); // Gibt "Hallo, Gast!" aus (nutzt Standardwert)
gruss("Leo"); // Gibt "Hallo, Leo!" aus
?>
Type Declarations (empfohlen!)
Ab PHP 7 kannst du Typen für Parameter und Rückgabewerte angeben:
<?php
// Parameter-Typ und Rückgabe-Typ angeben
function addiere(int $a, int $b): int {
return $a + $b;
}
echo addiere(5, 3); // 8
// Fehler: addiere("5", "3") würde einen TypeError werfen
// (außer strict_types ist nicht aktiviert)
?>
Füge am Anfang deiner PHP-Datei hinzu:
<?php
declare(strict_types=1);
// Ab hier werden Typen streng geprüft
Wichtige Sicherheitsgrundlagen
Auch wenn wir ein separates Security-Tutorial haben werden, sind ein paar Basics schon jetzt wichtig:
Nutzereingaben IMMER bereinigen
Wenn du Daten ausgibst, die von Nutzern kommen (z.B. aus Formularen), nutze
htmlspecialchars():
Füge am Anfang deiner PHP-Datei hinzu:
<?php
// FALSCH - gefährlich!
$name = $_POST['name'] ?? '';
echo $name; // ❌ Niemals so!
// RICHTIG - sicher
$name = $_POST['name'] ?? '';
echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); // ✅ Immer so!
?>
Ohne htmlspecialchars() könnte ein Nutzer JavaScript-Code eingeben, der dann
auf
deiner Seite ausgeführt wird (XSS-Angriff). Mit htmlspecialchars() werden
gefährliche Zeichen wie < in harmlose Zeichen wie <
umgewandelt.
Formulardaten sicher empfangen
<?php
// Prüfe, ob Daten per POST gesendet wurden
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Hol Daten mit Fallback (wenn nicht vorhanden)
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';
// Daten validieren
if (empty($name)) {
echo "Name ist erforderlich!";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Ungültige E-Mail-Adresse!";
} else {
// Sicher ausgeben
echo "Hallo, " . htmlspecialchars($name, ENT_QUOTES, 'UTF-8') . "!";
}
}
?>
Passwörter niemals im Klartext speichern
<?php
// Passwort hashen (verschlüsseln)
$passwort = "GeheimesPasswort123";
$hash = password_hash($passwort, PASSWORD_DEFAULT);
// $hash in Datenbank speichern, NICHT das Klartext-Passwort!
// Später beim Login: Passwort überprüfen
$eingabe = "GeheimesPasswort123";
if (password_verify($eingabe, $hash)) {
echo "Login erfolgreich!";
} else {
echo "Falsches Passwort!";
}
?>
Das sind nur die absoluten Basics! In einem separaten Tutorial werden wir tiefer in PHP Security eintauchen: SQL Injection, CSRF-Schutz, Session-Sicherheit und mehr.
Dateien einbinden: include und require
Du kannst PHP-Code aus anderen Dateien einbinden - praktisch für Header, Footer, Funktionen etc.
Die vier Varianten
<?php
// include: Bindet Datei ein, Warnung bei Fehler
include 'header.php';
// require: Bindet Datei ein, Fatal Error bei Fehler (stoppt Script)
require 'config.php';
// include_once: Bindet Datei nur einmal ein (verhindert Mehrfach-Einbindung)
include_once 'functions.php';
// require_once: Wie require, aber nur einmal (Best Practice!)
require_once 'database.php';
?>
require_once: Für wichtige Dateien (Funktionen, Klassen, Config)include: Für optionale Inhalte (z.B. Template-Parts)_once-Varianten verhindern, dass Code doppelt geladen wird
Praktisches Beispiel
Datei: header.php
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Meine Website</title>
</head>
<body>
<header>
<h1>Willkommen!</h1>
</header>
Datei: footer.php
<footer>
<p>© 2025 Meine Website</p>
</footer>
</body>
</html>
Datei: index.php
<?php require_once 'header.php'; ?>
<main>
<h1>Inhalt der Startseite</h1>
<p>Hier ist der Hauptinhalt.</p>
</main>
<?php require_once 'footer.php'; ?>
Superglobals: Vordefinierte Variablen
PHP stellt automatisch einige Arrays bereit, die wichtige Informationen enthalten:
Die wichtigsten Superglobals
$_GET - URL-Parameter
Daten, die über die URL übergeben werden:
<?php
// URL: index.php?name=Leo&alter=18
$name = $_GET['name'] ?? 'Unbekannt';
$alter = $_GET['alter'] ?? 0;
echo "Name: " . htmlspecialchars($name); // Immer bereinigen!
echo "Alter: " . htmlspecialchars($alter);
?>
$_POST - Formulardaten
Daten aus Formularen:
<?php
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $_POST['name'] ?? '';
$email = $_POST['email'] ?? '';
// Sicher ausgeben
echo htmlspecialchars($name);
}
?>
$_SERVER - Server-Informationen
<?php
// Aktuelle URL
echo $_SERVER['REQUEST_URI'];
// Request-Methode (GET, POST, etc.)
echo $_SERVER['REQUEST_METHOD'];
// User Agent (Browser-Info)
echo $_SERVER['HTTP_USER_AGENT'];
// Server-Name
echo $_SERVER['SERVER_NAME'];
?>
$_SESSION - Session-Daten
Daten, die über mehrere Seiten hinweg gespeichert werden:
<?php
// Session starten (immer am Anfang!)
session_start();
// Daten speichern
$_SESSION['username'] = 'Leo';
$_SESSION['logged_in'] = true;
// Daten abrufen
if (isset($_SESSION['logged_in']) && $_SESSION['logged_in'] === true) {
echo "Willkommen, " . htmlspecialchars($_SESSION['username']);
}
// Session beenden
session_destroy();
?>
- NIEMALS direkt ausgeben ohne
htmlspecialchars() - Immer prüfen, ob der Key existiert (mit
??oderisset()) - Bei $_GET und $_POST IMMER validieren!
Praktisches Beispiel: Einfaches Kontaktformular
Lass uns alles Gelernte in einem praktischen Beispiel zusammenführen:
<?php
// kontakt.php
declare(strict_types=1);
// Variablen für Formular
$name = '';
$email = '';
$nachricht = '';
$errors = [];
$success = false;
// Formular verarbeiten
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
// Daten holen und trimmen (Leerzeichen entfernen)
$name = trim($_POST['name'] ?? '');
$email = trim($_POST['email'] ?? '');
$nachricht = trim($_POST['nachricht'] ?? '');
// Validierung
if (empty($name)) {
$errors[] = 'Bitte gib deinen Namen an.';
}
if (empty($email)) {
$errors[] = 'Bitte gib deine E-Mail an.';
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors[] = 'Bitte gib eine gültige E-Mail an.';
}
if (empty($nachricht)) {
$errors[] = 'Bitte gib eine Nachricht ein.';
}
// Wenn keine Fehler: Verarbeiten
if (empty($errors)) {
// Hier würdest du die Daten verarbeiten:
// - E-Mail senden
// - In Datenbank speichern
// - etc.
$success = true;
// Formular zurücksetzen
$name = '';
$email = '';
$nachricht = '';
}
}
?>
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Kontaktformular</title>
<style>
body { font-family: Arial, sans-serif; max-width: 600px; margin: 50px auto; }
.error { color: red; }
.success { color: green; padding: 10px; background: #d4edda; }
input, textarea { width: 100%; padding: 8px; margin: 5px 0; }
button { padding: 10px 20px; background: #007bff; color: white; border: none; cursor: pointer; }
</style>
</head>
<body>
<h1>Kontaktformular</h1>
<?php if ($success): ?>
<div class="success">
Vielen Dank! Deine Nachricht wurde gesendet.
</div>
<?php endif; ?>
<?php if (!empty($errors)): ?>
<div class="error">
<ul>
<?php foreach ($errors as $error): ?>
<li><?php echo htmlspecialchars($error, ENT_QUOTES, 'UTF-8'); ?></li>
<?php endforeach; ?>
</ul>
</div>
<?php endif; ?>
<form method="post" action="">
<label for="name">Name:</label>
<input type="text" id="name" name="name"
value="<?php echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8'); ?>">
<label for="email">E-Mail:</label>
<input type="email" id="email" name="email"
value="<?php echo htmlspecialchars($email, ENT_QUOTES, 'UTF-8'); ?>">
<label for="nachricht">Nachricht:</label>
<textarea id="nachricht" name="nachricht" rows="5"><?php
echo htmlspecialchars($nachricht, ENT_QUOTES, 'UTF-8');
?></textarea>
<button type="submit">Absenden</button>
</form>
</body>
</html>
- Formulardaten werden per POST gesendet
- Alle Eingaben werden validiert
- Fehler werden gesammelt und angezeigt
- Bei Erfolg wird eine Meldung angezeigt
- Alle Ausgaben werden mit
htmlspecialchars()gesichert - Das Formular behält bei Fehlern die eingegebenen Werte
Nützliche PHP-Funktionen für den Alltag
String-Funktionen
<?php
$text = " Hallo Welt ";
// Länge eines Strings
echo strlen($text); // 14 (inkl. Leerzeichen)
// Leerzeichen entfernen
echo trim($text); // "Hallo Welt"
// Groß-/Kleinschreibung
echo strtoupper($text); // " HALLO WELT "
echo strtolower($text); // " hallo welt "
// String ersetzen
echo str_replace("Welt", "PHP", $text); // " Hallo PHP "
// String in Array splitten
$woerter = explode(" ", trim($text)); // ["Hallo", "Welt"]
// Array zu String zusammenfügen
echo implode("-", $woerter); // "Hallo-Welt"
// Teil eines Strings
echo substr("Hallo Welt", 0, 5); // "Hallo"
// Prüfen, ob String etwas enthält
if (str_contains($text, "Hallo")) {
echo "Gefunden!";
}
?>
Array-Funktionen
<?php
$zahlen = [5, 2, 8, 1, 9];
// Anzahl der Elemente
echo count($zahlen); // 5
// Sortieren
sort($zahlen); // [1, 2, 5, 8, 9]
rsort($zahlen); // [9, 8, 5, 2, 1]
// Element am Ende hinzufügen
array_push($zahlen, 10);
// Letztes Element entfernen
$letztes = array_pop($zahlen);
// Prüfen, ob Wert existiert
if (in_array(5, $zahlen)) {
echo "5 ist im Array!";
}
// Keys eines Arrays
$person = ["name" => "Leo", "alter" => 18];
$keys = array_keys($person); // ["name", "alter"]
// Werte eines Arrays
$werte = array_values($person); // ["Leo", 18]
// Arrays zusammenführen
$array1 = [1, 2, 3];
$array2 = [4, 5, 6];
$merged = array_merge($array1, $array2); // [1, 2, 3, 4, 5, 6]
?>
Datum und Zeit
<?php
// Aktuelles Datum und Zeit
echo date("d.m.Y"); // z.B. 26.11.2025
echo date("H:i:s"); // z.B. 14:30:00
echo date("d.m.Y H:i"); // z.B. 26.11.2025 14:30
// Unix-Timestamp (Sekunden seit 1.1.1970)
echo time(); // z.B. 1732627200
// Datum von Timestamp
echo date("d.m.Y", time()); // Heutiges Datum
// Datum berechnen (z.B. morgen)
$morgen = time() + (24 * 60 * 60); // +1 Tag in Sekunden
echo date("d.m.Y", $morgen);
?>
Mathematische Funktionen
<?php
// Aufrunden/Abrunden
echo ceil(4.3); // 5
echo floor(4.8); // 4
echo round(4.5); // 5
// Zufallszahl
echo rand(1, 100); // Zufällige Zahl zwischen 1 und 100
// Minimum/Maximum
echo min(5, 3, 8, 1); // 1
echo max(5, 3, 8, 1); // 8
// Absolutwert
echo abs(-5); // 5
// Potenz
echo pow(2, 3); // 8 (2³)
// Quadratwurzel
echo sqrt(16); // 4
?>
Best Practices für sauberen PHP-Code
1. Nutze aussagekräftige Variablennamen
<?php
$benutzername = "Leo";
$alter = 18;
$vollstaendigeInfo = $benutzername . ", " . $alter;
?>
<?php
$x = "Leo";
$y = 18;
$z = $x . ", " . $y;
?>
2. Verwende Konstanten für feste Werte
<?php
// Konstanten mit define()
define('SITE_NAME', 'DevPanicZone');
define('MAX_LOGIN_ATTEMPTS', 3);
// Oder mit const (moderner)
const DB_HOST = 'localhost';
const DB_NAME = 'meine_datenbank';
echo SITE_NAME; // DevPanicZone
?>
3. Aktiviere Error Reporting während der Entwicklung
<?php
// Am Anfang deiner PHP-Datei (nur für Entwicklung!)
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Für Produktiv-Server: Fehler in Log-Datei schreiben
// error_reporting(E_ALL);
// ini_set('display_errors', 0);
// ini_set('log_errors', 1);
?>
4. Nutze Type Declarations
<?php
declare(strict_types=1);
function berechnePreis(float $netto, float $mehrwertsteuer): float {
return $netto * (1 + $mehrwertsteuer);
}
$bruttoPreis = berechnePreis(100.0, 0.19); // 119.0
?>
5. Verwende immer === statt ==
<?php
$zahl = 5;
$string = "5";
// ✓ Strenger Vergleich (empfohlen)
if ($zahl === $string) {
echo "Gleich";
} else {
echo "Nicht gleich"; // Das wird ausgegeben
}
?>
<?php
$zahl = 5;
$string = "5";
// ✗ Schwacher Vergleich (nicht empfohlen)
if ($zahl == $string) {
echo "Gleich"; // true (Typumwandlung)
}
?>
6. Nutze den Null Coalescing Operator
<?php
// ✅ Modern und kurz
$name = $_GET['name'] ?? 'Gast';
// Auch mit mehreren Fallbacks möglich
$name = $_GET['name'] ?? $_POST['name'] ?? 'Gast';
?>
<?php
// ❌ Alt und umständlich
$name = isset($_GET['name']) ? $_GET['name'] : 'Gast';
?>
- Code immer einrücken und formatieren
- Kommentare für komplexe Logik hinzufügen
- Funktionen klein halten (eine Aufgabe pro Funktion)
- Keine hartcodierten Werte - nutze Konstanten oder Config-Dateien
- Code in sinnvolle Dateien aufteilen (z.B.
functions.php,config.php)
Zusammenfassung: Das hast du gelernt
Wow, das war eine Menge! Aber jetzt hast du eine solide Basis für PHP. Hier nochmal die wichtigsten Punkte:
- PHP ist eine serverseitige Sprache für dynamische Webseiten
- PHP-Code steht zwischen
<?phpund?>Tags - Variablen beginnen mit
$und sind dynamisch typisiert - Nutze
echozur Ausgabe, aber immer mit htmlspecialchars() bei Nutzerdaten - Arrays können numerisch oder assoziativ sein
- Bedingungen:
if,elseif,else,switch - Schleifen:
while,do-while,for,foreach - Funktionen mit
functiondefinieren, Type Declarations nutzen - Sicherheit first: Nutzereingaben immer bereinigen und validieren
- Superglobals wie
$_GET,$_POST,$_SERVERkennen - Code mit
require_oncein andere Dateien auslagern
- PHP Security - XSS, SQL Injection, CSRF und mehr
- Objektorientierte Programmierung (OOP) - Klassen, Objekte, Vererbung
- Datenbanken mit PHP - MySQL, PDO, CRUD-Operationen
- Sessions und Cookies - Login-Systeme, User-Authentifizierung
- Formulare und File-Uploads - Sicherer Umgang mit Nutzereingaben
Mehr aus PHP
Tutorials werden geladen...