خصوصية method في <form> HTML

التعريف والاستخدام

method تحدد الخاصية كيفية إرسال بيانات النموذج (سيتم إرسال بيانات النموذج إلى الصفحة المحددة في خاصية action)

يمكن إرسال بيانات النموذج كمتغيرات URL (باستخدام method="get") أو كمعاملة HTTP POST (باستخدام method="post")

ملاحظات حول GET:

  • أضف بيانات النموذج على شكل اسم/قيمة إلى URL
  • يوجد حد لطول URL (حوالي 3000 حرف)
  • لا تستخدم GET لإرسال بيانات حساسة! (سيكون مرئيًا في URL)
  • للتحقق من أن المستخدم يرغب في إضافة النتيجة كعلامة مرجعية للنموذج المقدم مفيد للغاية
  • يكون GET أكثر ملاءمة للبيانات غير الآمنة،مثل قوائم البحث في Google.

ملاحظات حول POST:

  • إضافة بيانات النموذج في جسم الطلب HTTP (البيانات لا تظهر في URL).
  • لا يوجد حد للاحجام.
  • لا يمكن إضافة النماذج التي يتم إرسالها باستخدام POST إلى المفضلة.

مثال

مثال 1

إرسال النموذج باستخدام طريقة "get":

<form action="/action_page.php" method="get">
  <label for="fname">الاسم:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <label for="lname">الاسم العائلي:</label>
  <input type="text" id="lname" name="lname"><br><br>
  <input type="submit" value="إرسال">
</form>

تجربة شخصية

مثال 2

إرسال النموذج باستخدام طريقة "post":

<form action="/action_page.php" method="post">
  <label for="fname">الاسم:</label>
  <input type="text" id="fname" name="fname"><br><br>
  <label for="lname">الاسم العائلي:</label>
  <input type="text" id="lname" name="lname"><br><br>
  <input type="submit" value="إرسال">
</form>

تجربة شخصية

النحو

<form method="get|post">

قيمة الخاصية

القيمة وصف
get الافتراضي.إضافة بيانات النموذج كاسم/قيمة إلى URL:URL?name=value&name=value.
post إرسال بيانات النموذج كمعاملة HTTP POST.

تفسير خاصية method

يتم إرسال بيانات النموذج إلى الخادم لمعالجتها باستخدام الطريقة المحددة في خاصية method.هناك طريقتان فقط:طريقة POST و طريقة GET.

إذا تم استخدام طريقة POST،سيقوم المتصفح ببث البيانات وفق الخطوات التالية.أولاً،سيقوم المتصفح بالاتصال بمسؤول الخادم المحدد في خاصية action،بعد إنشاء الاتصال،سيقوم المتصفح ببث البيانات إلى الخادم باستخدام طريقة نقل منقسمة.

على الجانب الخاص بالخادم،بمجرد بدء تنفيذ تطبيق النوع POST،يجب قراءة المعلمات من موقع معين،وفي حالة قراءة المعلمات،يجب تفسير هذه المعلمات قبل أن يستطيع التطبيق استخدام هذه القيم.

في هذه الحالة،يتم استخدام طريقة GET،عندها سيتصل المتصفح بمسؤول الخادم لمعالجة النموذج،ثم يرسل جميع بيانات النموذج في خطوة نقل واحدة:سيقوم المتصفح بضم البيانات مباشرة بعد URL الخاص بالعملية.ويتم فصلها بفاصلة استفهام.

يمكن لمتصفح العادي نقل معلومات النموذج باستخدام أي من هذه الطرق، ولكن بعض الخوادم تقبل فقط بيانات من طريقة واحدة. يمكنك تحديد الطريقة التي يجب أن تستخدمها خادم معالجة النموذج لمعالجة البيانات في خاصية method (الطريقة) في علامة <form>، مما يجعلها POST أو GET.

POST أم GET؟

إذا كان خادم معالجة النماذج يدعم كلا من طريقة POST وGET، فما هي الطريقة التي يجب أن تختارها؟ إليك بعض القواعد المتعلقة بذلك:

  • إذا كنت ترغب في الحصول على أداء نقل النموذج الأمثل، يمكنك استخدام طريقة GET لنقل النماذج الصغيرة التي تحتوي على عدد قليل من الحقول القصيرة.
  • تقوم بعض أنظمة تشغيل الخوادم بتحديد عدد وطول المعلمات التي يمكن نقلها مباشرة إلى التطبيق، في هذه الحالة، يجب استخدام طريقة POST لنقل النماذج التي تحتوي على عدد كبير من الحقول أو حقول نصية طويلة.
  • إذا لم تكن لديك خبرة كافية في كتابة تطبيقات معالجة النماذج على الخادم، يجب أن تختار طريقة GET. إذا كنت تستخدم طريقة POST، يجب أن تقوم بعمل إضافي في قراءة وتشفير الطريقة، قد لا يكون هذا صعبًا، ولكن قد لا تكون مستعدًا للتعامل مع هذه المشاكل.
  • إذا كانت الأمان مشكلة، نوصي باستخدام طريقة POST. تضع طريقة GET معلمات النموذج مباشرة في URL للتطبيق، مما يسمح للمحللين الشبكيين بسهولة التقاطها واستخراجها من سجلات الخادم. إذا كانت المعلمات تحتوي على معلومات حساسة مثل حساب بطاقة الائتمان، فإن ذلك يمكن أن يهدد أمان المستخدمين دون أن يدركوا ذلك. بينما لا تحتوي تطبيقات POST على ثغرات أمان، يمكن على الأقل استخدام التشفير عند نقل المعلمات كمعاملات منفصلة إلى الخادم.
  • إذا كنت ترغب في استدعاء تطبيق الخادم على خلاف النموذج، بما في ذلك عملية نقل المعلمات إليه، يجب استخدام طريقة GET، لأن هذه الطريقة تسمح بإدراج المعلمات مثل النموذج كجزء من URL. من ناحية أخرى، تطبيقات النوع POST ترغب في أن يكون هناك عملية نقل إضافية من متصفح إلى URL، حيث لا يمكن أن تكون المحتويات التي يتم نقلها جزءًا من محتويات علامة <a> التقليدية.

نقل المعلمات بوضوح

بعض الإصدارات السابقة يمكن أن تكون تفسيراً لاختيار هذا الأسلوب. افترض أن لديك نموذج بسيط يحتوي فقط على المعلمات x وy. عند تشفير قيم هذه العناصر، فإنها تأخذ الشكل التالي:

x=28&y=66

إذا كان النموذج يستخدم method=GET، فإن URL الذي يستدعي تطبيق الخادم سيكون كما يلي:

http://www.example.com/example/program?x=28&y=66

في أي وقت يمكننا إنشاء علامة <a> تقليدية، باستخدامها في استدعاء نموذج يحتوي على قيم المعلمات المطلوبة، على النحو التالي:

<a href="http://www.example.com/example/program?x=28&y=66">

The only problem is that the & symbol used to separate parameters is also the insertion symbol in character entities. If an & symbol is placed in the href attribute of the <a> tag, the browser will replace the characters following it with the corresponding character entity.

To prevent this from happening, we must replace the & symbol with its entity equivalent, that is, replace it with "&" or "&". After the replacement, the above non-form example that refers to the server application will look like this:

<a href="http://www.example.com/example/program?x=28&y=66">

Since this still cannot be used in the URL with the & symbol, and it may cause confusion in the future, we encourage servers to also accept semicolons as parameter separators. You can also check your server documentation to see if your server supports this feature.

Browser Support

Chrome Edge Firefox Safari Opera
Chrome Edge Firefox Safari Opera
Support Support Support Support Support