← Powrót do projektów Strona · Przepisy

Cuisinea

Platforma z przepisami skupiona na przejrzystej prezentacji treści i łatwej nawigacji.

Cuisinea
PROJEKT

Projekt

Cuisinea została zaprojektowana, aby prezentować przepisy w prosty, wizualny i dostępny sposób, z układem ułatwiającym eksplorację treści kulinarnych.

Architektura systemu & Platforma kulinarna

Dedykowana aplikacja internetowa stworzona w PHP i MySQL przeznaczona do odkrywania, przygotowywania i dzielenia się przepisami kulinarnymi. Zawiera asynchroniczne wyszukiwanie w czasie rzeczywistym z użyciem Fetch API, bezpieczną strefę członkowską z haszowaniem haseł przez Bcrypt oraz ścisłą walidację plików graficznych.

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

Błyskawiczne wyszukiwanie asynchroniczne

Silnik wyszukiwania oparty na JavaScript ES6 Fetch API odpytujący bazę danych MySQL w czasie rzeczywistym bez przeładowywania strony.

Strefa użytkownika & Bezpieczeństwo

System rejestracji i logowania z kryptograficznym haszowaniem haseł oraz automatycznymi powiadomieniami e-mail przez PHPMailer.

Ścisła walidacja przesyłanych plików

Binarne sprawdzanie poprawności zdjęć za pomocą getimagesize() oraz generowanie unikalnych, bezpiecznych nazw plików przez slugify() i uniqid().

1. Moduły funkcjonalne & Ścieżka użytkownika

Intuicyjnie zaprojektowane moduły ułatwiające przeglądanie przepisów i dodawanie własnych kulinarnych pomysłów:

Dynamiczna strona główna

Losowy wybór 3 przepisów przy każdej wizycie zapewniający ciągłą inspirację kulinarną.

RAND() SQLCartes dynamiquesBootstrap 5

Szczegółowa karta przepisu

Przejrzysta prezentacja z podziałem składników linijka po linijce oraz ponumerowanymi krokami przygotowania.

IngrédientsÉtapes pas-à-pasnl2br

Dodawanie i edycja przepisów

Bezpieczny formularz publikacji dla zalogowanych członków z wyborem kategorii i weryfikacją przesyłanych zdjęć.

Upload MIMEslugify()uniqid()

2. Wyszukiwanie asynchroniczne & Bezpieczeństwo SQL

Skrypt search.php wykonuje przygotowane zapytania SQL z wieloma kryteriami, gwarantując całkowitą ochronę przed atakami 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
]);
            
  • Uniwersalne wyszukiwanie tekstowe: Jednoczesne przeszukiwanie tytułów przepisów, opisów i składników przy użyciu operatora SQL LIKE.
  • Filtrowanie według kategorii: Natychmiastowe filtrowanie według typu dania (Przystawki, Dania główne, Desery) ładowane dynamicznie przez API.
  • Informacja o braku wyników: Przejrzysty i czytelny komunikat, gdy żaden przepis nie spełnia wprowadzonych kryteriów.

3. Model danych MySQL & Schemat relacyjny

Znormalizowana struktura bazy danych zapewniająca spójność relacji między przepisami, kategoriami a kontami użytkowników:

Tabela Kluczowe kolumny Typy SQL Opis & Ograniczenia
categories id, name INT, VARCHAR(255) Kategorie dań z automatycznie inkrementowanym kluczem głównym.
recipes id, category_id, title, description, ingredients, instructions, image INT, TEXT, VARCHAR(255) Przepisy powiązane z kategoriami kluczami obcymi, zawierające listy składników i instrukcje wykonania.
users id, first_name, last_name, email, password, role INT, VARCHAR(255) Konta użytkowników z unikalnym adresem e-mail i bezpiecznie haszowanymi hasłami.

4. Matryca komponentów technicznych

Komponent Implementacja techniczna Korzyść użytkowa & Wydajność
Wyszukiwanie asynchroniczne JavaScript ES6 Fetch API + search.php Płynne działanie Błyskawiczne filtrowanie dynamiczne bez przeładowywania strony
Zapytania przygotowane PDO PHP PDO Prepared Statements Maksymalne bezpieczeństwo Pełna ochrona przed podatnościami SQL Injection
Sanityzacja plików getimagesize() + slugify() + uniqid() Integralność plików Blokuje fałszywe pliki wykonywalne i zapobiega nadpisywaniu
Haszowanie haseł password_hash() & password_verify() (Bcrypt) Ochrona danych Bezpieczne przechowywanie poświadczeń zgodnie ze standardem Bcrypt

Zobacz Cuisinea na żywo

Przeglądaj przepisy, przetestuj wyszukiwarkę w czasie rzeczywistym i sprawdź działanie aplikacji.

Przejdź do aplikacji Cuisinea ↗