💾 PHP & Datenbank

Sichere Verbindung zwischen PHP und MariaDB

🎯 1. Voraussetzungen

Bevor du beginnst, stelle sicher, dass:

📁 2. Ordnerstruktur – wichtig bei gemeinsamer PC-Nutzung!

Speichere deine Dateien in deinem persönlichen Ordner:

C:\xampp\htdocs\schueler-max\

Rufe sie im Browser auf mit:
http://localhost/schueler-max/

🔌 3. Datenbankverbindung herstellen (PDO)

Erstelle eine Datei db.php:

<?php
// db.php – Sichere Verbindung
$host = 'localhost';
$dbname = 'mini_api';
$username = 'root';
$password = '';

try {
  $pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8mb4", $username, $password);
  $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
  die("Verbindung fehlgeschlagen: " . $e->getMessage());
}
?>
💡 Merke: - utf8mb4 für Umlaute und Emojis
- PDO ist sicherer als alte Methoden

💾 4. Daten sicher speichern (Prepared Statements)

Erstelle speichern.php:

<?php
require_once 'db.php';

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
  http_response_code(405);
  exit('Nur POST erlaubt');
}

$name = trim($_POST['name'] ?? '');
$text = trim($_POST['text'] ?? '');

if (strlen($name) < 2 || strlen($text) < 5) {
  http_response_code(400);
  exit('Name (mind. 2 Zeichen), Text (mind. 5 Zeichen)');
}

try {
  $stmt = $pdo->prepare("INSERT INTO nachrichten (name, text) VALUES (?, ?)");
  $stmt->execute([$name, $text]);
  echo "✅ Nachricht gespeichert!";
} catch (PDOException $e) {
  http_response_code(500);
  error_log("Fehler: " . $e->getMessage());
  echo "❌ Speichern fehlgeschlagen.";
}
?>

👁️ 5. Daten abrufen und anzeigen

Erstelle anzeigen.php:

<?php
require_once 'db.php';
$stmt = $pdo->query("SELECT * FROM nachrichten ORDER BY id DESC");
$nachrichten = $stmt->fetchAll(PDO::FETCH_ASSOC);
?>

<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">
  <title>Nachrichten</title>
</head>
<body>
  <h1>Alle Nachrichten</h1>
  <?php foreach ($nachrichten as $n): ?>
    <div style="border:1px solid #ccc; padding:10px; margin:10px 0;">
      <strong><?= htmlspecialchars($n['name'], ENT_QUOTES, 'UTF-8') ?>:</strong>
      <p><?= htmlspecialchars($n['text'], ENT_QUOTES, 'UTF-8') ?></p>
    </div>
  <?php endforeach; ?>
</body>
</html>
⚠️ Niemals vergessen: Immer htmlspecialchars() verwenden!

🌐 6. Testen

1. Öffne anzeigen.php
2. Erstelle ein HTML-Formular, das an speichern.php sendet
3. Prüfe: Werden Umlaute korrekt gespeichert?

🔗 W3Schools – PHP MySQL Insert

🔒 7. Sicherheitscheckliste

🎓 Jetzt kannst du PHP sicher mit der Datenbank verbinden!

→ Weiter: Node.js als Server