← Torna ai progetti Sito web · Ricette

Cuisinea

Una piattaforma di ricette focalizzata sulla chiara presentazione dei contenuti e sulla navigazione semplice.

Cuisinea
PROGETTO

Il progetto

Cuisinea è stata progettata per presentare le ricette in modo semplice, visivo e accessibile, con una struttura che rende facile esplorare i contenuti culinari.

Architettura di Sistema & Piattaforma Culinaria

Applicazione web sviluppata in PHP e MySQL dedicata alla scoperta, consultazione e condivisione di ricette di cucina. Dispone di un motore di ricerca asincrono in tempo reale tramite Fetch API, un'area membri sicura con hashing Bcrypt e una validazione rigorosa delle immagini caricate.

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

Ricerca Asincrona Istantanea

Motore di ricerca JavaScript ES6 Fetch che interroga il database MySQL in tempo reale senza ricaricare la pagina.

Area Membri & Sicurezza

Sistema di registrazione e autenticazione con cifratura sicura delle password e notifiche email automatiche tramite PHPMailer.

Validazione Rigorosa degli Upload

Verifica binaria dei file immagine con getimagesize() e generazione di nomi univoci tramite slugify() e uniqid().

1. Moduli Funzionali & Percorso Utente

Moduli ergonomici progettati per semplificare la consultazione e la condivisione di ricette:

Homepage Dinamica

Selezione casuale di 3 ricette ad ogni visita per offrire continua ispirazione culinaria.

RAND() SQLCartes dynamiquesBootstrap 5

Scheda Ricetta Completa

Presentazione dettagliata con suddivisione degli ingredienti riga per riga e istruzioni di preparazione numerate.

IngrédientsÉtapes pas-à-pasnl2br

Creazione & Gestione Ricette

Modulo di pubblicazione riservato agli utenti registrati con selezione delle categorie e upload controllato delle foto.

Upload MIMEslugify()uniqid()

2. Ricerca Asincrona & Sicurezza SQL

Lo script search.php esegue query SQL preparate multicriterio garantendo una protezione totale contro le SQL injection:

// 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
]);
            
  • Ricerca Testuale Universale: Analisi simultanea su titolo, descrizione e ingredienti tramite operatore SQL LIKE.
  • Filtro per Categoria: Filtro immediato per portata (Antipasti, Primi/Secondi, Dolci) caricato dinamicamente via API.
  • Gestione Risultati Vuoti: Messaggio chiaro e amichevole quando nessuna ricetta corrisponde ai criteri inseriti.

3. Modello Dati & Schema Relazionale MySQL

Struttura relazionale normalizzata per garantire l'integrità dei dati tra ricette, categorie e utenti:

Tabella Colonne Chiave Tipi SQL Descrizione & Vincoli
categories id, name INT, VARCHAR(255) Categorie di portate con chiave primaria auto-incrementale.
recipes id, category_id, title, description, ingredients, instructions, image INT, TEXT, VARCHAR(255) Ricette collegate alle categorie tramite chiave esterna, con ingredienti e passaggi di preparazione.
users id, first_name, last_name, email, password, role INT, VARCHAR(255) Account utente con vincolo di unicità sull'email e password con hashing sicuro.

4. Matrice dei Componenti Tecnici

Componente Implementazione Tecnica Vantaggio Utente & Prestazioni
Ricerca Asincrona JavaScript ES6 Fetch API + search.php Esperienza Fluida Filtro dinamico istantaneo senza ricaricamento della pagina
Prepared Statements PDO PHP PDO Prepared Statements Massima Sicurezza Protezione completa da vulnerabilità di SQL injection
Sanitizzazione Upload getimagesize() + slugify() + uniqid() Integrità File Blocca file eseguibili mascherati e previene sovrascritture
Hashing delle Password password_hash() & password_verify() (Bcrypt) Protezione Dati Custodia sicura delle credenziali secondo gli standard con Bcrypt

Scopri Cuisinea Online

Esplora le ricette, prova la ricerca asincrona in tempo reale e naviga nell'applicazione.

Visita l'Applicazione Cuisinea ↗