
2- دروس PHP للمبتدئين.. الدرس الثاني
|
[ مفاهيم عامة ] * بروتوكولات الإنترنت : لا
نريد هنا أن نذهب إلى التكلم عن تاريخ الإنترنت العتيق.. النقطة المهمة هي
الشبكة المربوطة بنقاط nodes الانترنت صممت لكي تقوم بالحفاظ على المعلومات لكي
يتم نقلها من مكان إلى آخر، وهي تستخدم مجموعة من البروتوكولات مثل Tcp/Ip لكي
يتم نقل البيانات عبر الشبكة. عندما يطلب المستخدم من المستعرض أن يجلب له صفحة من الانترنت، فإن المستعرض يجلب هذه الأوامر باستخدام بروتوكول يدعى بروتوكول التحكم في نقل البيانات TCP. هذا البروتوكول هو بروتوكول نقل للبيانات وهو يضمن أن البيانات قد تم إرسالها ووصولها بشكل صحيح. قبل
أن يتم إرسال البيانات عبر الشبكة يجب عنونتها، والبروتوكول الذي يقوم بعنونه
البيانات يدعى HTTP. يتم
تمرير الطلب من المستعرض إلى ملقم أو سيرفر الويب وهو ما يعرف بـ HTTP request.
ويقوم السيرفر برؤية مستودع البيانات لديه لكي يحصل على البيانات المطلوبة.. وهذه رسمة توضيحية لكي يتبين ما كنّا نرمي إليه أو نسعى إليه:
* بروتوكول ال HTTP : رغم ما أخذناه من معلومات كثيرة وقصص كثيرة إلاّ أنه رغم ذلك يفوتنا الكثير من التفاصيل في هذا الموضوع، لذلك دعنا نغوص قليلاً في التفاصيل عن بروتوكول HTTP بشكل خاص. عندما
تقوم بعملية طلب لصفحة من السيرفر هناك أمور إضافيه ترسل مع عملية الطلب http
request غير ال URL وهي ترسل كجزء من http request. الكثير من هذه المعلومات تولد تلقائياً في رسالة ال HTTP ولا يقوم المستخدم بالتعامل معها مباشرة.. إذن لا يحتاج أن تقلق نفسك بشأن هذه المعلومات إذا أنت لم تنشاها في الأصل ويجب أن تأخذ أيضاً في معلوماتك أن هذه المعلومات ترسل كجزء من ال HTTP request وال HTTP response لأن سكربت ال PHP الذي نصنعه يمنحنا تحكماً إضافياً بهذه المعلومات. كل
رسائل الHTTP تأخذ تنسيقاً معيناً سواء كانت Request أو Response. نستطيع أن
نقوم بتقسيم هذا التنسيق إلى ثلاث أقسام: المحتوى من هذه الأشياء الثلاثة يعتمد على نوع الرسالة إذا كانت HTTP Request أو HTTP Response، لذلك سنتكلم عنهم بتعمق أكثر. لنتوقف لحظات وننظر في الشكل التالي لكي يتوضح إلينا مفهوم المعاجلة التي تتم:
HTTP Request: يجب أن يحتوي ال request على الأقل ال request line (سطر الطلب) وال HOST . يرسل
مستعرض الانترنت طلبيه (HTTP request) إلى ملقم الويب تحتوي على التالي: 1/ The Request Line: السطر الأول من كل طلبيه (http request) هي Request Line الذي يحتوي على ثلاث أنواع من المعلومات:
إذن كمثال على ال Request Line انظر إلى السطر التالي: (ال method يخبر السيرفر كيف يتعامل مع الطلب) GET /testpage.htm HTTP/1.1 هناك ثلاث أنواع شائعة من ال method والتي تظهر في الجدول التالي:
هناك
أوامر عديدة أخرى مثل: ( PUT - DELETE - TRACE - CONNECT - OPTION )..
البت الثاني من المعلومات هو الهيدر HTTP Header.. الذي يحتوي على تفاصيل أو وثائق عن العميل مثل نوع المتصفح (نتسكيب أو اكسبلورر) الذي قام بطلب الصفحة والوقت والتاريخ والإعدادات العامة. الHTTP Header يحتوي على معلومات نستطيع تقسيمها إلى ثلاث فئات وهي:
وهذا مثال:
Accept: * / * مثلما ترى ال HTTP Header عبارة عن أعداد يتكون من عدة سطور، كل سطر يحتوي على قيم معينة. هناك عدة سطور تشكل ال HTTP header وأكثرها اختياري. يقوم الHTTP بالإخبار عن انتهاء معلومات ال header بترك سطر فارغ (وهذا يكون في الHTTP1.1).
إذا
تم استخدام الأمر POST في ال HTTP Request Line.. عندها يقوم ال HTTP بطلب
المعلومات التي أرسلت في ال body إلى السيرفر. HTTP Response: يرسل من السيرفر إلى المستعرض، ويحتوي على ثلاث أشياء:
1/ The Response Line: ال
Response line يحتوي فقط على نوعين من المعلومات: مثال: في هذا المثال يقوم ال response line بإرجاع القيمة 200 متبوعة بالكلمة OK. هذه تشكل وتشير إلى نجاح ال request ويكون ال response يحتوي على الصفحة المطلوبة والبيانات من السيرفر. ومثال آخر هو الشفرة 404.. وتظهر عندما تقوم بطلب صفحة ويفشل السيرفر في الحصول عليها. هناك خمس فئات من الشفرات:
ال Response header يعتبر مشابه لـ Request header الذي ناقشناه في الأعلى. وتنقسم المعلومات التي فيه أيضاً إلى ثلاث أنواع:
كما قلنا سابقاً.. يتكون من عدة سطور ويتم وضع سطر فارغ للإعلام عن انتهاء الهيدر (Header):
HTTP/1.1 200
OK -The
satus line السطر الأول ناقشناه، والسطر الثاني مفهوم من غير شرح، السطر الثالث يقوم بتحديد البرنامج تبع السيرفر ونوعه ونظام التشغيل القائم عليه، والسطر الأخير يقوم بتعريف آخر وقت تمّ فيه تعديل أو تجديد الصفحة. *
ملاحظة/ قد يحتوي الهيدر (Header) على أكثر من هذه المعلومات أو معلومات مختلفة
وهذا يعتمد على نوع الشيء المطلوب من السيرفر.
إذا تمت معالجة الطلب بنجاح.. فإن ال HTTP Response Body يحتوي على شفرة الHTML ويقوم مستعرض الانترنت بتفسيرها وتحويلها إلى الصفحة النهائية التي تراها.
أصبح الآن لدينا مفهومية جيدة عن طريقة إرسال المستعرض طلب صفحة من السيرفر وكيفية استجابة السيرفر لهذا الطلب. دعنا نلخص ما تمّ رؤيته وشرحه في النقاط السابقة في صورة ثالثة ملخصّة:
تكلمنا عن أن سكربت ال php يتكون من ثلاث أشياء: نص وشفرة php وشفرة html. هناك لغات تسمى لغات سكربتات قد تكون متآلفاً معها مثل الجافا سكربت والفجول بيسك سكربت، باستثناء أن الفرق بينها وبين الphp هو أن الphp لغة تعتمد على جهة المزود أي السيرفر ويمكنك تخصيص المتصفح الذي يستعرضها. تجعلنا الhtml نضمن سكربتات الphp فيها ضمن قواعد لذلك لكي نستطيع تشغيلها، ولكننا لا ننسى أن امتداد الملفات يظلّ كما هو php أو php3 بدون تغير فيه. لكي يتم إرسال السكربت إلى مكينة الترجمة (Scripting Engine) التي تقوم بترجمة السكربت إلى html (كأنك تترجم من عربي إلى انجليزي أو العكس).
* مفهوم الـ Parsing والـ Execution : يمكن أن نقسم عملية الترجمة التي يقوم بها سيرفر php إلى قسمين أو عمليتين:
العملية الأولى / هي أن السيرفر يقوم أولاً بفحص قواعد
اللغة، وهذا لا يضمن أن السكربت صحيح مئة بالمائة ولكنه تدقيق في الأوامر
وقواعد اللغة وهذا ما يسمونه بال Parsing.
بقي أن نقول أمراً معروفاً وهو أن السكربتات نوعين:
النوع الأول / وهو ما ينفذ من جهة المزود Server-Side
Scripting .
|
|
||||||||||||||||||||
|
|
|||||||||||||||||||||
|
|
|||||||||||||||||||||
|
|
|||||||||||||||||||||
|
|
|||||||||||||||||||||
|
|
|||||||||||||||||||||
|
|