يرسل من السيرفر إلى المستعرض، ويحتوي على ثلاث أشياء:
The Response Line .
HTTP Header .
HTTP Body .
1/ The Response Line:
ال Response line يحتوي فقط على نوعين من المعلومات:
1- رقم إصدارة ال HTTP .
2- شفرة أو كود ال http request التي تقوم بتحديد ما إذا كان ال request ناجحاً أم فاشل .
مثال:
HTTP/1.1 200 OK
في هذا المثال يقوم ال response line بإرجاع القيمة 200 متبوعة بالكلمة OK. هذه تشكل وتشير إلى نجاح ال request ويكون ال response يحتوي على الصفحة المطلوبة والبيانات من السيرفر.
ومثال آخر هو الشفرة 404.. وتظهر عندما تقوم بطلب صفحة ويفشل السيرفر في الحصول عليها.
هناك خمس فئات من الشفرات:
وصفها الفئة
يتم إعطاء هذا الكود إذا كان الطلب (request) يتم معالجته حالياً.
100 - 199
يتم إعطاء هذا الكود إذا تم استقبال الطلب بنجاح.
200 - 299
يتم إعطاء هذا الكود إذا كانت البيانات قد تم تحويلها أو تحريكها من موضعها.
300 - 399
يتم إعطاء هذا الكود إذا الطلب فيه خطأ من قبل العميل (المستعرض).. غير كامل أو غير صحيح أو غير ممكن.
400 - 499
يتم إعطاء هذا الكود إذا كان الخطأ من قبل السيرفر. أي إذا كان الطلب صحيحاً وموجوداً لكن السيرفر فشل في معالجته وإخراجه.
500 - 599
2/ HTTP Header:
ال Response header يعتبر مشابه لـ Request header الذي ناقشناه في الأعلى. وتنقسم المعلومات التي فيه أيضاً إلى ثلاث أنواع:
عامة General / معلومات عن ال client أو السيرفر ولا تخصص إلى واحد منهما.
شخصية Entity / يحتوي على معلومات عن البيانات التي يتم إرسالها بين السيرفر والعميل .
الإجابة Response / يحتوي معلومات عن السيرفر الذي قام بإرسال الرد وكيفيه تعامله ومعاجلته للرد (Response) .
كما قلنا سابقاً.. يتكون من عدة سطور ويتم وضع سطر فارغ للإعلام عن انتهاء الهيدر (Header):
HTTP/1.1 200 OK -The satus line
Date: Mon; 1st Nov 1999, 16:12:23 GMT -General header
Server : Apache/1.3.12 (Unix) (SUSE/Linux) PHP/4.0.2 -The response
Last-modified: Fri, 29 Oct 1999, 12:08:03 GMT -Entity Header
السطر الأول ناقشناه، والسطر الثاني مفهوم من غير شرح، السطر الثالث يقوم بتحديد البرنامج تبع السيرفر ونوعه ونظام التشغيل القائم عليه، والسطر الأخير يقوم بتعريف آخر وقت تمّ فيه تعديل أو تجديد الصفحة.
* ملاحظة/ قد يحتوي الهيدر (Header) على أكثر من هذه المعلومات أو معلومات مختلفة وهذا يعتمد على نوع الشيء المطلوب من السيرفر.
إذا أردت معرفة معلومات أكثر عن هذه الأقسام.. تستطيع مراجعة المقالة رقم 2068 في الموقع التالي: http://www.rfc.net .
3/ The HTTP Body:
إذا تمت معالجة الطلب بنجاح.. فإن ال HTTP Response Body يحتوي على شفرة الHTML ويقوم مستعرض الانترنت بتفسيرها وتحويلها إلى الصفحة النهائية التي تراها.
أين سكربت الPHP من ذلك كله ؟
أصبح الآن لدينا مفهومية جيدة عن طريقة إرسال المستعرض طلب صفحة من السيرفر وكيفية استجابة السيرفر لهذا الطلب. دعنا نلخص ما تمّ رؤيته وشرحه في النقاط السابقة في صورة ثالثة ملخصّة:
تكلمنا عن أن سكربت ال php يتكون من ثلاث أشياء: نص وشفرة php وشفرة html.
لا نستطيع وصف ال html بأنها لغة برمجة بشكل جيد، ونستطيع أن نقول أن ال php لغة سكربتات Scripting Language.. لأنها تضيف قدرات html عليها مثل الجداول والفريمات بشفرة html بداخل شفرة ال php.
هناك لغات تسمى لغات سكربتات قد تكون متآلفاً معها مثل الجافا سكربت والفجول بيسك سكربت، باستثناء أن الفرق بينها وبين الphp هو أن الphp لغة تعتمد على جهة المزود أي السيرفر ويمكنك تخصيص المتصفح الذي يستعرضها.
تجعلنا الhtml نضمن سكربتات الphp فيها ضمن قواعد لذلك لكي نستطيع تشغيلها، ولكننا لا ننسى أن امتداد الملفات يظلّ كما هو php أو php3 بدون تغير فيه. لكي يتم إرسال السكربت إلى مكينة الترجمة (Scripting Engine) التي تقوم بترجمة السكربت إلى html (كأنك تترجم من عربي إلى انجليزي أو العكس).
* مفهوم الـ Parsing والـ Execution :
--------------------------------------------------------------------------------
يمكن أن نقسم عملية الترجمة التي يقوم بها سيرفر php إلى قسمين أو عمليتين:
العملية الأولى / هي أن السيرفر يقوم أولاً بفحص قواعد اللغة، وهذا لا يضمن أن السكربت صحيح مئة بالمائة ولكنه تدقيق في الأوامر وقواعد اللغة وهذا ما يسمونه بال Parsing.
العملية الثانية/ هي تنفيذ السكربت بعدها وإخراجه على شكل شفرة html، وهذا ما يسمى بال Execution .
بقي أن نقول أمراً معروفاً وهو أن السكربتات نوعين:
النوع الأول / وهو ما ينفذ من جهة المزود Server-Side Scripting .
النوع الثاني/ ما ينفذ من جهة المستعرض (صفحة انترنت). مثل: الجافا سكربت وغير ذلك.
تحياتي