Client-Server-Architektur

Geschätzte Lektüre: 9 Minuten 529 Ansichten

Grundkonzept der Client-Server-Architektur

Die Client-Server-Architektur ist ein grundlegendes Modell der Netzwerkkommunikation, bei dem ein Client (z.B. ein Webbrowser) Anfragen an einen Server (z.B. einen Webserver mit PHP) stellt, der diese Anfragen verarbeitet und eine Antwort zurückschickt.

Einfaches Beispiel:

  • Client (Browser): „Gib mir die Startseite von example.com“
  • Server: „Hier ist der HTML-Code für die Startseite“

Wie PHP in diese Architektur passt

PHP ist eine serverseitige Skriptsprache, die auf dem Webserver ausgeführt wird, bevor das Ergebnis an den Client gesendet wird.

Ablauf einer typischen PHP-Anfrage:

  1. Benutzer gibt URL in Browser ein (Client)
  2. Browser sendet HTTP-Request an Server
  3. Webserver (z.B. Apache) empfängt Request
  4. Wenn es eine PHP-Datei betrifft, übergibt Apache sie an PHP-Interpreter
  5. PHP führt den Code aus und generiert HTML
  6. Server sendet HTML zurück an Client
  7. Browser rendert die HTML-Antwort

HTTP-Protokoll Grundlagen

PHP arbeitet mit dem HTTP-Protokoll (Hypertext Transfer Protocol). Die wichtigsten HTTP-Methoden sind:

  • GET: Daten anfordern (z.B. Seitenabruf)
  • POST: Daten an Server senden (z.B. Formularabschicken)
  • PUT, DELETE, etc. (für REST-APIs)

Beispiel: GET vs. POST in PHP

// GET-Beispiel: http://example.com?name=Max
$name = $_GET['name']; // Wert: "Max"

// POST-Beispiel (Formular):
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $username = $_POST['username'];
    $password = $_POST['password'];
    // Verarbeite die Daten...
}

PHP und HTML-Integration

PHP-Code wird in HTML eingebettet und auf dem Server ausgeführt:

<!DOCTYPE html>
<html>
<head>
    <title>PHP-Beispiel</title>
</head>
<body>
    <h1>Willkommen, 
        <?php 
            echo htmlspecialchars($_GET['name'] ?? 'Gast'); 
        ?>
    </h1>
    <p>Heute ist <?php echo date('d.m.Y'); ?></p>
</body>
</html>

Session-Management

Da HTTP zustandslos ist, verwendet PHP Sessions, um Benutzerdaten zwischen Anfragen zu speichern:

// Session starten
session_start();

// Session-Variable setzen
$_SESSION['user_id'] = 123;
$_SESSION['username'] = 'max_mustermann';

// In späteren Anfragen:
session_start();
echo "Willkommen zurück, " . $_SESSION['username'];

Datenbankanbindung (MySQL mit PDO)

PHP kann mit Datenbanken kommunizieren, um dynamische Inhalte zu generieren:

try {
    // Datenbankverbindung herstellen
    $pdo = new PDO('mysql:host=localhost;dbname=meine_db', 'benutzer', 'passwort');
    
    // SQL-Abfrage vorbereiten
    $stmt = $pdo->prepare('SELECT * FROM users WHERE id = :id');
    $stmt->execute(['id' => $_GET['user_id']]);
    
    // Ergebnisse abrufen
    $user = $stmt->fetch();
    
    // Daten anzeigen
    echo "Benutzername: " . htmlspecialchars($user['username']);
} catch (PDOException $e) {
    echo "Datenbankfehler: " . $e->getMessage();
}

Formularverarbeitung

Ein Beispiel für Formularverarbeitung:

<?php
$errors = [];
$success = false;

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    // Validierung
    if (empty($_POST['email'])) {
        $errors[] = "E-Mail ist erforderlich";
    } elseif (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL)) {
        $errors[] = "Ungültige E-Mail-Adresse";
    }
    
    if (empty($_POST['name'])) {
        $errors[] = "Name ist erforderlich";
    }
    
    // Wenn keine Fehler, verarbeite das Formular
    if (empty($errors)) {
        // Hier würde normalerweise die Datenbank aktualisiert werden
        $success = true;
    }
}
?>

<!DOCTYPE html>
<html>
<head>
    <title>Kontaktformular</title>
</head>
<body>
    <?php if ($success): ?>
        <p style="color: green;">Vielen Dank für Ihre Nachricht!</p>
    <?php else: ?>
        <?php foreach ($errors as $error): ?>
            <p style="color: red;"><?php echo htmlspecialchars($error); ?></p>
        <?php endforeach; ?>
        
        <form method="POST">
            <label>Name:</label>
            <input type="text" name="name"
            value="<?php echo htmlspecialchars($_POST['name'] ?? ''); ?>">
            
            <label>E-Mail:</label>
            <input type="email" name="email"
            value="<?php echo htmlspecialchars($_POST['email'] ?? ''); ?>">
            
            <button type="submit">Absenden</button>
        </form>
    <?php endif; ?>
</body>
</html>

Sicherheitsaspekte

Wichtige Sicherheitsmaßnahmen in PHP:

01. Input-Validierung:

$email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL);
if ($email === false) {
    // Ungültige E-Mail
}

02. Output-Escaping:

echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');

03. SQL-Injection verhindern (immer Prepared Statements verwenden):

// NICHT so:
$pdo->query("SELECT * FROM users WHERE id = " . $_GET['id']); // Unsicher!

// Sondern so:
$stmt = $pdo->prepare("SELECT * FROM users WHERE id = ?");
$stmt->execute([$_GET['id']]);

04. Cross-Site Scripting (XSS) verhindern:
Immer htmlspecialchars() verwenden, wenn Benutzereingaben ausgegeben werden.

Moderne PHP-Entwicklung

Heutzutage wird PHP oft mit Frameworks wie Laravel oder Symfony verwendet, die viele dieser Grundlagen abstrahieren:

// Laravel-Routen-Beispiel
Route::get('/users/{id}', function ($id) {
    $user = User::findOrFail($id);
    return view('user.profile', ['user' => $user]);
});

RESTful APIs mit PHP

PHP kann auch JSON-basierte APIs erstellen:

header('Content-Type: application/json');

$data = [
    'status' => 'success',
    'users' => [
        ['id' => 1, 'name' => 'Max'],
        ['id' => 2, 'name' => 'Anna']
    ]
];

echo json_encode($data);

Zusammenfassung

Die PHP Client-Server-Architektur folgt diesem grundlegenden Muster:

  1. Client (Browser) sendet Anfrage
  2. Server empfängt Anfrage und verarbeitet PHP-Code
  3. Server sendet generierte Antwort zurück
  4. Client zeigt Ergebnis an

PHP ermöglicht die Erstellung dynamischer Webanwendungen durch:

  • Formularverarbeitung
  • Datenbankinteraktion
  • Session-Management
  • Template-Generierung
  • API-Erstellung

Für Anfänger ist es wichtig, zunächst die Grundlagen der serverseitigen Verarbeitung, der HTTP-Kommunikation und der Sicherheitspraktiken zu verstehen, bevor man zu komplexeren Themen oder Frameworks übergeht.

Dieses Dokument teilen

Client-Server-Architektur

Oder Link kopieren

INHALT

Abonnieren

×
Cancel