Appearance
Anhang: PHP Kernwissen Zusammenfassung
1. Syntax-Spickzettel (Kurzreferenz)
Grundlegende Syntax
php
<?php
// 1. PHP-Tags
// Empfohlen: <?php ... ?>
// 2. Kommentare
// Einzeiliger Kommentar
# Auch möglich (Shell-Style)
/*
Mehrzeiliger Kommentar
*/
// 3. Variablen (immer mit $ beginnen)
$name = "Max";
$alter = 25;
$ist_aktiv = true;
// 4. Konstanten
define("SITE_NAME", "Meine Webseite");
const VERSION = "1.0.0";
// 5. Ausgabe
echo "Hallo Welt!";
print "Hallo!"; // Gibt immer 1 zurück
var_dump($variable); // Typ und Wert anzeigen (Debug)
print_r($array); // Array lesbar ausgeben
?>Datentypen
| Datentyp | Beschreibung | Beispiel |
|---|---|---|
| String | Zeichenkette | "Hallo", 'Welt' |
| Integer | Ganzzahl | 42, -10 |
| Float | Gleitkommazahl | 3.14, -2.5 |
| Boolean | Wahrheitswert | true, false |
| Array | Array (Liste) | [1, 2, 3], array("a", "b") |
| Object | Objekt (Klasseninstanz) | new stdClass() |
| NULL | Kein Wert | null |
Operatoren
| Operator | Beschreibung | Beispiel |
|---|---|---|
+ - * / % | Arithmetisch | $a + $b |
++ -- | Inkrement/Dekrement | $i++ |
= += -= .= | Zuweisung | $a = 5 |
== === != !== | Vergleich | $a == $b |
> < >= <= | Vergleich | $a > $b |
**&& ` | !`** | |
? : | Ternär | $ergebnis = ($a > $b) ? "größer" : "kleiner" |
Kontrollstrukturen
php
<?php
// 1. if/elseif/else
if ($alter >= 18) {
echo "Volljährig";
} elseif ($alter >= 16) {
echo "Fast volljährig";
} else {
echo "Minderjährig";
}
// 2. switch/case
switch ($tag) {
case 1:
echo "Montag";
break;
case 2:
echo "Dienstag";
break;
default:
echo "Ungültiger Tag";
}
// 3. while-Schleife
$i = 1;
while ($i <= 10) {
echo $i . " ";
$i++;
}
// 4. do-while-Schleife
do {
echo $i . " ";
$i++;
} while ($i <= 10);
// 5. for-Schleife
for ($i = 1; $i <= 10; $i++) {
echo $i . " ";
}
// 6. foreach-Schleife (für Arrays)
$fruechte = ["Apfel", "Banane", "Kirsche"];
foreach ($fruechte as $frucht) {
echo $frucht . " ";
}
// 7. break/continue
for ($i = 1; $i <= 10; $i++) {
if ($i == 5) {
continue; // Springt zur nächsten Iteration
}
if ($i == 8) {
break; // Beendet die Schleife
}
echo $i . " "; // Ausgabe: 1 2 3 4 6 7
}
?>Funktionen
php
<?php
// 1. Funktion definieren
function begruesse($name) {
return "Hallo " . $name . "!";
}
// 2. Funktion aufrufen
echo begruesse("Max"); // Ausgabe: Hallo Max!
// 3. Funktion mit Standardparameter
function begruessePerson($name, $alter = 25) {
echo "Name: $name, Alter: $alter";
}
begruessePerson("Max"); // Name: Max, Alter: 25
begruessePerson("Max", 30); // Name: Max, Alter: 30
// 4. Rückgabetyp deklarieren (PHP 7+)
function addiere(int $a, int $b): int {
return $a + $b;
}
?>Arrays
php
<?php
// 1. Index-Array
$fruechte = ["Apfel", "Banane", "Kirsche"];
echo $fruechte[0]; // Apfel
// 2. Assoziatives Array
$person = [
"name" => "Max",
"alter" => 25,
"stadt" => "Berlin"
];
echo $person["name"]; // Max
// 3. Mehrdimensionale Arrays
$schueler = [
["name" => "Max", "note" => 1.0],
["name" => "Anna", "note" => 1.3]
];
echo $schueler[0]["name"]; // Max
// 4. Array-Funktionen
$fruechte = ["Apfel", "Banane", "Kirsche"];
array_push($fruechte, "Orange"); // Element hinzufügen
$letztes = array_pop($fruechte); // Letztes Element entfernen
count($fruechte); // Anzahl Elemente
sort($fruechte); // Aufsteigend sortieren
rsort($fruechte); // Absteigend sortieren
?>Formulare und Benutzerinteraktion
php
<?php
// 1. GET-Methode
// URL: verarbeite.php?name=Max&alter=25
$name = $_GET['name'];
$alter = $_GET['alter'];
// 2. POST-Methode
$name = $_POST['name'];
$alter = $_POST['alter'];
// 3. Superglobal $_REQUEST (GET + POST + COOKIE - nicht empfohlen!)
$name = $_REQUEST['name'];
// 4. Formulardaten validieren
$name = trim($_POST['name'] ?? '');
if (empty($name)) {
$fehler[] = "Name darf nicht leer sein.";
}
// 5. XSS-Schutz (htmlspecialchars)
echo htmlspecialchars($name, ENT_QUOTES, 'UTF-8');
?>Sessions und Cookies
php
<?php
// 1. Session starten
session_start();
// 2. Session-Variable setzen
$_SESSION['benutzer'] = "Max";
$_SESSION['eingeloggt'] = true;
// 3. Session-Variable auslesen
$benutzer = $_SESSION['benutzer'];
// 4. Session zerstören (Logout)
session_destroy();
// 5. Cookie setzen
setcookie("benutzer", "Max", time() + 3600); // 1 Stunde gültig
// 6. Cookie auslesen
$benutzer = $_COOKIE['benutzer'];
// 7. Cookie löschen
setcookie("benutzer", "", time() - 3600);
?>Datenbank (MySQL) mit mysqli
php
<?php
// 1. Verbindung herstellen
$conn = new mysqli("localhost", "root", "", "meine_datenbank");
if ($conn->connect_error) {
die("Verbindungsfehler: " . $conn->connect_error);
}
$conn->set_charset("utf8mb4");
// 2. INSERT (Prepared Statement - sicher!)
$sql = "INSERT INTO benutzer (name, email) VALUES (?, ?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param("ss", $name, $email);
$stmt->execute();
// 3. SELECT (Prepared Statement - sicher!)
$sql = "SELECT * FROM benutzer WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $id);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
echo $row['name'];
}
// 4. UPDATE (Prepared Statement)
$sql = "UPDATE benutzer SET email = ? WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("si", $neue_email, $id);
$stmt->execute();
// 5. DELETE (Prepared Statement)
$sql = "DELETE FROM benutzer WHERE id = ?";
$stmt = $conn->prepare($sql);
$stmt->bind_param("i", $id);
$stmt->execute();
// 6. Verbindung schließen
$conn->close();
?>Datei-Upload
php
<?php
// 1. Formular (HTML)
// <form method="post" action="upload.php" enctype="multipart/form-data">
// <input type="file" name="datei">
// </form>
// 2. Datei-Upload verarbeiten (PHP)
if ($_FILES['datei']['error'] === 0) {
$dateiname = $_FILES['datei']['name'];
$dateigroesse = $_FILES['datei']['size'];
$tmp_name = $_FILES['datei']['tmp_name'];
// Datei validieren (Größe, Typ, etc.)
$max_groesse = 5 * 1024 * 1024; // 5MB
if ($dateigroesse > $max_groesse) {
die("Datei ist zu groß!");
}
$erlaubte_typen = ['image/jpeg', 'image/png', 'image/gif'];
if (!in_array($_FILES['datei']['type'], $erlaubte_typen)) {
die("Ungültiger Dateityp!");
}
// Datei verschieben
$ziel_pfad = "uploads/" . uniqid() . "_" . $dateiname;
move_uploaded_file($tmp_name, $ziel_pfad);
echo "Datei erfolgreich hochgeladen!";
}
?>2. Häufig verwendete Funktionen (Spickzettel)
String-Funktionen
| Funktion | Beschreibung | Beispiel |
|---|---|---|
strlen($str) | Länge des Strings | strlen("Hallo") → 5 |
strtolower($str) | In Kleinbuchstaben | strtolower("Hallo") → "hallo" |
strtoupper($str) | In Großbuchstaben | strtoupper("hallo") → "HALLO" |
ucfirst($str) | Ersten Buchstaben groß | ucfirst("hallo") → "Hallo" |
ucwords($str) | Jeden Wortanfang groß | ucwords("hallo welt") → "Hallo Welt" |
trim($str) | Leerzeichen entfernen | trim(" Hallo ") → "Hallo" |
ltrim($str) | Leerzeichen links entfernen | ltrim(" Hallo") → "Hallo" |
rtrim($str) | Leerzeichen rechts entfernen | rtrim("Hallo ") → "Hallo" |
substr($str, $start, $laenge) | Teilstring extrahieren | substr("Hallo", 0, 3) → "Hal" |
strpos($str, $suche) | Position suchen | strpos("Hallo", "l") → 2 |
str_replace($suche, $ersatz, $str) | Ersetzen | str_replace("Hallo", "Welt", "Hallo") → "Welt" |
explode($trenner, $str) | String in Array aufteilen | explode(",", "a,b,c") → ['a', 'b', 'c'] |
implode($trenner, $arr) | Array in String zusammenfügen | implode(",", ['a', 'b', 'c']) → "a,b,c" |
Array-Funktionen
| Funktion | Beschreibung | Beispiel |
|---|---|---|
count($arr) | Anzahl Elemente | count([1, 2, 3]) → 3 |
array_push($arr, $element) | Element hinzufügen | array_push($arr, 4) |
array_pop($arr) | Letztes Element entfernen | array_pop($arr) |
array_shift($arr) | Erstes Element entfernen | array_shift($arr) |
array_unshift($arr, $element) | Element am Anfang hinzufügen | array_unshift($arr, 0) |
sort($arr) | Aufsteigend sortieren | sort($arr) |
rsort($arr) | Absteigend sortieren | rsort($arr) |
asort($arr) | Assoziatives Array nach Werten sortieren | asort($arr) |
ksort($arr) | Assoziatives Array nach Schlüsseln sortieren | ksort($arr) |
array_merge($arr1, $arr2) | Arrays zusammenfügen | array_merge([1, 2], [3, 4]) → [1, 2, 3, 4] |
array_reverse($arr) | Array umkehren | array_reverse([1, 2, 3]) → [3, 2, 1] |
in_array($element, $arr) | Prüfen, ob Element existiert | in_array(2, [1, 2, 3]) → true |
array_search($element, $arr) | Schlüssel suchen | array_search(2, [1, 2, 3]) → 1 |
Datum/Zeit-Funktionen
| Funktion | Beschreibung | Beispiel |
|---|---|---|
time() | Aktueller Unix-Timestamp | time() → 1653567890 |
date($format) | Datum/Zeit formatieren | date("d.m.Y H:i:s") → "26.05.2024 14:30:00" |
strtotime($datum_string) | String in Timestamp umwandeln | strtotime("2024-05-26 14:30:00") → 1653568200 |
mktime($stunde, $minute, $sekunde, $monat, $tag, $jahr) | Timestamp erstellen | mktime(14, 30, 0, 5, 26, 2024) → 1653568200 |
Datenbank-Funktionen (mysqli)
| Funktion | Beschreibung |
|---|---|
$conn->query($sql) | SQL-Abfrage ausführen (nicht sicher!) |
$conn->prepare($sql) | Prepared Statement vorbereiten (sicher!) |
$stmt->bind_param(...) | Parameter an Prepared Statement binden |
$stmt->execute() | Prepared Statement ausführen |
$stmt->get_result() | Ergebnis abrufen (bei SELECT) |
$result->fetch_assoc() | Nächsten Datensatz als assoziatives Array abrufen |
$result->num_rows | Anzahl Datensätze |
$stmt->affected_rows | Betroffene Zeilen (bei UPDATE/DELETE) |
$stmt->insert_id | ID des neu eingefügten Datensatzes (bei INSERT) |
$conn->close() | Verbindung schließen |
3. Fehlerbehebung (Troubleshooting)
Häufige Fehler und Lösungen
| Fehler | Ursache | Lösung |
|---|---|---|
| Leere Seite (White Screen of Death) | PHP-Fehler werden nicht angezeigt | error_reporting(E_ALL); ini_set('display_errors', 1); (in Entwicklungsumgebung) |
| 500 Internal Server Error | Syntaxfehler, Serverkonfigurationsfehler | Fehlerprotokoll (Error Log) prüfen |
| "Connection failed" (Datenbank) | Falsche Zugangsdaten, MySQL läuft nicht | Zugangsdaten prüfen, MySQL starten |
| Formulardaten nicht empfangen | Falsche Methode ($_GET vs. $_POST), enctype bei Datei-Upload vergessen | Methode prüfen, enctype="multipart/form-data" hinzufügen |
| Zeichenkaos (Umlaute falsch) | Zeichenkodierung nicht auf UTF-8 | header('Content-Type: text/html; charset=utf-8');, <meta charset="UTF-8">, mysqli_set_charset($conn, "utf8mb4") |
| Upload fehlgeschlagen | upload_max_filesize oder post_max_size zu klein, falsche Berechtigungen | php.ini anpassen, Berechtigungen prüfen (chmod 755) |
| Session-Probleme (Login-Status verloren) | session_start() vergessen, Session-Cookie wird nicht übertragen | session_start() ganz oben hinzufügen, Cookie-Einstellungen prüfen |
Fehlerprotokollierung (Logging)
php
<?php
// Fehler in Datei protokollieren
error_log("Dies ist eine Fehlermeldung.", 3, "/pfad/zu/error.log");
// Fehler per E-Mail senden
error_log("Dies ist eine Fehlermeldung.", 1, "admin@example.com");
// Benutzerdefiniertes Logging
function logMessage(string $message, string $level = 'INFO'): void {
$datum = date('Y-m-d H:i:s');
$logMessage = "[$datum] [$level] $message" . PHP_EOL;
file_put_contents('/pfad/zu/app.log', $logMessage, FILE_APPEND);
}
logMessage("Benutzer eingeloggt: " . $benutzername);
logMessage("Fehler beim Speichern!", "ERROR");
?>4. Lernpfad (Nächste Schritte)
Sie haben die PHP-Grundlagen gemeistert! Was nun?
Praxis, Praxis, Praxis!
- Bauen Sie eigene Projekte (To-Do-Liste, Blog, kleines Shop-System).
- Versuchen Sie, Probleme zu lösen, die Sie interessieren.
Lernen Sie ein PHP-Framework.
- Laravel (sehr beliebt, modern, MVC-Architektur).
- Symfony (wiederum sehr beliebt, komponentenbasiert).
- CodeIgniter (leichter, einfacher zu lernen).
Lernen Sie fortgeschrittene PHP-Konzepte.
- Objektorientierte Programmierung (OOP) in PHP (Klassen, Vererbung, Polymorphismus, Abstraktion).
- Namespaces.
- Traits.
- Interfaces und Abstrakte Klassen.
- Ausnahmebehandlung (Try-Catch).
- Autoloading (PSR-4, Composer).
Lernen Sie über Web-Sicherheit.
- OWASP Top 10 (die 10 kritischsten Sicherheitsrisiken für Webanwendungen).
- SQL-Injection, XSS, CSRF, etc.
Lernen Sie Frontend-Technologien.
- HTML, CSS (Bootstrap oder Tailwind CSS für schnelles Design).
- JavaScript (und beliebte Frameworks wie React, Vue.js oder Angular).
Lernen Sie Versionskontrolle (Git).
- Git ist unverzichtbar für moderne Softwareentwicklung.
Tragen Sie zu Open-Source bei!
- Suchen Sie auf GitHub nach PHP-Projekten, die Sie interessieren.
- Versuchen Sie, Fehler zu beheben oder Funktionen hinzuzufügen.
Zusammenfassung
Dieser Anhang dient als:
- ✅ Syntax-Spickzettel (Kurzreferenz)
- ✅ Funktions-Referenz (häufig verwendete Funktionen)
- ✅ Fehlerbehebungs-Guide (häufige Fehler und Lösungen)
- ✅ Lernpfad (nächste Schritte für Ihre PHP-Reise)
Viel Erfolg und viel Spaß beim weiteren Lernen von PHP! 🚀
