Skip to content

Kapitel 3: Web-Grundlagen und PHP-Funktionsweise

3.1 Webseiten-Ablauf (Browser → Server → PHP → Browser)

Wie eine PHP-Seite funktioniert:

[Browser (Client)]
    ↓ (Anfrage: http://localhost/index.php)
[Webserver (Apache)]
    ↓ (erkennt .php Datei)
[PHP-Parser]
    ↓ (führt PHP-Code aus)
[Datenbank (optional)]
    ↓ (gibt Ergebnis zurück)
[PHP-Parser] (generiert HTML)
    ↓ (sendet HTML an Browser)
[Browser (Client)]
    ↓ (zeigt Webseite an)

Detaillierter Ablauf:

  1. Benutzer gibt URL ein: http://localhost/index.php
  2. Browser sendet Anfrage an den Webserver (Apache)
  3. Apache erkennt: Das ist eine PHP-Datei (Endung .php)
  4. Apache übergibt die Datei an den PHP-Parser
  5. PHP-Parser führt den PHP-Code aus:
    • Datenbankabfragen werden ausgeführt
    • Berechnungen durchgeführt
    • HTML wird generiert
  6. PHP-Parser sendet das Ergebnis (meist HTML) zurück an Apache
  7. Apache sendet das HTML an den Browser
  8. Browser zeigt die Webseite an

Wichtig: Der Benutzer sieht niemals den PHP-Code! Nur das generierte HTML wird angezeigt.

3.2 PHP-Dateistruktur, Kommentarschreibweise

Grundstruktur einer PHP-Datei

php
<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>PHP-Seite</title>
</head>
<body>
    <h1>Überschrift</h1>
    
    <?php
        // Hier steht PHP-Code
        echo "Dies wird vom PHP-Parser ausgeführt";
    ?>
    
    <p>HTML-Code ausserhalb von PHP-Tags</p>
    
    <?php
        // Noch mehr PHP-Code
        $name = "Welt";
        echo "<p>Hallo $name!</p>";
    ?>
</body>
</html>

PHP-Tags

TagBeschreibungEmpfehlung
<?php ... ?>Standard-Tag✅ Immer verwenden
<? ... ?>Kurz-Tag (erfordert Konfiguration)❌ Nicht empfohlen
<% ... %>ASP-Style (veraltet)❌ Nicht verwenden
<script language="php"> ... </script>Script-Tag (veraltet)❌ Nicht verwenden

Kommentare in PHP

php
<?php
    // Das ist ein einzeiliger Kommentar (bevorzugt)
    
    # Auch möglich (Shell-Style), aber seltener
    
    /*
       Das ist ein mehrzeiliger Kommentar
       Er kann sich über mehrere Zeilen erstrecken
    */
    
    /**
     * Das ist ein Dokumentations-Kommentar (PHPDoc)
     * Wird für automatische Dokumentation verwendet
     * 
     * @param string $name Der Name
     * @return string Die Begrüssung
     */
    function begruessung($name) {
        return "Hallo " . $name;
    }
?>

3.3 Ausgabeanweisungen: echo / print / var_dump

echo (am häufigsten verwendet)

php
<?php
    // Einfache Ausgabe
    echo "Hallo Welt!";
    
    // Mehrere Parameter (durch Kommas getrennt)
    echo "Hallo ", "Welt", "!";
    
    // Ausgabe von Variablen
    $name = "PHP";
    echo "Willkommen bei " . $name;
    
    // Ausgabe von HTML
    echo "<h1>Überschrift</h1>";
    echo "<p>Absatz</p>";
    
    // Kein Rückgabewert (kein echo in Zuweisungen)
?>
php
<?php
    // Einfache Ausgabe
    print "Hallo Welt!";
    
    // Rückgabewert: immer 1
    $ergebnis = print "Hallo";  // $ergebnis wird 1 sein
    
    // Nur ein Parameter erlaubt (keine Kommas)
    print "Hallo " . "Welt!";  // OK (Verknüpfung mit Punkt)
    // print "Hallo ", "Welt!";  // FEHLER!
?>

Unterschied zwischen echo und print

Merkmalechoprint
RückgabewertKeinerImmer 1
Mehrere ParameterJa (Kommas)Nein
GeschwindigkeitEtwas schnellerEtwas langsamer
Empfehlung✅ Standard⚠️ Nur wenn Rückgabewert benötigt

var_dump() (für Debugging)

php
<?php
    $name = "PHP";
    $alter = 25;
    $ist_aktiv = true;
    
    // var_dump gibt Typ und Wert aus (perfekt zum Debuggen)
    var_dump($name);      // string(3) "PHP"
    var_dump($alter);     // int(25)
    var_dump($ist_aktiv); // bool(true)
    
    // Auch für Arrays
    $fruechte = array("Apfel", "Banane", "Kirsche");
    var_dump($fruechte);
    // array(3) { [0]=> string(5) "Apfel" ... }
    
    // Ausgabe formatieren
    echo "<pre>";
    var_dump($fruechte);
    echo "</pre>";
?>
php
<?php
    $person = array(
        "name" => "Max",
        "alter" => 30,
        "stadt" => "Berlin"
    );
    
    // print_r gibt lesbare Struktur aus
    print_r($person);
    /* Ausgabe:
    Array
    (
        [name] => Max
        [alter] => 30
        [stadt] => Berlin
    )
    */
    
    // Auch für Objekte
    $obj = new stdClass();
    $obj->name = "Test";
    print_r($obj);
?>

3.4 Kodierungsprobleme (UTF-8 löst Zeichenchaos)

Das Problem: Zeichenchaos (乱码)

Symptome:

  • Umlaute (ä, ö, ü, ß) werden falsch dargestellt
  • Chinesische Zeichen werden zu Fragezeichen
  • Sonderzeichen sehen seltsam aus

Ursache: Die Kodierung des PHP-Scripts stimmt nicht mit der vom Browser erwarteten Kodierung überein.

Lösung 1: PHP-Datei in UTF-8 speichern

In VS Code:

  1. Unten rechts auf "UTF-8" klicken
  2. "Save with Encoding" wählen
  3. "UTF-8" auswählen

Lösung 2: HTML-Header setzen

php
<?php
    // Ganz oben in der PHP-Datei
    header('Content-Type: text/html; charset=utf-8');
?>

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <title>Kodierungsproblem gelöst</title>
</head>
<body>
    <p>Ä Ö Ü ß werden jetzt richtig angezeigt!</p>
</body>
</html>

Lösung 3: PHP-Standardkodierung setzen

In php.ini:

ini
; Kodierung für PHP-Skripte
default_charset = "UTF-8"

; Eingabe-Kodierung
input_encoding = UTF-8

; Interne Kodierung
internal_encoding = UTF-8

; Ausgabe-Kodierung
output_encoding = UTF-8

Lösung 4: Datenbank-Verbindung auf UTF-8 setzen

php
<?php
    $conn = mysqli_connect("localhost", "user", "password", "datenbank");
    
    // Nach der Verbindung: UTF-8 setzen
    mysqli_set_charset($conn, "utf8");
    
    // Oder:
    mysqli_query($conn, "SET NAMES 'utf8'");
?>

Häufige Kodierungsprobleme und Lösungen

ProblemLösung
Umlaute falsch<meta charset="UTF-8"> hinzufügen
Datenbank gibt falsche Zeichen zurückmysqli_set_charset($conn, "utf8")
PHP-Datei selbst hat falsche KodierungDatei in UTF-8 speichern
Browser erzwingt falsche Kodierungheader('Content-Type: text/html; charset=utf-8')

3.5 Praxis: Eine einfache Webseite schreiben

Aufgabe: Erstellen Sie eine einfache Begrüssungsseite mit PHP und HTML.

Schritt 1: Datei erstellen

  • Erstellen Sie begruessung.php in C:\xampp\htdocs\php_kurs\

Schritt 2: Code schreiben

php
<?php
    // Kodierung setzen
    header('Content-Type: text/html; charset=utf-8');
    
    // Variablen definieren
    $name = "Besucher";
    $uhrzeit = date("H");
    
    // Begrüssung je nach Tageszeit
    if ($uhrzeit < 12) {
        $begruessung = "Guten Morgen";
    } elseif ($uhrzeit < 18) {
        $begruessung = "Guten Tag";
    } else {
        $begruessung = "Guten Abend";
    }
?>

<!DOCTYPE html>
<html lang="de">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Begrüssungsseite</title>
    <style>
        body {
            font-family: Arial, sans-serif;
            max-width: 800px;
            margin: 50px auto;
            padding: 20px;
            background-color: #f0f0f0;
        }
        .container {
            background: white;
            padding: 30px;
            border-radius: 10px;
            box-shadow: 0 2px 10px rgba(0,0,0,0.1);
        }
        h1 {
            color: #333;
        }
        .info {
            background: #e3f2fd;
            padding: 15px;
            border-radius: 5px;
            margin-top: 20px;
        }
    </style>
</head>
<body>
    <div class="container">
        <h1><?php echo $begruessung . ", " . $name . "!"; ?></h1>
        
        <p>Dies ist eine einfache Webseite mit PHP und HTML.</p>
        
        <div class="info">
            <h3>Informationen:</h3>
            <p>Aktuelle Uhrzeit: <?php echo date("H:i:s"); ?></p>
            <p>Heutiges Datum: <?php echo date("d.m.Y"); ?></p>
            <p>Server: <?php echo $_SERVER['SERVER_SOFTWARE']; ?></p>
            <p>Ihr Browser: <?php echo $_SERVER['HTTP_USER_AGENT']; ?></p>
        </div>
        
        <hr>
        
        <h3>PHP-Info:</h3>
        <p>PHP-Version: <?php echo phpversion(); ?></p>
        <p>Betriebssystem: <?php echo PHP_OS; ?></p>
    </div>
</body>
</html>

Schritt 3: Im Browser testen

  • Öffnen Sie http://localhost/php_kurs/begruessung.php
  • Sie sollten die Begrüssungsseite sehen ✅

Zusammenfassung

In diesem Kapitel haben Sie:

  • ✅ Verstanden, wie PHP funktioniert (Browser → Server → PHP → Browser)
  • ✅ Die Struktur einer PHP-Datei gelernt
  • ✅ Kommentare und PHP-Tags kennengelernt
  • ✅ Ausgabeanweisungen (echo, print, var_dump) verwendet
  • ✅ Kodierungsprobleme (UTF-8) gelöst
  • ✅ Eine einfache Webseite mit PHP erstellt

Nächstes Kapitel: Wir werden Variablen, Konstanten und Datentypen lernen.


Übungsaufgaben:

  1. Erstellen Sie eine PHP-Seite, die den Namen des Benutzers begrüsst
  2. Zeigen Sie das aktuelle Datum und die Uhrzeit an
  3. Verwenden Sie var_dump(), um den Typ einer Variablen zu prüfen
  4. Lösen Sie ein Kodierungsproblem (erzeugen Sie absichtlich falsche Kodierung und korrigieren Sie es)

Häufige Fehler:

  • ❌ PHP-Code direkt im Browser öffnen → Immer über http://localhost/... aufrufen
  • <? ... ?> Tags verwenden → Immer <?php ... ?> verwenden
  • ❌ Kodierung nicht setzen → Immer <meta charset="UTF-8"> oder header('Content-Type: text/html; charset=utf-8') verwenden

Frei für alle Anfänger