هذا الدرس معد للمبتدئين تماماً، وهو عبارة عن بعض المفاهيم التي يجب أن يفهمها مبرمج الPHP قبل أن يبدأ استخدامها.
أولاً: تعلم لغة HTML
لا يخفى على الجميع أن لغة الPHP تعتمد أساساً على لغة HTML وإن كانت قد لا تحتاجها كثيراً، ولكنني سأفترض أن متابعي هذه الدروس لديهم خبرة كافية بتعليمات HTML، ولمن يرغب في تعلمها فأعتقد أن هناك العديد من المواقع العربية في هذا المجال.
ثانياً: مفهوم الCGI
يختلط عند البعض معنى كلمة CGI ولغة البيرل، وهذا خطأ شائع سببه ارتباط اللغة بهذه الكلمة، والأصح أن كلمة CGI يعني Common Gateway Interface أو ما يعني واجهة المدخل العامة أو المشتركة وهي بذلك تصف الطريقة التي تتبعها كل من Perl و PHP في بعض الحالات، أي أنه لا توجد لغة اسمها CGI.
نعرف أن صفحات الويب حين بدأت كانت تعتمد أساساً على العرض وليست لها القدرة على أخذ بيانات من الزائر، لذلك نشأت طريقة الCGI وهي تعتمد على تمرير بيانات من الزائر عن طريق بروتوكول http بأحد الاسلوبين: الأخذ GET أو الإرسال POST ، يستقبلها السيرفر ويوجهها إلى برنامج الCGI الذي يمكن أن تتم برمجته بلغة السي أو بيرل، أو حتى PHP، ويقوم بمعالجتها في السيرفر وإعادة النتائج إلى الزائر عبر نفس البروتوكول.
طريقة الأخذ GET :
يعتمد هذا الاسلوب على تمرير بيانات إلى السيرفر عن طريق واصف العنوان نفسه URL، ولتوضيح ذلك سأقوم بشرح محتويات واصف العنوان بشكل كامل..
معلومات عامة:
الصيغة الكاملة لواصف صفحات الويب:
protocol://user:pass@chan.domain.typ.co/path/file.ext?search#hash
للوهلة الأولى يبدو للجميع وكأن العنوان يبدو غريباً، وفي الواقع هذا صحيح لأننا تعودنا على الاسلوب المختصر في استخدام العناوين www.domain.com مثلاً، وذلك لأن بعض أقسام صيغة الواصف غير أساسية، وسوف أشرح كل قسم بالتفصيل لزيادة المعرفة والتوضيح أكثر، وحتى لا يتهمني البعض بالتأليف!
protocol وهذا الجزء الذي يحدد البروتوكول الذي سيستخدمه المستعرض أثناء طلب الصفحة، في العادة يتم استعمال البروتوكول الافتراضي http، في حين يمكن استخدام بروتوكولات اخرى مثل https وغيرها.
user:pass قد يتطلب الوصول إلى هذا القسم من الموقع اسم مستخدم وكلمة مرور خاصة، حسب بروتوكول http 1 وبدلاً من الانتظار حتى تظهر رسالة تطلب اسم دخول وكلمة مرور، يمكن كتابتها قبل اسم الموقع متبوعة بعلامة @ وهي اختيارية حسب طلب السيرفر، هل تفاجأتم بهذه المعلومة؟
chan اسم القناة، أو ما يطلق عليه البعض اسم فرعي، وهو عبارة عن معرف يقوم بتوجيه السيرفر إلى قسم خاص يتم إعداده مسبقاً، في العادة يتم استخدام www بشكل افتراضي.
domain.typ.co اسم النطاق، وهو منقسم إلى ثلاثة أقسام، أو قسمين، الأول يحدد الاسم الرئيسي، الثاني هو النوع مثلاً com ، net ، org ، edu ، info أو gov .. الخ، والقسم الثالث يحدد الدولة مثلاً: .sa أو .eg الخ
path وهو محدد المسار الذي سيقوم السيرفر باتباعه للوصول إلى الملف المطلوب، وقد يكون مساراً حقيقياً مثلما هو الحال في المجلدات أو قد يكون مساراً افتراضياً تم الإعداد له في السيرفر.
file.ext اسم الملف المطلوب وفي العادة فإن .ext يحدد نوع الملف، وإذا لم يتم تحديد الملف فسيقوم السيرفر بالبحث عن الملفات الافتراضية للبداية وهي index.htm أو index.html وربما default.htm حسب إعدادات السيرفر.
مهم جداً!:
?search وهي مجموعة من المؤشرات يتم تمريرها إلى السيرفر في حالة نقل البيانات باسلوب الأخذ GET الذي نتحدث عنه الآن، وتم الاصطلاح على تمرير قيم المؤشرات باسلوب متتابع، حيث يتم ذكر اسم المؤشر وقيمته مثل: data=2 ، وفصل كل مؤشر عن الآخر باستخدام علامة & ، كما يتم استبدال العلامات التي لا يمكن تمريرها عبر العنوان إلى إشارات خاصة، مثلاً المسافة يتم تحويلها إلى + ، أو عبر التشفير الستعشري، مثلاً: %20 (لا بد وأنكم لاحظتم بعض العناوين التي تبدو مليئة بعلامات غريبة مثل %20%2D%4E وهي ناتجة عن تشفير الرموز التي ليست بحروف أبجدية أو أرقام.
#hash وهذا المؤشر يحدد العلامة المرجعية التي يتم إدراجها ضمن ملف الHTML وهي تجبر المتصفح على عرض النقطة التي تم تحديدها، ويصطلح عليها اسم Bookmark أو علامة المرساة Anchor.
وبالتالي فإن تمرير البيانات إلى السيرفر باستخدام اسلوب GET يبدو في المثال التالي:
http://www.visualmind.net/page.cgi?a=10&b=2&c=welcome
أي أن البرنامج page.cgi سيحصل على البيانات التالي:
a=10
b=2
c=welcome
وبالتالي استخدام هذه البيانات ومعالجتها وإعادة النتائج حسب غرض السكربت كصفحة ويب.
يمكن بسهولة تمرير البيانات بهذا الاسلوب عن طريق طلب عنوان، أو عن طريق استخدام نموذج إرسال FORM وتعيين طريقة التمرير إلى GET ، كما هو في المثال التالي:
عند الضغط على زر الإرسال في هذا النموذج سيتم طلب الصفحة التالية: somescript.php?test=120
غداً إن شاء الله سأكمل الدرس بشرح طريقة الإرسال POST والبدء في التركيز على شرح PHP وربط الدرس مع الدرس الأول والثاني الذان قام بإعدادهما إبراهيم سابقاً.
________________
الدروس المكتوبة في قسم الPHP مجانية لكن حق النشر والاقتباس محفوظة لمنتديات الفريق العربي وكاتب الموضوع، يرجى نقل المصدر واسم الكاتب عند الاقتباس.