شرح طريقة POST في PHP
في الدرس السابق تعلمت GET حيث تظهر البيانات في الرابط. الآن ننتقل إلى الطريقة الأكثر استخداماً في النماذج الحقيقية: POST.
طريقة POST مناسبة لتسجيل الدخول، إنشاء الحسابات، وإرسال البيانات التي لا تريد ظهورها في URL.
ما هي طريقة POST في PHP؟
عند استخدام POST، يرسل المتصفح البيانات داخل جسم الطلب (Request Body)، وليس داخل رابط الصفحة.
ثم تستقبل PHP هذه البيانات عبر مصفوفة $_POST.
المستخدم يملأ النموذج → يضغط إرسال → البيانات تُرسل في Body → PHP تقرأها من $_POST
مثال 1: نموذج HTML بطريقة POST
الكود:
<form action="welcome.php" method="POST">
الاسم: <input type="text" name="username">
البريد: <input type="email" name="email">
<button type="submit">إرسال</button>
</form>
لاحظ أن القيم لا تظهر في الرابط كما كان يحدث مع GET.
مثال 2: استقبال البيانات في PHP باستخدام $_POST
الكود في welcome.php:
<?php
if ($_SERVER["REQUEST_METHOD"] === "POST") {
$name = $_POST["username"];
$email = $_POST["email"];
echo "الاسم: " . $name;
echo "<br>";
echo "البريد: " . $email;
}
?>
ما يظهر في المتصفح:
الاسم: Rachid
البريد: rachid@example.com
شرح كود PHP:
$_SERVER["REQUEST_METHOD"] === "POST"يتأكد أن الطلب قادم فعلاً بطريقة POST.$_POST["username"]و$_POST["email"]يقرآن قيم الحقول حسبname.- عرض القيم هنا للتوضيح فقط، وفي المشاريع الحقيقية نتحقق منها قبل الاستخدام.
الفرق بين GET وPOST باختصار
| النقطة | GET | POST |
|---|---|---|
| مكان إرسال البيانات | داخل الرابط URL | داخل Body الطلب |
| ظهور البيانات للمستخدم | تظهر بوضوح في الرابط | لا تظهر في الرابط مباشرة |
| أفضل استخدام | بحث وفلاتر وروابط مشاركة | تسجيل دخول، تسجيل، إرسال بيانات حساسة |
أفضل ممارسات الأمان مع POST
- تحقق دائماً من المدخلات قبل استخدامها أو تخزينها.
- استخدم
htmlspecialchars()عند عرض مدخلات المستخدم في الصفحة. - لا تعتمد على POST وحدها كحماية؛ فعّل HTTPS.
- في النماذج المهمة استخدم CSRF Token.
أخطاء شائعة للمبتدئين
- نسيان
method="POST"داخل النموذج. - استخدام اسم حقل مختلف بين HTML و
$_POST. - قراءة
$_POSTبدون التحقق من نوع الطلب. - الثقة بمدخلات المستخدم دون فلترة أو تحقق.
تمرين تطبيقي سريع
- أنشئ نموذج POST فيه
full_nameوpassword. - في ملف الاستقبال تحقق أولاً من
REQUEST_METHOD. - اطبع الاسم فقط، ولا تطبع كلمة المرور.
- جرّب إضافة تحقق بسيط: إذا كان الاسم فارغاً اطبع رسالة خطأ.
الأسئلة الشائعة — FAQ
ما هي طريقة POST في PHP؟
هي طريقة لإرسال بيانات النموذج داخل جسم الطلب، وتُقرأ في PHP عبر $_POST.
ما الفرق بين GET وPOST؟
GET تعرض البيانات في الرابط، وPOST ترسلها داخل Body وتناسب النماذج الحساسة.
كيف أستقبل بيانات POST؟
باستخدام $_POST["field_name"] بعد إرسال النموذج بطريقة POST.
هل POST كافية للأمان؟
لا. تحتاج أيضاً تحقق من المدخلات، HTTPS، وحماية CSRF.