Archive for سبتمبر, 2010
الاتصال بقاعدة البيانات
عندما نود الاتصال في قاعدة بيانات انشأناها فنستخدم الدالة التالية وهي :mysql_connectتعالوا نجرب نعمل ملف اتصال بسيط ونسميه بــ config.php بسم الله نبدء رمز PHP:

فكلما نود الأتصال بقاعدة البيانات لأي عملية ما , سوف نستخدم دالة انكلود include وهنا مثال لأدراج ملف الاتصال config.php بأستخدام انكلود مثال رمز PHP:

تركيب ملف Php
بسم الله نبدأ ::تركيب ملف PHP ::::الملف الذي يحتوي على كود بلغة PHP هو مجرد ملف نصي عادي جداً يمكن إنشاؤه عن طريق برنامج NotPad البسيط أو البرامج المختلفة الأخرى مثل Dreamweaver هذا بجانب العديد من برامج تحرير لغة PHP المجانية التي يمكن الوصول أليها عن طريق الموقع www.download.comإذا قمت بفتح صفحة مكتوبة بلغة PHP ستجد أنها تتكون من جزئين ، جزء به لغة HTML القياسية والآخر بلغة PHP ، وحتى يمكن كتابة كود بهذه اللغة يجب إخبار المترجم أولاً ، ويتم ذلك بحصر كود PHP بين علامتين خاصتين ، وفيما يلي أهم هذه العلامات ::::كما نرى في المثال التالي أنه يمكن وضع الكود بين العلامتين ?> و كما يلي ::رمز Code:

إذا قمت بتنفيذ هذه الصفحة ستجد عبارة “Traidnt” تم طبعها في الصفحة الرئيسية للمستعرضيمكن أيضاً إستخدام عبارة التعريف القياسية php كما في المثال التالي ::رمز Code:

يمكنك أيضاً إستخدام عبارة تحديد اللغة Script language كما في المثال التالي ::رمز Code:

كما يمكن أيضاً إستخدام علامة السكربت القياسية %> وهي تستخدم أيضاً مع كل من لغة VBScript ولغة JavaScript لصفحات ASP كما في المثال التالي :: رمز Code:

كيف يتم تنفيذ صفحات PHP ؟هناك طريقتين لتنفيذ هذه الصفحات:الطريقة الأولى : هي نسخ الصفحات المراد إستعراضها تحت الدليل c:inetpubwwwroot وفي هذه الحالة يتم الوصول إلى الصفحات المراد إستعراضها عن طريق الوصلة التالية ::http://localhost/page1.phpحيث page1.php هي الصفحة المراد تنفيذهاالطريقة الثانية : هي إنشاء دليل تخيلي للدليل الذ يوجد به صفحات PHP المراد إستعراضها ، ويتم ذلك عن طريق الخطوات التالية ::قم بفتح برنامج IIS وأضغط RClik على Default Web Site وإختار NEW I Virtual Directory سيظهر المرشد الخاص بإنشاء الدليل .إضغط Next حتى تنتقل إلى الصفحة التالية وقم بكتابة Alias وهو الإسم التخيلي للدليل وليكن “myphp” .إضغط Next حتى تنتقل إلى الصفحة التالية وأختار الدليل الفعلي الذي توجد به صفحات PHP ، وليكن “e:phppage1″ ثم أضغط Next .ستظهر صفحة بها الصلاحيات التي تريد منحها للموقع مثل القراءة فقط أو تنفيذ برامج CGI ، قم بقبول الإختيارات الإفتراضية وأضغط Next ثم Finish .لكي تقوم بإستعراض الصفحة يجب كتابة العنوان التالي :: http://localhost/myphp/page1.phpمثال ::يمكنك التفريق بين مخرجات لغة HTML ولغة PHP من الكود التالي ::رمز Code:

سيتم عرض الصفحة كما بالشكل التالي ::

ولرؤية مثال حي على الموقع وليس على السيرفر المحلي ، أضغط عل الرابط التالي ::http://www.eltayer.net/lesson/page1.phpوسأقوم فيما بعد بشرح قواعد لغة PHPملحوظة :: إذا أردت إظهار نص باللغة العربية يجب إستخدام العروة dir الخاصة بلغة HTML لإظهار اللغة من اليمين إلى اليسار ، وفيما يلي كود يؤدي ذلك ::رمز Code:

فتكون النتيجة كما بالشكل التالي ::

أو لرؤية مثال حي قم بزيارة الرابط التالي ::http://www.eltayer.net/lesson/page2.phpلاحظ1 : تحرك شريط التمرير الأيمن إلى اليسار ليناسب الإعداد الجديد .لاحظ2 : عند كتابة العنوان في سطر العنوان الخاص ببرنامج IE يتم تنفيذ عملية تسمى Request أو طلب من السيرفر ويقوم IIS بتنظيم ذلك والإستجابة للطلب حتى يتم عرض الصفحة للمستخدم بعملية تسمى Response والفرق بين الوقتين هو وقت الإستجابة ويتوقف عليه عوامل كثيرة جداً مثل سرعة السيرفر وعدد المواقع به ولكن العامل الوحيد الذي نستطيع التحكم به لتقليل هذا الوقت هو حجم الصفحة من رسومات أو أفلام متحركة ، فيجب مراعاة عامل سرعة عرض الصفحة بحيث لا تأخذ عملية تحميل الصفحة لمستخدم النت عن طريق Dial-up إلى أكثر من 30 ثانية وإلا سيمل الزائر ويتجه إلى موقع آخر ، وفي هذه العملية يتم ترجمة أي سكربت قمت بكتابته إلى صفحة صالحة للعرض ، فإذا حاولت أن تشاهد مثلاً الكود الخاص بك من صفحة موجودة على النت لن تشاهد إلا نتيجة هذه المعالجة وكود HTML فقط .يتم أثناء هذه العملية إستخدام بروتوكولات خاصة حتى يتم تبادل المعلومات بين السيرفر والمتصفح
بداية فى الـsession
بداية فى الـsessionيعتمد فهمنا للـsession على فهمنا للكوكيز وكيفية استعمالها ولقد تكلمنا عن الكوكيز بشكل جيد في الدرس السابق ، يستخدم الـsession لعمل ميكانيكية تواصل بين المستخدم والسيرفر ، فلقد قلنا أن الـhttp لا يوفر لنا ميكانيكية لعمل تواصل ، فإذا طلب المستخدم صفحة من السيرفر فإن السيرفر يقوم بإعطائه ما أراد وينتهي عند ذلك فلا يعرف إن كان هو نفس المستخدم أو ليس هو … لأجل ذلك تم انشاء تقنية الـsession لأجل عمل تقنية تواصل بين المستخدم والموقع ، فبإستطاعتك مثلاً أن تقوم بتحديد عدد زيارات مستخدم معين لصفحتك ليوم واحد أو لأسبوع أو لمدة معينة من الوقت …. أو يمكنك عمل متجر إلكتروني بسيط يستطيع المستخدم شراء عدة أشياء دفعة واحدة من الموقع ويكون على تواصل بينه وبين الموقع عندما يقوم بإضافة مشترى إلي سلة التسوق أو حذف مشتريات.قبل أن أتكلم عن كيفية استخدام الـSession وإعطاء بعض الأمثلة البسيطة ، سأقوم بالتكلم عن كيفية إعداد الـsession مع الـPHP . اعدادات الـsession في الـPHP لكي تستطيع التعامل مع الـsession بشكل جيد يجب عليك أن تتعرف على بعض الإعدادات التي في ملف الـphp.ini عندما تفتح الملف ستجد قسماً خاصاً فيه بالـsession هناك حوالى 19 إعداد ولكن لن نتطرق إليها كلها بل سنتكلم عن الأساسية والمهمة منها فقط كبداية لنا للتعرف على الـsession وكيفية عمله . اعداد طريقة التخزين

ستجد هذه العبارة مكتوبة في الملف كالتالى بشكل افتراضي :

وهذا الإعداد يقوم بتحديد طريقة التخزين للـsession وهناك ثلاث حالات للتخزين : 1 – التخزين في ملفات عادية على السيرفر :

2 – التخزين على ذاكرة السيرفر :

3 – التخزين بطريقة أخري معرفة ومعينة من قبل المستخدم مثل التخزين في قواعد البيانات وهذا ما سوف نقوم بالتفصيل عنه بعد الكلام عن قواعد البيانات :

يجب أن تأخذ في اعتبارك عدد الملفات التي سيقوم الـsession بتخزينها عند استخدامك للأعداد الأول والإفتراضي خاصة عندما يكون عدد الزوار بالمئات أو الآلاف . قد يكون استعمال الذاكرة أسرع ولكن المشكلة أنه من السهل مسح البيانات منها ببساطة . الطريقة الثالثة قد تكون أكثر الطرق مرونة ، ولكنها معقدة وصعبة جداً ، وهي تعطيك مرونة لتخزين البيانات في أي وسائط مدعومة من قبل الـPHP مثل قواعد بيانات mysql و oracle . الذي افترضه الآن أنك قمت بوضع قيمة هذه الخاصية إلى files إعداد مكان التخزين

هذه الخاصية مفيدة إذا كنت قد ضبط الإعداد السابق إلى files تقوم هذه الخاصية بتحديد مكان التخزين على السيرفر ومن الأفضل أن تقوم بتحديد مكان التخزين بعيداً عن مجلد السيرفر لكي تمنع تصفح هذه الملفات . الإنشاء التلقائي للـsession

هذا الإعداد يقوم بتحديد إذا ما كان الـsession سيتم إنشاؤه تلقائياً عند كل زيارة للموقع أو لأي صفحة من صفحاته بدون إدراج كود الـsession في كل صفحة … وعلى ذلك فإنك تقوم بوضع القيمة إلى (1) إذا أردت ذلك .وعلى إفتراض أنك لا تحتاج إلى أن تجعل الـPHP يقوم بعمل session لكل صفحة تلقائياً ومن غير طلب فستقوم بوضع قيمة هذا الإعداد الى (0) الـSID عندما يقوم الزائر بزيارة صفحتك فإن الـsession يستطيع تتبع هذا الزائر وعدد المرات التي قام فيه الزائر بالدخول لليوم الواحد ، يقوم الـPHP بعمل SID (session identefier) أو رقم معرف تلقائي بشكل افتراضي عندما تقوم بطلب إنشاء session بالزائر ، وكل رقم معرف يختلف عن الآخر تماماً ، إن رقم المعرف الذي ينشئه الـPHP شبيه للشكل التالى :

هناك طريقتين يستطيع بها الـPHP متابعة الـSID للمستخدم :1 – عن طريق المتابعة والتخزين بتسلسل في الكوكيز .2 – عن طريق اتباع رقم المعرف بعنوان الصفحة في الانترنت . سنأخذ أمثلة عن كلا الطريقتين : 1 – استخدام الكوكيز بالطبع هذه هي أكثر الطرق شيوعاً للحصول على ترابط بين المستخدم والموقع وهي الأسهل ، ولكن يجب أن تضع في اعتبارك أن المستخدم قد يكون قد ألغي أو منع ميزة الكوكيز في المتصفح أو قد يكون متصفحه لا يدعم الكوكيز . خذ في اعتبارك أن بعض المتصفحات لا تسمح بأن يزيد حجم الكوكيز عن 5 كيلوبايت . هناك بعض الإعدادات البسيطة في ملف php.ini التي يجب معرفة معلومات عنها قبل البدء باستخدام الـsession مع الكوكيز :

هذه الخاصية تحدد ماذا كان يمكنك استخدام الكوكيز مع الـsession أو لا وعند وضع القيمة (0) فهذا يمنعك من استخدام الكوكيز مع الـ(session) وأما اذا كانت قيمته (1) فهذا يسمح باستخدام الكوكيز مع الـsession

هذا الإعداد يقوم بتحديد اسم الكوكيز الذي سيحتفظ برقم المعرف (SID) والإعداد الافتراضي هو PHPSESSID ولن اقوم بتغيير هذا الإعداد لكي تستطيع فهم المثال الذي سأطرحه بعد قليل

يقوم هذا الإعداد بتحديد المدة التي سيبقي فيها الكوكيز الذي يحتفظ بقيمة الـ(SID) والإعداد الافتراضي هو صفر ، أي أنه سيتم مسح الكوكيز تلقائياً بعد اغلاق المستخدم لنافذة المتصفح مباشرة

يقوم هذا الإعداد بتحديد مسار دومين يتم تخزين الكوكيز له .. لا تقم بتغيير قيمته ودعه كما هو

يقوم هذا الإعداد بتعريف اسم دومين يتم تخزين الكوكيز لصالحه .. والقيمة الافتراضية هي null ، لا تقم بتغييرها ضع في اعتبارك انه اذا كانت قيمه الاعداد (session.use_cookies) تساوي واحد فان لا داعي لاستدعاء الدالة set_cookie() لإعداد الكوكيز بل سيتم اعدادها تلقائياً بواسطة الـPHP 2 – الإضافة أوالكتابة إلى عنوان الصفحة إن إضافة عنوان الـSID إلى عنوان الصفحة يعتبر من الأشياء البشعة جداً رغم أن طريقته سهلة ومفيدة في حالة ما إذا كان الكوكيز غير مدعوم في المتصفح بشكل جيد مثال :

بهذه الطريقة نقوم بإضافة المتغير المرجعي SID الذي سيقوم بإعطاء رقم معرف للمستخدم . متابعة الـsessionلقد أخذنا حتي الآن معلومات تجعلنا ندخل عالم البرامج المسيره بالـsession بدون خوف ، سأبدأ الآن في طرح بعض الأمثلة البسيطة التي تثبت لديك بعض المفاهيم الأساسيه في الـsession … سأشرح في هذا المثال كيفية إنشاء الـSID وتخزينه لاستعماله لاحقاً ، وخلاصة السيناريو للصفحة أننا نريد من المستخدم أن يفهم أنه يستطيع نخصيص لون الخلفية الذي يريد أن يشاهد به صفحات موقعنا … سأقوم بتخزين قيمة مبدئية في المتغير الذي يقوم بتحديد لون الصفحة ، أنا افترض طبعاً أن المتصفح يدعم الكوكيز :سكربت يقوم بانشاء وتسجيل متغير session

اقصد بالجلسة هي الـ(session) وإن كانت الترجمة غير صحيحة ولكن فقط نأخذه كمصطلح .متغير الجلسة هو الـ(session-variable) أو متغير الـsession أو سمه ما شئت . الشرح يقوم هذا السكربت في البداية بإنشاء متغير اسمه (zx) ومتغير اسمه (co) وقمنا بإعطاء القيمة (10) للمتغير (zx) وقمنا بزيادة القيمة الموجودة (وهي الصفر) في (co) بواحد وكتبنا مرحبا بك ايها الزائر الكريم في موقعنا ، ثم قلنا له إن عدد زياراتك لهذه الصفحة هي قيمة المتغير( co ) ثم اعطيناه رابط للصفحة الثانية .في الواقع إن هذه المتغيرات وقيمها يتم الاحتفاظ بها في كوكيز له اسم خاص قمنا بتحديده سابقاً من ملف PHP.ini ، وهذا الكوكيز يحتفظ بقيمة الـSID للـsession . نحن لا نقوم بإخبار الـPHP أين سيحتفظ بقيمة المتغيرات لأننا بدأنا بكلمة الـ:

وعلى هذا فإن الـPHP سيفهم أنه سيقوم بتخزين القيمة في الكوكيز الخاص بالـsession .قمنا بجعل المتغير co كعداد بسيط لعدد المرات التي سوف نقوم بها يزيارة الصفحة فعند عمل تحديث للصفحة سيتم زيادة العداد بمقدار واحد

وطبعاً قبل زيادة العداد بقيمة واحد فإنه يتم حساب القيمة السابقة للمتغير عند إنشاءه تلقائياً … ومن ثم يتم الزيادة وبعد ذلك طباعة القيمة .كتابة رقم الـSIDاكتب الآن الكود التالي واحفظه باسم php2.php

في هذه الصفحة نقوم بطباعة قيمة الـSID وذلك بطباعة قيمه المتغير $PHPSESSID (الذي هو اسم الكوكيز الخاصة بالـsession ) .بعد ذلك قمنا في النهاية بطباعة قيمة المتغير $zx لكي ألفت نظرك بأن الكوكيز ما زال يحتفظ بها ولم يفقدها لأننا قد حددنا الإعداد في ملف php.ini الخاص بوقت الكوكيز الـ 3600 أي لمده ساعة ثم بعد تلك الساعة سيتم مسح الكوكيز ولن يمكنك استرجاع قيمة أي متغير :

واضف إلى معلوماتك أنه لا يمكنك قراءة القيم للكوكيز الخاصة بالـsession إلا عن طريق إضافه الأمر

يجب أن تبدأ بهذا الأمر دائماً إذا أردت قراءة قيم المتغيرات التي يحتفظ بها الكوكيز الخاص بالـsession . مسح متغير من الـsession كل ما عليك فعله هو استخدام هذه الدالة :

تقوم بوضع اسم المتغير في مكان الـ(variable name) مثال :

سيقوم هذا الأمر بمسح المتغير (brn) من الـكوكيز الخاصة بالـ(session) قراءة قيم المتغيرات في الـكوكيز الخاصة بالـsession كل ما عليك فعله هو استخدام الدالة :

مثال :

بهذا السكربت نكون قد أنهينا درسنا عن مقدمة بسيطة للـsession . هذه مجرد مقدمة ولكي نستطيع أن نتعمق بالـsession فيجب علينا أن نتعلم شيئاً عن قواعد البيانات .
الشيفرات و الدوال في Php
هذه مجموعة من الشيفرات والدوال الاساسية في لغة PHP .. اسم الدالة : انتقال تلقائي عمل الدالة : دالة تقوم بالإنتقال التلقائي لأي صفحة تقوم بوضع اسمها.. الشيفرة : رمز PHP:

اسم الدالة : دالة التاريخ الهجري عمل الدالة : تقوم هذه الدالة بتحويل التاريخ الميلادي إلى هجري من برمجة الأستاذ خالد ممدوح جزاه الله كل خير. الشيفرة : رمز PHP:


اسم الدالة : اختصار النصوص الطويلة عمل الدالة : تقوم هذه الدالة باختصار نص معين حيث تظهر عدد معين من الحروف ومن ثم تقوم بوضع (( … )) الشيفرة : رمز PHP:

اسم الدالة : لعرض الصور من نوع جيف عمل الدالة : لعرض الصور من نوع gif في صفحة منقول من بنك المبرمجين العرب الشيفرة : رمز PHP:

اسم الدالة : كود لإختيار صف عشوائي من قاعدة البيانات عمل الدالة : كود لإختيار صف عشوائي من قاعدة البيانات الشيفرة : رمز PHP:

اسم الدالة : طباعة بيانات ملف عمل الدالة : تفيد هذه الدالة في طباعة مسار الملف و اسم الملف و إمتداد الملف. الشيفرة : رمز PHP:

اسم الدالة : لإظهار رقم الأيبي عمل الدالة : كود لإظهار رقم الأيبي الشيفرة : رمز PHP:

اسم الدالة : لفتح ملف نصي وطباعة ما بداخله في الصفحة عمل الدالة : لفتح ملف نصي وطباعة ما بداخله في الصفحة ويمكن استخدامه لقراءة مثلاً عدد الزوار اذا كان موجود في ملف نصي الشيفرة : رمز PHP:

اسم الدالة : لإظهار رابط الصفحة عمل الدالة : لإظهار رابط الصفحة التي تقوم بتشغيلها الشيفرة : رمز PHP:

اسم الدالة : كود يعمل نفس عمل حفظ الهدف باسم عمل الدالة : هذ الكود يعمل نفس عمل حفظ الهدف باسم فمثلاً عند الضغط لعلى رابط لملف نصي لايقوم بفتحه بالمتصفح بل يتم تحميله الشيفرة : رمز PHP:

اسم الدالة : كود عرض رقم عشوائي في الرابط عمل الدالة : هذا الكود لعرض رقم عشوائي في الرابط ليساعد في ان تكون الصفحة محدثة بإستمرار الشيفرة : رمز PHP:

أهم قواعد الPHP
بسم الله نبدأ ::..:: التعليقات ::..هي مجرد سطور تشرح المغزى من جزء معين من الكود ، وتظهر ائدتها عند كتابة برنامج كبير وتعديله بعد فترة طويلة مثل برنامج vBulletin الخاص بالمنتديات ، فنجد أنه من العسير جداً على المطور تذكر فائدة السطور التي كتبها أو المخرجات التي ستنتج منها ، لذلك تظهر هنا فائدة التعليقات حيث تعتبر شرح للمطور ليس أكثر ولا يقوم المعالج الخاص باللغة بترجمة هذه التعليقات أو الإلتفات أليها والبعض يستخدمها لحفظ حقوقه على سكربت مثلاً أو أي شئ من هذا القبيل .والسؤال هنا :: كيف يعرف المترجم سطور التعليقات من سطور الأكواد ؟يتم ذلك عن طريق علامات خاصة ، وتوجد طريقتين ::الطريقة الأولى :: يمكن إدراج تعليق بعد العلامة // حتى وإن كان يسبقها سطر كود عاديمثال ::رمز Code:

الطريقة الثانية :: تستخدم لإدراج التعليق على أكثر من سطر عن طريق علامة */ مثال :: رمز Code:

..:: المتغيرات ::..هي من أساسيات أي لغة وتستخدم لتخزين قيمة معينة في ذاكرة الكمبيوتر ، ويتم تعريف المتغير عن طريق علامة الدولار “$” بالصيغة التالية ::رمز Code:

نلاحظ من الصيغة السابقة أنه يتم إختيار الإسم الذي نريده للمتغير ( يجب أن يكون الإسم بالإنجليزية ) ووضع العلامة $ قبله ثم نكتب علامة التساوي التي تقوم بتخزين القيمة في المتغير وأخيراً الفاصلة المنقوطة آخر أي سطر من سطور لغة PHP .قيمة المتغير قد تكون نصية أو عددية ، في المثال التالي سنقوم بتخزين قيمة نصية في متغير إسمه name ::

لغة PHP حساسة لحالة الأحرف ، فمثلاً لا يمكن تخصيص قيمة للمتغير name ، ثم فحص قيمتها بالنداء على المتغير Name ، في هذه الحالة يكون الإسمين متغيرين منفصلين تماماً .مثال ::

هل تستطيع توقع أي الإسمين سيتم طباعته ؟كقاعدة عامة:: لتسهيل عملية تطوير البرنامج ولكي تستطيع تذكر الهدف من المتغير بسهولة يجب ان يعبر إسم المتغير عن وظيفته ولا يسمح بمسافات خالية في إسم المتغير بل يجب أن يكون متصل ، لذلك تستطيع إستخدام علامة “_” بين الكلمات ، فمثلاً إسم متغير لتخزين درجة الحرارة يكون نموذجياً بالإسم ::$heat_degree وهكذا …لاحظ من الأمثلة السابقة أننا قمنا بتخزين قيم نصية أو حرفية ، ويتم التعبير عنها بين علامتي التنصيص “” وهي قيم لا يمكن إجراء عمليات حسابية عليها ، أما إذا أردنا تخزين قيم عددية يمكن إجراء عمليات حسابية لها ، وجيب أن نتعرف أولاً على أنواع البيانات الممكن إستخدامها في لغة PHP .