Järjestelmäarkkitehtuuri & Kulinaarinen alusta
PHP:llä ja MySQL:llä kehitetty räätälöity verkkosovellus ruokareseptien löytämiseen, valmistamiseen ja jakamiseen. Alusta sisältää reaaliaikaisen asynkronisen haun Fetch API:lla, suojatun jäsenalueen Bcrypt-salasanatiivisteillä ja tarkan kuvatiedostojen MIME-validoinnin.
┌─────────────────────────────────────────────────────────────────────────────┐
│ 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)
Välitön asynkroninen haku
JavaScript ES6 Fetch API -hakumoottori, joka hakee tiedot MySQL-tietokannasta reaaliajassa ilman sivun uudelleenlatausta.
Jäsenalue & Tietoturva
Käyttäjien rekisteröitymis- ja kirjautumisjärjestelmä salatulla salasanasuojauksella ja automaattisilla PHPMailer-sähköposti-ilmoituksilla.
Tarkka tiedostovalidointi
Kuvien binääritason varmennus getimagesize()-funktiolla ja uniikit siivotut tiedostonimet slugify()- ja uniqid()-toiminnoilla.
1. Toiminnalliset moduulit & Käyttäjäpolku
Ergonomisesti suunnitellut moduulit, jotka helpottavat reseptien selaamista ja omien luomusten julkaisemista:
Dynaaminen etusivu
3 satunnaisen reseptin esittely jokaisella vierailukerralla tarjoaa jatkuvaa ruoanlaittoinspiraatiota.
RAND() SQLCartes dynamiquesBootstrap 5
Yksityiskohtainen reseptisivu
Selkeä esitystapa, jossa ainesosat on jaoteltu riveittäin ja valmistusohjeet on numeroitu vaiheittain.
IngrédientsÉtapes pas-à-pasnl2br
Reseptien lisäys & Hallinta
Kirjautuneille jäsenille tarkoitettu suojattu lomake kategoriavalinnalla ja kuvien latausvalidoinnilla.
Upload MIMEslugify()uniqid()
2. Asynkroninen haku & SQL-tietoturva
Taustajärjestelmän search.php-skripti suorittaa valmisteltuja monikriteerisiä SQL-kyselyitä suojaten järjestelmän täysin SQL-injektioilta:
// 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
]);
- Kattava tekstitiedonhaku: Samanaikainen haku reseptien otsikoista, kuvauksista ja ainesosaluetteloista SQL LIKE -operaattorilla.
- Kategoriasuodatus: Välitön suodatus ruokalajeittain (Alkupalat, Pääruoat, Jälkiruoat) dynaamisesti API:n kautta ladattuna.
- Palaute tyhjistä tuloksista: Selkeä ja ystävällinen ilmoitusviesti, kun annetuilla hakuehdoilla ei löydy reseptejä.
3. MySQL-tietomalli & Relaatiokaavio
Normalisoitu relaatiotietokanta, joka takaa tiedon eheyden reseptien, kategorioiden ja käyttäjätilien välillä:
| Taulu |
Pääsarakkeet |
SQL-tyypit |
Kuvaus & Rajoitteet |
| categories |
id, name |
INT, VARCHAR(255) |
Ruokakategoriat automaattisesti kasvavalla pääavaimella. |
| recipes |
id, category_id, title, description, ingredients, instructions, image |
INT, TEXT, VARCHAR(255) |
Viiteavaimella kategorioihin liitetyt reseptit ainesosalistoineen ja valmistusvaiheineen. |
| users |
id, first_name, last_name, email, password, role |
INT, VARCHAR(255) |
Käyttäjätilit uniikilla sähköpostirajoitteella ja turvallisesti tiivistetyillä salasanoilla. |
4. Tekninen komponenttimatriisi
| Komponentti |
Tekninen toteutus |
Käyttäjä- & Suorituskykyetu |
| Asynkroninen haku |
JavaScript ES6 Fetch API + search.php |
Sulava kokemus Välitön dynaaminen suodatus ilman sivun uudelleenlatausta |
| Valmistellut PDO-lausekkeet |
PHP PDO Prepared Statements |
Huipputurvallisuus Täysi suojaus SQL-injektiohaavoittuvuuksilta |
| Tiedostojen siivous |
getimagesize() + slugify() + uniqid() |
Tiedostojen eheys Estää naamioidut suoritettavat tiedostot ja ylikirjoitukset |
| Salasanojen tiivistys |
password_hash() & password_verify() (Bcrypt) |
Tietosuoja Standardinmukainen käyttäjätietojen suojaus Bcryptillä |
Tutustu Cuisinea-palveluun verkossa
Selaa reseptejä, testaa reaaliaikaista hakumoottoria ja tutustu käyttöliittymään.
Avaa Cuisinea-sovellus ↗