← Zurück zu den Projekten Website · Rezepte

Cuisinea

Eine Rezeptplattform mit klarer Inhaltspräsentation und einfacher Navigation.

Cuisinea
PROJEKT

Das Projekt

Cuisinea wurde entwickelt, um Rezepte einfach, visuell und zugänglich darzustellen, mit einer Struktur, die die Navigation durch kulinarische Inhalte erleichtert.

Systemarchitektur & Kulinarische Plattform

Eine maßgeschneiderte Webanwendung, entwickelt mit PHP und MySQL zum Entdecken, Kochen und Teilen von Rezepten. Sie verfügt über eine asynchrone Echtzeitsuche via Fetch-API, einen sicheren Mitgliederbereich mit Bcrypt-Passwort-Hashing und eine strenge MIME-Prüfung für Rezeptfotos.

┌─────────────────────────────────────────────────────────────────────────────┐
│                    Cuisinea Full-Stack Web Architecture                     │
└──────────────────────────────────────┬──────────────────────────────────────┘
                                       │
           ┌───────────────────────────┼───────────────────────────┐
           ▼                           ▼                           ▼
  🔍 Moteur Asynchrone (AJAX)   👤 Espace Membre & Sécurité  🍲 Modèle de Données (SQL)
  • Fetch API en temps réel    • Hash Bcrypt / Argon2       • Tables categories & recipes
  • Requête SQL LIKE préparée  • Sessions PHP & Rôles       • Clés étrangères & Contraintes
  • Filtrage par catégories    • Envois SMTP (PHPMailer)    • Validation MIME binaire
  • Injection DOM sans reload  • Protection XSS & Uploads   • Chargement différé (Lazy)
            

Asynchrone Echtzeitsuche

JavaScript ES6 Fetch-API-Suchmaschine, die MySQL-Datenbanken in Echtzeit ohne Neuladen der Seite abfragt.

Mitgliederbereich & Sicherheit

Registrierungs- und Login-System mit kryptografischem Passwort-Hashing und automatischen SMTP-Benachrichtigungen via PHPMailer.

Strenge Upload-Validierung

Binäre Bildprüfung mittels getimagesize() und eindeutige bereinigte Dateinamen mit slugify() und uniqid().

1. Funktionsmodule & Benutzerführung

Ergonomisch gestaltete Module zur Vereinfachung der Rezeptsuche und für eigene Beiträge:

Dynamische Startseite

Zufällige Anzeige von 3 Rezepten bei jedem Besuch für kontinuierliche kulinarische Inspiration.

RAND() SQLCartes dynamiquesBootstrap 5

Detaillierte Rezeptseite

Übersichtliche Darstellung mit zeilenweiser Zutatenaufteilung und nummerierten Schritt-für-Schritt-Anleitungen.

IngrédientsÉtapes pas-à-pasnl2br

Rezeptverwaltung & Veröffentlichung

Sicheres Formular für angemeldete Mitglieder mit Kategorieauswahl und geprüften Bilduploads.

Upload MIMEslugify()uniqid()

2. Asynchrone Suche & SQL-Sicherheit

Das search.php-Backend führt vorbereitete Multi-Kriterien-SQL-Statements aus und schützt vor SQL-Injections:

// Requête préparée multi-critères sécurisée (search.php)
$sql = "SELECT * FROM recipes
        WHERE (? = '' OR title LIKE ? 
               OR description LIKE ? 
               OR ingredients LIKE ?)
        AND (? = '' OR category_id = ?)";

$stmt = $pdo->prepare($sql);
$stmt->execute([
    $searchTerm, "%$searchTerm%", "%$searchTerm%", "%$searchTerm%",
    $category, $category
]);
            
  • Universelle Volltextsuche: Gleichzeitiges Durchsuchen von Rezepttiteln, Beschreibungen und Zutaten mit dem SQL-LIKE-Operator.
  • Kategoriefilterung: Sofortige Filterung nach Speiseart (Vorspeisen, Hauptgerichte, Desserts), dynamisch über die API geladen.
  • Feedback bei Null-Ergebnissen: Freundliche Hinweismeldung, falls keine Rezepte zu den eingegebenen Suchkriterien passen.

3. MySQL-Datenmodell & Relationales Schema

Normalisiertes relationales Datenbankdesign zur Sicherung der Datenintegrität zwischen Rezepten, Kategorien und Benutzern:

Tabelle Schlüsselspalten SQL-Typen Beschreibung & Constraints
categories id, name INT, VARCHAR(255) Rezeptkategorien mit automatisch inkrementiertem Primärschlüssel.
recipes id, category_id, title, description, ingredients, instructions, image INT, TEXT, VARCHAR(255) Rezepte, die über Fremdschlüssel mit Kategorien verknüpft sind, mit Zutatenlisten und Zubereitungsschritten.
users id, first_name, last_name, email, password, role INT, VARCHAR(255) Benutzerkonten mit eindeutiger E-Mail-Beschränkung und sicher gehashten Passwörtern.

4. Technische Komponentenmatrix

Komponente Technische Umsetzung Benutzer- & Performancevorteil
Asynchrone Suche JavaScript ES6 Fetch API + search.php Flüssiges Erlebnis Sofortige dynamische Filterung ohne Neuladen der Seite
Vorbereitete PDO-Statements PHP PDO Prepared Statements Maximale Sicherheit Vollständiger Schutz vor SQL-Injection-Schwachstellen
Upload-Bereinigung getimagesize() + slugify() + uniqid() Datei-Integrität Blockiert getarnte ausführbare Dateien und verhindert Überschreiben
Passwort-Hashing password_hash() & password_verify() (Bcrypt) Datenschutz Sicherer Schutz der Zugangsdaten nach Industriestandards mit Bcrypt

Cuisinea live erleben

Durchstöbern Sie die Rezeptsammlung und testen Sie die Echtzeitsuche direkt im Web.

Cuisinea-Anwendung besuchen ↗