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 ↗