← Tillbaka till projekt Webbplats · Recept

Cuisinea

En receptplattform fokuserad på tydlig innehållspresentation och enkel navigering.

Cuisinea
PROJEKT

Projektet

Cuisinea är designad för att presentera recept på ett enkelt, visuellt och tillgängligt sätt, med en struktur som gör det lätt att utforska kulinariskt innehåll.

Systemarkitektur & Kulinarisk plattform

En skräddarsydd webbapplikation utvecklad i PHP och MySQL för att upptäcka, tillaga och dela matlagningsrecept. Den innehåller asynkron sökning i realtid via Fetch API, en säker medlemsavdelning med Bcrypt-lösenordshashning och strikt MIME-validering för receptbilder.

┌─────────────────────────────────────────────────────────────────────────────┐
│                    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)
            

Omedelbar asynkron sökning

JavaScript ES6 Fetch API-sökmotor som frågar MySQL-databasen i realtid utan att ladda om sidan.

Medlemsområde & Säkerhet

Registrerings- och inloggningssystem med stark lösenordskryptering och automatiska e-postaviseringar via PHPMailer.

Strikt uppladdningsvalidering

Binär bildfilsverifiering via getimagesize() och unika, sanerade filnamn med slugify() och uniqid().

1. Funktionella moduler & Användarupplevelse

Användarvänliga moduler utformade för att förenkla receptutforskning och bidrag från användare:

Dynamisk startsida

Slumpmässig visning av 3 utvalda recept vid varje besök för kontinuerlig kulinarisk inspiration.

RAND() SQLCartes dynamiquesBootstrap 5

Detaljerad receptsida

Tydlig presentation med ingredienser uppdelade rad för rad och numrerade tillagningssteg.

IngrédientsÉtapes pas-à-pasnl2br

Receptpublicering & Hantering

Säkert formulär för inloggade medlemmar med kategorival och kontrollerad bilduppladdning.

Upload MIMEslugify()uniqid()

2. Asynkron sökning & SQL-säkerhet

Backend-skriptet search.php kör förberedda flerkriterie-SQL-frågor som ger fullständigt skydd mot SQL-injektioner:

// 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
]);
            
  • Universell textsökning: Samtidig sökning i recepttitlar, beskrivningar och ingredienser med SQL LIKE-operatorn.
  • Kategorifiltrering: Omedelbar filtrering efter måltidstyp (Förrätter, Huvudrätter, Desserter), inläst dynamiskt via API:et.
  • Återkoppling vid inga träffar: Ett tydligt och hjälpsamt meddelande när inga recept matchar de angivna sökkriterierna.

3. MySQL-datamodell & Relationsschema

Normaliserad relationsdatabasdesign som säkerställer dataintegritet mellan recept, kategorier och användarkonton:

Tabell Nyckelkolumner SQL-typer Beskrivning & Villkor
categories id, name INT, VARCHAR(255) Måltidskategorier med automatiskt ökande primärnyckel.
recipes id, category_id, title, description, ingredients, instructions, image INT, TEXT, VARCHAR(255) Recept kopplade till kategorier via främmande nycklar, med ingredienslistor och instruktionssteg.
users id, first_name, last_name, email, password, role INT, VARCHAR(255) Användarkonton med unika e-postbegränsningar och säkert hashade lösenord.

4. Teknisk komponentmatris

Komponent Teknisk implementering Användar- & Prestandafördel
Asynkron sökning JavaScript ES6 Fetch API + search.php Smidig upplevelse Omedelbar dynamisk filtrering utan sidomladdning
Förberedda PDO-satser PHP PDO Prepared Statements Maximal säkerhet Fullständigt skydd mot sårbarheter för SQL-injektioner
Uppladdningssanering getimagesize() + slugify() + uniqid() Filintegritet Blockerar förklädda körbara filer och förhindrar överskrivning
Lösenordshashning password_hash() & password_verify() (Bcrypt) Dataskydd Branschstandardiserat skydd av inloggningsuppgifter med Bcrypt

Upplev Cuisinea online

Utforska receptsamlingen, testa realtidssökningen och upptäck webbgränssnittet.

Besök Cuisinea-appen ↗