نظام إدارة مدرسة محلي مبني بـ PHP + PDO + MySQL/MariaDB، ومجهز للتشغيل على XAMPP في Windows. الواجهة عربية RTL ومتجاوبة مع الكمبيوتر والهاتف واللوحي.
هذه النسخة ليست مجرد تغيير ألوان؛ تمت إعادة مراجعة التدفق البرمجي والبيانات وإضافة طبقات عملية:
-
جلسات PHP آمنة:
HttpOnly+SameSite=Lax+Secureتلقائيًا عند HTTPS. -
تجديد Session ID بعد تسجيل الدخول، مهلة خمول 30 دقيقة وحد أقصى 8 ساعات.
-
CSRF على عمليات POST الحساسة، وتحويل حذف الطالب وتسجيل الخروج من GET إلى POST.
-
استعلامات PDO مجهزة، وترميز HTML مركزي، والتحقق من المدخلات في الخادم.
-
صلاحيات RBAC + صلاحيات فردية + سجل تدقيق.
-
حماية أولية من محاولات الدخول المتكررة.
-
حماية مجلد uploads من تنفيذ ملفات PHP.
-
رفع صور يتحقق من MIME والحجم وكون الملف صورة فعلية، مع أسماء عشوائية.
-
الهيكل الأكاديمي: رياض أطفال، ابتدائي، متوسط، ثانوي؛ صفوف وشعب وغرف وسعة وعام دراسي.
-
قاعدة بيانات تجريبية موسعة تشمل 28 شعبة و140 طالبًا و14 مادة و14 معلمًا وتوزيعات مادة/معلم/شعبة.
-
صفحة الهيكل الأكاديمي والتوزيع التعليمي.
-
تصدير قائمة الطلاب إلى CSV مع UTF-8 BOM لفتحها بشكل صحيح في Excel.
-
وضع فاتح/داكن يحفظ التفضيل محليًا فقط.
-
Drawer متجاوب للهاتف، Overlay، إغلاق بـ Escape، واختصار
Ctrl + Kللبحث. -
Tooltips ومساعدات للحقل ورسائل تحقق عربية.
-
حركة خفيفة مع احترام
prefers-reduced-motion. -
تقارير قابلة للطباعة ومحرر Quill محلي.
-
رؤوس أمنية أساسية للمتصفح.
الحسابات التجريبية التالية تستخدم كلمة المرور:
admin123
| المستخدم | الدور |
|---|---|
admin |
مدير النظام |
manager1 |
مدير المدرسة |
accountant1 |
محاسب |
teacher1 |
معلم |
غيّر كلمات المرور فورًا قبل أي استخدام فعلي. البيانات داخل قاعدة البيانات تجريبية وليست بيانات طلاب حقيقية.
-
ثبّت XAMPP وشغّل Apache و MySQL.
-
فك ضغط المشروع داخل:
C:\xampp\htdocs\school_manager -
افتح phpMyAdmin.
-
استورد:
database.sql -
افتح:
http://localhost/school_manager/login.php -
سجّل الدخول بالحساب التجريبي.
-
من إعدادات المدرسة غيّر اسم المدرسة والهوية والبيانات.
-
من المستخدمون والصلاحيات أنشئ حسابات العمل الحقيقية وغيّر كلمات المرور.
لا تحتاج النسخة الجديدة إلى استيراد
upgrade_v2.sqlأوupgrade_v3.sqlعند التثبيت من الصفر. ملفdatabase.sqlأصبح شاملًا.
إذا لديك قاعدة v2/v3 تحتوي بيانات تريد الاحتفاظ بها:
-
خذ Export/Backup من phpMyAdmin.
-
استورد
upgrade_v4.sql. -
استبدل ملفات المشروع بالنسخة الجديدة.
-
افتح النظام بعد إعادة تشغيل Apache.
-
راجع الهيكل الأكاديمي والمستخدمون والصلاحيات.
إذا كانت قاعدة MySQL قديمة جدًا ولا تدعم ADD COLUMN IF NOT EXISTS، حدّث XAMPP/MariaDB قبل تنفيذ الترقية.
الجداول الأساسية:
-
users: المستخدمون والحسابات. -
permissions,role_permissions,user_permissions: التحكم في الوصول. -
audit_logs: سجل العمليات الحساسة. -
classes: المرحلة + الصف + الشعبة + الغرفة + السعة + العام. -
students: ملف الطالب وولي الأمر والحالة. -
subjects: المواد وعدد الحصص والمرحلة. -
teachers: بيانات المعلمين. -
teacher_subjects: المواد التي يستطيع المعلم تدريسها. -
class_subjects: المادة والمعلم المرتبطان بالشعبة. -
attendance: الحضور اليومي بقيد يمنع تكرار الطالب في اليوم نفسه. -
payments: المدفوعات والإيصالات. -
installments: الأقساط والاستحقاقات. -
reports: التقارير الرسمية. -
notifications: التنبيهات. -
school_settings: هوية المدرسة. -
login_attempts: محاولات الدخول الفاشلة.
تم وضع بيانات تجريبية شاملة تغطي جميع المراحل والصفوف والشعب لأغراض الاختبار. لا ينبغي اعتبارها بيانات مدرسة حقيقية. لإدخال بيانات المدرسة الفعلية يمكن إضافة استيراد Excel لاحقًا مع قالب مطابق للحقول.
| الملف | الوظيفة |
|---|---|
config.php |
اتصال PDO والرؤوس الدفاعية |
functions.php |
الجلسة، CSRF، الصلاحيات، التدقيق، التنظيف |
login.php |
تسجيل الدخول |
logout.php |
إنهاء الجلسة عبر POST |
index.php |
لوحة التحكم |
academic.php |
الهيكل الأكاديمي |
students.php |
الطلاب |
students_export.php |
تصدير CSV |
student_save.php |
حفظ الطالب |
student_delete.php |
حذف الطالب |
teachers.php |
المعلمون |
assignments.php |
توزيع المواد على المعلمين والشعب |
classes.php |
الفصول والشعب |
subjects.php |
المواد |
attendance.php |
الحضور |
payments.php |
المدفوعات |
installments.php |
الأقساط |
reports.php |
التقارير والطباعة |
settings.php |
هوية المدرسة |
users.php |
المستخدمون والصلاحيات |
audit.php |
سجل التدقيق |
assets/css/style.css |
الهوية والتجاوب والوضع الداكن والحركة |
assets/js/app.js |
تفاعل الواجهة والتحقق وتجربة الهاتف |
database.sql |
تثبيت قاعدة v4 كاملة |
upgrade_v4.sql |
ترقية قاعدة v2/v3 |
-
كلمة مرور صحيحة/خاطئة.
-
مستخدم غير نشط لا يستطيع الدخول.
-
محاولة متكررة للدخول تُحد.
-
بعد 30 دقيقة من عدم النشاط تنتهي الجلسة.
-
تسجيل الخروج لا يعمل عبر GET ويحتاج POST + CSRF.
-
إضافة، تعديل، حذف.
-
رمز طالب مكرر.
-
تاريخ غير صحيح.
-
فصل غير موجود.
-
بحث بالاسم والرمز.
-
تصدير CSV.
-
إدخال HTML مثل
<script>يجب أن يظهر كنص عند العرض.
-
الطالب نفسه في اليوم نفسه لا ينشئ سجلًا ثانيًا.
-
التعديل يستبدل الحالة.
-
تاريخ غير صحيح يرفض.
-
مبلغ صفر أو سالب يرفض.
-
دفعة القسط أكبر من المتبقي ترفض.
-
تسجيل الدفعة وسجل التدقيق.
-
الأقساط المستحقة تظهر في التنبيهات.
-
الموظف يرى فقط الوحدات الممنوحة.
-
إخفاء الرابط ليس طبقة أمنية؛ كل صفحة تعيد فحص الصلاحية على الخادم.
-
تغيير دور المستخدم لا يمنح صلاحيات غير موجودة في قاعدة البيانات.
-
لا يستطيع المستخدم تخفيض صلاحية حسابه الإداري بنفسه.
-
Chrome / Edge / Firefox حديث.
-
عرض سطح المكتب.
-
هاتف بعرض 360px تقريبًا.
-
جهاز لوحي.
-
فتح وإغلاق القائمة.
-
Escape يغلق القائمة.
-
الوضع الفاتح/الداكن.
-
Ctrl + Kيركز البحث. -
تعطيل الحركة من إعدادات النظام يجب ألا يكسر الواجهة.
هذه النسخة قوية كنظام محلي تعليمي/إداري، لكنها ليست بديلًا عن Hardening كامل لخادم إنتاج عام. قبل نشرها على الإنترنت يجب على الأقل:
-
HTTPS إجباري.
-
حساب MySQL منفصل للتطبيق بصلاحيات أقل من root.
-
نسخ احتياطية دورية واختبار استعادة النسخ.
-
إدارة أسرار الاتصال خارج ملفات المصدر.
-
تحديث PHP وMySQL وXAMPP.
-
مراجعة أمنية مستقلة قبل التعامل مع بيانات شخصية حقيقية.
-
إضافة سياسة احتفاظ وحذف للبيانات حسب متطلبات الجهة التعليمية.
تم الحفاظ على الفكرة الأصلية: نظام إدارة مدرسة محلي بسيط قابل للتعلم والتشغيل على XAMPP، بدل تحويله إلى إطار عمل ضخم يحتاج Composer أو Node.js أو خدمة سحابية. الإضافات الجديدة تخدم نفس المجال وتفتح الطريق لاحقًا إلى الدرجات، الجدول المدرسي، الاستيراد من Excel، بطاقات الطلاب، وشهادات النتائج دون هدم البنية الحالية.