![]() |
أهداف الدرس :
لماذا التاريخ والوقت ؟ : الوقت والتاريخ من الاشياء المهمه جدا لبناء ويب متكامل , فالمستخدم يريد معرفة تاريخ اليوم , تاريخ نشر المقال , او الخبر وغيرها ,, ويمكن انه يريد ان يعرف وقت كتابة المقال , ليس هذا فقط , فصاحب الويب يريد معرفة تاريخ تسجيل مستخدم معين او تاريخ دخوله وتاريخ ارساله رساله الى الموقع, كل هذه الاشياء تجعل التاريخ مهم جدا لنا في بناء الويب. والتاريخ والوقت في لغة PHP سهل جدا , مجرد دوال نقوم بإستخدامها بطريقه صحيحه ونحصل على الناتج المراد. لنتابع الطريقه معا http://arccn.net/wp-includes/images/...icon_smile.gif ايجاد وطباعة التاريخ والوقت : لكي نقوم بطباعة التاريخ والوقت وايجاده وتنسيقه نستخدم الداله date() وهذه الداله عملها سهل جدا , تأخذ قيمتين واحد اساسي وواحد افتراضي ,, لاحظ التالي: http://arccn.net/images/php/l21e1.gif فلو اردنا طباعة تاريخ اليوم , سوف نقوم بالتالي: http://arccn.net/images/php/l21e2.gif وسوف يكون الناتج هو التالي: http://arccn.net/images/php/l21e3.gif الان تابع مع الجدول التالي لنرى ماهي الرموز المستخدمه لانشاء التاريخ والوقت بأشياء مختلفه: الرمز المعنى مثالaالوقت صباحا او مسائاam , pmAالوقت صباحا او مسائاAM , PMdاليوم في الشهر على شكل ارقام من خانتين , الخانه الاولى صفرمن 01 الى 31Dاليوم في الشهر , ثلاث خانات مختصر , على شكل حروفمن mon الى sunFالشهر في السنه , مكتوب كاملاSeptembergالساعه في اليوم على مدى 12 ساعهمن 1 الى 12Gالساعه في اليوم على مدي 24 ساعهمن 0 الى 23hالساعه في اليوم على مدى 12 ساعهمن 01 الى 12Hالساعه في اليوم على مدى 24 ساعهمن 00 الى 23iالدقائق في الساعهمن 00 الى 59Iنهار او مساءنهار 1 , مساء 0jاليوم في الشهر على شكل ارقام من غير صفرمن 1 الى 31lاليوم في الشهر , مكتوب كاملا على شكل حروفMondayLالسنه الكبيسهكبيسه 1 , غير كبيسه 0mالشهر في السنه , على شكل خانتان بدأ من الصفرمن 01 الى 12Mالشهر في السنه على شكل ثلاث خانات , حروفJannالشهر في السنه , على شكل خانتان , لا يبدأ بالصفرمن 1 الى 12sالثواني في الدقيقه على شكل خانتان بدأ من الصفرمن 00 الى 59Sالاختصارات للاحرفTH , ST , NDtمجموع الايام في الشهرمن 28 الى 31Uمجموع عدد الثواني من تاريخ 1970 المسمى بي UNIX TIME STAMPwاليوم في الاسبوع على شكل ارقامSunday => 0 , Saturday => 6yالسنه على شكل رقم من خانتان99 , 98 , 05Yالسنه على شكل رقم من اربع خانات2000 , 2005zاليوم في السنه على شكل ارقاممن 0 الى 365 التعامل مع Unix time stamp : المدخل الثاني للداله date() هو ثواني UNIX TIME STAMP ومعنى هذا : عدد الثواني من تاريخ اول يوم في سنة 1970 وتعتبر هذه الطريقه القياسيه للتاريخ والوقت في لغات البرمجه وغيرها. اذا اردت تحويل التاريخ من الوضع العادي الى وضع UNIX TIME STAMP سوف تقوم بإستخدام الداله mktime() وطريقتها كالتالي: http://arccn.net/images/php/l21e4.gif ويجب عليك ملاحظة الترتيب هنا , لان اي غلط في الترتيب سوف يؤدي الى تاريخ و وقت خاطئ , لو تركت الداله من غير اي مدخل فسوف يرجع لك الوقت الحالي على شكل UNIX TIME STAMP. لاحظ التالي : http://arccn.net/images/php/l21e5.gif الدالة getdate() و كيفية استخدامها : تستخدم هذه الداله على عكس سابقتها , فتقوم بإعطائها التاريخ على شكل UNIX TIME STAMP وتقوم بإرجاعه على شكل عادي , هذه الداله تقوم بإرجاع التاريخ على شكل مصفوفه حرفيه, لاحظ التالي: http://arccn.net/images/php/l21e6.gif المفتاح ( key ) لهذه المصفوفه في الجدول التالي: key valuesecondsالثواني , ارقامminutesالدقائق , ارقامhoursالساعات , ارقامmdayاليوم في الشهر , ارقامwdayاليوم في الاسبوع , ارقامmonالشهر, ارقامyearالسنه , ارقامydayاليوم في السنه , ارقامweekdayاليوم في الاسبوع , على شكل نص كاملmonthالشهر, على شكل نص كامل سؤال على الدرس : 1 – قم بإنشاء برنامج مصغر يقوم بحساب التاريخ , ويظهر الايام باللغه العربية , مثل ( سبت , احد , اثنين ) وغيرها .. مساعده : ( استخدم العباره الشرطيه IF ) |
اهداف الدرس :
ملاحظه عن درس اليوم: هذه مقدمه عن قواعد البيانات ومختصره , وسوف يتم الشرح بالكامل في قسم خاص عن قواعد البيانات مستقبلا مقدمه عن قواعد البيانات : قواعد البيانات بحر كبير , كل ما تراه من الانظمه الحاليه والمتطوره, اساس نجاحها قواعد البيانات ولكن تتسائل ماهي قواعد البيانات ؟ قواعد البيانات عباره عن قاعدة بها جداول توجد بها المعلومات الي تقوم بتخزينها , غير واضح صحيح ؟ انظر حولك في البيت, هل يوجد لديك مكتب, اعتبره قاعدة البيانات, في هذا المكتب يوجد ادراج تضع بها اورقاك واشياء الشخصيه, درج للاقلام , درج للكتب , و درج للاوراق وهذه هي اماكن التخزين في قاعدة البيانات وماتسمى بي الجداول. قواعد البيانات مقابل نظام الملفات : لو تسآلت لماذا نستخدم قواعد البيانات ؟ لماذا لا نستخدم ملف ونضع فيه معلوماتنا, الاجابه بسيطه. طرق التخزين , المساحه , سهولة الاستعلام طرق التخزين : في الملفات نقوم بالتخزين بطريقه صعبه , فلو قلنا كل سطر يحوي على معلومات مستخدم لدينا بالموقع , وفي هذا السطر فواصل تفصل كل معلومه على حده مثل ( الاسم , العمر , كلمة المرور ) تخيل معي كيف ستقوم بقرائة هذا الملف وماهي الطريقة التي ستستخرج بها المعلومات , طريقه طويله لتقوم بعمل هذا كله ولكن مع قواعد البيانات فهي سهله جدا , فقط تقوم بتعيين نوع الحقل الذي تريده وتضع به القيم وهي تقوم بعمل الباقي من ترتيب ومن استخراج ومن وضع كل قيمه لوحدها وغيرها من الشروط مثل عدم التكرار. المساحه : تخيل موقع الياهو الذي يملك اكثر من مليون مستخدم , كم ملف سوف يقوم بإستيعاب جميع هؤلاء المستخدمين ؟ وكم سوف تكون احجام الملفات ؟ هل هو شي منطقي ؟ غير ان استخراج معلومه ما سوف يكون بطيئ جدا فهو غير منطقي اساسا, لكن مع قواعد البيانات فهو مسهل بطريقه ممتازه, مرتب بطريقه جيده, ولا يأخذ حيزا كبيرا مثل الملفات , وعند القراء يكون اسرع. سهولة الاستعلام : لو نرجع الى مثالنا , الملف الذي يحوي على اسماء المسجلين بالموقع , تخيل انهم 1000 مستخدم , كل مستخدم في سطر بالملف, لو اردت ان تقارن الاسم في الملف بالاسم الذي ادخله المستخدم فسوف تحتاج الى تقوم بقراء الملف كاملا اي 1000 سطر, لكي تقوم بإيجاد المعلومه المطلوبه , سوف تقول ماذا لو كان المستخدم في اول الملف , اذن ماذا لو كان في اخر الملف وكان رقم 1000 ؟ اعتقد ان الصوره وضحت. لكن مع قواعد البيانات فالاستعلام سهل جدا عن طريق اللغه المسماه SQL , فهي لغة منطقيه جدا وطريقتها سهله جدا فمجرد ان تقول اختر من الجدول ( مستخدمين ) القيمه التي تساوي ( اسم المستخدم المدخل ) فقط , وسوف يقوم الاستعلام بأخبارك هل يوجد اسم المستخدم ام لا . لماذا قواعد البيانات : اعتقد ان الكلام الذي قرأته بالاعلى اقنعك ان نظام قواعد البيانات افضل بكثير واخبرك لماذا نحتاج الى قواعد البيانات, ولكن ذلك لا يعني اننا لو اردنا عمل شي بسيط جدا ان نستعمل نظام قواعد البيانات, بل سيكون كافيا نظام الملفات ولكن في حالات نادره , ولا اظن ان هناك احد يستخدم نظام الملفات الى الان. من خصائص قواعد البيانات التالي:
وغيرها الكثير التي لا حصر لها , ويمكن ان تذهب الى Google وان تكتب في محرك البحث why to use database , وسوف تحصل على المعلومات الكافيه التي تحتاجها. قاعدة البيانات MySQL: هناك كثير من قواعد البيانات موجوده الان , ويمكن انك قرأت عنها في الدرس الاول الذي يتكلم عن لغة PHP . ولكن لو لاحظت ان اغلب مبرمجين PHP يستخدمون هذه القاعده لخصائصها , فهي مجانيه , مفتوحة المصدر , سريعه , سهله. ولكن احد عيوبها انها لا تدعم العلاقات الا بطريقه معينه. وسوف نتكلم عن العلاقات في اخر الدرس. معرفات قواعد البيانات: لدينا 3 معرفات في قواعد البيانات وهي : قاعدة البيانات , الجدول , العمود قاعدة البيانات : وهي المحتوى ( الحقيبه ) التي يكون بها جميع معلوماتنا , ويمكنك انشاء اكثر من قاعدة بيانات الجدول : كل حقيبه لديها حافظات ( جيب ) واحد للاقلام , وواحد للاوراق وواحد للكتب ,, وهذه ما اعنيه بالجداول العمود : العمود هنا تخيله كأنه التفرعات لحافظات , فحافظات الاقلام ( جيب الاقلام ) يحتوي على اربع خانات لحفظ الاقلام واكثر , قلم احمر وقلم اخضر وقلم ازرق وقلم اسود انواع الاعمده في قواعد البيانات : الانواع الرقميه :
الانواع العشريه :
الوقت والتاريخ :
النصوص العاديه :
الكتابات و ( BLOB ) :
الخيارات والتعدديه:
امثله على قواعد البيانات: جدول يقوم بتخزين معلومات المستخدمين: http://arccn.net/images/php/l22e1.gif جدول يقوم بتخزين معلومات الكتب الي تباع: http://arccn.net/images/php/l22e2.gif العلاقات في قواعد البيانات : من اهم الاشياء التي يجب ان نراعيها في قواعد البيانات هي عدم التكرار , اي نجعل كل شي فريد من نوعه, لن استطيع شرح هذا كله الان , ولكن سوف اتكلم عن العلاقات في قواعد البيانات بشكل مختصر , لدينا ثلاث انواع من العلاقات : العلاقه المسماه بي 1:1 او واحد لواحد ( One : One ) لنأخذ مثال على هذه العلاقه , تخيل ان لدينا متجر , وفي هذا المتجر يوجد عامل واحد فقط, فالعلاقه تكون ان الموظف ينتمي الى متجر واحد و المتجر يحوي على موظف واحد فقط لاحظ الصوره التاليه: http://arccn.net/images/php/l22e3.gif العلاقه المسماه بي M:1 او واحد لكثير ( Many : One ) تخيل ان لدينا رسام , هذا الرسام يقوم برسم عدة لوحات , ولكن كل لوحة من عمل رسام واحد فقط لاحظ الصوره التاليه : http://arccn.net/images/php/l22e4.gif العلاقه المسماه بي N:M او كثير لكثير ( Many : Many ) لو لدينا طلاب ولدينا مواد , فكل طالب يمكنه ان يأخذ ماده او اكثر , وكل ماده يمكن ان يأخذها اكثر من طالب اليس ذلك صحيحا ؟ ولكن هذه العلاقه ليست جيده لانها لن تحل مشكلة التكرار , ولكن نقوم بحلها عن طريق شي يسمى ( Bridge Entity ) او ( الجسر ) لاحظ الصورتين التاليه: http://arccn.net/images/php/l22e5.gif ولكي نقوم بحل هذه العلاقه او ايجاد طريقه اخرى لها نستخدم الجسر مثل الصوره التاليه: http://arccn.net/images/php/l22e6.gif طرق ربط العلاقات في قواعد البيانات : كل جدول نقوم بإنشاءه يجب ان نجعل له ما يسمى المفاتح الرئيسي ( PRIMARY KEY ) وهذا المفتاح لا يتم تكراره في الجدول , حيث ان كل مستخدم لديه رقم رئيسي نعرفه به , ونحدد به اسمه ومعلوماته الاخرى ولكي نقوم بربطه في علاقة , في الجدول المربوط به نجعل هذه القيمه على شكل مفتاح اجنبي ( FOREIGN KEY ) لاحظ معي الصوره التاليه : http://arccn.net/images/php/l22e7.gif لاحظ ان العمود CustomerID في جدول CUSTOMERS هو مفتاح رئيسي ولا يمكن تكراره , ولكنه في جدول ORDERS على شكل ( FOREIGN KEY ) ويمكن تكراره , لان عدة طلبات يمكن عملها عن طريق مستخدم واحد , ولكن كل طلب مربوط بمستخدم واحد فقط. تصميم قاعدة بيانات: في تصميم قاعدة البيانات يجب علينا ان نقوم بأشياء كثيره , اولها ان نقوم بتحليل ومعرفة ماذا نريد من هذه القاعده , كيفية عملها , كيفية ترتيب المعلومات المفيده لنا بالقاعده , ويجب ان نقوم برسم القاعده على الورق اولا لكي نستنتج هل منطقنا صحيح في تصميم هذه القاعده ام لا. ويجب ان نحل مشكلة التكرار , فتخيل لو لدينا جدول يحتوي على معلومات العميل ومعلومات الموظف الذي قام بخدمته , في كل مره ندرج مستخدم يجب ان ندرج العميل مره اخرى ولو قام العميل بتغيير اسمه او رقمه , فسنحتاج الى تغيير كل الصفوف التي يوجد بها هذا العميل , ولكن لو جعلنا العميل في جدول والموظف في جدول , فسيكون لكل عميل صف واحد في جدول العملاء ولكل موظف صف واحد في جدول الموظفين ثم نربطهما ببعض. فلو غير عميل رقم هاتفه سوف نقوم بالتعديل مره واحده فقط. سؤال على الدرس : 1 – قم قراءة مواضيع عن قواعد البيانات بشكل اكبر تفصيلا , لكي تفهم هذا الدرس جيدا لانه مختصر جدا جدا |
أهداف الدرس:
كيفية التحكم في قاعدة البيانات : لو قمت بدراسه الدرس الاول او الثاني من دروسي, واتعبت طريقة تنصيب لغة PHP الموجوده هنا, فسوف يسهل عليك الدرس, قم بتشغيل السيرفر الشخصي الان واذهب الى المتصفح واكتب التالي: http://arccn.net/images/php/l23e1.gif بعد ان تفتح الصفحه التي تخبرك ان السيرفر الشخصي يعمل بشكل صحيح, قم الان بالضغط على الرابط التالي: http://arccn.net/images/php/l23e2.gif سترى الان صفحه, شبيه بالصوره التاليه, وهي برنامج PHP MY ADMIN وهو برنامج يتحكم في قاعدة البيانات ويسهل لك عملية الانشاء والحذف وغيرها : http://arccn.net/images/php/l23e3.gif لنبدأ الان خطوه بخطوه الى هدف درسنا لهذا اليوم. انشاء قاعدة بيانات : لنقم بإنشاء قاعدة بيانات اسمها info , الان اتبع التالي: http://arccn.net/images/php/l23e4.gif انشاء جداول في قاعدة البيانات : ثم اضغط على الزر create وسوف تنقل الى الصفحه التاليه: http://arccn.net/images/php/l23e5.gif انشاء الاعمده في قواعد البيانات : تحت العباره Create new table on database info تقوم بإنشاء جدول في قاعدة البيانات, لنقم بتسميته users ونحتاج ان يكون به 3 حقول ( رقم المستخدم , اسم المستخدم , البريد الالكتروني للمستخدم ), اضغط الان على الزر Go بعد ان تقوك بتعبئة البيانات كما في الصوره وسوف ترى التالي: اضغط على الصوره لتكبيرها: http://arccn.net/images/php/l23e6.gif لاحظ ان اول حقل نجعل له الخصائص التاليه unsigned اي لا يمكن ان يحتوي على عدد اقل من الصفر او سالب ,, auto increment اي يزيد لكل عضو يضاف جديد تلقائيا ويولد له رقم مستخدم فريد من نوعه , واخيرا الخاصيه Primary اي يكون مفاتح رئيسي PRIMARY KEY الحقلين الاخيرين , نجعل لهما طول الاول 20 , لنقل ان اسم المستخدم لن يزيد عن 20 حرف وبريده الالكتروني عن 50 حرف واخيرا نقوم بعمل التالي والنقر على save لاحظ الصوره: http://arccn.net/images/php/l23e7.gif واذا تم العمل بنجاح , سوف ترى الصفحه التاليه : http://arccn.net/images/php/l23e8.gif لاحظ ان الحقل user_id تحته خط وذلك يعني انه من النوع PRIMARY KEY اوامر الاستعلام في قواعد البيانات : سوف نمر الان على طريقة الاستعلام بلغة SQL وهي بسيطه جدا, وسوف تكون مختصره لنرى مع بعضنا البعض الان : الامر INSERT : ونعني به الاضافه وهو كالتالي: http://arccn.net/images/php/l23e9.gif المربع الاول نعني به اسم الجدول , والمربع الثاني اسماء الاعمده الي نريد الادراج بها , ولو كان العمود حقل يتم ازادته تلقائيا ( auto increment ) فلا نحتاج ان نضع له قميه فقط نقوم بوضع علامة التنصيص ” الامر SELECT : هذا الامر يعني الاختيار ( اي نستعلم عن معلومات معينه في قواعد البيانات ) وهو كالتالي: http://arccn.net/images/php/l23e10.gif نعني بالعباره * اي كل شي , ولو اردنا اختيار صف يحوي قيمه معينه نريد مطابقتها سوف نقوم بالتالي: http://arccn.net/images/php/l23e11.gif الامر DELETE : نعني بهذا الامر المسح , اذا اردنا ان نقوم بمسح صف ( ليس عمود وانما صف ) فسوف نستخدم هذه العباره كالتالي: http://arccn.net/images/php/l23e12.gif يوجد هناك اوامر اخرى كثيره ولمعرفة المزيد عنها الرجاء زيارة العنوان التالي http://www.mysql.com دوال PHP للتحكم في قواعد البيانات : سأقوم الان بعرض اوامر قواعد البيانات في لغة PHP كل على حدة وبالترتيب , بدأ من الاتصال نهاية بعرض المعلومات , لنبدا بالاولى الاتصال بقاعدة البيانات ( الداله mysql_connect و mysql_pconnect ) : تقوم هذه الدوال بالاتصال الى قاعدة البيانات ومدخلاتها ثلاث اشياء , اسم الخادم , اسم المستخدم لقاعدة البيانات , كلمة المرور لقاعدة البيانات بالترتيب , لاحظ التالي: http://arccn.net/images/php/l23e13.gif بالنسبه للداله mysql_pconnect فهي تقوم بنفس العمل ولكن الاتصال بها لا ينقطع بإنتهاء الاستعلام , وانما يبقى السكربت متصلا بقاعدة البيانات اختيار قاعدة البيانات ( الداله mysql_select_db ) : تقوم هذه الداله بإختيار قاعدة البيانات التي تريد العمل عليها, المدخل الاول اسم قاعدة البيانات والمدخل الثاني هو حلقة الاتصال بقاعدة البيانات , وهي تعمل بالشكل التالي: http://arccn.net/images/php/l23e14.gif لاحظ انك لو استخدمت الداله mysql_pconnect فلن تحتاج الى ادخل حلقة الاتصال, لان الداله ستبقى متصله ارسال الاستعلام ( الداله mysql_query ) : هذه الداله الجميله تساعدك على ارسال استعلام الى قاعدة البيانات , مدخلها الاول الاستعلام المطلوب والمدخل الثاني حلقة الاتصال , لاحظ التالي: http://arccn.net/images/php/l23e15.gif استقبال الاستعلام وطباعته ( الداله mysql_fetch_array و الداله mysql_num_rows ) : الداله mysql_num_rows تقوم بأخبارك كم صف تم ارجاعه من الداله mysql_query , لاحظ المثال التالي: http://arccn.net/images/php/l23e16.gif الان لو اردنا ان نقوم بعرض النتائج فسوف نقوم بإستخدام الداله mysql_fetch_array وهذه الداله تعطيها ناتج الاستعلام من الداله mysql_query وهي تقوم بطباعته عن طريق اي دالة تكرار , وتقوم الداله بإرجاع الناتج على شكل مصفوفه حرفيه , مفتاحها ( key ) هو اسم العمود في قاعدة البيانات و القيمه ( value ) هو ما يقابل هذا العمود , لاحظ المثال التالي: http://arccn.net/images/php/l23e17.gif قطع الاتصال من قاعدة البيانات ( الداله mysql_close ) : اذا كنت تستخدم الداله mysql_connect فلا يتحتم عليك اقفال الاتصال وليس هو ضروري فسيتم اغلاقه عند الانتهاء من تنفيذ البرنامج , ولكن الداله mysql_pconnect فيحتاج ان تقوم بإلغاء الاتصال لانه الافضل http://arccn.net/wp-includes/images/...icon_smile.gif http://arccn.net/images/php/l23e18.gif معرفة الخطا من قاعدة البيانات ( الداله mysql_error ) : تقوم هذه الداله بإعطائك رقم الخطأ اذا لم يتم عمل دوال MySQL بشكل صحيح وهي مفيده دائما , لذا انصح بإستعمالها , لاحظ التالي: http://arccn.net/images/php/l23e19.gif سؤال على الدرس : 1 – قم بإنشاء عدد من قواعد البيانات وحاول ان تستكشف في MySQL وحاول ان تتعود على طريقة استخدام SQL |
اهداف الدرس:
فكرة عمل البرنامج : سوف يكون درسنا اليوم تطبيق متكامل من (أ – ي ) واتمنى ان لا اطيل او لا تصعب اي نقطه على اي متعلم مع ارسن http://arccn.net/wp-includes/images/...icon_smile.gif . فكرة برنامجنا هو ان المستخدم يقوم بالتسجيل وبعد ذلك يمكنه اضافة الدروس , وكل درس ينتمى الى قسم معين , واذا كان المستخدم هو صاحب الموقع فيمكنه اضافة قسم لكي تنتمي الدروس اليها. تصميم قاعدة البيانات : لو فكرنا بالبرنامج قليلا فسوف نستنتج اننا نحتاج الى ( درس – موضوع – مستخدم ) اليس ذلك صحيحا ؟ اذا هذه هي قاعدة البيانات الي نحتاجها انظر الى الصوره التالي: http://arccn.net/images/php/l24e1.gif العــــلاقــــات : العلاقات في برنامجنا سهله , وجميعها من النوع ( 1 – كثير ) اي ( 1 : M ) , لنقم بشرحها الان , كل مستخدم يضيف درس او اكثر اليس هذا منطقيا ؟ فمن المستحيل ان يقوم اكثر من عضو بإضافة الدرس نفسه. كل درس ينتمي الى موضوع معين ويقوم بكتابته عضو واحد. وكل موضوع يحتوي على اكثر من درس ولا يوجد درس يضاف الى اكثر من قسم واحد. لاحظ الصوره التاليه: http://arccn.net/images/php/l24e2.gif انواع الاعمده في الجداول : الجدول USER : USERSالحقل النوع الخاصيه user_idinteger - auto incrementprimary keyuser_namevarchar(10)uniqueuser_passvarchar(100) user_emailvarchar(50)uniqueuser_adminenum(0,1)requ ired الجدول LESSON: LESSONالحقل النوع الخاصيه les_idinteger - auto incrementprimary keytopic_idintegerforeign keyuser_idintegerforeign keyles_titlevarchar(30)-les_texttext- الجدول TOPICS: TOPICالحقل النوع الخاصيه top_idinteger - auto incrementprimary keytop_titlevarchar(30)-top_destext-top_imgvarchar(100)- كيفية عمل الموقع : نحتاج هنا الى معرفة كيفية تنقل المستخدم بين الصفحات وماهي الصفحات التي نحتاجها انظر الى الصوره التاليه : http://arccn.net/images/php/l24e3.gif الداله addslashes و stripslashes : بعض النصوص نحتاج ان نقوم بإدخالها الى قاعدة البيانات, اليس ذلك صحيحا ؟ بعض محتويات هذه النصوص عاديه ولكنا قد تكون اوامر في قاعدة البيانات فتقوم بتعطيل قاعدة البيانات او تخريبها , ولذلك نستخدم هذه الدالتين , الداله addslashes قبل ادخل المعلومه الى قاعدة البيانات , وهي تعمل كالتالي: http://arccn.net/images/php/l24e4.gif نصيحه : ( قم دائما بإستخدام هذه الداله اذا اردت ادخال معلومات الى قواعد البيانات ,, خاصه وان كانت من طرف المستخدم , فلا يمكنك ابدا معرفة ماذا يريد السمتخدم كتابته ) http://arccn.net/wp-includes/images/...icon_smile.gif الداله md5 : نستخدم هذه الداله لتشفير كلمة مرور المستخدم ثم نضعها في قاعدة البيانات, فلا يصلح ان تقوم بوضع كلمة المرور كما هي , شفرها اولا ثم ادرجها , لاحظ التالي: http://arccn.net/images/php/l24e5.gif وناتج هذا التشفير ( 123456 ) فهو التالي: http://arccn.net/images/php/l24e6.gif الشكل النهائي لقاعدة البيانات : http://arccn.net/images/php/l24e7.gif http://arccn.net/images/php/l24e8.gif http://arccn.net/images/php/l24e9.gif http://arccn.net/images/php/l24e10.gif |
اهداف الدرس:
الداله mail : اذا اردنا ان نقوم بإرسال بريد الكتروني الى مستخدم , او الى انفسنا فسوف نستخدم هذه الداله , وهي تعمل بشكل جيد , ولكن ليس دائما , ولكن اذا استخدمها مع السيرفر الشخصي وهي غير مفعله فلن تعمل , ولكي ترى عملها بشكل صحيح فيجب ان يكون لديك مساحه في موقع يدعم لغة PHP وسوف ترى عملها بشكل جيد هناك , لاحظ كيفية عمل الداله: http://arccn.net/images/php/l25e1.gif الداله header : هذه الداله لها استخدامات كثيره جدا , وهي تقوم بإرسال معلومات HTTP ( رؤوس HTTP ) ولن نتطرق لشرحها الان , ولكن سوف نستخدمها في مثالنا للتحويل المستخدم من صفحه الى اخرى اليا , لكي نقوم بالاستغناء عن JavaScript ونتجنب استخدامها , ولكي نجعلها تعمل سوف نقوم بالتالي : http://arccn.net/images/php/l25e2.gif الملفات التي نحتاجها: لكي نقوم بعمل هذا البرنامج , هناك طرق كثير جدا , ولكن دائما نختار الطريقه الانسب لنا والتي نعتقد انها جيده, لا اعلم اذا كانت طريقتي جيده ولكن متأكد انها سلميه ومناسبه وتعمل بشكل صحيح , مع ان هناك بعض العيوب وهي اننا لا نستطيع تتبع المستخدم من صفحه الى اخرى, ولكن عملته بطريقه اخرى وليست مناسبه. في الدروس المتقدمه سوف نرى كيفية تتبع المستخدم ونقوم بتحسين البرنامج الى الافضل. نحتاج في برنامجنا الى ملفات كثيره وقد وضعتها هنا في جدول لكي ترى اسم الملف وكيفة عمل كل ملف , لاحظ التالي: الملف عمل الملفindex.phpهنا يقوم الملف بإدخال اسم المستخدم وكلمة المرور , واذا كان جديدا يذهب الى التسجيلcheck.phpالتأكد من اسم المستخدم وكلمة المرور وتحويل المستخدم في حال صحتهاreg.phpصفحة التسجيلdo_reg.phpالتحقق من معلومات المستخدم وادراج المعلومات في قاعدة البياناتmember.phpصفحة المستخدم وفيها كل ما يحتاجview.phpعرض جميع الدروسlesson.phpاضافة درس جديدdo_les.phpالتأكد من الحقول وادراج الدرس في قاعدة البياناتtopic.phpاضافة موضوع جديدdo_top.phpالتأكد من الحقول وادراج الموضوع في قاعدة البياناتlesbyyou.phpعرض الدروس التي اضيفت من المستخدمconfig.inc.phpملف نضع به معلومات الاتصال في قواعد البيانات وندرج به الملفات التي نحتاجهاoutput.inc.phpدوال التصميم للصفحات , عرض القوائم والنماذج وغيرهاfunc.inc.phpدوال عامه نحتاجها لادراج المعلومات وتسجيل المستخدم وغيرهاauth.inc.phpدوال التحقق من معلومات المستخدم وصلاحياتهimagesفي هذا المجلد نضع صور الاقسام التي نضيفهاinclude في هذا المجلد نضع الملفات التي يوجد بها الدوال http://arccn.net/images/php/l25e3.gif http://arccn.net/images/php/l25e4.gif http://arccn.net/images/php/l25e5.gif البدء في تطبيق البرنامج: لنبدأ في الملف output.inc.php وهذا الملف يحوي جميع دوال النماذج ( نقوم بإنشاءها نحن ) وغيرها , سوف اذكر الدوال هنا وسوف اشرحها بشكل مبسط : http://arccn.net/images/php/l25e7.gif هذه الداله تقوم بإنشاء رأس الصفحه , ونقوم بإدراجها في كل صفحه لدينا , ومدخلها عنوان الصفحه وجعلنا فراغ ($title = ” ) في مدخل الداله لانه توجد احتماليه ان لا يكون هناك عنوان للصفحه http://arccn.net/images/php/l25e8.gif هذه الداله تقوم بإقفال وسوم رأس الصفحه , وندرجها في النهايه كلما ادرجنا رأس الصفحه هذه الداله تقوم بإدراج نموذج الدخول (اضغط على الصوره للتكبير ) , حيث تعرض اسم المستخدم وكلمة المرور وفي حالة ان المستخدم لم يسجل بعد توفر له رابط صفحة التسجيل http://arccn.net/images/php/l25e10.gif هذه الداله توفر لنا الروابط بشكل تلقائي , حيث لا نضر لكتابة وسوم الروابط في كل مره ولكن مره وحده , وندخل لهذه الداله عنوان الرابط و الاسم الذي يظهر للمستخدم. هذه الداله الطويله المخيفه بسيطه جدا (اضغط على الصوره للتكبير ) , وعملها اظهار قائمة للمستخدم يختار منها اما اضافة درس او مشاهدة المواضيع , واذا كان مستخدم مراقب فسوف تفتح له رابط اضافة موضوع , ندخل لهذه الداله اسمه المستخدم لكي نقوم بعرضه ونخرج منها رقم المستخدم في قاعدة البيانات لنرسله من صفحه لصفحه ونتتبعه في الصفحات ( لاحظا استفادتنا من الحقلuser_admin ) بيحث لو كان يحوي y فهو مراقب واذا كان n فهو مستخدم عادي. تظهر لنا هذه الداله نموذج التسجيل للمستخدم ( اضغط على الصوره للتكبير ), لكي يستطيع التسجيل وان يقوم بإضافة مواضيع تقوم هذه الداله ( اضغط على الصوره للتكبير ) بإظهار نموذج اضافة الموضوع ( للمراقب ) لكي يستطيع اضافة مواضيع جديده. هذا الملف سهل جدا , وظيفته ان نضع دوال تقوم باضافة ( مستخدم , درس , موضوع ) جديد فقط. وداله اخيره لجلب رقم المستخدم عن طريق اسمه. هذه الداله تقوم بالتحقق من اسم المستخدم وكلمة المرور ( لاحظ اننا نقارن بكلمة المرور المشفره ) واذا تطابق لدينا نرجع القيمه ( true ) واذا لم يطابق نرجع القيمه ( false ) http://arccn.net/images/php/l25e15.gif وظيفة الداله ان تقوم بمقارنة كلمة المرور الاولى مع كلمة المرور الثانيه ( في التسجيل ) اذا تطابقت يرجع القيمه ( true ) واذا لم تتطابق يرجع القيمه ( false ) تتحقق هذه الداله من ان اسم المستخدم جديد , اي لا يوجد مستخدم اخر قد قام بالتسجيل بنفس الاسم هذه الداله تقوم بالتحقق من البريدالاكتروني الذي يدخله المستخدم , ( كل مستخدم لديه بريد الكتروني واحد و مستحيل ان يكون مستخدمان لهما نفس البريد ) http://arccn.net/images/php/l25e18.gif دالتنا هذه تتحقق من صحة البريد الاكتروني كما تعلمنا في درس ( التعابير القياسيه ). في هذا الملف ندرج جميع الملفات السابقه , لكي ندرج هذا الملف فقط وهو يقوم بالعمل الباقي , ونقوم بوضع الاتصال في قاعدة البيانات في هذا الملف http://arccn.net/images/php/l25e19.gif سؤال على الدرس : 1 – حاول بأن تقوم بإستخدام الملفات بنفسك , وحوال ان تقوم بعمل البرنامج لوحدك الى ان اقوم بكتابة بقية الدرس |
أهداف الدرس:
الصفحه index.php : في هذه الصفحه , نظهر للمستخدم نموذج الدخول , واذا لم يكن مسجلا فنضع له رابط صفحة التسجيل , لو نلاحظ الان لا نحتاج الى ان نقوم بكتابة النموذج ,, لاننا وضعنا داله تقوم بالنموذج واسميناها do_login_form اليس ذلك صحيحا ؟ اذن ما نحتاجه اولا , هو ان نقوم بإدراج الملف config.php وهو موجود داخل المجلد include لكي يقوم ادراج لنا كل الملفات الاخرى , لاحظ الكود التالي : http://arccn.net/images/php/l26e1.gif لاحظا اننا حددنا مكان الملف config.php , واننا كتبنا عنوان الصفحه , ولو كتبنا الداله من غير عنوان فسوف تعمل , راجع الدرس السابق لتتذكر لماذا , ثم وضعنا دالة اظهار نموذج الدخول واذا لم يكن العضو مسجلا يظهر له رابط الى صفحة التسجيل, لاحظ التالي: http://arccn.net/images/php/l26e2.gif الصفحه reg.php : لو ان المستخدم ليس بعضو معنا , وذهب الى صفحة التسجيل فنظهر له نموذج التسجيل حيث يطلب منه اسم المستخدم ,, وكلمة المرور مرتان , والبريد الالكتروني. لاحظ الكود التالي: http://arccn.net/images/php/l26e3.gif وناتجنا هو التالي: http://arccn.net/images/php/l26e4.gif الصفحه do_reg.php : هنا نقوم بمعالجة النموذج وادخاله في قواعد البيانات اذا كان كل شيئ صحيحا , او نقوم بعرض الخطأ الذي فعله المستخدم ,, لنقم بالعمل هذا خطوة خطوة , حسنا لنبدا , في البدايه نقوم بإدراج ملفاتنا التي نحتاجها http://arccn.net/images/php/l26e5.gif ثم نقوم بأخذ المتغيرات التي ارسلت لنا من النموذج بالطريقه التاليه : http://arccn.net/images/php/l26e6.gif أخذنا المتغيرات , الان يجب ان نتأكد هل قام المستخدم بلمئ جميع الخانات ام لا , والطريقه هي كالتالي : http://arccn.net/images/php/l26e7.gif المستخدم كتب جميع المتغيرات , اذن نحتاج الان الى ان نتحقق من اسم المستخدم هل هو موجود لدينا ام لا, http://arccn.net/images/php/l26e8.gif لا تنسى ان معظم الدوال التي تراها هنا هي من الملفات التي نقوم بإدراجها , الان نتحقق من كلمتي المرور هل هي متطابقه ام لا , http://arccn.net/images/php/l26e9.gif الان نقوم بالتحقق من البريد الالكتروني هل هو موجود ام لا , و هل هو صحيح ام لا , http://arccn.net/images/php/l26e10.gif الان تأكدنا ان جميع المعلومات صحيحه , فنقوم بإدراج معلومات المستخدم كلها في قاعدة البيانات , بالطريقه التاليه: http://arccn.net/images/php/l26e11.gif الباقي علينا الان , ان نقوم بإقفال كل دالة شرطيه قمنا بوضعها , بحيث لو لم يملئ جميع البيانات فنكتب له الرجاء كتابة جميع البيانات الخ… http://arccn.net/images/php/l26e12.gif الصفحه check.php : هذه الصفحه تقوم بالتحقق من اسم المستخدم والبريد الالكتروني في قاعدة البيانات ثم مقارنتها بما ادخله المستخدم عند تسجيل الدخول , واذا كانت صحيحه فسوف تقوم بتحويله الى صفحة الاعضاء المسجلين بإستخدام الداله ( header ) , لاحظ التالي: http://arccn.net/images/php/l26e13.gif لاحظ اننا في تحويل المستخدم نقوم بإرسال اسم المستخدم مع الصفحه ( الطريقه GET ) وذلك لاننا نريد ان تكون مدخلا الى الداله display_menu حيث انها تعرض اسم المستخدم وتضع في كل رابط رقم المستخدم في قاعدة البيانات لكي نستخدمه لاحقا اذا اردنا ان نعرف الدروس الذي اضيفت من قبل المستخدم الصفحه member.php : في هذه الصفحه لا يوجد الكثير , فقط نقوم بعرض صفحة الزائر والروابط التي يمكن العمل عليها , واظهار اسمه ( لا تنسى اننا نقوم بإرسال اسمه من صفحة check.php و ندخلها للداله وهي تقوم بإستخراج الباقي ) , لاحظ التالي: http://arccn.net/images/php/l26e14.gif وسوف يكون ناتج الصفحه هو التالي: http://arccn.net/images/php/l26e15.gif http://arccn.net/images/php/l26e16.gif لاحظ لانني مراقب فظهر رابط اضافة موضوع ولكن لو انني غير مراقب , فسوف يكون كالتالي : http://arccn.net/images/php/l26e17.gif ولو اردت معرفة ما اعنيه من اخذ رقم عضوية المستخدم لارسالها من صفحه الى اخر , فلو قمت بوضع الفأره على رابط اضافة درس جديد فسوف ترى الشكل التالي : http://arccn.net/images/php/l26e18.gif قد تسأل لماذا احتاج الى رقم المستخدم , الاجابه هي بكل بساطه , اننا لو اردنا المستخدم ان يضيف درس فنحتاج ان نقوم بمعرفة من هو المستخدم الذي اضاف الدرس , ويجب ان ندرج في الجدول رقم المستخدم لنربطه بالدرس , هل نسيت تصميم جدول الدورس في قاعدة البيانات , يوجد هناك لدينا حقل اسمه user_id لربط كل مستخدم بالدرس الذي قام بكتابته , http://arccn.net/wp-includes/images/...icon_smile.gif الصفحه lesson.php : هذه الصفحه تجعل المستخدم يقوم بإضافة درس جديد , حيث توفر له نموذج الاضافه الذي يحوي اسم الدرس و نص الدرس واي موضوع يتبع لكي نقوم بإدراج رقم الموضوع وطبعا رقم المستخدم الذي ارسلناه من صفحة member.php لاحظ التالي : نأخذ رقم المستخدم في البدايه : http://arccn.net/images/php/l26e19.gif نستعلم عن المواضيع الموجوده في قاعدة البيانات , واذا لم يكن هناك مواضيع او لم يتم الاستعلام فلا يمكن للمستخدم ان يضيف درس ( هل يعقل ان اضيف درس لا ينتمي الى اي موضوع ؟ ) http://arccn.net/images/php/l26e20.gif اذا نجح الاستعلام , سوف اقوم بالتحقق من عدد الاصفف التي ارجعها لي الاستعلام , اذا كان عددها صفر , اي لا يوجد اي مواضيع مفعله حاليا ولا يمكن اضافة درس , واذا كان اكثر من صفر فمعناها ان هناك مواضيع ويمكن ان ندرج تحتها بعضا من الدروس , لاحظ التالي : http://arccn.net/images/php/l26e21.gif ثم نقوم بعرض نموذج اضافة الدروس كاملا وندرج قائمه بها المواضيع الموجوده لدينا , بحيث يختار المستخدم اي موضوع ينتمي اليه الدرس لو تلاحظ في الصوره ( اضغط عليها للتكبير ) اننا استخدمنا دالة تكرار لعرض المواضيع على شكل قائمه , ولاحظ اننا نرسل رقم المستخدم بالطريقه التي تعلمناها سابقا ( hidden ) هل وضحت الفكره الان ؟ اذن ناتجنا هو الشكل التالي: http://arccn.net/images/php/l26e23.gif الصفحه do_les.php : هنا كالعاده نتحقق من ان جميع المعلومات موجوده , ثم نضيفها في قاعدة البيانات , ونظهر الخطأ اذا كانت هناك اي اخطاء http://arccn.net/images/php/l26e24.gif الصفحه view.php : هذه الصفحه فقط نستخدم فيها دالة اظهار جميع الدروس , التي كتبناها في الملف output.inc.php http://arccn.net/images/php/l26e25.gif وناتج هذه الصفحه هو التالي: http://arccn.net/images/php/l26e26.gif الصفحه lesbyyou.php : هنا نظهر للمستخدم جميع الدروس التي قام بإضافتها بحيث نرسل للصفحه رقم المستخدم كما فعلنا سابقا ونستعلم في قاعدة البيانات عن الدروس التي اضيفت عن طريق هذا الرقم : http://arccn.net/images/php/l26e27.gif الصفحه topic.php : نفس طريقة اضافة الدرس , ولكن نقوم بإستخدام دالة المواضيع بدلا عن دالة الدروس لاحظ التالي: http://arccn.net/images/php/l26e28.gif وناتجها هو التالي: http://arccn.net/images/php/l26e29.gif الصفحه do_top.php : نتحقق من المعلومات مره اخرى , ونقوم بإضافة الدرس في قاعدة البيانات : http://arccn.net/images/php/l26e30.gif تحميل التطبيق كاملا : نظرا لطلب كثير من المتعلمين للغة PHP بأن اقوم بوضع الملفات كامله لهذا التطبيق , سأتجيب لذلك , ولكن نصيحة لك اخي المتعلم , قم بعمل كل شي بنفسك ثم بعد ذلك قارن عملك مع هذا العمل , لكي تزيد نسبة الفهم ويسهل عليك العمل , فجيب عليك ان تعرف ان النسخ واللصق لن يفيدك بشيئ في تعلم البرمجه , ولكن يجب عليك المحاوله مره تلو الاخرى الى ان تصل الى هدفك المطلوب http://arccn.net/wp-includes/images/...icon_smile.gif حمل برنامج الدروس كاملا سؤال على الدرس : 1 – حاول بأن تقوم بأستكشاف بعض من عيوب هذا البرنامج , وماذا يحتاج لكي يعمل بشكل صحيح , ومالذي ينقصه 2 – قم بعمل الصفحه لفقدان كلمة المرور 3 – حاول ان تفكر بطريقة عمل تفعيل اشتراك 4 – قم بعمل صفحة تجعل المستخدم يقوم بتغيير بياناته وتحديثها 5 – حاول ان تقوم بصفحه لعرض الدروس وتنسيقها |
اهداف الدرس:
الكلمات المحجوزه : هناك كلمات كثيره محجوزه في لغة PHP , ولها معانيها الخاصه , وهي تعتبر معرفات مسبقه فياللغه وقد اخذنا وتعلمنا الكثير منها , مثلا if وwhile و include وفي درس اليوم سوف نمر على بعض منها لان لها استخدامات جيده , وماعليك فعله هو معرفتها ثم التفكير في كيفية استخدامها فقط , هل انت مستعد ؟ اذن افتح محرر الاكواد ولنبدأ: الكلمه __FILE__ : هذه الكلمه تقوم بإعطائك مسار الملف الحالي كاملا , ولنشاهد عمل هذه الداله فاتح محرر الاكواد واكتب التالي: http://arccn.net/images/php/l27e1.gif وسوف يكون ناتج هذه العباره هو التالي: http://arccn.net/images/php/l27e2.gif لاحظ ان هذه العباره ارجعت لك المسار بالكامل واسم الملف الذي توجد به الكلمه __LINE__ : تقوم هذه الكلمه بإعطائك السطر الحالي للملف , لاحظ التالي: http://arccn.net/images/php/l27e3.gif وسوف يكون ناتجها هو السطر رقم ( 3 ) الكلمه isset() : تقوم هذه الكلمه بالتحقق هل المتغير موجود ام لا , فمثلا لو نريد ان تحقق هل المتغير a موجود ام لا سوف نستخدمها كالتالي: http://arccn.net/images/php/l27e4.gif لاحظ اننا في البدايه لم ننشئ متغير اسمه a لذلك طبع لنا غير موجود ,, ولكن عندما انشأناه (حتى ولو كانت قيمته خاليه , اهم شي المتغير موجود ) فقط طبع العباره موجود الكلمه unset() : تقوم هذه الكلمه بتدمير المتغير ,, فلو لدينا متغير a واردنا ان نلغيه سوف نقوم بإستخدام هذه الداله ,, لاحظ التالي: http://arccn.net/images/php/l27e6.gif ملاحظه : هذه العباره لا تقوم بإرجاع اي قيمه , فقط تقوم بعملها وهو الغاء المتغير الكلمه empty() : تتحقق لنا هذه الكلمه من المتغير , هل توجد به قيمة ام لا ,, عملها بسيط لاحظ التالي: http://arccn.net/images/php/l27e5.gif متغيرات في اللغه : تعلمنا سابقا ان لدينا مصفوفه اسمها $_POST و مصفوفه اسمها $_GET اليس ذلك صحيحا ؟ هنا سوف نتعلم مصفوفه جديده اسمها $_SERVER وهي مصفوفه تحوي معلومات عن السيرفر , يمكننا استخدام المتغيرات التي سوف اتحدث عنها الان من غير هذه المصفوفه ولكن الافضل ولا تنسى كلمتي هذه الافضل هو ان نقوم بإستخدامها بواسطه هذه المصفوفه لانها أامن لنا, لنبدأ بمشاهدة هذه المتغيرات وسوف تذهل من نواتجها , ضع يديك على لوحة المفاتيح ولنبدأ : ‘PHP_SELF’ هذا المتغير يقوم بإعطائك اسم الملف الحالي الذي تعمل عليه ( الملف الذي يشتغل في اللحظه ) وكما قلت في الاعلى عندما شددت على كلمة الافضل حاول ان تستخدمه بالطريقه الامنه وهي $_SERVER['PHP_SELF'] وطبعا يمكنك ان تستخدم هذا المتغير بالطريقه $PHP_SELF ولكن انا نصحتك بالطريقه الامنه والافضل والخيار يعود اليك, افتح محرر الاكواد لنشاهد عمل هذا المتغير , قم بكتابة التالي: http://arccn.net/images/php/l27e7.gif ‘HTTP_REFERER’ سوف تستخدم هذه الداله اذا اردت معرفة الصفحه التي قدم منها الزائر ( اذا وجدت ) ولكني عندما قرأت دليل استخدام لغة PHP فقد وجدت عبارة تقول انه لا يمكن الوثوق في هذه الداله , لان الاستضافه يمكن ان تقوم بتعطيلها اذا ارادت وطريقة استخدامها هو كالتالي عزيزي الزائر: http://arccn.net/images/php/l27e8.gif ‘REMOTE_ADDR’ اذا اردنا معرفة رقم (الاي بي ) = ( IP ) للزائر فسوف نستخدم هذا المتغير , وهو في الحقيقه لا يعمل بشكل صحيح , لذا نحتاج الى بعض الاوامر الاخرى لتحديد رقم الاي بي الخاص بالزائر , ولكن قد تجد منه منفعه في بعض الاوقات ,, خاصه اذا كنت على سيرفر شخصي خاص بك , لاحظ التالي: http://arccn.net/images/php/l27e9.gif هناك المزيد من هذه المتغيرات وهي كثيره جدا , ولا يمكن عدها من كثرتها , وقد شرحت لك ما تحتاجه هنا واذا اردت الزياده فاذهب الى موقع PHP وسوف تجد جميع المتغيرات الاخرى اضغط هنا لزيارة موقع PHP الداله strip_tags : هذه الداله نستخدمها لفلترة النص ,, بحيث لو كانت به اسطر PHP او HTML نقوم بإستبعادها من النص وطباعته من غيرها ,, وتستخدم هذه الداله من ناحيه امنيه في معظم الاحيان , المدخل الاول هو النص المراد فلترته والمدخل الثاني هو اختياري وتضع به الوسوم التي لا ترغب في فلترتها لاحظ الكود التالي: http://arccn.net/images/php/l27e10.gif وناتج عملنا هو التالي : http://arccn.net/images/php/l27e11.gif الداله highlight_file : هذه الداله تقوم بتلوين كود PHP الذي قمت بكتابته , على سبيل المثال لديك ملف اسمه code.php وبه الكود التالي : http://arccn.net/images/php/l27e12.gif ونريد عرض هذا الكود بشكل مرتب وملون , فسوف ننشئ ملف اسمه show.php ( على سبيل المثال ) ونكتب التالي : http://arccn.net/images/php/l27e13.gif لا تنسى ان الملف في نفس المجلد , فسوف يكون ناتج تشغيل الملف show.php هو الشكل التالي: http://arccn.net/images/php/l27e14.gif الداله highlight_string : تقوم هذه الداله بنفس عمل التي بالاعلى ولكن الفرق ان الاولى لملف وهذه لنص , لاحظ التالي: http://arccn.net/images/php/l27e15.gif والناتج هو : http://arccn.net/images/php/l27e16.gif الداله intval : اذا اردت معرفة ( العدد الصحيح ) لقيمة اي متغير فسوف تقوم بإستخدام هذه الداله : http://arccn.net/images/php/l27e17.gif الداله getenv : تقوم هذه الداله الجميله بإعطائك قيمة المتغير لل ( environment ) = ( البيئيه ) واقصد بهذه المتغيرات التي تعلمناها في الاعلى مثل (REMOTE_ADDR ) وغيرها , هل تذكر عندما قلنا ان العباره (REMOTE_ADDR ) لا تقم بإعطائك رقم ( الاي بي ) الصحيح ؟ بمساعدة هذه الداله سوف تحصل على الاي بي الصحيح للمستخدم , طريقة عملها كالتالي: http://arccn.net/images/php/l27e18.gif ولمعرفة المتغيراتالبيئيه الاخرى يمكنك رؤيتها على الصفحه التاليه اضغط للذهاب الى صفحة المتغيرات البيئيه سؤال على الدرس : 1 – قم بإنشاء نموذج يذهب الى نفس الصفحه وليس الى صفحه اخرى , وقم بمعاجلة المدخلات ( مساعده : استخدم isset و PHP_SELF ) مع طباعة المعلومات الخاصه بالزائر |
اهداف الدرس:
تعريف الجلسات : هناك مشكلة كبيره في لغة HTML وذلك لانها لا تستطيع تحديد حالة المستخدم, ونعني بذلك انها لا تستطيع تتبع المستخدم من صفحه الى اخرى, هل تحتاج الى مثال ؟ فمثلا لو قام المستخدم بتنفيذ طلب اظهار صفحه ما, ثم طلب اظهار صفحه اخرى, فلا يمكن للغة HTML معرفة اذا كان الطلب تم من نفس المستخدم. وجدت الجلسات ليتم تتبع حالة المستخدم اثناء تصفحه لموقع معين. فإذا استطعنا ذلك, يمكننا عمل تسجيل دخول المستخدم واظهار بعض محتويات الصفحه على حسب درجته ومستوى تحكمه في الموقع. في لغة PHP الجلسه الواحده عباره عن رقم ( مشفر ) يتم انشاءه بطريقة عشوائيه, ويحفظ هذا الرقم عند المستخدم ( وليس السيرفر ) على طريقتين, اما في الجهاز على شكل كوكيز او على شكل رقم ينتقل من صفحه الى اخرى. هذا الرقم يقوم بالسماح لنا بتسجيل متغيرات اسمها متغيرات الجلسات ومحتويات هذه المتغيرات يتم تخزينها في جهة السيرفر ( وليس على جهاز المستخدم ) والذي يظهر للمستخدم فقط ويمكن رؤيته من قبله هو هذا الرقم العشوائي المستحيل ان يتم فهمه. هل فهمت الجلسات الى الان ؟ انا متأكد انك قمت بملاحظة هذا الرقم عند تصفحك لاحدى المواقع ويكون شكل هذا الرقم كالتالي : http://arccn.net/images/php/l28e1.gif الكوكيز (Cookies ) : الكوكيز او ما يسمى باللغه العربيه ( الكعكات ) وهو اسم لا احب اطلاقه على الكويكز, عباره عن قطعه معلومات تحفظ في جهاز المستخدم ويستطيع الوصول لها فقط من قام بإنشائها ( الموقع ). دعني اختصر لك الامر لا تستخدم الكوكيز ! وهذا الذي سوف تتعلمه عند قرائة اي كتاب او اي درس عن الامان في الانترنت. حيث ان اكثر المتصفحات الجديده ومستويات الامان الموجوده بها تمنع الموقع من وضع اي معلومات في جهاز المستخدم, او على سبيل المثال المستخدم قد قام بإلغاء الكوكيز في جهازه, وحينها لن يستطيع الحصول على المراد وصاحب الموقع لن يحصل على مراده. اذن لنجلعها بكل بساطه ( لا تقم بإستخدام الكويكز في برامجك ) ! انشاء الجلسات بشكل مبسط : سوف يكون محور درسنا عن الجلسات هو ارسال رقم الجلسه من صفحه الى اخرى وتتبع المستخدم بهذه الطريقه. رأينا في المثال بالاعلى ان رقم الجلسه موجود في المتصفح, فكر للحظات هل هذه طريقه جيده لارسال المعلومات ؟ بحيث انها ظاهره للمستخدم و ايشخص اخرى, طبعا لا ! اذن نحتاج ان نقوم بإرسال هذه المعلومات بطريقه مخفيه بحيث ان برنامج هو الوحيد الذي يستطيع استعمالها. هذه الطريقه تبدأ من لحظة دخول المستخدم الى الموقع وانشاء رقم الجلسه الخاص به, وينتهي بمجرد اغلاق المستخدم للصفحه, حيث يتم تدمير هذه الجلسه. لنقم بجعلها مبسطه وعلى شكل خطوات:
ليس بالضروره ان تكون جميع هذه الخطوات في صفحه برمجيه واحده, ويمكن ان تكون على عدة صفحات, لا تنسى ذلك ! بدأ الجلسه يجب علينا ان نقوم بتفعيل ( بدأ ) الجلسات قبل عمل اي شي في الصفحه ويمكن فعل ذلك عن بالطريقه التاليه : http://arccn.net/images/php/l28e2.gif هذه الداله تقوم بالتحقق هل يوجد جلسه لهذا المستخدم ؟ اذا لا توجد جلسه تقوم بإنشاء جلسه خاصه بهذا المستخدم, فلو على سبيل المثال احمد قام بالدخول على الموقع فسوف يكون له جلسه خاصه به , ولو دخل خالد الموقع في نفس الوقت فسوف يكون له رقم اخر خاص به وهكذا. اما اذا كانت هناك جلسه خاصه بالمستخدم فسوف تقوم هذه الداله برفع المتغيرات التي تحويها هذه الجلسه لكي يتمكن لنا استعمالها في برنامجنا, ويجب عليك التذكر ان بدأ الجلسات في كل برامجك هو طريقه جيده بل ممتازه اذا كان برنامجك يعتمد على الجلسات. تسجيل متغير الجلسه هل تذكر المصفوفه $_GET والمصفوفه $_POST والمصفوفه $_SERVER سوف نتعلم الان مصفوفه جديده واسمها $_SESSION وهذه المصفوفه تقوم بتخزين كل المتغيرات بها. فلو اردنا ان نقوم بإنشاء متغير جلسه اسمه ( الاسم ) ونضع به القيمه 5 سوف نقوم بالتالي : http://arccn.net/images/php/l28e3.gif استخدام متغير الجلسه لكي يمكنك استخدام متغير جلسه يجب علينا في البدايه بدأ الجلسه ثم استخدام المتغير عن طريق المصفوفه بالطريقه التاليه : http://arccn.net/images/php/l28e4.gif نفس الطرق التي تعلمناها في السابق, لا تخف من الجلسات فهي اسهل من السهوله. و اذا اردت التحقق من وجود متغير الجلسه ام لا , فسوف تعرف ذلك؟ ولتذكيرك تستخدم الطريقه isset او صديقتها empty كما تعلمنا مسبقا كالتالي: http://arccn.net/images/php/l28e5.gif الغاء متغير الجلسه و تدمير الجلسه عند الانتهاء من استعمال متغير جلسه ما, يمكنك الغاء تسجيله بالطريقه التاليه : http://arccn.net/images/php/l28e6.gif والان بعد ان قمنا بإلغاء هذا المتغير نريد ان نقوم بتدمير الجلسه كامله لكي نقوم بالتنظيف, ويمكن عملها كالتالي: http://arccn.net/images/php/l28e7.gif مثال مبسط على الجلسات : اعتقد انك تشعر بغرابه الان, هل هذه هي فقط الجلسات !! نعم عزيزي, هذه هي الجلسات ويمكن ان كلامي المبسط عنها لم يوضح الفكره, لنقم الان بعمل مثال يشرح لنا طريقة عمل الجلسات لكي توضح لك الصوره. سوف نقوم بإنشاء 3 صفحات وتتبع الجلسات بها. في الصفحه الاولى ( ses1.php ) سوف نقوم ببدأ الجلسه , وتسجيل متغير اسمه example لاحظ التالي : http://arccn.net/images/php/l28e8.gif و سوف يكون نتيجة الصفحه الاولى هو التالي : http://arccn.net/images/php/l28e9.gif لاحظ اننا بدأنا الجلسه ثم انشأنا المتغير , وعند انتهاء اسطرنا في البرنامج سوف تكون الجلسه في حالة تجميد الى ان نقوم ببدأ الجلسه في الصفحه التاليه. الان ننشئ صفحه جديده اسمها (ses2.php ) وسوف يكون محتواها هو التالي : http://arccn.net/images/php/l28e10.gif لو تلاحظ اننا بدأنا الجلسه في بداية الصفحه لكي نقوم بتحميل جميع المتغيرات ثم طبعنا محتوى متغير الجلسه واخيرا قمنا بإلغاء متغير الجلسه. دقق في الصفحه وسوف ترى اننا لم ننشئ متغير جديد ولكن نفس المتغير الذي انشأناه في الصفحه الاولى انتقل الى الصفحه الثانيه. وسوف يكون ناتج هذه الصفحه هو التالي: http://arccn.net/images/php/l28e11.gif في الصفحه الاخير نقوم بنفس العمل ولكن عند طباعة المتغير لن نجد اي قيمه لأننا قمنا بإلغاء المتغير في الصفحه رقم ( 2 ) اليس كذلك ؟ اذن الصفحه ( ses3.php ) سوف تحوي الكود التالي: http://arccn.net/images/php/l28e12.gif عند عمل هذا الكود لن يقوم بطباعة محتوى المتغير لاننا الغيناه من قبل وسوف نقوم في الاخير بتدمير الجلسه كاملا, ولو حاولت ان تقوم بالدخول على الصفحه ( ses2.php ) من غير الدخول على الصفحه ( ses1.php ) فلن يوجد اي شيئ بالمتغير وهذا يؤكد لنا اننا نتابع المستخدم من صفحه الى اخرى. http://arccn.net/images/php/l28e13.gif ملاحظه (ضروري, ضروري, ضروري ان تقوم ببدأ الجلسه قبل ان تقوم بطباعة اي شيئ الى المتصفح والا لن يقوم برنامج بالعمل بشكل صحيح, دائما ابدأ الجلسه ثم اكتب الكود المتبقي ) |
اهداف الدرس:
فكرة البرنامج : نريد ان نقوم بفعل شيئ مفيد بإستخدام الجلسات, وسوف نستخدمها اليوم في عمل برنامج تسجيل مبسط , لكي نقوم بوضع النكهات على برامجنا , فكرة عمل هذا البرنامج بسيطه , نموذج دخول ثم التحقق من اسم المستخدم وكلمة المرور , وبعد ذلك نقوم بتسجيل الجلسه للمستخدم لكي نعرف انه نفس المستخدم الذي يتصفح باقي الصفحات. مختصرات : لا اريد ان اقوم بشرح ما تعلمناه سابقا من جديد , لذلك سأذكر متطلبات عمل البرنامج في هذه النقطه ويجب عليك عزيزي الزائر ان تقوم بعملها بنفسك ولكي تقوم بإستراجع المعلومات يمكنك الرجوع الى الدرس رقم (24 و 25 و 26 ). ما نحتاجه هو
الدخول الى صفحة الاعضاء : الان بعد عملنا على متطلبات الموجوده في ( مختصرات ) نأتي الى محور درسنا اليوم, كما تعلمنا سابقا يجب ان نبدأ كل صفحه بالجلسات ( قبل طباعة اي شي الى المتصفح ) اليس ذلك صحيحا ؟ صفحة الاعضاء تعمل كالتالي, اذا كان متغير الجلسه ( user ) غير موجود نقوم بأخذ مدخلات اسم المستخدم وكلمة المرور والتحقق عنها من قاعدة البيانات , ثم نقوم بوضع اسم المستخدم داخل متغير الجلسه, غير ذلك نقوم بإظهار خطأ للمستخدم بأن اسم المستخدم وكلمة المرور غير صحيحه , او انه يجب عليه تسجيل الدخول لرؤية هذه الصفحه ,وفي الاخير اذا كان متغير الجلسه موجود وتوجد به قيمه نقوم بإظهار محتوى الصفحه للمستخدم. لاحظ الكود التالي: http://arccn.net/images/php/l29e1.gif بالنسبه للداله ( loginCheck ) فهي داله قمت انا بإنشائها للتحقق من اسم المستخدم وكلمة المرور من قاعدة البيانات. الصفحات الاخرى: الان , بنفس الطريقه في كل صفحه نقوم بوضع كود التحقق من الجلسات , بحيث ان لو لدينا صفحه اسمها (view.php ) والمستخدم لم يقوم بتسجيل الدخول فلن يمكنه مشاهدة محتوى الصفحه واذا كان قد قام بتسجيل الدخول ولم يقوم بإغلاق المتصفح (اغلاق المتصفح يؤدي الى تدمير الجلسه ) فيمكنه التنقل بين الصفحات من غير تسجيل الدخول مره اخرى لاحظ الكود التالي : http://arccn.net/images/php/l29e2.gif تسجيل الخروج : لو اراد المستخدم تسجيل الخروج , فهناك طريقتين ,, اما اغلاق المتصفح واما الذهاب الى صفحة تسجيل الخروج ( وهي الافضل ) وهي على خطوات
|
اهداف الدرس :
نبذة عن انواع الصور : تعلمنا كيف نقوم ببرمجة موقع بلغة php ورأينا كم هي سهله وجميله في التعامل, ولكن استخدام لغة php لا يقتصر على اصدار ملفات html او php بل يسمع لك ايضا بإنشاء الصور بأنواعها سواء كانت متحركه او ثابته. توجد هناك مكتبة خاصه لعمل هذه الصور وتسمى مكتبة GD والاسم الكامل لها هو (GD Library ). لهذه المكتبة اصدارات كثيره وسوف نتكلم عن الاصدار رقم 2.0.28 وهو متوافق مع الانواع JPEG و GIF و PNG. كلها تعمل بنفس الطريقه, هل وصلت الى مرحلة الحماسه للتعلم , اذن لنبدأ بتعريف هذه الصور واحده تلو الاخرى. JPEG: تنطق هذه العباره بالطريقه ( جاي-بيق ) وهي اختصار لـ ( Joint Photographic Experts Group ). انا متأ:د انك تعرف هذه النوعيه من الصور فنستخدمها كثيرا اذا اردنا حفظ الصور وهي مفيده اذا كانت في الصوره الوان كثيره وتدرجات كثيره. هذه النوعيه ليست جيده عند استخدام رسوم الخطوط و النصوص و الاجزاء التي تحتوي على لون جامد واحد. يمكنك معرفة امور اكثر عن هذه النوعيه عن طريق الموقع الخاص بهم موقع JPEG. PNG: تنطق هذه العباره بالطريقه ( بنق ) وهي اختصار لـ ( Portable Network Graphics ) وخصائص هذه النوعيه متماثله مع النوعية GIF وهي تعتبر بديلا للنوعيه GIF. وسبب هذا البديل هو ان PNG اكثر جوده من النوع GIF. ويمكنك معرفة معلومات اكثر عن هذا النوع عن طريق الموقع الخاص بهم موقع PNG GIF: هذه النوعيه اختصار لـ ( Graphics Interchange Format ) وتستخدم كثيره في مواقع الانترنت لانها خفيفه وتستطيع عمل الصور المتحركهز تنصح بعض الكتب بإستخدام النوعيه PNG بدل من هذه النوعيه لانها اسهل. انشاء الصور : لانشاء الصور في لغة PHP نتبع 4 خطوات وهي مفيده جدا وتسهل علينا العمل
لنقم بعمل مثال بسيط على هذه الطريقه لنفهم كيفية العمل http://arccn.net/images/php/l30e1.gif بعد تنفيذ هذا العمل سوف يكون الناتج هو التالي : http://arccn.net/images/php/l30e2.gif ملاحظه : في حالة عدم ظهور الصوره قم بكتابة الكود بالشكل التالي, اضغط هنا لنقم الان بشرح عملنا خطوه خطوه اعداد الصوره: اول عمل قمنا بفعله هو انشاء صوره لنقم بالرسم عليها لنقل انها كراسة الرسم الخاصه بنا , وهناك طريقتين لعمل هذه الطريقه الاولى بإستخدام الداله ImageCreate وهي تأخذ مدخلان العرض والطول بالترتيب وسوف تقوم بإرجاع الصوره التي قمنا بعملها http://arccn.net/images/php/l30e4.gif الطريقه الثانيه هي انشاء خلفية العمل من صوره موجوده مسبقا لدينا بأي نوع كانت بإستخدام الداله ImageCreateFromPng او ImageCreateFromJpeg او ImageCreateFromGif وهي تأذخ مدخل واحد وهو اسم الصوره التي نريد العمل عليها ( اسم الملف ) والطريقه كالتالي : http://arccn.net/images/php/l30e5.gif رسم الصوره: قمنا بعد ذلك برسم الاشكال التي نريدها على الصوره, وفي الحقيقه هناك طريقتان لعمل ذلك , اولا يجب ان نقوم بإختيار الالوان التي نريدها , وكما نعرف انها مكونه من 3 الوان وهي الاحمر والاخضر والازرق , ويمكن استخدام هذه الالوان عن طريق الداله ImageColorAllocate وهي تأخذ 4 مدخلات وهي الصوره , اللون الاحمر واللون الاخضر والازرق وقد عملنا في مثالنا لونان وهما الابيض والاسود. وهذه الداله تقوم بإرجاع اللون الذي سنستخدمه لاحقا. http://arccn.net/images/php/l30e6.gif الطريقه الثانيه هو رسم ما نريد ويكون على اربع نقاط نحتاج اليها , الصوره , الاحداثيات , اللون , معلومات النص ( اذا كان نص ) , ويمكننا مشاهدة عملنا في مثالنا هنا: http://arccn.net/images/php/l30e7.gif الداله ImageFIll تقوم بتعبة الصوره وتأخذ 4 مدخلات وهي الصوره , الاحداث السيني , الاحداث الصادي , واللون. الداله ImageLine تقوم برسم خط وتأخذ 6 مدخلات وهي , الصوره , بداية الاحداث السيني , بداية الاحداث الصادي , نهاية الاحداث السيني , نهاية الاحداث الصادي , اللون. الداله ImageString تقوم بكتابة نص على الصوره وتأخذ 6 مدخلات , الصوره , نوع الخط , الاحداث السيني , الاحداث الصادي , النص , اللون ** لاحظ ان ( 0, 0 ) معناها الركن العلوي الايسر اصدار الصوره: يمكننا اصدار الصور بطريقتين , الطريقه الاولى الى المتصفح , الطريقه الثانيه حفظها على شكل ملف, وفي مثالنا استخدمنا الطريقه الاولى وهي تصدير الصوره الى المتصفح. ويكون العمل على خطوتين , الخطوه الاولى يجب ان نخبر المتصفح اننا نريد تصدير صور بدلا من مجرد نصوص او HTML ويمكننا عمل ذلك عن طريق الداله Header التي تعملناها سابقا. http://arccn.net/images/php/l30e8.gif في العاده عندما نقوم بتصدير ملف HTML او PHP يكون الارسال تلقائيا بالشكل التالي Content-type: text/html وهو يخبر المتصفح كيف ان يقوم بترجمة المعلومات. الخطوه الثانيه نقوم بإخراج الصوره الى المتصفح بإستخدامنا للداله ImagePng او ImageJpeg او ImageGif وقمنا بعمل ذلك في ملفنا بالطريقه التاليه http://arccn.net/images/php/l30e9.gif في حالة اردنا ان نقوم بتصدير الصوره الى ملف نقوم بكتابة اسم الملف كمدخل ثاني الى الداله , ويكون بالطريقه التاليه : http://arccn.net/images/php/l30e10.gif تنظيف العمل: بعد ان تقوم بطباعة الصوره والانتهاء من العمل يجب ان تقوم بإرجاع جميع ما استخدمه لانشاء الصوره للخادم وذلك يكون بتدمير الصوره التي قمت بإنشائها وذلك عن طريق الداله ImageDestroy وقمنا بعمل ذلك في مثالنا بالشكل التالي: http://arccn.net/images/php/l30e11.gif هذي هي مكتبة الصور ( GD ) في لغة PHP بشكل مبسط جدا , واذا اردت ان تخوذ بها زياده لكي تحترف التعامل بها يمكنك مراجعة ملف الاستخدام الخاص بلغة PHP عن طريق الموقع الخاص بهم,موقع PHP%3 |
الساعة الآن 07:27 AM. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd. منتديات المُنى والأرب
جميع المشاركات المكتوبة تعبّر عن وجهة نظر كاتبها ... ولا تعبّر عن وجهة نظر إدارة المنتدى |