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…“
 
Keine Bearbeitungszusammenfassung
 
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