الثانوية العامة 2026الاستعلام عن النتيجةاعرف الكليات المناسبة لمجموعكتنسيق 2026

الحاسب الآلي · الصف الثاني الثانوي · الترم الأول

صفحة إدخال مصطلح Add_Term.php

صفحة إدخال مصطلح add_term.php: تصميم النموذج وخصائصه، والفرق بين POST وGET، وكود PHP المختصر لتضمين الرأس والاتصال وحفظ المصطلح، والكود الأكثر احترافية بالتحقق من الحقول ورفع الصورة بأمان، والتأكد من الإضافة.

آخر تحديث: · كيف نراجع المحتوى

أهداف التعلم

  • أن تصمم واجهة صفحة إدخال مصطلح.
  • أن تكتب كود PHP لتضمين صفحتي Header وConnection.
  • أن تنشئ صفحة إدخال مصطلح تحفظ بياناته في جدول terms.
  • أن تتحقق من إدخال جميع الحقول، وترفع صورة المصطلح بأمان.
  • أن تتحقق من إضافة المصطلح إلى قاعدة البيانات.

شرح الدرس

أولًا: تصميم واجهة صفحة إدخال مصطلح

نصمم الصفحة في برنامج Expression Web (نمط التصميم Design) أو بكود HTML مباشرة، ونحفظها في مجلد الموقع باسم add_term.php:

  • عنوان الشاشة «إدخال مصطلح» في مقطع مستقل <div>.
  • نموذج (Form) من صندوق الأدوات (Toolbox)، يضم عناصر التحكم: مربع نص للمصطلح، ومربع نص للترجمة، ومربع نص متعدد الأسطر (TextArea) للتعريف العلمي، وعنصر لاختيار ملف الصورة، وزر «إضافة».
  • النموذج (Form) يمرر بيانات عناصر التحكم من مستعرض الويب إلى الخادم.
<form method="post" action="add_term.php" enctype="multipart/form-data">
  المصطلح: <input type="text" name="txt_term"><br>
  الترجمة: <input type="text" name="trans"><br>
  التعريف: <textarea name="TextArea1"></textarea><br>
  الصورة: <input type="file" name="File1"><br>
  <input type="submit" name="Submit1" value="إضافة">
</form>
الخاصيةمعناها
method="post"أسلوب نقل البيانات من النموذج إلى الخادم
action="add_term.php"اسم الصفحة المراد الانتقال إليها عند الضغط على الزر
enctype="multipart/form-data"تُستخدم عندما يرفع النموذج ملفات (صورًا) إلى الخادم؛ وبدونها لا تُرفع الصور

الفرق بين POST وGET:

POSTGET
لا تظهر البيانات المرسلة في عنوان الصفحة (URL)تظهر البيانات المرسلة في عنوان الصفحة
تُستخدم لإرسال كلمات السر والبيانات المهمةلا تُستخدم لكلمات السر أو البيانات المهمة
الحد الأقصى للبيانات كبير (نحو 8 MB افتراضيًا)لها حد أقصى صغير لطول البيانات

ثانيًا: كود PHP المختصر (كما في الكتاب)

<?php
include("header.php");
include("connection.php");
if (isset($_POST['Submit1'])) {
    $term  = $_POST['txt_term'];
    $trans = $_POST['trans'];
    $defe  = $_POST['TextArea1'];
    @$file = $_FILES['File1']['name'];
    @$tmp  = $_FILES['File1']['tmp_name'];
    move_uploaded_file($tmp, "pic/" . $file);
    $picture = "pic/" . $file;
    $sql = mysqli_query($connect,
        "INSERT INTO terms VALUES ('', '$term', '$trans', '$defe', '$picture')");
}
?>
الجزءوظيفته
include("header.php")إظهار صورة البانر وعناوين صفحات الموقع أعلى الصفحة
include("connection.php")تحقيق الاتصال بقاعدة البيانات
isset($_POST['Submit1'])التحقق من أن المستخدم ضغط على زر «إضافة»
$_POST[...]متغير يخزن قيم عناصر التحكم في النموذج عند الضغط على الزر؛ فنخصصها للمتغيرات $term و$trans و$defe
$_FILES['File1']['name']اسم ملف الصورة الذي اختاره المستخدم
العلامة @تمنع ظهور رسالة خطأ إذا كانت القيمة فارغة
move_uploaded_fileينقل ملف الصورة المرفوعة إلى المجلد pic على الخادم
INSERT INTO termsيضيف سجلًا جديدًا في جدول terms؛ والقيمة الأولى فارغة لأن id يزيد تلقائيًا

(في الكتاب تُستخدم الدالة القديمة mysql_query، وقد حُذفت من PHP بدءًا من الإصدار 7، فنستخدم mysqli_query المكافئة.)

أوجه القصور في الكود المختصر:

  1. لا يتأكد من وجود المجلد pic قبل نقل الصورة إليه.
  2. لا يتحقق من إدخال جميع الحقول قبل الحفظ.
  3. لا تظهر رسالة تفيد نجاح الإضافة أو فشلها.
  4. قد تظهر الحروف العربية في قاعدة البيانات في صورة علامات استفهام «؟؟؟».

ثالثًا: الكود الأكثر احترافية

<?php
include("header.php");
include("connection.php");
mysqli_set_charset($connect, "utf8");   // لإظهار الحروف العربية بشكل صحيح
if (isset($_POST['Submit1'])) {
    if (!file_exists("pic")) {            // إنشاء مجلد الصور إذا لم يكن موجودًا
        mkdir("pic");
    }
    $term  = trim($_POST['txt_term']);
    $trans = trim($_POST['trans']);
    $defe  = trim($_POST['TextArea1']);
    $picture = "";
    if ($term != "" && $trans != "" && $defe != "") {
        // ... رفع الصورة (انظر الفقرة التالية) ...
        $stmt = mysqli_prepare($connect,
            "INSERT INTO terms (term, trans, defe, picture) VALUES (?, ?, ?, ?)");
        mysqli_stmt_bind_param($stmt, "ssss", $term, $trans, $defe, $picture);
        if (mysqli_stmt_execute($stmt)) {
            echo "تم إضافة البيانات بنجاح";
        }
    } else {
        echo "البيانات التي تم إدخالها غير صحيحة يجب إدخال جميع الحقول";
    }
}
?>
  • file_exists وmkdir: جملة شرطية تختبر وجود المجلد pic وتنشئه إذا لم يكن موجودًا.
  • الشرط $term != "" && $trans != "" && $defe != "" يتأكد أن جميع المتغيرات ليست خالية؛ فإن تحقق تُحفظ البيانات، وإلا تظهر رسالة الخطأ.
  • mysqli_set_charset تساعد على ظهور البيانات العربية بشكل صحيح بدل علامات الاستفهام.
  • الاستعلام المُعد prepare مع bind_param يمرر القيم منفصلة عن أمر SQL، فيحمي من هجمات حقن SQL. والرمز "ssss" يعني أن القيم الأربع نصوص (string).

رفع الصورة بأمان (إثراء):

if (!empty($_FILES["File1"]["name"])) {
    $allowed = ["image/png" => "png", "image/jpeg" => "jpg"];
    $type = mime_content_type($_FILES["File1"]["tmp_name"]);
    if (!isset($allowed[$type])) {
        echo "نوع الصورة غير مسموح";
    } elseif ($_FILES["File1"]["size"] > 500000) {
        echo "حجم الصورة أكبر من 500 كيلوبايت";
    } else {
        $picture = "pic/" . uniqid("term_") . "." . $allowed[$type];
        move_uploaded_file($_FILES["File1"]["tmp_name"], $picture);
    }
}
  • نتحقق من نوع الملف الفعلي بـ mime_content_type لا من امتداده فقط، لأن الامتداد يمكن تغييره بسهولة.
  • نحدد حجمًا أقصى للصورة (500 كيلوبايت هنا)، ونسمح بـ PNG وJPEG فقط.
  • نولّد اسمًا جديدًا فريدًا بالدالة uniqid بدل اسم المستخدم، لتجنب تكرار الأسماء والأسماء الضارة.

رابعًا: تنفيذ الصفحة والتأكد من الإضافة

  1. نستعرض الصفحة بكتابة localhost/Dictionary/add_term.php في شريط العنوان.
  2. إذا ضغطنا «إضافة» دون إدخال البيانات تظهر الرسالة: «البيانات التي تم إدخالها غير صحيحة يجب إدخال جميع الحقول».
  3. عند إدخال جميع البيانات والضغط على «إضافة» تظهر الرسالة: «تم إضافة البيانات بنجاح».
  4. للتأكد من الإضافة نفتح قاعدة البيانات في تبويب جديد بكتابة localhost/phpmyadmin، ونفتح جدول terms في قاعدة dbdictionary لنرى السجل الجديد.

أمثلة وتطبيقات

اختبار الصفحة:

الاختبارالنتيجة المتوقعة
إدخال جميع الحقول بشكل صحيحرسالة «تم إضافة البيانات بنجاح» وظهور السجل في جدول terms
ترك التعريف فارغًارسالة «… يجب إدخال جميع الحقول»
رفع ملف PDF بدل الصورة (في الكود الآمن)رسالة «نوع الصورة غير مسموح»
رفع صورة حجمها 2 ميجابايترسالة الحجم

ملاحظات مهمة

  • الخاصية required في وسم الإدخال تحقق مبدئي في المتصفح، لكنها لا تغني عن التحقق في PHP؛ لأن المستخدم يستطيع تجاوزها.
  • الوسم <label for="..."> يربط النص بالحقل ويساعد ذوي الإعاقة البصرية (إثراء).
  • في المواقع المنشورة يجب أن تكون صفحة الإضافة متاحة للمستخدمين المصرح لهم فقط بتسجيل دخول.
  • دمج ما يكتبه المستخدم مباشرة داخل أمر SQL (كما في الكود المختصر) يصلح للتدرب فقط؛ استخدم الاستعلام المُعد في أي موقع حقيقي.

المفاهيم الأساسية

  • النموذج (Form): يمرر البيانات إلى الخادم، وخصائصه method وaction وenctype.
  • POST لا تُظهر البيانات في العنوان وتصلح للبيانات المهمة، وGET تُظهرها.
  • $_POST يخزن قيم عناصر التحكم، و$_FILES يخزن بيانات الملف المرفوع.
  • الكود الاحترافي: إنشاء مجلد pic عند الحاجة، والتحقق من كل الحقول، ورسائل النجاح والخطأ، ودعم العربية.
  • الأمان: استعلام مُعد، وفحص نوع الصورة وحجمها، واسم فريد لها.

ملخص الدرس

صفحة add_term.php تجمع مهارات المشروع: نصمم نموذجًا بحقول المصطلح والترجمة والتعريف والصورة وزر «إضافة»، بخصائص method="post" وaction وenctype="multipart/form-data". ويضمّن كود PHP صفحتي الرأس والاتصال، ويتحقق من الضغط على الزر، ويخصص قيم $_POST للمتغيرات، وينقل الصورة إلى المجلد pic، ثم يضيف سجلًا في جدول terms. والكود الأكثر احترافية ينشئ مجلد الصور عند الحاجة، ويتحقق من إدخال جميع الحقول، ويعرض رسالة نجاح أو خطأ، ويستخدم استعلامًا مُعدًا ورفعًا آمنًا للصور. ونتأكد من الإضافة بفتح الجدول في phpMyAdmin.

أسئلة للتدريب

  1. اذكر عناصر التحكم في نموذج صفحة إدخال مصطلح.
  2. ما وظيفة كل من الخصائص: method وaction وenctype؟
  3. قارن بين POST وGET.
  4. ما وظيفة isset($_POST['Submit1'])؟ وما وظيفة العلامة @؟
  5. اذكر أوجه القصور في الكود المختصر، وكيف عالجها الكود الأكثر احترافية.
  6. ما الرسالة التي تظهر عند ترك أحد الحقول فارغًا؟
  7. كيف تتأكد من إضافة المصطلح إلى قاعدة البيانات؟
  8. اذكر ثلاثة إجراءات لرفع الصور بأمان.
حلّ أسئلة هذا الدرساختبر فهمك بأسئلة اختيار من متعدد وأسئلة مقالية مع نموذج إجابة، أو خض اختبارًا تفاعليًا سريعًا
أبلغ عن خطأ في هذا الدرس