← العودة إلى المشاريع موقع إلكتروني · وصفات

Cuisinea

منصة وصفات تركز على عرض المحتوى بوضوح وسهولة التصفح.

Cuisinea
المشروع

المشروع

تم تصميم Cuisinea لعرض الوصفات بطريقة بسيطة ومرئية وسهلة الوصول، مع هيكل يجعل استكشاف المحتوى الخاص بالطهي سهلًا.

بنية النظام والمنصة المخصصة للطبخ

تطبيق ويب مخصص تم تطويره بلغة PHP وقاعدة بيانات MySQL لمشاركة واكتشاف وصفات الطهي. يتميز بمحرك بحث غير متزامن في الوقت الفعلي عبر Fetch API، ومساحة عضوية آمنة مع تشفير Bcrypt، وتحقق ثنائي صارم لرفع صور الوصفات.

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

بحث فوري غير متزامن

محرك بحث تفاعلي عبر Fetch API يطابق قاعدة بيانات MySQL في الوقت الفعلي دون إعادة تحميل الصفحة.

مساحة الأعضاء والأمان

نظام تسجيل ودخول آمن مع تشفير قوي لكلمات المرور وإشعارات SMTP تلقائية عبر PHPMailer.

تحقق صارم من الملفات المرفوعة

فحص ثنائي لملفات الصور عبر getimagesize() وتوليد أسماء ملفات فريدة ونظيفة باستخدام slugify() وuniqid().

1. المكونات الوظيفية وتجربة المستخدم

أقسام منظمة ومصممة لتبسيط استعراض الوصفات ومشاركتها مع مجتمع الطهاة:

صفحة رئيسية ديناميكية

عرض 3 وصفات عشوائية في كل زيارة لتقديم أفكار طهي متجددة باستمرار.

RAND() SQLCartes dynamiquesBootstrap 5

صفحة الوصفة التفصيلية

عرض شامل يتضمن تفصيل المقادير سطرًا بسطر وخطوات تحضير مرقمة وواضحة.

IngrédientsÉtapes pas-à-pasnl2br

إضافة وإدارة الوصفات

نموذج نشر آمن مخصص للأعضاء المسجلين مع اختيار التصنيف ورفع الصور المعتمدة.

Upload MIMEslugify()uniqid()

2. البحث غير المتزامن وأمان SQL

تنفذ الشفرة الخلفية search.php استعلامات SQL مجهزة متعددة المعايير توفر حماية تامة ضد هجمات حقن SQL:

// 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
]);
            
  • بحث نصي شامل: فحص متزامن في عناوين الوصفات، الوصف، وقائمة المكونات عبر معامل SQL LIKE.
  • التصفية حسب الفئة: تصفية فورية حسب نوع الوجبة (مقبلات، أطباق رئيسية، حلويات) يتم تحميلها مباشرة عبر الـ API.
  • إشعار عند انعدام النتائج: رسالة توضيحية واضحة عندما لا تتطابق أي وصفة مع معايير البحث المدخلة.

3. نموذج البيانات وهيكل MySQL العلائقي

هيكل علائقي معياري يحافظ على تكامل البيانات بين الوصفات والفئات وحسابات المستخدمين:

الجدول الحقول الأساسية أنواع SQL الوصف والقيود
categories id, name INT, VARCHAR(255) فئات وأصناف الوجبات مع مفتاح أساسي تلقائي التزايد.
recipes id, category_id, title, description, ingredients, instructions, image INT, TEXT, VARCHAR(255) الوصفات المرتبطة بالفئات بمفتاح خارجي، مع قائمة المكونات وخطوات التحضير.
users id, first_name, last_name, email, password, role INT, VARCHAR(255) حسابات المستخدمين مع قيد فريد لعنوان البريد الإلكتروني وكلمات مرور مشفرة بأمان.

4. مصفوفة المكونات التقنية

المكون التطبيق التقني الفائدة للمستخدم والأداء
بحث غير متزامن JavaScript ES6 Fetch API + search.php تجربة سلسة تصفية ديناميكية فورية دون إعادة تحميل الصفحة
استعلامات PDO المجهزة PHP PDO Prepared Statements أعلى درجات الأمان حماية شاملة ضد ثغرات حقن SQL
فحص الملفات المرفوعة getimagesize() + slugify() + uniqid() سلامة الملفات حظر الملفات التنفيذية المخفية ومنع استبدال الملفات
تشفير كلمات المرور password_hash() & password_verify() (Bcrypt) حماية البيانات تخزين آمن لبيانات الاعتماد وفق معيار Bcrypt

تجربة منصة Cuisinea مباشرة

تصفح قائمة الوصفات واختبر محرك البحث اللحظي وتصميم المنصة.

زيارة تطبيق Cuisinea ↗