24- شرح مفصل لـ PHP Form

التعامل مع النماذج في PHP

تُعتبر النماذج (Forms) من الركائز الأساسية في تطوير تطبيقات الويب حيث تُستخدم لجمع البيانات من المستخدمين. عملية التعامل مع النماذج تشمل عدة خطوات مثل إرسال البيانات ومعالجتها والتحقق من صحتها.

معالجة النماذج (Form Handling)

عند إرسال النموذج، يتم إرسال البيانات إلى خادم الويب، وعادةً ما يتم تحديد الإجراء الذي سيتم اتخاذه باستخدام خاصية `action` في عنصر النموذج “. تتلقى لغة PHP البيانات المرسلة عبر طرق HTTP المختلفة مثل `GET` و `POST`. يُفضل استخدام `POST` عند التعامل مع معلومات حساسة أو إجراء تغييرات على الخادم.

مثال على معالجة النماذج:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $name = $_POST['name'];
    echo "مرحبا، " . htmlspecialchars($name);
}

في هذا المثال، نتحقق من أن الطلب هو طلب POST قبل معالجة البيانات. يتم استخدام `htmlspecialchars()` لمنع هجمات XSS.

التحقق من صحة النماذج (Form Validation)

التحقق من صحة النماذج هو عملية التأكد من أن البيانات التي أدخلها المستخدم تتطابق مع التوقعات من حيث النوع والشكل والقيود الأخرى. يمكن إجراء التحقق من الصحة على جانب العميل باستخدام JavaScript، ولكن يجب أيضًا التحقق [شركة برمجة مصرية] منها على الخادم باستخدام PHP لضمان الأمان.

مثال على التحقق من صحة نموذج:

$nameErr = "";
$name = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["name"])) {
        $nameErr = "الاسم مطلوب";
    } else {
        $name = test_input($_POST["name"]);
        if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
            $nameErr = "فقط الأحرف والمسافات مسموح بها";
        }
    }
}

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

الحقول المطلوبة (Required Fields)

الحقول المطلوبة هي تلك التي يجب على المستخدم تعبئتها قبل إرسال النموذج. في HTML5، يمكن تعيين الحقل على أنه مطلوب باستخدام السمة [شركة برمجة مصرية] `required`، ولكن يجب التحقق من ذلك أيضًا في الخادم.

مثال على الحقول المطلوبة:

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["email"])) {
        $emailErr = "البريد الإلكتروني مطلوب";
    }
}

التحقق من صحة البريد الإلكتروني وعنوان URL

التحقق من صحة البريد الإلكتروني وعنوان URL يضمن أن القيم المدخلة تتبع تنسيقًا صالحًا. يمكن استخدام دوال PHP مثل `filter_var()` لهذا الغرض.

مثال على التحقق من صحة البريد الإلكتروني:

$emailErr = "";
$email = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["email"])) {
        $emailErr = "البريد الإلكتروني مطلوب";
    } else {
        $email = test_input($_POST["email"]);
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $emailErr = "تنسيق البريد الإلكتروني غير صالح";
        }
    }
}

مثال على التحقق من صحة URL:

$urlErr = "";
$url = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["url"])) {
        $urlErr = "عنوان URL مطلوب";
    } else {
        $url = test_input($_POST["url"]);
        if (!filter_var($url, FILTER_VALIDATE_URL)) {
            $urlErr = "تنسيق URL غير صالح";
        }
    }
}

مثال مجمع

إليك مثال يجمع بين جميع العناصر المذكورة أعلاه:

$nameErr = $emailErr = $urlErr = "";
$name = $email = $url = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
    if (empty($_POST["name"])) {
        $nameErr = "الاسم مطلوب";
    } else {
        $name = test_input($_POST["name"]);
        if (!preg_match("/^[a-zA-Z-' ]*$/",$name)) {
            $nameErr = "فقط الأحرف والمسافات مسموح بها";
        }
    }

    if (empty($_POST["email"])) {
        $emailErr = "البريد الإلكتروني مطلوب";
    } else {
        $email = test_input($_POST["email"]);
        if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $emailErr = "تنسيق البريد الإلكتروني غير صالح";
        }
    }

    if (empty($_POST["url"])) {
        $urlErr = "عنوان URL مطلوب";
    } else {
        $url = test_input($_POST["url"]);
        if (!filter_var($url, FILTER_VALIDATE_URL)) {
            $urlErr = "تنسيق URL غير صالح";
        }
    }
}

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
?>

<!DOCTYPE HTML>  
<html>
<head>
</head>
<body>  

<h2>نموذج التحقق من الصحة في PHP</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">  
  الاسم: <input type="text" name="name" value="<?php echo $name;?>">
  <span><?php echo $nameErr;?></span>
  <br><br>
  البريد الإلكتروني: <input type="text" name="email" value="<?php echo $email;?>">
  <span><?php echo $emailErr;?></span>
  <br><br>
  URL: <input type="text" name="url" value="<?php echo $url;?>">
  <span><?php echo $urlErr;?></span>
  <br><br>
  <input type="submit" name="submit" value="إرسال">  
</form>

</body>
</html>

هذا المثال يوضح كيفية جمع البيانات من النموذج، التحقق من صحتها، وعرض رسائل الخطأ المناسبة. تذكر دائمًا أن التحقق من صحة البيانات على الخادم هو جزء مهم من الأمان في تطبيقات الويب.