لنكتب
سكربتاً بسيطاً
(فاتح
شهية)
:
<html dir = “rtl”>
التحية
لدي أهل الإسلام
هي
<?
(“السلام
عليكم ورحمة
الله وبركاته”)
Echo
?>
</html>
قم
بحفظ الملف باسم
echo.php
ستعرض
علينا عباره
مكتوب فيها
التحية
لدي أهل الإسلام
هي السلام عليكم
ورحمة الله
وبركاته
شي
بسيط أليس كذلك
؟
يتكون
كود الـphp
من
نصوص و كود و
علامات ولغة
html وقد
لاتحتوي على
نصوص html
.
لكي
يعمل الكود يجب
أن يكون إمتداد
الملف php
أو
بأي إمتداد من
إمتدادات الـphp
مثلاً
php3 و
phtml
--
عندما
تطلب صفحة في
الإنترنت فإنك
تجري اتصالاً
مباشراً مع
السيرفر هذه
العملية تدعي
request للسيرفر
(يعني
طلبية للسيرفر)
يقوم
السيرفر بتفسير
طلبك والبحث
عن الصفحة المطلوبة
ويرسل اليك
الصفحة المطلوبة
كجزء مما يسمي
response (استجابة)
لمستعرض
الانترنت لديك
يقوم بعدها
المتصفح لديك
بأخذ الكود الذى
ارجع إليه ويقوم
بتجميعه (compile)
لكي
يصبح صفحة صالحة
للعرض هذه العملية
التي حصلت تشبه
نظرية العميل
للخادم(client
to server) بحيث
أن المتصفح هو
العميل والخادم
هو السيرفر .
الخادم
يقوم بعملية
تخزين وترجمة
وتوزيع البيانات
بينما يقوم
العميل (مستعرض
الانترنت لديك)
بالعبور
الى السيرفر
واحضار البيانات
بروتوكولات
الانترنت :
لانريد
هنا أن نذهب إلى
التكلم عن تاريخ
انترنت العتيق
، النقطة المهمة
هي الشبكة المربوطة
بنقاط nodes
الانترنت
صممت لكي تقوم
بالحفاظ على
المعلومات لكي
يتم نقلها من
مكان إلى آخر
وهي تستخدم
مجموعة من
البروتوكولات
مثل Tcp/Ip
لكي
يتم نقل البيانات
عبر الشبكة .
بروتوكول
Tcp/Ip
من
مميزات هذا
البروتوكول
أنه بإستطاعته
إعاده تمهيد
طريقه للبيانات
إذا تم خلل في
نقطة أو مكان
أثناء نقلها
ويتم ذلك بسرعة
شديدة.عندما
يطلب المستخدم
من المستعرض
أن يجلب له صفحة
من الانترنت
فإن المستعرض
يجلب هذه الأوامر
باستخدام بروتوكول
يدعي بروتوكول
التحكم في نقل
البيانات TCP
هذا
البروتوكول
هو بروتوكول
نقل للبيانات
وهو يضمن أن
البيانات قد
تم إرسالها
ووصولها بشكل
صحيح .
قبل
أن يتم إرسال
البيانات عبر
الشبكة يجب
عنونتها والبروتوكول
الذي يقوم بعنونة
البيانات يدعي
HTTP يقوم
هذا البروتوكول
بوضع عنونة
للبيانات لكي
يعرف البروتوكول
TCP أين
سينقل البيانات
(فهو
لايستطيع نقل
البيانات إذا
لم يكن لها هدف
أو مكان )
يستخدم
البروتوكول
HTTP عن
طريق الويب في
عملية نقل البيانات
من كمبيوتر إلى
آخرعندما ترى
الصفحة متبوعة
بـhttp://
فانك
تعلم مباشرة
أن الانترنت
يستخدم البرتوكول
HTTP لإحضار
هذه الصفحة
يمكنك أن تاخذ
صورة بأن الـTCP
عبارة
عن ساعي بريد
الذي يقوم بإيصال
رسالة ، هذه
الرسالة فيها
طابع بريد وعنوان
وهو مانسميه
بالـHTTP
.
يتم
تمرير الطلب
من المستعرض
إلى ملقم أو
سيرفر الويب
وهو مايعرف بـ
HTTP request ويقوم
السيرفر برؤية
مستودع البيانات
لديه لكي يحصل
على البيانات
المطلوبة فإذا
وجد الصفحة في
المستودع قام
بإرسالها على
شكل حزم الى
الجهة التي قامت
بالطلب باستخدام
بروتوكول TCP
ويعنون
هذه الحزم لمستعرض
الانترنت لديك
باستخدام بروتوكول
http (ننبه
دائما الى أنه
يرسلها على شكل
حزم لكي تعرف
السبب عند عدم
ظهور صفحة ويب
كاملة أن هناك
حزمة لم ترسل
بشكل جيد)
ولكن
إذا لم يجد السيرفر
الصفحة المطلوبة
فانه يقوم بإرسال
صفحة تحتوي على
رسالة خطا 404
وهذه
الصفحة التي
أرسلت من ملقم
الويب الى المستعرض
لديك تسمي HTTP
response .
بروتوكول
الـ HTTP
رغم
ما أخذناه من
معلومات كثيرة
وقصص كثيرة تشبه
قصص ألف ليلة
أو حكايات الأطفال
إلا أنه رغم ذلك
يفوتنا الكثير
من التفاصيل
في هذا الموصوع
لذلك دعنا نغوص
قليلاً في التفاصيل
عن بروتوكول
HTTP بشكل
خاص.
عندما
تقوم بعملية
طلب لصفحة من
السيرفر هناك
أمور إضافية
ترسل مع عملية
الطلب http
request غير
الـURL
وهي
ترسل كجزء من
http request .
نفس
الموضوع مع
الhttp
response هناك
أمور أخرى تصل
معه كجزء منه
.
الكثير
من هذه المعلومات
تولد تلقائياً
في رسالة الـHTTP
ولايقوم
المستخدم بالتعامل
معها مباشرة
, إذن
لايحتاج أن تقلق
نفسك بشأن هذه
المعلومات إذا
أنت لم تنشأها
في الأصل ويجب
أن تأخذ أيضا
في معلوماتك
أن هذه المعلومات
ترسل كجزء من
الـHTTP
request والـHTTP
response لأن
سكربت الـPHP
الذي
نصنعه يمنحنا
تحكماً إضافيا
بهذه المعلومات
.
كل
رسائل الـHTTP
تأخذ
تنسيقاً معيناً
سواء كانت Request
أو
Response . نستطيع
أن نقوم بتقسيم
هذا التنسيق
إلى ثلاثة أقسام
:
1
- Request/response line
2
- Http header
3
- Http body
المحتوي
من هذه الأشياء
الثلاثة يعتمد
على نوع الرسالة
إذا كانت HTTp
Request أو
HTTP response لذلك
سنتكلم عنهم
بتعمق أكثر .
Http
Request
يجب
أن يحتوي الـrequest
على
الأقل الـrequest
line (سطر
الطلب)
والـHOST
.
يرسل
مستعرض الانترنت
طلبية (HTTP
request) إلى
ملقم الويب
تحتوي على التالي
:
1-
The Request Line
السطر
الأول من كل
طلبية (http
request) هي
Request Line الذي
يحتوي على ثلاثة
أنواع من المعلومات
:
أ
-
أمر
HTTP وهو
مايعني بـ method
.
ب
-
المسار
من السيرفر إلى
المصادر المطلوبة
(صفحات
الانترنت )
المطلوبة
من قبل العميل
(المستعرض)
جـ
-
إصدارة
الـHTTP
.
إذن
كمثال على الـ
Request Line أنظر
إلى السطر التالى
:
GET
/testpage.htm HTTP/1.1
الـmethod
يخبر
السيرفر كيف
يتعامل مع الطلب
هناك ثلاثة
أنواع شائعه
من الـmethod
2-
HTTP Header
البت
الثاني من المعلومات
هو الهيدر HTTP
Header .الذي
يحتوي على تفاصيل
أو وثائق عن
العميل مثل نوع
المتصفح (نتسكيب
أو إكسبلور)
الذي
قام بطلب الصفحة
والوقت والتاريخ
والإعدادات
العامة
الـHTTP
Header يحتوي
على معلومات
نستطيع تقسيمها
الى ثلاث فئات
وهي :
أ
-
عامة
GENERAL : تحتوي
معلومات إما
عن العميل أو
السيرفر ولاتخصص
إلى فرد أو مجموعة
.
ب
-
شخصية
Entity : تحتوي
على معلومات
عن البيانات
التي أرسلت بين
المتصفح والسيرفر
.
جـ
-
مطلوبة
Request : تحتوي
على بيانات عن
إعدادات العميل
والأنواع المختلفة
المقبولة من
البيانات .
وهذا
مثال :
Accept:
* / *
Accept
language: Arabic-KSA.
Connection:
Keep –Alive.
Host
: http://www.arabbuielder.com
Referer:
http://www.arabbuielder.com/index.php?something=132
User
–Agent :Iexploer (win98;.........)
مثلما
ترى الـ HTTP
Header عبارة
عن إعداد يتكون
من عدة سطور كل
سطر يحتوي على
قيم معينة .
هناك
عدة سطور تشكل
الـ HTTP
header وأكثرها
إختياري ,
يقوم
الـHTTP
بالإخبار
عن إنتهاء معلومات
الـ header
بترك
سطر فارغ (وهذا
يكون في الـHTTP1.1
) .
3-
The HTTP Body :
إذا
تم استخدام
الأمر POST
في
الـHTTP
Request Line عندها
يقوم الـ HTTP
بطلب
المعلومات التي
ارسلت في الـbody
الى
السيرفر .
Http
Response
يرسل
من السيرفر إلى
المستعرض ويحتوي
على ثلاثة أشياء
:
1-
the Response Line
2
- http header
3
- 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 عندما
تقوم بطلب صفحة
ويفشل السيرفر
في الحصول عليها
.
2
- HTTP Header
الـ
response header يعتبر
مشابه request
hader الذي
ناقشناه في
الأعلى .وتنقسم
المعلومات التي
فيه أيضا إلى
ثلاثة أنواع
:
أ
- عامة
GENERAL : معلومات
عن الـ client
أو
السيرفر ولاتخصص
إلى واحد منهما
.
ب
- شخصية
Entity : يحتوي
على معلومات
عن البيانات
التي يتم ارسالها
بين السيرفر
والعميل .
جـ
- الإجابة
Response : يحتوي
معلومات عن
السيرفر الذي
قام بإرسال الرد
وكيفية تعامله
ومعاجلته للرد
(Response ) .
كما
قلنا سابقاً
، يتكون من عده
سطور ويتم وضع
سطر فارغ للإعلام
عن إنتهاء الهيدر
.
مثال
:
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
السطر
الأول ناقشناه
والسطر الثاني
مفهوم من غير
شرح ، السطر
الثالث يقوم
بتحديد البرنامج
تبع السيرفر
ونوعه ونظام
التشغيل القائم
عليه والسطر
الأخير يقوم
بتعريف آخر وقت
تم فيه تعديل
أو تجديد الصفحة
.
ملاحظة
: قد
يحتوي الهيدر
على أكثر من هذه
المعلومات أو
معلومات مختلفة
وهذا يعتمد على
نوع الشي المطلوب
من السيرفر .
3
- 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 .
بقي
أن نقول أمراً
معروفاً وهو
أن السكربتات
نوعين :
1
- وهو
ماينفذ من جهة
المزود
Server
–Side scripting
2
- ماينفذ
من جهة المستعرض
(صفحة
انترنت)
.