موارد الويب الحديثة لا توفر المعلومات للزائر فحسب، بل تتفاعل معه أيضًا. للتفاعل مع المستخدم، تحتاج إلى الحصول على بعض المعلومات منه. هناك عدة طرق للحصول على البيانات، الطرق الشائعة جدًا هي يحصلو بريد. وبناء على ذلك في بي أتش بيهناك دعم لطرق نقل البيانات هذه يحصلو بريد. دعونا نرى كيف تعمل هذه الأساليب.
الحصول على الطريقةبيانات الحصول على الطريقةيتم تمريرها عن طريق إضافتها إلى عنوان URL للبرنامج النصي الذي يتم استدعاؤه لمعالجة المعلومات المستلمة. لشرح هذه الطريقة، اكتب عنوان URL الخاص بالمورد في شريط عنوان المتصفح وأضف أولاً علامة استفهام (؟) ثم السطر num=10. على سبيل المثال
http://domain.ru/script.php?num=10
إذا كان لديك خادم محلي، فعادةً ما يكون النطاق هو localhost، ومن ثم سيبدو الإدخال السابق هكذا
http://localhost/script.php?num=10
في هذه الحالة، نقوم بتمرير معلمة num تساوي 10. لإضافة المعلمات التالية، يحتاج البرنامج النصي إلى استخدام فاصل علامة الضم (&)، على سبيل المثال
http://domain.ru/script.php?num=10&type=new&v=text
في هذه الحالة، قمنا بتمرير ثلاث معلمات إلى البرنامج النصي: num بالقيمة 10، واكتب بالقيمة "new" وv بالقيمة "text".
للحصول على هذه المعلمات في البرنامج النصي، تحتاج إلى استخدام المصفوفة المضمنة $_GET $_GET["num"], $_GET["type"],$_GET["v"]. ستحتوي عناصر المصفوفة هذه على قيم المعلمات التي تم تمريرها. لتوضيح هذا المثال، قم بإنشاء ملف script.php بالمحتويات التالية
صدى ($_GET["num"]."
");
صدى ($_GET["نوع"]."
");
صدى ($_GET["v"]);
?>
والآن اتصل بهذا الملف في المتصفح
http://path/script.php?num=10&type=new&v=text
وسترى المعلمات التي تم تمريرها في نافذة المتصفح. ولكن إذا قمت باستدعاء هذا الملف بدون معلمات إضافية http://path/script.php، فسترى أخطاء سينتجها المترجم بي أتش بيأنه لا توجد مثل هذه العناصر في المصفوفة $_GET. من الممكن تخصيص أكثر من مقال للتحقق من البيانات الواردة من المستخدم، لذلك لن أتطرق في هذا المقال لهذه النقطة.
كما تفهم، فإن إجبار المستخدم على كتابة البيانات في شريط عنوان المتصفح ليس جيدًا جدًا وغير مريح تمامًا. ولذلك، لتلقي البيانات من المستخدم تحتاج إلى استخدام نماذج HTML. دعونا نكتب نموذج HTML بسيط.
اسمحوا لي أن أعلق قليلا على النموذج الذي تم إنشاؤه. يتم إنشاء النماذج باستخدام علامة النموذج. يتم إنشاء حقول النموذج باستخدام علامات الإدخال والتحديد ومنطقة النص (يمكنك قراءة المزيد). في علامة النموذج، تحدد سمة الإجراء عنوان URL للبرنامج النصي الذي سيتلقى بيانات النموذج. في حالتنا، قمنا بتحديد ملف script.php الموجود لدينا. تحدد سمة الطريقة طريقة إرسال البيانات. لقد حددنا الطريقة يحصل. الآن عرفنا إلى أي ملف سيتم نقل بيانات النموذج، وبأي طريقة، كل ما تبقى هو معرفة أين نبحث عنها؟!
سيتم تمرير بيانات النموذج هذه إلى مورد الويب بواسطة المتصفح عن طريق إلحاقها بعنوان URL: أولاً ستكون هناك علامة استفهام (؟)، ثم سيتم عرض المعلمات مفصولة بعلامة العطف (&). سيتم أخذ اسم المعلمة من سمة الاسم، والتي يجب تحديدها لأي حقل نموذج. تعتمد قيمة المعلمة على نوع الحقل. إذا كان الحقل عبارة عن حقل نصي، فستكون القيمة هي النص الذي أدخله المستخدم. إذا كان الحقل عبارة عن قائمة أو مجموعة من أزرار الاختيار أو خانات الاختيار، فستكون قيمة المعلمة هي قيمة سمة القيمة للعنصر المحدد. اسمحوا لي أن أشرح استخدام نموذجنا كمثال. إذا أدخل المستخدم الرقم 10 في حقل الإدخال، فسيكون اسم المعلمة num (قيمة سمة الاسم لعلامة الإدخال) وستكون القيمة 10 (الرقم الذي أدخله المستخدم). وبناءً على ذلك، سيقوم المتصفح بإنشاء زوج "num=10". إذا قام المستخدم بتحديد الخيار "نعم" من القائمة، فسيكون اسم المعلمة من النوع (قيمة سمة الاسم لعلامة التحديد) وستكون القيمة نعم (قيمة سمة القيمة للخيار بطاقة شعار). وفقًا لذلك، سيقوم المتصفح بإنشاء زوج "type=yes".
الآن سوف نقوم بوضع هذا النموذج على صفحة forma.php.
أدخل أي قيم في حقول النموذج وانقر على زر "إرسال". بعد الضغط على الزر، سيفتح المتصفح صفحة أخرى (script.php) وسيتم عرض البيانات التي أدخلتها في نافذة المتصفح. أعتقد أن السبب واضح: سيقوم المتصفح بتمرير البيانات إلى البرنامج النصي script.php، وفي البرنامج النصي ستتم معالجة هذه البيانات وعرضها على الشاشة.
طريقة ما بعدالآن دعونا نلقي نظرة على كيفية عمل الطريقة بريد.
لإرسال البيانات باستخدام بريدتحتاج إلى استخدام نماذج HTML. كما نتذكر، فإن سمة الطريقة لعلامة النموذج هي المسؤولة عن طريقة إرسال بيانات النموذج. لذلك، تحتاج إلى تحديد القيمة POST في سمة الطريقة لعلامة النموذج. وبخلاف ذلك، يمكن أن يكون النموذج هو نفسه الموجود في أسلوب GET. دعونا نغير النموذج الذي استخدمناه بالفعل لنقل البيانات باستخدام طريقة GET، إلى الإرسال باستخدام طريقة POST.
كما ترون، يظل النموذج كما هو باستثناء سمات الطريقة والإجراء. سيتم الآن تمرير البيانات إلى البرنامج النصي script_post.php. لنضع نموذجنا على صفحة forma_post.php.
نحتاج الآن إلى كتابة برنامج نصي يقوم بمعالجة بيانات النموذج الخاصة بنا.
لتلقي البيانات في البرنامج النصي باستخدام الطريقة التي تم تمريرها بريدتحتاج إلى استخدام مجموعة مدمجة $_POST. ستكون مفاتيح هذه المصفوفة هي أسماء المعلمات. في حالتنا نحن بحاجة إلى استخدام $_POST["num"], $_POST["type"],$_POST["v"]. ستحتوي عناصر المصفوفة هذه على قيم البيانات المنقولة. كما ترون، يتم التعبير عن الفرق من استخدام طريقة GET فقط في استخدام المصفوفة $_POST. لذلك لن يكون من الصعب علينا كتابة ملف script_post.php:
صدى ($_POST["num"]."
");
صدى ($_POST["نوع"]."
");
صدى ($_POST["v"]);
?>
الآن افتح الملف forma_post.php في متصفحك. أدخل بعض البيانات في حقول النموذج وانقر على زر "إرسال". ربما لاحظت الآن الفرق بين طريقة POST وطريقة GET - حيث لم تظهر بيانات النموذج في شريط عنوان المتصفح. البيانات حسب الطريقة بريدلا يمكن أن تنتقل من خلال شريط عنوان المتصفح. وهذا فرق كبير يجب تذكره.
في بي أتش بيبغض النظر عن كيفية إرسال البيانات - طريقة POST أو طريقة GET - يمكنك استلام البيانات باستخدام المصفوفة $_REQUEST. مقارنة بين طرق GET وPOSTعند استخدام طريقة GET، يتم نقل البيانات عن طريق إلحاقها بعنوان URL. وبالتالي، ستكون مرئية للمستخدم، وهو أمر ليس جيدًا دائمًا من الناحية الأمنية. كما سيعتمد الحد الأقصى لمقدار البيانات المنقولة على المتصفح - على الحد الأقصى المسموح به لعدد الأحرف في شريط عنوان المتصفح.
عند استخدام طريقة POST، لن تكون البيانات مرئية للمستخدم (لا يتم عرضها في شريط عنوان المتصفح). وبالتالي فهي أكثر أمانًا، وبالتالي فإن البرنامج الذي يعالج هذه البيانات يتمتع بحماية أكبر من الناحية الأمنية. كما أن حجم البيانات المرسلة غير محدود عمليا.
عند اختيار طريقة نقل البيانات، عليك أن تأخذ في الاعتبار الميزات المذكورة أعلاه واختيار الطريقة الأنسب.
يمكن لعملاء المتصفح إرسال المعلومات إلى خادم الويب.
قبل أن يرسل المتصفح المعلومات، يقوم بتشفيرها باستخدام نظام يسمى ترميز URL. في هذا المخطط، يتم ربط أزواج الاسم/القيمة بعلامات متساوية، ويتم فصل الأزواج المختلفة بعلامة العطف.
Name1=value1&name2=value2&name3=value3
تتم إزالة المسافات واستبدالها بالحرف +، ويتم استبدال أي أحرف أخرى غير أبجدية رقمية بقيم سداسية عشرية. بمجرد تشفير المعلومات، يتم إرسالها إلى الخادم.
الحصول على الطريقة
ترسل طريقة GET معلومات المستخدم المشفرة والملحقة بطلب الصفحة. هل الصفحات والمعلومات المشفرة منفصلة عن بعضها البعض؟ علامة استفهام.
http://www.test.com/index.htm?name1=value1&name2=value2
- تنتج طريقة GET سلسلة طويلة تظهر في سجلات الخادم الخاص بك في حقل "الموقع" بالمتصفح.
- تقتصر طريقة GET على إرسال ما يصل إلى 1024 حرفًا فقط.
- لا تستخدم أبدًا طريقة GET إذا كان لديك كلمة مرور أو معلومات حساسة أخرى لإرسالها إلى الخادم.
- لا يمكن استخدام GET لنقل البيانات الثنائية، مثل الصور أو المستندات النصية، إلى الخادم.
- يمكن الوصول إلى البيانات المرسلة بواسطة طريقة GET باستخدام متغير البيئة QUERY_STRING.
- توفر PHP المصفوفة الترابطية $_GET للوصول إلى جميع المعلومات المرسلة باستخدام طريقة GET.
if($_GET["name"] || $_GET["age"]) ( echo "Welcome ". $_GET["name"]; echo "أنت ". $_GET["age"]. " سنة "؛ مخرج()؛ )
طريقة ما بعد
طريقة بريدينقل المعلومات عبر رؤوس HTTP. يتم ترميز المعلومات كما هو موضح في حالة الطريقة يحصل، ووضعها في الرأس QUERY_STRING.
- طريقة POST ليس لها حد لحجم البيانات التي يجب إرسالها.
- يمكن استخدام طريقة POST لإرسال ASCII بالإضافة إلى البيانات الثنائية.
- تمر البيانات المرسلة باستخدام طريقة POST عبر رأس HTTP، لذا يعتمد الأمان على بروتوكول HTTP. باستخدام Secure HTTP، يمكنك التأكد من أن معلوماتك آمنة.
- توفر PHP مصفوفة ترابطية $_POST للوصول إلى جميع المعلومات المرسلة باستخدام طريقة POST.
جرب المثال التالي عن طريق وضع الكود المصدري في البرنامج النصي test.php.
if($_POST["name"] || $_POST["age"]) ( if (preg_match("[^A-Za-z"-]",$_POST["name"])) ( يموت (" يجب أن يكون الاسم والاسم غير صالحين ألفا"); ) echo "مرحبًا ". $_POST["name"]; echo "أنت ".$_POST["age"]. "عمرك سنة.";exit(); )
$_REQUEST متغير
متغير PHP $_REQUESTيحتوي على محتويات مثل $_GET, $_POST، لذا $_COOKIE. سنناقش المتغير $_COOKIEعندما نتحدث عن ملفات تعريف الارتباط.
يمكن استخدام متغير PHP $_REQUEST لاسترداد النتيجة من بيانات النموذج المرسلة باستخدام طريقتي GET وPOST.
تعتبر أساليب GET وPOST في HTTP وHTTPS الطريقتين الأكثر شيوعًا المستخدمة لنقل البيانات من العميل إلى الخادم باستخدام HTTP (بروتوكول نقل النص التشعبي). يمكن استخدام كل من GET وPOST لإرسال طلب وتلقي الرد، ولكن هناك اختلافات كبيرة بينهما.
يعد الفرق بين طلبات GET وPOST في HTTP أو HTTPS سؤالًا شائعًا في كل مقابلة برمجة ويب. نظرًا لأن HTML مستقل عن تكنولوجيا خادم الويب مثل Java أو ASP أو PHP وHTTP هو البروتوكول الرئيسي في مساحة الإنترنت، فلا يمكن تجاهل أهمية فهم أساليب GET وPOST بشكل واضح. في هذه المقالة، سنلقي نظرة على ما هي طريقة HTTP GET، وما هي طريقة HTTP POST، ومتى يتم استخدام كل طلب، وما هو الفرق بينهما. دعونا ننظر إلى كل مفهوم على حدة.
ما هو HTML؟
HTML هي اللغة المستخدمة لإنشاء صفحات الويب. يشير النص التشعبي إلى الارتباطات التشعبية التي قد تحتوي عليها صفحة HTML. تشير لغة الترميز إلى طريقة استخدام العلامات لتحديد تخطيط الصفحة والعناصر الموجودة على الصفحة.
فيما يلي مثال لـ HTML يُستخدم لتحديد صفحة ويب أساسية تحتوي على عنوان وفقرة واحدة من النص:
<Голова>
<Название>TechTerms.com название>
HEAD>
<Тело>
هذا مثال لفقرة في HTML. p>
Body>
Html>
يحدد السطر الأول نوع المحتوى الموجود في المستند.,
و ، والتي تم تضمينها جميعًا في المثال أعلاه. يتم وضع عنوان الصفحة والبيانات التعريفية والروابط لملفات الربط بين محتوى الصفحة الفعلي وبين العلامات .لقد مر الويب بالعديد من التغييرات على مدى العقود القليلة الماضية، ولكن HTML كانت دائمًا اللغة الأساسية المستخدمة لتطوير صفحات الويب. ومن المثير للاهتمام أنه على الرغم من أن مواقع الويب أصبحت أكثر تقدمًا وتفاعلية، إلا أن لغة HTML أصبحت أكثر بساطة. إذا قمت بمقارنة مصدر صفحة HTML5 بصفحة مشابهة مكتوبة بلغة HTML 4.01 أو XHTML 1.0، فستحتوي صفحة HTML5 على تعليمات برمجية أقل. وذلك لأن HTML الحديث يعتمد على Cascading Style Sheets أو JavaScript لتنسيق جميع العناصر تقريبًا داخل الصفحة.
تقوم العديد من مواقع الويب الديناميكية بإنشاء صفحات ويب بسرعة باستخدام لغة برمجة نصية من جانب الخادم مثل PHP أو ASP. ومع ذلك، حتى الصفحات الديناميكية يجب تنسيقها باستخدام HTML. لذلك، غالبًا ما تنشئ لغات البرمجة النصية تعليمات برمجية بتنسيق HTML يتم إرسالها إلى متصفح الويب.
تم تصميم بروتوكول نقل النص التشعبي HTTP للتواصل بين العملاء والخوادم ويعمل كبروتوكول استجابة للطلب.
يمكن أن يكون متصفح الويب هو العميل، ويمكن أن يكون التطبيق الموجود على الكمبيوتر الذي يستضيف موقع الويب هو الخادم.
يرسل العميل (المتصفح) طلب HTTP إلى الخادم، ويعرض الخادم استجابة تحتوي على معلومات حول حالة الطلب وقد تحتوي أيضًا على المحتوى المطلوب.
طريقتان للطلب: GET وPOST
طريقتان شائعتان الاستخدام للاستجابة للطلب بين العميل والخادم هما:
GET - يطلب البيانات من المورد المحدد؛
POST - يرسل البيانات المراد معالجتها إلى المورد المحدد.
ترجمة GET وPOST تعني حرفيًا الاستلام والمعالجة اللاحقة.
المزيد عن HTTP
HTTP هو بروتوكول يستخدم لنقل البيانات عبر الإنترنت. وهو جزء من مجموعة بروتوكول الإنترنت ويحدد الأوامر والخدمات المستخدمة لنقل بيانات صفحة الويب.
يستخدم HTTP نموذج الخادم والعميل. يمكن أن يكون العميل جهاز كمبيوتر منزلي أو كمبيوتر محمول أو جهاز محمول. عادةً ما يكون خادم HTTP عبارة عن مضيف ويب يقوم بتشغيل برنامج خادم الويب مثل Apache أو IIS. عندما يصل مستخدم إلى موقع ويب، يرسل المتصفح طلبًا إلى خادم الويب المناسب ويستجيب برمز حالة HTTP. إذا كان عنوان URL صالحًا وتم منح الاتصال، فسيرسل الخادم صفحة الويب والملفات المرتبطة بها إلى المتصفح.
تتضمن رموز حالة HTTP الشائعة ما يلي:
200 - طلب ناجح (صفحة الويب موجودة)؛
301 - يتحرك باستمرار (يعيد التوجيه بشكل متكرر إلى عنوان URL جديد)؛
401 - طلب غير مصرح به (الإذن مطلوب)؛
500 - خطأ داخلي في الخادم (غالبًا ما يحدث بسبب تكوين خادم غير صحيح).
POST وGET في HTTP
يحدد HTTP أوامر GET وPOST المستخدمة لمعالجة عمليات إرسال النماذج على مواقع الويب. يتم استخدام أمر CONNECT لتسهيل الاتصال الآمن المشفر باستخدام SSL. تحدث اتصالات HTTP المشفرة عبر HTTPS، وهو امتداد لـ HTTP مصمم لنقل البيانات بشكل آمن.
يمكن الوصول إلى عناوين URL التي تبدأ بـ "http://" عبر بروتوكولات نقل النص التشعبي القياسية وتستخدم المنفذ 80 بشكل افتراضي. يمكن الوصول إلى عناوين URL التي تبدأ بـ "https://" عبر اتصال HTTPS آمن وغالبًا ما تستخدم المنفذ 443.
بريد
POST عبارة عن سلسلة من اختبارات النظام التي تجريها أجهزة الكمبيوتر والأجهزة الإلكترونية الأخرى عند تشغيلها. يمكن عرض نتائج الاختبار على الشاشة، أو عرضها عبر مصابيح LED الوامضة، أو ببساطة تسجيلها داخليًا. في أنظمة الكمبيوتر، يتم تنفيذ عملية POST في بداية تسلسل التمهيد. إذا نجحت جميع الاختبارات، فستستمر بقية عملية بدء التشغيل تلقائيًا.
تعمل أنظمة تشغيل أجهزة Mac وWindows على تشغيل POST في كل مرة يتم فيها تشغيل الكمبيوتر أو إعادة تشغيله. يقوم الفحص بفحص الأجهزة والتأكد من أن المعالج وذاكرة الوصول العشوائي وأجهزة التخزين تعمل بشكل صحيح. إذا حدث خطأ أثناء POST، فقد تتوقف عملية بدء التشغيل مؤقتًا أو تتوقف تمامًا، وقد تظهر رسالة على الشاشة.على أجهزة الكمبيوتر، غالبًا ما تظهر أخطاء POST على شاشة معلومات BIOS. وقد تظهر كرموز تشفير مثل "08" أو كرسالة نظام مثل "خطأ في إزاحة ذاكرة النظام". في نظام التشغيل Mac، غالبًا ما تتم الإشارة إلى أخطاء POST من خلال رسم بسيط، مثل رمز مجلد معطل، مما يشير إلى عدم العثور على جهاز التمهيد.
المظاهر الجسدية
في بعض الحالات، قد لا يتم تشغيل شاشة الكمبيوتر حتى قبل ظهور أخطاء POST. إذا حدث ذلك، فقد يتم عرض رموز الخطأ من خلال مصابيح LED الوامضة أو أصوات التنبيه. على سبيل المثال، سيقوم جهاز Apple iMac بتشغيل ثلاث نغمات متتالية، ويتوقف مؤقتًا لمدة خمس ثوانٍ، ثم يكرر النغمات عند اكتشاف وجود ذاكرة وصول عشوائي سيئة أثناء بدء التشغيل. تصدر معظم أجهزة الكمبيوتر أيضًا صوت تنبيه عند اكتشاف أخطاء POST، على الرغم من أن كل شركة مصنعة تستخدم الرموز الخاصة بها.
POST هو مصطلح تقني إلى حد ما يستخدمه فنيو الكمبيوتر فقط بشكل منتظم. ومع ذلك، فهو اختصار جيد لأنه يساعدك على فهم رسائل الخطأ التي قد تظهر على أجهزة الكمبيوتر أو الأجهزة الإلكترونية الأخرى بشكل أفضل. إذا لم يبدأ تشغيل جهاز الكمبيوتر الخاص بك بسبب خطأ POST، فيمكنك استخدام جهاز آخر للعثور على معنى الخطأ وسببه من موقع الشركة المصنعة على الويب. بعد ذلك يمكنك اتخاذ الإجراء المناسب - إزالة وحدة الذاكرة أو إعادة تثبيت بطاقة الفيديو ثم إعادة تشغيل الجهاز.
يحصل
يعد POST أيضًا وسيلة لتمرير متغيرات نموذج HTML من صفحة ويب إلى أخرى دون عرضها في شريط العناوين. الطريقة البديلة هي GET، والتي تضيف قيمًا إلى عنوان URL. توفر طلبات HTTP POST بيانات إضافية من العميل (المتصفح) إلى الخادم في نص الرسالة. في المقابل، تتضمن طلبات GET جميع البيانات المطلوبة في عنوان URL. يمكن للنماذج في HTML استخدام أي طريقة عن طريق تحديد الطريقة = POST أو الطريقة = GET (افتراضي) على العنصر
![](https://i1.wp.com/steptosleep.ru/wp-content/uploads/2018/06/92221.png)
إذا قام المستخدم بإدخال بعض النص في حقل النص والنقر على زر "إرسال"، فسيتم إرسال متغير النص إلى الخادم مع قيمة المحتوى الذي أدخله المستخدم.
POST واحصل على الطلبات بكلمات بسيطة
سيتم إرسال هذا المتغير باستخدام طريقة POST.
إذا كتبت هذا في النموذج: