
نماذج PHP
تعد النماذج أحد أهم أجزاء تطوير الويب. وهي تسمح للمستخدمين بإرسال معلومات إلى موقع ويب، مثل رسائل الاتصال وتفاصيل تسجيل الدخول وبيانات التسجيل وكلمات البحث الرئيسية والتعليقات ومعلومات الملف الشخصي.
في PHP، يتم التعامل مع النماذج بشكل شائع باستخدام $_GET و $_POST superglobals. بعد تلقي البيانات المقدمة، يقوم المطور عادةً بالتحقق من صحة الإدخال، والتحقق من الحقول المطلوبة، والتحقق من البريد الإلكتروني وتنسيقات URL، ثم معالجة النتيجة النهائية.
تشرح هذه المقالة موضوعات نموذج PHP الرئيسية الموضحة في مسار التعلم: PHP التعامل مع النموذج، PHP التحقق من صحة النموذج، PHP الحقول المطلوبة للنموذج، PHP النموذج URL والتحقق من صحة البريد الإلكتروني، ومثال نموذج PHP الكامل.
PHP التعامل مع النموذج
تعني معالجة نموذج PHP تلقي البيانات المرسلة من نموذج HTML ومعالجتها على جانب الخادم. عادةً ما يرسل النموذج البيانات باستخدام إحدى طريقتي HTTP الشائعتين: GET أو POST.
ال GET ترسل الطريقة بيانات النموذج من خلال سلسلة الاستعلام URL. تعد هذه الطريقة مفيدة لنماذج البحث والمرشحات والصفحات حيث يمكن أن تظهر البيانات المرسلة بأمان في المتصفح URL.
ال POST ترسل الطريقة بيانات النموذج داخل نص الطلب. تُفضل هذه الطريقة لنماذج الاتصال ونماذج تسجيل الدخول ونماذج التسجيل وأي نموذج يرسل بيانات خاصة أو أكبر.
يمكن أن يبدو نموذج HTML البسيط كما يلي:
<form method="post" action="process.php">
<label>Name:</label>
<input type="text" name="name">
<label>Email:</label>
<input type="text" name="email">
<button type="submit">Send</button>
</form>في ملفات PHP، يمكن الوصول إلى القيم المقدمة باستخدام $_POST.
<?php
$name = $_POST["name"] ?? "";
$email = $_POST["email"] ?? "";
echo $name;
echo $email;
?>عامل الدمج الفارغ ?? يتم استخدامه لتجنب الأخطاء عند عدم وجود قيمة. إذا كان حقل النموذج مفقودًا، فسيستخدم PHP سلسلة فارغة بدلاً من ذلك.
ومن الشائع أيضًا التحقق من طريقة الطلب قبل معالجة النموذج.
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$name = $_POST["name"] ?? "";
$email = $_POST["email"] ?? "";
echo "Form submitted.";
}
?>يؤدي هذا إلى منع تشغيل تعليمات برمجية لمعالجة النموذج قبل أن يرسل المستخدم النموذج فعليًا.
PHP التحقق من صحة النموذج
التحقق من صحة النموذج يعني التحقق من إدخال المستخدم قبل قبوله أو حفظه. يعد التحقق من الصحة أمرًا مهمًا لأنه قد يقوم المستخدمون بإرسال بيانات فارغة أو غير صحيحة أو غير كاملة أو غير آمنة.
يمكن للتحقق من صحة نموذج PHP التحقق من أشياء كثيرة، مثل ما إذا كان الحقل فارغًا، أو ما إذا كان تنسيق البريد الإلكتروني صالحًا، أو ما إذا كان URL صحيحًا، أو ما إذا كانت القيمة رقمية، أو ما إذا كان طول النص ضمن النطاق المسموح به.
عادةً ما تقوم بنية التحقق الأساسية بإنشاء مجموعة من الأخطاء، وتتحقق من كل إدخال، ثم تقرر ما إذا كان النموذج صالحًا أم لا.
<?php
$errors = [];
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$name = trim($_POST["name"] ?? "");
$email = trim($_POST["email"] ?? "");
if ($name === "") {
$errors[] = "Name is required.";
}
if ($email === "") {
$errors[] = "Email is required.";
}
if (count($errors) === 0) {
echo "Form is valid.";
}
}
?>ال trim() تقوم الدالة بإزالة المسافات الزائدة من بداية ونهاية السلسلة. يعد هذا مفيدًا لأنه لا ينبغي التعامل مع الحقل الذي يحتوي على مسافات فقط على أنه إدخال صالح.
يجب أن يتم التحقق من الصحة من جانب الخادم حتى إذا كان النموذج يستخدم أيضًا التحقق من صحة HTML في المتصفح. يعمل التحقق من صحة المتصفح على تحسين تجربة المستخدم، ولكن يمكن تجاوزه. يعد التحقق من جانب الخادم ضروريًا للأمان وصحة البيانات.
تعقيم PHP إدخال النموذج
قبل عرض مدخلات المستخدم مرة أخرى على الصفحة، يجب الهروب منها لتقليل مخاطر هجمات البرمجة النصية عبر المواقع. في PHP، htmlspecialchars() يستخدم عادة للإخراج الآمن.
<?php
$name = "<script>alert('test')</script>";
echo htmlspecialchars($name, ENT_QUOTES, "UTF-8");
?>يؤدي هذا إلى تحويل أحرف HTML الخاصة إلى نص آمن. بدلاً من التشغيل كـ HTML أو JavaScript، يتم عرض الإدخال كنص عادي.
يمكن لوظيفة مساعدة بسيطة أن تجعل ذلك أسهل:
<?php
function cleanInput($value) {
return htmlspecialchars(trim($value), ENT_QUOTES, "UTF-8");
}
?>تقوم هذه الوظيفة بقص القيمة وإعدادها للعرض الآمن. ومع ذلك، فإن تطهير المخرجات ليس بديلاً للتحقق من الصحة. التحقق من الصحة يتحقق مما إذا كانت البيانات مقبولة، بينما الهروب يحمي كيفية عرض البيانات.
PHP النموذج مطلوب
الحقول المطلوبة هي الحقول التي يجب على المستخدم تعبئتها قبل قبول النموذج. تتضمن الحقول المطلوبة الشائعة الاسم والبريد الإلكتروني وكلمة المرور والموضوع والرسالة ومربعات اختيار الاتفاقية.
في HTML، يمكنك وضع علامة على الحقل كما هو مطلوب باستخدام مطلوب يصف.
<input type="text" name="name" required>ومع ذلك، يجب على PHP التحقق من الحقول المطلوبة على جانب الخادم. يمكن للمستخدم تعطيل التحقق من صحة المتصفح أو إرسال طلب يدويًا دون استخدام واجهة النموذج.
<?php
$errors = [];
$name = trim($_POST["name"] ?? "");
$email = trim($_POST["email"] ?? "");
$message = trim($_POST["message"] ?? "");
if ($name === "") {
$errors["name"] = "Name is required.";
}
if ($email === "") {
$errors["email"] = "Email is required.";
}
if ($message === "") {
$errors["message"] = "Message is required.";
}
?>يؤدي استخدام مصفوفة ترابطية للأخطاء إلى تسهيل عرض كل خطأ بالقرب من الحقل المرتبط به.
<?php if (!empty($errors["name"])): ?>
<p><?php echo $errors["name"]; ?></p>
<?php endif; ?>يؤدي التحقق من الصحة المطلوب إلى تحسين جودة البيانات المقدمة ويمنع حفظ السجلات غير المكتملة أو إرسالها.
PHP النموذج URL/البريد الإلكتروني
تحتاج العديد من النماذج إلى التحقق من صحة رسائل البريد الإلكتروني وعناوين URL. على سبيل المثال، قد يتطلب نموذج الاتصال عنوان بريد إلكتروني، بينما قد يسمح نموذج الملف الشخصي بموقع ويب شخصي أو ملف شخصي على LinkedIn أو رابط GitHub أو محفظة URL.
PHP يوفر filter_var() وظيفة للتحقق من صحة التنسيقات الشائعة مثل البريد الإلكتروني وURL.
يمكن التحقق من صحة البريد الإلكتروني باستخدام FILTER_VALIDATE_EMAIL.
<?php
$email = trim($_POST["email"] ?? "");
if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
echo "Invalid email address.";
}
?>يمكن إجراء التحقق من صحة URL باستخدام FILTER_VALIDATE_URL.
<?php
$website = trim($_POST["website"] ?? "");
if (!filter_var($website, FILTER_VALIDATE_URL)) {
echo "Invalid website URL.";
}
?>إذا كان الحقل URL اختياريًا، فيجب أن يتحقق الرمز من صحته فقط عندما يقوم المستخدم بإدخال قيمة.
<?php
$website = trim($_POST["website"] ?? "");
if ($website !== "" && !filter_var($website, FILTER_VALIDATE_URL)) {
echo "Invalid website URL.";
}
?>بهذه الطريقة، يمكن للمستخدم ترك URL الاختياري فارغًا، ولكن إذا قدم قيمة، فيجب أن تكون URL صالحة.
بالنسبة لحقول البريد الإلكتروني، عادةً ما يقوم المطورون بجعل الحقل مطلوبًا والتحقق من صحة تنسيقه. بالنسبة لحقول URL، قد يكون الحقل اختياريًا وفقًا لغرض النموذج.
عرض أخطاء النموذج
يجب أن يُظهر النموذج الجيد بوضوح أخطاء التحقق للمستخدم. بدلاً من إظهار رسالة عامة واحدة، من الأفضل عرض رسائل محددة بالقرب من الحقول التي تحتاج إلى تصحيح.
على سبيل المثال، إذا كان البريد الإلكتروني مفقودًا، فيجب على المستخدم أن يرى أن حقل البريد الإلكتروني مطلوب. إذا كان تنسيق البريد الإلكتروني غير صالح، فيجب أن يرى المستخدم أن عنوان البريد الإلكتروني غير صالح.
<?php if (!empty($errors["email"])): ?>
<span class="error"><?php echo $errors["email"]; ?></span>
<?php endif; ?>يؤدي ذلك إلى تحسين تجربة المستخدم وتسهيل إكمال النموذج.
ومن المفيد أيضًا الاحتفاظ بالقيم التي تم إدخالها مسبقًا في النموذج بعد حدوث خطأ في التحقق من الصحة. وهذا يمنع المستخدمين من إعادة كتابة كل شيء مرة أخرى.
<input type="text" name="name" value="<?php echo $name ?? ''; ?>">عند عرض القيم القديمة، تذكر الهروب منها باستخدام htmlspecialchars().
<input type="text" name="name" value="<?php echo htmlspecialchars($name ?? '', ENT_QUOTES, 'UTF-8'); ?>">PHP النموذج مكتمل
يشتمل نموذج PHP الكامل عادةً على نموذج HTML والتحقق من جانب الخادم والفحوصات الميدانية المطلوبة والتحقق من صحة البريد الإلكتروني والتحقق الاختياري URL والإخراج الآمن ورسائل الخطأ ومعالجة النجاح.
يوضح المثال التالي نموذج اتصال كاملاً في ملفات PHP واحد.
<?php
$name = "";
$email = "";
$website = "";
$message = "";
$errors = [];
$success = false;
function oldValue($value) {
return htmlspecialchars($value, ENT_QUOTES, "UTF-8");
}
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$name = trim($_POST["name"] ?? "");
$email = trim($_POST["email"] ?? "");
$website = trim($_POST["website"] ?? "");
$message = trim($_POST["message"] ?? "");
if ($name === "") {
$errors["name"] = "Name is required.";
}
if ($email === "") {
$errors["email"] = "Email is required.";
} elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$errors["email"] = "Please enter a valid email address.";
}
if ($website !== "" && !filter_var($website, FILTER_VALIDATE_URL)) {
$errors["website"] = "Please enter a valid URL.";
}
if ($message === "") {
$errors["message"] = "Message is required.";
} elseif (strlen($message) < 10) {
$errors["message"] = "Message must be at least 10 characters.";
}
if (count($errors) === 0) {
$success = true;
/*
Here you can:
- Save data to a database
- Send an email
- Store a support ticket
- Redirect the user
*/
}
}
?>
<?php if ($success): ?>
<p>Your message has been sent successfully.</p>
<?php endif; ?>
<form method="post" action="">
<div>
<label>Name</label>
<input type="text" name="name" value="<?php echo oldValue($name); ?>">
<?php if (!empty($errors["name"])): ?>
<small><?php echo $errors["name"]; ?></small>
<?php endif; ?>
</div>
<div>
<label>Email</label>
<input type="text" name="email" value="<?php echo oldValue($email); ?>">
<?php if (!empty($errors["email"])): ?>
<small><?php echo $errors["email"]; ?></small>
<?php endif; ?>
</div>
<div>
<label>Website</label>
<input type="text" name="website" value="<?php echo oldValue($website); ?>">
<?php if (!empty($errors["website"])): ?>
<small><?php echo $errors["website"]; ?></small>
<?php endif; ?>
</div>
<div>
<label>Message</label>
<textarea name="message"><?php echo oldValue($message); ?></textarea>
<?php if (!empty($errors["message"])): ?>
<small><?php echo $errors["message"]; ?></small>
<?php endif; ?>
</div>
<button type="submit">Send Message</button>
</form>يوضح هذا المثال الكامل الفكرة الرئيسية وراء معالجة نموذج PHP. يتلقى البيانات، ويتحقق من صحة الحقول المطلوبة، ويفحص البريد الإلكتروني وتنسيقات URL، ويعرض الأخطاء، ويحتفظ بالقيم القديمة، ويظهر رسالة نجاح عندما يكون النموذج صالحًا.
ملاحظات أمنية لنماذج PHP
ترتبط النماذج مباشرةً بإدخال المستخدم، لذا يجب التعامل معها بعناية. لا تثق مطلقًا بإدخال المستخدم دون التحقق من الصحة والهروب.
تشمل الممارسات الأمنية المهمة ما يلي:
التحقق من صحة كافة الحقول المطلوبة على جانب الخادم.
الهروب الناتج باستخدام htmlspecialchars().
يستخدم filter_var() للبريد الإلكتروني والتحقق من صحة URL.
استخدم العبارات المحضرة عند حفظ بيانات النموذج في قاعدة البيانات.
حماية النماذج الحساسة باستخدام حماية CSRF في التطبيقات الحقيقية.
لا تعرض مدخلات المستخدم الأولية دون الهروب.
حدد أطوال الحقول لمنع الإدخال الكبير غير المتوقع.
في أطر عمل مثل Laravel، يتم التعامل مع العديد من هذه المهام باستخدام التحقق المدمج، وفئات الطلب، وحماية CSRF، والمساعدين الهروب. ومع ذلك، فإن فهم التعامل مع نموذج PHP النقي أمر مهم لأنه يوضح ما يحدث خلف الكواليس.
كيف يتم استخدام نماذج PHP في المشاريع الحقيقية
تُستخدم نماذج PHP في العديد من أنواع تطبيقات الويب الحقيقية. تستخدم صفحة الاتصال نموذجًا لتلقي الرسائل. تستخدم صفحة تسجيل الدخول نموذجًا لتلقي البريد الإلكتروني وكلمة المرور. تستخدم صفحة التسجيل نموذجًا لإنشاء حساب جديد. تستخدم لوحة الإدارة النماذج لإنشاء المحتوى وتحديثه وحذفه.
تتضمن الأمثلة الشائعة لنماذج PHP ما يلي:
نماذج الاتصال.
نماذج تسجيل الدخول والتسجيل.
نماذج البحث.
نماذج تحديث الملف الشخصي.
نماذج إنشاء منشورات المدونة.
نماذج إدارة المنتج.
نماذج رفع الملفات.
نماذج الاشتراك في النشرة الإخبارية.
بمجرد فهم التعامل مع النماذج والتحقق من صحتها، يمكنك إنشاء تطبيقات PHP أكثر عملية تتفاعل مع المستخدمين وتخزن بيانات مفيدة.
خاتمة
تعد نماذج PHP جزءًا أساسيًا من تطوير الويب. إنها تسمح للمستخدمين بإرسال البيانات وتسمح للمطورين ببناء ميزات تفاعلية مثل صفحات الاتصال وأنظمة تسجيل الدخول ونماذج التسجيل ولوحات المعلومات ولوحات الإدارة.
للعمل مع نماذج PHP بشكل صحيح، تحتاج إلى فهم كيفية التعامل مع النموذج، والتحقق من الصحة، والحقول المطلوبة، والبريد الإلكتروني والتحقق من صحة URL، والإخراج الآمن، وإكمال سير عمل النموذج.
بعد إتقان هذه المفاهيم، فإن الخطوة التالية هي ربط النماذج بقواعد البيانات، واستخدام الجلسات لأنظمة تسجيل الدخول، والتعامل مع تحميلات الملفات، وتنظيم منطق التحقق من الصحة في بنية أكثر نظافة باستخدام PHP الحديث أو أطر العمل مثل Laravel.

