Dynamische Webseiten mit PHP und MySQL Prinzip: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „= Dynamische Webseiten mit PHP und MySQL – Prinzip = == Einführung == * Dynamische Webseiten generieren Inhalte zur Laufzeit, abhängig von Benutzereingabe…“)
 
 
Zeile 1: Zeile 1:
 
= Dynamische Webseiten mit PHP und MySQL – Prinzip =
 
= Dynamische Webseiten mit PHP und MySQL – Prinzip =
  
== Einführung ==
+
== Grundidee ==
* Dynamische Webseiten generieren Inhalte zur Laufzeit, abhängig von Benutzereingaben oder Datenbankinformationen.
+
* Eine dynamische Webseite erzeugt ihren Inhalt zur Laufzeit und nicht aus festen Dateien
* PHP als serverseitige Skriptsprache verarbeitet Anfragen und interagiert mit einer MySQL/MariaDB-Datenbank.
+
* Inhalte werden aus einer Datenbank geladen oder durch Benutzereingaben verändert
* Im Gegensatz zu statischen HTML-Seiten können Inhalte aktualisiert, gefiltert und personalisiert werden.
+
* Die gleiche URL kann unterschiedliche Inhalte liefern
  
== Architektur einer dynamischen Webseite ==
+
== Komponenten ==
* Ein typischer Aufbau besteht aus drei Hauptkomponenten:
+
* Browser (Client)
** '''Client''' – Webbrowser sendet Anfragen an den Server.
+
** Sendet Anfragen an den Server
** '''Webserver''' – Nginx oder Apache verarbeitet PHP-Skripte.
+
** Zeigt die erzeugte Webseite an
** '''Datenbank''' – MySQL/MariaDB speichert und liefert Inhalte.
 
  
* Ablauf einer Anfrage:
+
* Webserver (Apache) mit PHP
** Nutzer ruft eine URL auf → Anfrage wird an den Webserver gesendet.
+
** Verarbeitet die Anfrage
** Webserver führt das PHP-Skript aus → PHP verarbeitet Eingaben.
+
** Führt Logik aus
** PHP stellt eine Verbindung zur MySQL-Datenbank her und holt Daten.
+
** Kommuniziert mit der Datenbank
** PHP generiert HTML-Code basierend auf den Datenbankinhalten.
 
** Der HTML-Code wird an den Browser gesendet und angezeigt.
 
  
== PHP mit MySQL verbinden ==
+
* Datenbank (MySQL / MariaDB)
* Verbindung zur Datenbank herstellen:
+
** Speichert strukturierte Daten
<pre>
+
** Liefert Daten auf Anfrage
<?php
+
** Nimmt Änderungen entgegen
$servername = "localhost";
 
$username = "root";
 
$password = "passwort";
 
$dbname = "meinedatenbank";
 
  
$conn = new mysqli($servername, $username, $password, $dbname);
+
== Ablauf einer Anfrage ==
 +
* Benutzer sendet eine Anfrage (z. B. Formular oder URL)
  
if ($conn->connect_error) {
+
* Anfrage wird an den Webserver übergeben
    die("Verbindung fehlgeschlagen: " . $conn->connect_error);
 
}
 
echo "Erfolgreich verbunden";
 
?>
 
</pre>
 
  
== Datenbankabfragen mit PHP ==
+
* PHP verarbeitet die Anfrage
* Daten in die Datenbank einfügen:
+
** Eingaben werden gelesen
<pre>
+
** Entscheidung wird getroffen (lesen / schreiben)
<?php
 
$sql = "INSERT INTO nutzer (name, email) VALUES ('Max', 'max@example.com')";
 
if ($conn->query($sql) === TRUE) {
 
    echo "Neuer Datensatz erfolgreich hinzugefügt";
 
} else {
 
    echo "Fehler: " . $conn->error;
 
}
 
?>
 
</pre>
 
  
* Daten aus der Datenbank abrufen:
+
* PHP stellt Anfrage an die Datenbank
<pre>
+
** SELECT → Daten lesen
<?php
+
** INSERT → Daten speichern
$sql = "SELECT id, name, email FROM nutzer";
+
** DELETE → Daten löschen
$result = $conn->query($sql);
 
  
if ($result->num_rows > 0) {
+
* Datenbank liefert Ergebnis zurück
    while($row = $result->fetch_assoc()) {
 
        echo "ID: " . $row["id"]. " - Name: " . $row["name"]. " - Email: " . $row["email"] . "<br>";
 
    }
 
} else {
 
    echo "Keine Ergebnisse";
 
}
 
?>
 
</pre>
 
  
== Formulare und Benutzereingaben ==
+
* PHP erzeugt daraus HTML
* PHP ermöglicht Interaktion durch Formulare.
 
<pre>
 
<form method="post" action="verarbeitung.php">
 
    Name: <input type="text" name="name"><br>
 
    Email: <input type="email" name="email"><br>
 
    <input type="submit" value="Absenden">
 
</form>
 
</pre>
 
  
* Verarbeiten der Eingaben in PHP:
+
* HTML wird an den Browser gesendet
<pre>
 
<?php
 
if ($_SERVER["REQUEST_METHOD"] == "POST") {
 
    $name = $_POST["name"];
 
    $email = $_POST["email"];
 
   
 
    $sql = "INSERT INTO nutzer (name, email) VALUES ('$name', '$email')";
 
    if ($conn->query($sql) === TRUE) {
 
        echo "Daten erfolgreich gespeichert";
 
    } else {
 
        echo "Fehler: " . $conn->error;
 
    }
 
}
 
?>
 
</pre>
 
  
== Sicherheitsaspekte ==
+
* Browser zeigt die fertige Seite an
* SQL-Injections verhindern:
 
<pre>
 
<?php
 
$stmt = $conn->prepare("INSERT INTO nutzer (name, email) VALUES (?, ?)");
 
$stmt->bind_param("ss", $name, $email);
 
$stmt->execute();
 
?>
 
</pre>
 
* Cross-Site Scripting (XSS) vermeiden:
 
<pre>
 
<?php
 
echo htmlspecialchars($row["name"]);
 
?>
 
</pre>
 
  
== Fazit ==
+
== Ablauf als Kette ==
* Dynamische Webseiten ermöglichen interaktive und datenbankgestützte Anwendungen.
+
* Benutzer → Anfrage → PHP → Datenbank → PHP → HTML → Benutzer
* PHP verarbeitet Benutzeranfragen und stellt Daten aus MySQL bereit.
+
 
* Sicherheitsmaßnahmen wie Prepared Statements und Validierungen sind essenziell.
+
== Trennung der Aufgaben ==
* Durch Kombination mit CSS und JavaScript können erweiterte Funktionen umgesetzt werden.
+
* HTML
 +
** Darstellung der Inhalte
 +
** Formulare und Tabellen
 +
 
 +
* PHP
 +
** Logik und Verarbeitung
 +
** Steuerung des Ablaufs
 +
** Kommunikation mit der Datenbank
 +
 
 +
* Datenbank
 +
** Speicherung der Daten
 +
** Strukturierung der Informationen
 +
 
 +
== Dynamik ==
 +
* Inhalte werden bei jedem Aufruf neu erzeugt
 +
* Ergebnisse hängen ab von:
 +
** Benutzereingaben
 +
** Datenbankinhalt
 +
** Zustand der Anwendung (z. B. Login)
 +
 
 +
== Zentrale Problemstellen ==
 +
* Eingaben des Benutzers
 +
** Können manipuliert werden
 +
** Dürfen nicht direkt übernommen werden
 +
 
 +
* Datenbankzugriff
 +
** Unsichere Abfragen führen zu Manipulation (SQL Injection)
 +
 
 +
* Ausgabe im Browser
 +
** Ungefilterte Inhalte führen zu Script-Ausführung (XSS)
 +
 
 +
== Sicherheitsprinzipien ==
 +
* Eingaben kontrollieren
 +
** Keine direkte Übernahme von Benutzerdaten
 +
 
 +
* Daten sicher speichern
 +
** Passwörter werden gehasht
 +
 
 +
* Ausgabe absichern
 +
** Inhalte werden vor der Anzeige gefiltert
 +
 
 +
== Bezug zur Umsetzung ==
 +
* Level 1
 +
** Grundfunktion (lesen / schreiben)
 +
 
 +
* Level 2
 +
** System ist funktional aber unsicher
 +
 
 +
* Level 3
 +
** Absicherung der Anwendung
 +
 
 +
== Kernaussage ==
 +
* Dynamische Webseiten bestehen aus Eingabe, Verarbeitung und Speicherung
 +
* Jede dieser Stellen kann korrekt funktionieren oder zur Schwachstelle werden

Aktuelle Version vom 22. März 2026, 10:16 Uhr

Dynamische Webseiten mit PHP und MySQL – Prinzip

Grundidee

  • Eine dynamische Webseite erzeugt ihren Inhalt zur Laufzeit und nicht aus festen Dateien
  • Inhalte werden aus einer Datenbank geladen oder durch Benutzereingaben verändert
  • Die gleiche URL kann unterschiedliche Inhalte liefern

Komponenten

  • Browser (Client)
    • Sendet Anfragen an den Server
    • Zeigt die erzeugte Webseite an
  • Webserver (Apache) mit PHP
    • Verarbeitet die Anfrage
    • Führt Logik aus
    • Kommuniziert mit der Datenbank
  • Datenbank (MySQL / MariaDB)
    • Speichert strukturierte Daten
    • Liefert Daten auf Anfrage
    • Nimmt Änderungen entgegen

Ablauf einer Anfrage

  • Benutzer sendet eine Anfrage (z. B. Formular oder URL)
  • Anfrage wird an den Webserver übergeben
  • PHP verarbeitet die Anfrage
    • Eingaben werden gelesen
    • Entscheidung wird getroffen (lesen / schreiben)
  • PHP stellt Anfrage an die Datenbank
    • SELECT → Daten lesen
    • INSERT → Daten speichern
    • DELETE → Daten löschen
  • Datenbank liefert Ergebnis zurück
  • PHP erzeugt daraus HTML
  • HTML wird an den Browser gesendet
  • Browser zeigt die fertige Seite an

Ablauf als Kette

  • Benutzer → Anfrage → PHP → Datenbank → PHP → HTML → Benutzer

Trennung der Aufgaben

  • HTML
    • Darstellung der Inhalte
    • Formulare und Tabellen
  • PHP
    • Logik und Verarbeitung
    • Steuerung des Ablaufs
    • Kommunikation mit der Datenbank
  • Datenbank
    • Speicherung der Daten
    • Strukturierung der Informationen

Dynamik

  • Inhalte werden bei jedem Aufruf neu erzeugt
  • Ergebnisse hängen ab von:
    • Benutzereingaben
    • Datenbankinhalt
    • Zustand der Anwendung (z. B. Login)

Zentrale Problemstellen

  • Eingaben des Benutzers
    • Können manipuliert werden
    • Dürfen nicht direkt übernommen werden
  • Datenbankzugriff
    • Unsichere Abfragen führen zu Manipulation (SQL Injection)
  • Ausgabe im Browser
    • Ungefilterte Inhalte führen zu Script-Ausführung (XSS)

Sicherheitsprinzipien

  • Eingaben kontrollieren
    • Keine direkte Übernahme von Benutzerdaten
  • Daten sicher speichern
    • Passwörter werden gehasht
  • Ausgabe absichern
    • Inhalte werden vor der Anzeige gefiltert

Bezug zur Umsetzung

  • Level 1
    • Grundfunktion (lesen / schreiben)
  • Level 2
    • System ist funktional aber unsicher
  • Level 3
    • Absicherung der Anwendung

Kernaussage

  • Dynamische Webseiten bestehen aus Eingabe, Verarbeitung und Speicherung
  • Jede dieser Stellen kann korrekt funktionieren oder zur Schwachstelle werden