تغطية مباشرة لأحداث منتدى الإعلام الجديد المقام بمدينة أبوظبي
هل تقترح تمديد مسابقة سوالف كاست؟

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد  
 
LinkBack أدوات الموضوع
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#1 (permalink)  
دورة الـ php الأولى مجانا !!!


بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين
رأيت أن بعض الأعضاء أو معظمهم يبحثون دروس php وهي لغة معروفة في الانترنت
ولذا أريد أن اقيم الدورة على الانترنت وأنا لست خبيرا في الphp ولذا من لديه الخبرة فليفيدنا
ومن يريد أن يشارك فلا يوجد به تسجيل والسلام عليكم ورحمة الله وبركاته


ما رأيكم هل نبدأ ؟؟؟؟






العاطفي غير متواجد حالياً   قديم 04-12-2005, 07:16 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#2 (permalink)  

مقدمة
في هذه المقدمة سنتطرق الى مفاهيم أساسية عن لغة البرمجة PHP وقواعد البيانات MySQL وطريقة إعداد الجهاز ليعمل كخادم ( Server ) وفي النهاية تجربة الجهاز الخادم بكتابة سكربت بسيط مع شرح طريقة عمل مثل هذه السكربات .

- ما هي الـ PHP ؟
بدأت اللغة في الظهور في عام 1994 على يد Rasmus Lerdorf ومن ثم أخذت في التطور شيئاً فشيئاً ، وفي عام 2001 بلغت عدد المواقع المصممة بالـ PHP تقريبا 6 ملايين موقع وهذا الرقم في تصاعد مستمر .

PHP كانت تعني Personal Home Page وتم تغيرها لـ PHP Hypertext Preprocessor وهو إسمها المعروف الآن ، أما موقعها الرسمي فهو www.php.net .

لغة الـ PHP تعتبر من لغات البرمجة لجهة الخادم ( server-side scripting ) وصممت خصيصاً للانترنت ، أما ما نعنيه بانها لغة برمجة لجهة الخادم فهو أن ترجمة السكربت تتم عن طريق مترجم الـ PHP الموجود في الخادم ( Server ) ، ومن ثم يرسلها الخادم لصفحة الوب لتُعرض كـ HTML أو غيرها ، لذلك فالسكربت يُترجم في كل مرة يتم فيها تحميل الصفحة ولا يعتبر هذا عيباً ، لأن الترجمة تتم بسرعة ، وزوار موقعك لا يمكنهم الشعور بذلك الفرق بينها وبين الـ HTML ، إلا إن كانت التطبيقات كثيرة نسبياً .

- ما هي الـ MySQL ؟
هي قاعدة بيانات علائقية relational database management system أو اختصـاراًRDBMS ، وقواعد البيانات عموماً تتيح لك التخزين والبحث وتنظيم البيانات في جداول ، كما تتيح لأكثر من مستخدم الوصول لتلك البيانات بكل سهولة .

كانت بدايتها في عام 1996، وهي تعتمد على Structured Query Language SQL التي تعتبر قاعدة البيانات المخصصة للعمل على الوب ، ولذلك حصلت الـ MySQL على جوائز عديدة لتميزها .

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

في بداية الإعداد سنحتاج إلى ما يلي :
- Apache Server
- PHP 4
- MySQL
- تركيب الـ Apache Server .
قم باتمام عميلة تركيب السيرفر كأي برنامج أخر على الوندوز ولكن عند الوصول الى مكان تركيب السيرفر فيُفضل إختيار C:\apache بدلاً من وضعه داخل مجلد Program Files وذلك لتسهيل عملية الوصول الى دليل السيرفر والذي سيتم تشغيل سكربات الـ PHP من داخله .

- تركيب الـ PHP .
1. اختر مكان فك ضغك الملف هو C:\Php وذلك كما ورد سابقا لتسهيل عملية الوصول .
2. انسخ الملف php.ini-dist الى دليل الوندوز C:\Windows وقم بتغيير اسمه الى php.ini .
3. قم بنسخ الملف php4ts.dll إلى دليل C:\Windows\system .
4. إجراء بعض التعديلات على الملف php.ini وسوف نتطرق إليها لاحقاً .

- تركيب الـ MySQL Database .
قم بفك ضغط الملف وبعد ذلك شغّل برنامج الـ Setup لاتمام عميلة التركيب ، ويفضل اختيار الدليل Mysql تحت الـ C:\ مبـاشرة ، ليصبح كالتالي : C:\Mysql .
بعد ذلك افتح شاشة الدوس MS DOS بالذهاب إلى ابدأ ومن ثم تشغيل وكتابة الامر command ، قم بكتابة ما يلي :

Code .. -----------------------------------------------------


C:\mysql\bin> mysqld-nt --install


-----------------------------------------------------


واذا كان لديك مشكلة في تغشيل الملف قم بتجربة كتابة ما يلي :

Code .. -----------------------------------------------------


C:\mysql\bin> mysqld --standalone

-----------------------------------------------------
- إعدادات الـ Apache Server :
يجب أن يكون الـ Apache Server لا يعمل ، إن كان يعمل قم باغلاقه ، ثم إذهب إلى دليل الـ Apache وادخل الدليل الفرعي conf ستجد عدة ملفات من بينها httpd.conf وهو الملف الخاص باعدادات السيرفر ، قم بفتح الملف واضف اليه الأسطر التالية في نهاية الملف :

Code .. ____________________________________


AddType application/x-httpd-php .php
AddType application/x-httpd-php .php3
LoadModule php4_module c:/php/sapi/php4apache.dll


__________________________________________



بعد ذلك ابحث عن السطر الذي يحوي الـ DocumentRoot أو الدليل الحاوي لملفات الـ PHP ، قم بتعديل السطر ليكون كالتالي :

Code .. ____________________________________


DocumentRoot "C:/Apache/htdocs"


__________________________________________



وهذا هو الدليل الذي ستوضع فيه جميع السكربات ليتم إرسـالها للمترجم وبعد ذلك استعادتها وإرسالها للمتصفح لتُعرض كصفحة وب ، مع ملاحظة أن هذا الدليل يمـكن تغييره ، ولكن إعتماداً على ما سبق ذكره ، فإن هذا الإعداد هو الصحيح .

- إعدادات الـ MySQL .
بعد إتمام عملية التركيب والتأكد منها قم بفتح الدوس MS DOS كما ذكرنا سـابقاً ، وأدخل الدليل C:\Mysql\bin كما وضحنا سابقاً ، بعد ذلك أكتب الأمر التالي :

Code .. ____________________________________


Mysqladmin –u root password "كلمة السر الجديدة";


__________________________________________


وهذا الأمر كما هو واضح يعمل على اختيـار كلمة المرور الخاصة بقاعدة البيانات ولـذلك سيكون إسم المستخدم هو root وكلمة المرور هي ما قمت باختياره مع ملاحظة أن الأمر يكتب كمـا هو أي بعلامـات التنصيص .
وللتأكد من أن العملية تمت بنجاح قم بكتابة ما يلي :

Code .. ____________________________________


C:\mysql\bin> Mysqladmin –u root reload





إن كانت العملية ناجحة ، فسيعطيك رسـالة خطأ !

إلى هنا نصل الى نهاية إعدادات الـ MySQL Datebse وبقي أن نذكر كيفية تشغيلها ،
ادخل الـ MS DOS وأكتب ما يلي :

Code .. ____________________________________


C:\mysql\bin> mysqld


__________________________________________


أو في الحالة الثانية (mysqld -- standalone) :

Code .. ____________________________________


C:\mysql\bin> mysqld-nt


__________________________________________


وفي كل مرة ترغب في تشغيل الـMySQL يجب عليك كتابة هذا الأمر .


أول سكربت
بقي أن نذكر نقطة اخيرة وهي التعديل على ملف الـ php.ini والذي تم نقله الى دليل الوندوز ، قم بالبحث عن extension_dir وعدلها لتصبح extension_dir = c:\php .

بعد إتمام كل الإعدادات السـابقة بقي أن نجرّب تشغيل أحد السكربات ، فقط لنثبت أن ما قمنا به كان صحيحاً ، مع ملاحظة أنني لن اتطرق إلى شرح كتابة السكربت .

قم بالدخول إلى أي محرر نصوص مثلاً المفكرة ، وأكتب الأسطر التالية :

Code .. ____________________________________


<?
phpinfo();
?>


__________________________________________


بعد ذلك قم بحفظ الملف بإسم info.php وضعه في الدليل الخاص في السيرفر كما مر معنا وهو C:\Apache\httdocs ، إذهب إلى المتصفح وادخل العنوان التالي :

Code .. ____________________________________


http://127.0.0.1/info.php
فلله الحمد تمت الإعدادت بنجاح أما إن كـان لديك مشكلة ولا تعلم ما هي قم بمراجعة الإعدادت من جديد ، أو راسلنا لمساعدتك .
في نهاية هذا الدرس الشكر لله وحده ، واتمنى تقييم الدرس وارسال الملاحظات أو الاقترحات الينا لتطوير العمل في المستقبل .

نـــــهـــــــــــايـــــــــــة الـــــــــدرس الأول






العاطفي غير متواجد حالياً   قديم 04-12-2005, 07:19 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#3 (permalink)  

الدرس الثاني

مفاهيم اساسية


بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين اما بعد ، فبعد ان تحدثنا عن اعداد الجهاز الشخصي للعمل مع الـ PHP ، نتحدث اليوم عن المفاهيم الاساسية للغة ، لتكون البوابة الاولى للدخول والتعامل معها .

- طريقة كتابة السكربات في اللغة :

ربما تكون قد لاحظت في الدرس الأول عندما تطرقنا الى تجربة الاعدادات قمنا بكتابة اول سكربت كالتالي :

Code .. ____________________________________


<?
phpinfo();
?>

__________________________________________



وهذا السكربت البسيط يبين كيفية كتابة السكربات في اللغة بشكل واضح ، ففي بداية كل سكربت يجب أن نكتب ?> وفي نهاية السكربت نكتب <? مع ملاحظة أن هذه العلامات أو الـ Tags لها اكثر من صورة ، ولكن صورتها الشائعة هي ما ذكرها ، أما بقية الـ Tags فهي كما يلي مع بيان فوائدها واستخداماتها :
1 – <? ?> وهو الشكل الشائع .
2 – <? php?> ويستخدم في حال وجود الـ XML .
3 – <script language='php'> </script> يمكن أن يستخدم مع الـ JavaScript .
4 – <% %> وهذا الـ Tags هو ما يستخدم في ASP .

وكمثال على كتابة السكربات :

Code .. ____________________________________


<?
نكتب السكربت هنا ..
?>


__________________________________________






العاطفي غير متواجد حالياً   قديم 04-12-2005, 07:20 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#4 (permalink)  

الدرس : كيفية تركيب سيرفر يدعم الـPHP


فى هذا الدرس سوف نتعلم كيفية تركيب سيرفر يدعم الـPHP و الـCGI و قواعد البيانات MySql على جهازك الشخصى.


ان تحويل الجهاز الى سيرفر يوفر الكثير من العناء في ارسال الملفات الى الانترنت لتجربتها ثم العوده للتعديل عليها مره اخرى

والان هذه هي الخطوات لتحول الجهاز الى سيرفر دقق معي

التثبيت:
في هذه الافتتاحية للمنتدى سوف نقدم شرحا سريعا لطريقة تركيب سيرفر ( أباتشي) وهو يدعم بي اتش بي و قاعدة بيانات
(MySQL)

قم بتنزيل برنامج اباتشي:
http://download.sourceforge.net/phpt...adsetup1-2.zip


بعد التحميل وفك الضغط عن الملف قم يتنصيب البرامج
وبعد التنصيب .. سيكون لديك برنامج ضمن برامجك اسمه
PHPTriad for Windows


العمل والتشغيل

والان إذا أردت تشغيل أي سكربت .. يجب عليك وضعه في مجلد بمجلد السيرفر وهو مجلد htdocs وهو مجلد ستجده متفرع من C:\\apache


أي اذا اردت تشغيل اي سكربت وتجربته على هذا السيرفر يجب عليك أولاً نقله إلى مجلد الـhtdocs

وتحديدا في مسار

C:\apache\htdocs

وبعد وضعك للسكربتات التي تريدها على مجلد ـhtdocs ..
تقوم تشغيل السيرفر ولتشغيل السيرفر كل ما عليك هو الذهاب إلى قائمة إبدأ والدخول إلى البرنامج بعدها قم باختيار

Start Apache

وحينها ستظهر لك شاشة دوس ستعمل خلال فترة عملك على البرنامج .. ثم تقوم بتشغيل قاعدة بيانات ماي اسكيو ال وذلك باختيار ايقونه اخرى بجانب السابقة واسمها
Start MySQL

وبهذا يصبح الاباتشي يعمل كما ينبغي ولكي تتاكد اذهب الى متصفحك (الاكسبلورر) وكتب
http://localhost
فاذا ظهرت الصفحة الترحيبية فمعنى هذا ان البرنامج يعمل تمام

(ملاحظة) قد تحتاج الى وضع خيار الاتصال في المتصفح على عدم الاتصال

يعني نذهب الى خيارات انترنت ومنها اختر تبويب ـ اتصالات ـ واشر على الخيار الاول اي عدم طلب الاتصال ابدا


ولكي نستطيع تشغيل الملفات نذهب إلى متصفح (الاكسبورر) ونكتب التالي:
http://localhost

ثم نكتب بعده إسم الملف الذي نريد تشغيله.
مثال
اذا كنا نريد تشغيل منتدى VBZooM قم بوضع الفولدر vbzoom على الاباتشي ثم قم باالدخول للمنتدى هكذا

http://loclhost/vbzoom


طبعا عند تثبيت الاباتشي فانك ستحتاج معرفة معلومات قاعدة البيانات حتى تتمكن تركيب برامجك.

بالنسبة لقواعد البيانات والتحكم بالجداول فانه مرفق مع الاباتشي برنامج phpmyadmin ومن خلاله تستطيع التحكم بقاعدة البيانات ويمكنك الدخول إلى البرنامج من العنوان التالي:

http://localhost/phpmyadmin

معلومات مهمة
عندما تريد تشغيل سكربت على الاباتشي سوف تحتاج الى معلومات تسجلها في ملف الكونفق (config.php) الذي يأتي عادة مع البرامج

وهي :

اسم السيرفر
localhost
اسم المستخدم
لا تكتب شي
كلمة المرور
لا تكتب شي
اسم قاعدة البيانات
اكتب الاسم الذي اخترته للقاعده او الأسم الافتراضى لقاعدة البيانات و هو test






العاطفي غير متواجد حالياً   قديم 04-12-2005, 07:22 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#5 (permalink)  

الى مستخدمى ويندوز Xp

هذا السرفر لنظام التشغيل windows98,me windows أما windows 2000 وwindows xp تستطيع تحميل السيرفر من الخاص به من هذا العنوان:
http://www.firepages.com.au/phpdev4u.htm?pack=2NT.exe قم بفك البرنامج وانسخه وضعه في الدليل الجذري C:\ phpdev4
لتشغيل هذاالسيرفر ما عليك إلا الذهاب إلى المجلد phpdev والضغط علىgo سيقوم البرنامج بتهيئة السيرفر للعمل على بيئة ويندوز وسيتم فتح نافذة DOS بشكل آلي، لا تغلقها اذهب الى المتصفح واكتب: 1.0.0.127ستأتيك عبار تهنئة بنجاح تركيب السيرفر.
أما فيما يتعلق بمجلة PHP Nuke فتستطيع تحميل البرنامج من هذا العنوان:
http://phpnuke.org/modules.php?name=Downloads
قم بفك ضغط البرنامج PHPNuke 5 ،5.tar.gz
باستخدام برنامج فك الضغط مثل winrar أوwinzip بعد فك الضغط سنحصل على التالي:
مجلد sql وداخله ملف الجداول nuke.sql وسيتم وضعه في قاعدة البيانات في السيرفر المحلي مجلد html: ستجد بداخله الكثير من الملفات والمجلدات الفرعية ويختص بتشغيل البرنامج من خلال المتصفح.
الآن يجب تعديل ملف config .php الموجود داخل مجلد html ببرنامج Notepad أوأي برنامج آخر
وقم بتعديل قاعدة البيانات فقط الى mysql هو اسم قاعدة البينات المنشأة مسبقا في الشكل السابق الآن قم بنقل مجلد html إلى الدليل الجذري بحيث سيكون بهذا الامتداد:C:\apache\htdocs\html
وإذا كنت تستعمل سيرفر phpdev: windows2000 وwindows xp
ضع مجلد html داخل الدليل الجذري c:\phpdev\www\html
الآن اذهب الى المتصفح واكتب العنوان التالي:http://1.0.0.127/phpmyadmin/index.phpهنا
البينات mysql ومعها قاعدة أخرى اسمها test وهذه القواعد تأتي افتراضيه مع السرفر فإذا اردت إنشاء قاعدة جديدة فاكتب اسمها داخل الصندوق كما في الصورة (شكل3) ثم اضغط زر create ولكن لاحظ اذا اردت استعمال هذه القاعدة الجديدة فيجب عليك تعديل ملف config.php ووضعها بدلا من mysql الافتراضية
لوضع جداول PHP Nuke داخل قاعدة البيانات اختر القاعدة التي تريد من اليسار والتي ذكرتها في ملف config.php وذلك بالنقر عليها بزر الماوس الايسر بعدها ستخرج لك الصورة التالية
لوضع الجداول للمجلة في قاعدة البينات اضغط على زر استعراض أو Browse،، كما في الصورة. سنقوم بتحديد مكان الملف nuke.sql الملف الخاص بالجداول الذي بداخل مجلدsql مثلا انا وضعت مجلد sql على سطح المكتب احدد مكانه ثم انقر على الملف مرتين بزر الماوس الايسر ثم أضغط Go كما في الصورة أعلاه بعدها سيتم لصق الجداول في قاعدة البيانات أو قم بفتح ملف nuke.sql وتظليل مابداخله ولصقه في المساحة البيضاء المربعة ثم الضغط على زر GO بعدها ستأتيك عبارة Your SQLquery has been executed successfully مخبرة بنجاح تركيب الجداول.
بعدها سوف نذهب إلى المتصفح لنذهب الى المجلة على العنوان التالي:
http:1.0.0.127/html/admin.phpلتسجيل دخولك كمشرف
ادخل بيناتك
ادخل بيناتك كما في الصورة ثم اضغط على زرSubmit بعدها سيذهب بك المتصفح الى صفحة أخرى لتسجيل الدخول للوحة التحكم باسم المستخدم وكلمة المرور التي أدخلتها في الصورة ومن هناك تستطيع التحكم بالمجلة وبشكلها وكذلك بلغة الواجهة ولتصفح المجلة الآن قم بالذهاب إلى العنوان التالي:
http:1.0.0.127/html/index.php

اتمنى انى اكون حليت المشكلة بالنسبة لويندوز xp وتركيب مجلة النيوك على السيرفر الشخصى






العاطفي غير متواجد حالياً   قديم 04-12-2005, 07:23 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#6 (permalink)  

الدرس : برمجة عداد زوار

السلام عليكم
هذه سلسلة من الدروس بعنوان "برمج بنفسك" سأبدؤها إن شاء الله ببرمجة عداد زوار بمواصفات بسيطة ثم سيتم تطوير الكود تدريجيا ، وبعد الانتهاء من عداد الزوار سنبدأ في دفتر زوار .... وصولا إلى برمجة منتدى.
--------------
الدرس :

فكرة البرنامج :
* سيكون لدينا ملف نصي counter.txt سنخزن فيه قيمة العداد
* صفحة counter.php سنقوم من خلالها بقراءة قيمة الملف النصي counter.txt ثم نقوم بطباعة هذه القيمة ثم سنقوم بزيادة القيمة +1 ثم نعود ونخزنها في الملف counter.txt .... بسيطة صح

خطوا تالعمل :
- أولا :
قم بإنشاء مجلد مستقل للبرنامج وليكن اسمه counter
- ثانيا :
قم بإنشاء ملف نصي وسمه counter.txt
- ثالثا :
قم بانشاء ملف counter.php ثم قم بفتحه كي نبدأ البرمجة
-----------------------------------------------------------------
-----
الآن نحن بداخل ملف counter.php قم بنسخ الكود الآتي ثم سنقوم بشرحه :


[شفرة]
<?
$filename="counter.txt";
$fp=fopen($filename,"r");
$result=fread($fp,filesize($filename));
fclose($fp);
$fp=fopen($filename,"w");
$result++;
fwrite($fp,"$result");
fclose($fp);
echo $result;
?>
[/شفرة]

السطر الأول :
<?
$file="counter.txt";
?>
قمنا بإعطاء المتغير $file اسم الملف counter.txt وهو الملف الذي سنخزن فيه قيم العداد
ونستطيع هنا ذكر مسار هذا الملف في حال لم يكن في نفس المجلد الموجود فيه counter.php
وسنشاهد هذه الحالة في مثال مقبل إن شاء الله .

السطر الثاني :
<?
$fstream=fopen($file,"r");
?>
* قمنا باستخدام الدالة fopen والتي تقوم بمحاولة فتح الملف $file ، في حالة النجاح يتم فتح مجرى اتصال
مع الملف Stream تخزن قيمته في المتغير $fstream وفي حال حدوث خطأ معين يتم إرجاع هذا الخطأ
وسنشاهد امثلة على الأخطاء التي قد تحدث .
* وكما تلاحظ قمنا باعطاء الدالة fopen شيئين : الاول : اسم الملف $file والثاني : r وهي اختصار ل read
وتعني قراءة حيث أخبرنا الدالة fopen أن تقوم بفتح الملف $file بهدف القراءة
(هناك عدة حالات سنتعرف عليها لاحقا)

السطر الثالث :
<?
$counter=fread($fstream,filesize($file));
?>
* استخدمنا هنا الدالة fread والتي تقوم بقراءة الملف $file ولكن هذه الدالة لا تتعامل مباشرة مع الملف $file بل مع مجرى الاتصال
الذي قامت الدالة fopen بفتحه .
* تأخذ الدالة fread شيئين الأول : $fstream وهو مجرى الاتصال الثاني : الطول الذي ستقرؤه وهنا قمنا بإخبارها بأننا نود قراءة كامل الملف $file
عن طريق filesize حيث ستقوم بقراءة جميع محتويات الملف .
* ستقوم هذه الدالة بإرجاع القيم الموجودة داخل الملف $file .
* قمنا بإعطاء القيمة الموجودة في الملف $file للمتغير $counter .

السطر الرابع :
<?
echo ++$counter;
?>
قمنا هنا بزيادة قيمة المتغير $counter - والذي أخذنا قيمته من محتويات الملف $file - بواحد
حيث إن

++ تساوي :
<?
$counter=$counter+1;
?>
وكما تلاحظ فقد وضعنا ++ قبل اسم المتغير بعنى زد على المتغير 1 ثم قم بطباعته ولو كانت ++ بعد المتغير سيطبع قيمة المتغير ثم سيزيد عليه واحد

السطر الخامس :
<?
fclose($fstream);
?>
قمنا باستخدام الدالة fclose حيث تقوم بإغلاق مجرى الاتصال مع الملف $file

إلى هنا قمنا بقراءة محتويات الملف وزيادة واحد عليها ثم قمنا بطباعتها ... الخطوة القادمة هي تخزين القيمة الجديدة في الملف .

السطر السادس :
<?
$fstream=fopen($file,"w");
?>
نفس شرح السطر الثاني اللهم قمنا بفتح الملف بغرض الكتابة حيث استخدمنا w بدلا من r

السطر السابع :

<?
fwrite($fstream,$counter);
?>
هنا قمنا باستخدام الدالة fwrite والتي تقوم بالكتابة في الملف حيث اعطيناها مجرى التصال $fstream والقيمة التي ننوي تخزينها وهي $counter

السطر الثامن والأخير :
<?
fclose($fstream);
?>
قمنا بإغلاق مجرى التصال مع الملف
-------------
نهاية الدرس
------------






العاطفي غير متواجد حالياً   قديم 04-12-2005, 07:24 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#7 (permalink)  

الدرس : فورم مراسلة

أضمن لك بعد هذا الدرس البسيط ألا تبحث بعد اليوم عن فورم مراسلة لموقعك وأن تقوم ببرمجته بنفسك
لكن لا تبدأ بالقراءة وفي ذهنك إنك لن تفهم .. فقط ركز قليلاً وجرب .. وأحيطك علماً بأن سطور البرمجة التي تراها هنا ليست إلا html يمكنك عملها بالفرونت بيج .. ولن تحتاج إلا لحوالي ثلاثة أسطر فقط تكتبها بلغة php ..

أولاً : سنتعرف على الملفات المستخدمة في السيكربت ووظيفة كل منها :
1- add.html : هذه الصفحة تحتوي على الحقول التي يقوم الزائر بتعبئتها .. وللتبسيط سنطلب من الزائر البيانات التالية ( عنوان الرسالة – نص الرسالة ) .. وستتعلم لاحقاً كيفية إضافة حقول إضافية .. لكن الأهم أن نفهم هذه الخطوة .
2- Send.php : وهذا الملف هو الذي سيقوم باستقبال البيانات التي كتبها الزائر وسيقوم بإرسالها على بريدك .


الملف add.html

الآن سنقوم بتصميم الصفحة الأولى add.html .. وسأختصر قدر الإمكان الأسطر البرمجية لكي تركز على فهم المطلوب .. يمكنك أن تستخدم الفرونت بيج لكن أنصحك أن تقوم باستخدام المفكرة مؤقتاً حتى تعرف وظيفة كل سطر تكتبه وتتعرف على أسماء المتغيرات وتحددها ... قم بفتح برنامج المفكرة واكتب التالي :


Code ..


<form method="post" action="send.php">
<input type="text" name="subject"> عنوان الرسالة : <br>
<input type="text" name="message"> الرسالة : <br>
<input type="submit" value="أرسل" >
</form>







شرح الكود :
- في السطر الأول قمنا بفتح form سيطلب من الزائر بيانات سيتم تحديدها في الأسطر التي بعده .. ويجب عند إنشاء فورم معين تحديد بارامترين أساسيين :

1 - method : وهي طريقة إرسال البيانات .. إما Get أو Post ، والفرق بينهما بكل بساطة هو أن Get بعد أن يقوم الزائر بتعبئة الحقول وضغط الإرسال ستقوم بعرض عنوان الصفحة بعد علامة استفهام ؟ في شريط العنوان بالمتصفح ، وستظهر البيانات التي وضعها الزائر أيضا في شريط العناوين .... وأما Post فستقوم بإرسال المعلومات دون عرضها في شريط العناوين .. ونحن هنا بالطبع لانريد عرض البيانات في شريط العنوان .. لذلك أستخدمنا Post .
2 ‌- Action : ونحدد هنا إسم الملف الذي تتجه إليه البيانات التي يضعها الزائر بعد ضغطه للإرسال .. ليقوم ذلك الملف باستقبالها ومعالجتها بحسب ما فيه من أوامر .

- السطر الثاني طالبنا الزائر بإدخال قيمة باستخدام الأمر input .. وهذا الأمر يحتاج إلى :

1 ‌- Type : وهنا نحدد نوع الإدخال من قبل الزائر .. هل هو نص text ? أو اختيار من متعدد كأزرار الراديو Radio ? أو مربعات إختيار يقوم الزائر بتحديدها أو تركها وهي ما تسمى بـالـ Checkbox ... وكما ترى بأننا هنا نريد من الزائر إدخال اسمه ، فبالتأكيد سنحدد نوع الإدخال على أنه Text .
2 ‌- Name : هنا سنضع اسم المتغير .. وهذا يعني بأن البيانات التي سيضعها الزائر في مثالنا الحالي ستحفظ في المتغير subject .

- السطر الثالث هو تكرار للسطر الثاني مع اختلاف اسم المتغير طبعاً .. وقد أعطيناه الاسم message هنا .. وطبعا الرسالة نوعها نصية text .

- السطر الرابع هو إضافة زر الإرسال .. ونوعه Submit ، سيحمل الكلمة ( أرسل ) للدلالة على طبيعة عمله .

- الوسوم <br> هي أحد وسوم html ، ويستخدم لترك سطر فارغ ..

- في النهاية يجب إقفـال الفورم عن طريق الوسم </form> .


الملف send.php

الصفحة الثانية هي الصفحة send.php وهي التي ستقوم باستلام البيانات التي سيضعها الزائر للمتغيرين السابقين ( subject$ و message$ ) .

سنستخدم للقيام بعملية الإرسال الدالة ()mail .. وسأوضحها باختصار ..

لكي تقوم الدالة بعملية الإرسال فإنها تحتاج إلى ثلاث باراميترات رئيسية هي :
1- to : بريد الشخص المرسل إليه .
2- Subject : عنوان أو موضوع الرسالة .
3- Message : نص الرسالة .

ويتم كتابة الدالة بالشكل التالي :


Code ..


<?
Mail($to,$subject,$message)
?>







يعني تقوم بالإرسال للبريد to$ ، رسالة عنوانها subject$ وموضوعها message$ .. أعتقد واضحة ؟

لمزيد من المعلومات راجع قسم الدوال ، الدالة Mail .

طيب .. تتفقون معي بأن صاحب الموقع يريد من الزائر الإرسال لبريده .. بمعنى أن البريد المرسل إليه ثابت بعنوان واحد لايتغير .. إذاً ستكو قيمة المتغير $to هي قيمة ثابتة هذه القيمة هي بريد صاحب الموقع .. لنفرض أن هذه القيمة هي master@islamsun.com ، سنكتب السطر التالي :


Code ..


<?
$to="master@islamsun.com";
?>







هذا المتغير to$ قمنا بتعريفه للدالة ، وبقي متغيرين أو بارميترين لكي تعمل الدالة بشكل صحيح .. هما عنوان الرسالة والموضوع .. وهو ما قمنا به قبل قليل في فورم الـ HTML ، ذكرنا أن عنوان الرسالة سيضعه الزائر في الحقل الذي أسميناه بالمتغير subject$ والرسالة سيكتبها في الحقل الذي اسمه message$ .

هنا نكون قد انتهينا من توضيح جميع احتياجات الدالة ()mail لتقوم بالإرسال ولم يبقى سوى سطر واحد إضافى على السطر السابق .. وهو ما يلي :


Code ..


<?
Mail($to,$subject,$message);
?>







يعني أن الملف send.php كاملاً سيكون على الشكل :


Code ..


<?
$to="master@islamsun.com";
Mail($to,$subject,$message);
?>







لو قمت برفع الملفين على موقعك واختبرتهم ستجد بأن العملية ناجحة وتمت عملية الإرسال فعلاً .. وهذا هو الأساس في عمل فورم المراسلة بشكل بسيط ، لكن قد تحتاج لبعض الإضافات مثل :
1- إضافة أمر للتأكد من تعبئة الزائر للحقول حتى لايتم الإرسال للحقول إذا لم تحتوي على أي إدخالات .. وتستطيع عمل ذلك باستخدام جملة الشرك if .. else .
2- بعد الإرسال يتم طباعة عبارة ( شكرا لك .. لقد تم إرسال رسالتك ) .. وتستطيع القيام بذلك عن طريق إضافة السطر التالي لملف send.php :


Code ..


<?
Echo "شكرا لك .. لقد تم إرسال رسالتك";
?>







3- السماح باستخدام html .
4- تغيير مصدر الرسالة from .. حيث سيكون في المثال السابق nobody .
5- وضع الملف add.html في الفرونت بيج والتعديل عليه من ناحية الشكل والمظهر ليناسب ذوقك .

لم يبق إلا أن تتقن الطريقة بالتدرب على استخدام الفورم واستخدام الدالة ()mail ، وإضافة شيء جديد كل فترة وستجد أنك تتعلم بالتدريج كتابة php ، ومن يدري قد تكون بدايتك الفعلية لتعلم هذه اللغة ...

تحياتي للجميع






العاطفي غير متواجد حالياً   قديم 04-12-2005, 07:26 PM
رد مع اقتباس
مشرف قسم التصميم والرسومات والمونتاج
تاريخ التسجيل: Sep 2003-
#8 (permalink)  

جزاك الله الف خير على ما قدمته ... وحقيقه انا من المبتدئين ومازلت كذلك
واشكرك جزيل الشكر على شرح الاكواد والحمدالله عرفت معنى r تسلم يالغالي






ملك الفوتوشوب غير متواجد حالياً   قديم 05-12-2005, 07:18 AM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jul 2003-
#9 (permalink)  

السلام عليكم...

ألف شكر أخوي العاطفي.. موضوع مرتب بارك الله فيك...






__________________
بوجبر

http://www.ba7reny.com
بحريني دوت كوم (موقع صديق)
M-Plus غير متواجد حالياً   قديم 05-12-2005, 09:24 AM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#10 (permalink)  

لا شكر على واجب

أنا أيضا مبتدئ لذا اريد من لديه سؤال او درس فليضعه وتحياتي للجميع


العاطفي






العاطفي غير متواجد حالياً   قديم 05-12-2005, 02:05 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#11 (permalink)  

الدرس : كيفية صنع دالة خاصة بك

الدالة هي ما يسمى بالـ Function و لها عدة فوائد منها تصغير الكود البرمجي و التسهيل عليك من كتابة بعض المهام التي تتكرر باستمرار و غيرها كثير ..

شروط عمل دالة خاصة بك :
1 - أن تكون الدالة غير موجودة مسبقاً ، لأنها لو كانت موجودة فعلاً فليس هناك سبب يدعوا لتكرار الجهد ، بل يمكنك إستخدام الدوال الجاهزة في دليل الـ php.net ..
2- لا يمكن أن يبدأ اسم الدالة بعدد .

صنع الدالة أمر سهل مثلا ، وكمثال على ذلك قم بإنشـاء ملف وليكن إسمه Function.php ، ولتكن محتوياته كالتالي :
Code ..


<?
Function Mr_Muslem ( )
{
echo "Mr.Muslem The Muslem Man";
}
?>






نأتي للشرح :
1- ?> ، وسم بداية الكود البرمجي .
2- Function ، أي دالة يجب أن تبدأ بهذه الكلمة وهي كتصريح لبداية الدالة التي نريد تعريفها .
3- Mr_Muslem ، هذا اسم الدالة التي سنقوم بتعريفها ، وتستطيع أن تكتب أي إسم آخر باستثنـاء الدوال المعرفة فعلاً ، ولكن يفضّل أن يكون الإسم دالاً على معنى الدالة ، ليسهل تذكرها عند استدعاءها فيما بعد .
4- } ، بداية الدالة ، فكل ما يكتب بعدها لن يتم تنفيذه مبـاشرة ، بل سيتم ذلك عند استدعاء الدالة .
5- أوامر الدالة وهو كما يلي :
Code ..


<?
echo " Mr.Muslem The Muslem Man ";
?>





هذا السطر الأول من أوامر الدالة ( وهو الوحيد هنا ) ، يقوم هذا السطر بطبـاعة جملة :
Mr.Muslem The Muslem Man
مع ملاحظة أن عملية الطباعة لن تتم قبل أن نستدعى الدالة !

6- { ، وهي علامة نهاية عمل الدالة .
7- <? ، هذا وسم نهاية الكود البرمجي .






العاطفي غير متواجد حالياً   قديم 05-12-2005, 02:21 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#12 (permalink)  

الدرس : نـقل قواعد البيـانات



في البداية قم بفتح قاعدة البيانات التي تريد نقلها من نفس الموقع عن طريق لوحة التحكم الخاصة بموقعك وبالتحديد من الـ phpmyadmin ، ستشـاهد صفحة مقسمة الى قسمين الأولى على اليمين والثانية على اليسار فيها اسم قاعدة البيانات قم بالضغط عليه ، ستشـاهد في يمين الصفحة قائمة بالجدوال الموجودة في قاعدة البيـانات التي قمت باختيـارها ..

في مثالنا هنا سنقوم بشرح طريقة نقل قاعدة بيـانات منتدى الـ VB الشهير ، لذلك ستجد مجموعة كبيرة من الجدوال تقريباً 49 جدولاً ، ولإن القاعدة ستكون كبيرة نسبياً سنقوم بتخفيف بعض البيـانات منها فسنقوم بالتـالي :

تفريغ الجداول التـالية ( عن طريق فتح الجدول واختيـار Empty ) ..
1- adminlog
2- search
3- searchindex
4- word

لكن تأكد من أن الجدول المذكورة فقط قد تم مسح البيـانات التي فيها لأن أي بيـانات أخرى في جداول المنتدى الأخرى سيسبب مشكلة في نقله ..

بعد تفريغ الجدوال قم بالرجوع الى الصفحة التي يتم استعراض جميع الجداول فيها ، وستجد أسفل الصفحة العنوان التـالي View dump (schema) of database وبجانبه الخيـارات التـالية
1- Structure only
2- Structure and data
3- Data only

قم باختيار الخيار الثاني Structure and data .

بعد ذلك ستجد أسفل المربع الأبيض الذي يحتوي على اسماء الجداول الخيـارات التـالية :
1- Add 'drop table'
2- Complete inserts
3- Extended inserts
4- Use backquotes with tables and fields' names
5- Save as file

قم بوضع الاختيـار على الخيـار الأخير وهو حفظ بيانات قاعدة البيانات في ملف خارجي Save as file . في النهاية إضغط على Go وأختر الإسم المناسب الذي تراه وانتظر تحميل كامل الملف ..

الآن إذهب الى الموقع الجديد الذي تريد ان تنقل قاعدة البيانات اليه ، على سبيل المثـال http://www.123.com ، ستقوم بالتأكيد بعملية تركيب جديدة للمنتدى عن طريق الـ install ، ما يهمنا هنا هو طريقة استرجاع قاعدة البيانات التي قمنا بحفظها في ملف sql الى الموقع الجديد ، كل ما عليك فعله هو فتح الـ phpmyadmin في الموقع الذي تريد أن تنقل القـاعدة اليه ، وتقوم بما يلي :

إذهب الى قاعدة البيانات التي تم انشـاءها بعملية الـ install وستجد أن أغلب الجدوال فارغة ، قم بتحديد كافة الجداول وأختر delete او drop لكن تأكد أنك في قاعدة البيـانات الصحيحة التي تريدها ، بعد عملية الحذف ستجد في الأسفل مربع فارغ وتحته زر Browse ، قم بالضغط عليه واختر الملف الذي قم بحفظه سـابقاً ، وسيتم تحميل البيـانات الى قاعدة البيـانات الجديدة ..

نقطة أخيرة ستسهل عليك نقل قاعدة البيـانات وهي تقسم الملف إن كان كبيراً ، والطريقة ببسـاطة عن طريق فتح الملف واقتطاع إجزاء منه حسب الحاجة التي تراها ووضع الأقسـام في ملفات ذات امتداد sql ، مثلا 1.sql و 2.sql الخ .. لكن تأكد من أن كل ملف يبدأ بالجملة insert into ، وأن حجمه ليس كبيراً ، 50kb ستكون مناسبة .






العاطفي غير متواجد حالياً   قديم 05-12-2005, 02:23 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#13 (permalink)  

مهم 8 خطوات لبرمجة أي برنامج



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

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

كيف تحدد الهدف ؟
أ) الهدف يجب أن يكون واضحاً محدداً ، لا تقل : أريد أن أبرمج منتدى ، بل حدد أكثر ، هل تريد أن يكون هذا المنتدى لموقعك فقط ؟ أم أنه لمنافسة منتدى آخر مثل phpBB أو VB ؟ أو أنك تريد إنشاء منتدى بسيط للمواقع التي لا تحتاج لبرامج المنتديات الكبيرة والمعقدة ؟ حدد بالضبط هدفك .

ب) حدد توقيتاً لهدفك ، كم تحتاج لإنجاز الهدف ؟ شهر ؟ أسبوع ؟ قم بتحديد المدة اللازمة لتحقيق هدفك لأنك إن لم تحدد مدة زمنية معينة ، قد تسوف الأمر حتى ينتهي عمرك ولا تحقق هدفك .

2) حدد شكل البرنامج .
قم بإنشاء ملفات HTML عادية ، تحدد فيها الشكل الذي تريد للبرنامج أن يخرج به ، عادة ما تكون برامج PHP عبارة عن صفحة رئيسية فيها الأقسام الرئيسية ، ثم من صفحة القسم ترى مجموعة مشاركات أو مقالات ، وفي صفحة المقالة تجد بطبيعة الحال المقالة المطلوبة مع تفاصيل كثيرة كالتاريخ وكاتب الموضوع وتقييم الموضوع ، عادة ما تشترك معظم برامج PHP في هذه الصفحات .

قم بتحديد شكل هذه الصفحات وهذه فقط أمثلة :
- الصفحة الرئيسية للبرنامج .
- صفحة القسم ( إن كان هناك أقسام متعددة في البرنامج ) .
- صفحة المقال أو الموضوع .
- نسخة المقال للطباعة .
- لوحة التحكم بتفاصيلها الضرورية .

وفي كل صفحة حدد التفاصيل الضرورية التي يجب أن تكون في البرنامج ، فمثلاً هذه التفاصيل الضرورية لصفحة المقال :
- عنوان المقال .
- المقال نفسه .
- كاتب المقال .
- تاريخ كتابة المقال .

أكتب كل هذا على الورق ، ربما من الأفضل أن تكتب هذه التفاصيل في حاسوبك لكي تكون سهلة التعديل متى ما أردت أن تقوم بتغييرها .

3) صمم قاعدة البيانات .
قم بتخطيط قاعدة البيانات الضرورية لبرنامجك ، واختبرها حتى تصل إلى أفضل تصميم لبرنامجك ، لأنها أساس موقعك وأي خطأ في تصميمها سيجعلك ربما بحاجة إلى برمجة برنامجك من جديد .

4) قم بتصميم نظام التصفح لبرنامجك .
قد يكون نظام التصفح قائمة بسيطة من الروابط أو شيء أصعب من ذلك ، المهم أن يكون نظام التصفح سهل الاستخدام من قبل الزوار ويخبرهم أين هم وكيف يتنقلون بين أقسام البرنامج .




5) إبدأ في كتابة البرنامج !
الآن وقد صممت وخططت لكل شيء ، لم يبقى إلا أن تكتب البرنامج ، قم بإنشاء ملفات فارغة لبرنامجك واكتب فيها ملاحظات تخبرك عن مهمة هذا الملف وما يجب أن يحتويه ، وعندما تكتب البرنامج، عليك أن تتجنب كتابة أي أوامر برمجية بشكل متكرر ، إذا وجدت أنك بحاجة إلى مجموعة أوامر بشكل متكرر ، فعليك أن تجعلها كدالة ( Function ) تستخدمها متى ما أردتها ، وهذا يوفر عليك الوقت والجهد ، وعادة ما تكون الإعدادات وأوامر الاتصال بقاعدة البيانات أمور مشتركة بين كل البرامج ، لذلك قم بعمل دالة ( Function ) لكل أمر واحفظها في حاسوبك لكي تستخدمها متى ما أردت في أية مشاريع متسقبلية ، وحاول بقدر الإمكان فصل التصميم عن أوامر البرمجة ، بحيث تستطيع تعديل التصميم فيما بعد كما تشاء دون المساس بأوامر البرنامج .

إبدأ البرمجة بملف الإعدادات الذي يسمى عادة config.php ، حيث تضع فيه المتغيرات اللازمة للبرنامج ، ثم بملف الاتصال بقاعدة البيانات db_connect ، وكذلك ملف الدخول إلى لوحة التحكم login.php ، وأذكر بأن هذه مجرد أمثلة ، وكل برنامج قد يحتاج إلى ملفات أخرى غير مذكورة هنا .

6) كن مرناً .
أثناء كتابة البرنامج قد تواجه مشاكل أو تجد حلولاً أخرى غير موجودة ضمن المخطط ، كن مرناً ونفذ ما تراه في صالح البرنامج .

7) كن منظماً .
- اكتب قائمة بما يجب عليك فعله بالتفصيل ، هذا يساعدك على عدم نسيان مهمة ما، ويعينك على متابعة تنفيذ البرنامج .
- اكتب في كل ملف تاريخ آخر مرة قمت بتعديله .
- اختبر البرنامج بشكل دائم وبكل الاحتمالات ، وصحح الأخطاء التي تجدها .
- أطلب من الآخرين أن يختبروا البرنامج واكتب ملاحظاتهم .

8) وثق كل شيء .
يجب عليك أن تتعود أن تكتب كل شيء عن البرنامج ، ففي ملفات البرنامج نفسها عليك أن تكتب ملاحظات تشرح أوامر البرنامج ، وعليك أن تكتب ملفاً يشابه ملفات readme.htm ، تشرح فيه الهدف من البرنامج وكيفية تركيبه والمشاكل المحتملة وكيفية حلها ، وملف آخر تكتب فيه التغييرات التي طرأت على برنامجك مع كل إصدار ، فتكتب فيه مع أول إصدار خصائص البرنامج الأساسية ، وفي كل إصدار جديد ، تكتب الخصائص التي أضفتها للبرنامج ، وإذا كنت مهتماً بحفظ حقوقك ، فعليك أن تكتب بالتفصيل حقوق استخدام البرنامج ، هل تبيح للآخرين تعديله وإنشاء برامجهم الخاصة من خلال برنامجك ؟ هل توافق على أن يستفيد الآخرون من برنامجك تجارياً ؟ ربما أنت تبيع البرنامج فهل تمسح لمن اشترى برنامجك أن يوزعه على الآخرين ؟ أكتب بالتفصيل كل شيء حتى تضمن حقوقك أو على الأقل يكون لديك نظام واضح لكيفية الاستفادة من جهودك .

تحياتي






العاطفي غير متواجد حالياً   قديم 05-12-2005, 02:28 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#14 (permalink)  

الدرس : طريقة عمل سكريبت Upload بسيط !!



مقدمة
طبعا سكريبت الـ Upload هذا بسيط لدرجة أنه لا يحتوي على أي مميزات غير الـ Upload ، و لا يحتوي حتى على واجهة أو تصميم ، لأن الغرض منه تعليمي فقط .. و تستطيع تطوير السكريبت كما تشاء ..

بعد هذه المقدمة أقول :
أننا سوف ننشئ ملفّين ، أحدهما هو ملف الكونفيق ( Config.php ) و الآخر هو ملف الأبلود ( Upload.php ).

ملف الكونفيق سيحتوي فقط على المسار الذي سنرفع ملفاتنا إليه ( بمعنى أنه سيكون سطر واحد فقط ، اذا استثنينا وسمي <? و ?> .. )

قد يتساءل احدكم لماذا لا نستغني عن ملف الكونفيق و نضع المسار في نفس ملف upload.php ..
الإجابة هي : لأننا سنطوّر السكريبت مستقبلاً بحيث يحتوي على مميزات كثيرة مثل : تخصيص حجم و نوع الملفات المراد رفعها ، إلخ ..

حالياً هذا شكل ملف الكونفيق :
Code ..


<?
$path = "C:\lahloob";
// اخترت رفع الملف إلى مجلد لهلوب في السي
?>






ملف الـ upload.php سيحتوي على ما يلي :
1 ) وسم بداية كود الـ PHP .
2) استدعاء ملف الكونفيق اللي يحتوي المسار
Code ..


<?
include "config.php";
?>





3) إدراج النموذج (الفورم) الخاص باستعراض الملفات لتحميلها و أيضاً نحتاج إلى زر خاص بالتحميل كما يلي :
Code ..


<?
echo "<form method=\"POST\"
action=\"$PHP_SELF?upload=uploading\"
enctype=\"multipart/form-data\">
<input type=file name=file size=30><br><br>
<button name=\"submit\" type=\"submit\">
تحميل</button></form>";
?>





طبعاً في هذا الجزء من الكود بعض الغوض ، لذا سأشرحه .
إستخدمنا المتغيّر PHP_SELF$ ، و هذا المتغيّر مبني داخل لغة PHP ووظيفته إرجـاع رابط السكريبت الحالي . إذن نحن في خانة الـ action سنقوم باسترجـاع الرابط الحالي الذي نعمل عليه ثم نضيف إليه upload=uploading؟ .
حيث أن upload و uploading متغيّرات عادية سأقوم بتعريفها لاحقاً .

لاحظوا إننا في هذا النموذج عرّفنا المتغيّرات التالية :
upload -- uploading -- file






العاطفي غير متواجد حالياً   قديم 05-12-2005, 02:33 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#15 (permalink)  

الدرس : بنـاء لوحة تحكم بالـ Session






العاطفي غير متواجد حالياً   قديم 05-12-2005, 02:34 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#16 (permalink)  

الدرس : بنـاء لوحة تحكم بالـ Session





مقدمة
بسم الله الرحمن الرحيم والصلاة والسلام على اشرف الانبياء والمرسلين أما بعد ، حديثنـا اليوم هو عبـارة عن دارسة لمشروع بناء لوحة تحكم عن طريق الـ Session أو الجلسـات ، إن لم تكن قرأت الدرس الأول فأتمنى قراءته قبل هذه الدرس لتكتمل الصورة ، يمكن أن تجد الدرس الأول من هنا ..

قبل أن أبدأ في شرج الطريقة ، فسافترض بعض الافتراضـات التي سـاقوم بشرح الطريقة بناءً عليها :

1- لدينا قــاعدة بيانات إسمها Loign تحتوي على جدول الأعضـاء authers ، وهذا الجدول يحتوي على حقلين ، الأول هو user وهو خاص باسم المستخدم والآخر هو password وهو بطبيعة الحال خاص بكلمة المرور ، وسنقوم باضافة اسم مستخدم وكلمة مرور مبدئيه وسافترض أن الاسم هو php وكلمة المرور هي 123 ، يمكنك انشاء هذا الجدول واضافة هذه البيانات اليه بسهولة باستخدم الكود التالي :
Code ..


CREATE TABLE authers (
id int(11) NOT NULL auto_increment,
user text NOT NULL,
password text NOT NULL,
email text NOT NULL,
UNIQUE id (id)
);

INSERT INTO authers VALUES ( '1', 'php', '123', 'a@phpvillage.com');






2- اسماء الملفات التي سنستخدمها في هذا الدرس كالتالي :
- login.php لعرض النموذج أو الـ Fourm الخاص بادخال اسم المستخدم وكلمة المرور .
- edit.php لتعديل البيانات الخاصة بالعضو .

والهدف من اقحام ملف لتعديل بيانات العضو هو معرفة طريقة حماية الملفات بحيث لا يقوم باستعراضها الا من قام بعملية الدخول الصحيحة .

في البداية سنتحدث عن الملف login.php ، الذي سيحتوي على النموذج الخاص بادخال إسم المستخدم وكلمة المرور وسيحتوي على عملية المعالجة لتلك البيانات المدخلة ، ولكي نختصر الوقت والجهد في الشرح سأقوم بوضع الكود الخاص بنموذج الإدخال الذي ساستخدمه :
Code ..


<table width=100% dir=rtl border=1 align=center>
<form method=post action=$PHP_SELF>
<tr><td colspan=2><font size=2>المستخدم</font></td></tr>
<tr><td colspan=2><input type=textbox name=user size=13>
</td></tr>
<tr><td colspan=2><font size=2>كلمة المرور</font>
</td></tr>
<tr><td colspan=2><input type=password name=password size=13>
</td></tr>
<tr><td><input type=submit value="دخول">
</td></tr></form></table>






كما هو واضح في هذا النموذج فإن المستخدم مطالب بادخال اسم المستخدم وكلمة المرور ومن ثم الضغط على زر دخول لتنفيذ طلبه ، لكن ما هي الطريقة التي من خلالها يمكن التعامل مع هذا الطلب حسب ما نريد ؟

للاجابة على هذا السؤال نحتاج الى أمرين ، الأول هو معرفة ما هي حالة الشخص المتصفح ، هل قام بعملية تسجيل الدخول فنعرض له لوحة التحكم أم لم يقم بتسجيل الدخول فنعرض له النموذج ، وفي كلتا الحالين نحتاج أن نتعرف على متغير الحالة session variable الذي سنقوم بتسجيله في حالة دخول المستخدم باسم صحيح وبكلمة مرور صحيحة وبالتالي إذا تم تسجيل المتغير فإن لوحة التحكم ستظهر أما اذا لم يتم تسجيله فلن يتم ذلك وساشرح هذا بالتفصيل في هذا الدرس .


كود الملف login.php

الكود الخاص بالملف login.php هو :
Code ..


<?
include("config.php");
if ($o == out) {
session_destroy("userid_");
}

echo "<table width=15% bordercolor=000000 dir=rtl border=1 align=center>";
if (!session_is_registered("userid_")) {
if (!$user2 and !$password2) {
echo "<form method=post action=$PHP_SELF>";
?>
<tr><td colspan=2 bordercolor=FFFFFF align=center>
<font face=Tahoma size=2>المستخدم</font></td></tr>
<tr><td colspan=2 bordercolor=FFFFFF align=center>
<input type=textbox name=user2 size=15>
</td></tr>
<tr><td colspan=2 bordercolor=FFFFFF align=center>
<font face=Tahoma size=2>كلمة المرور</font></td></tr>
<tr><td colspan=2 bordercolor=FFFFFF align=center>
<input type=password name=password2 size=15> </td></tr>
<tr><td bordercolor=FFFFFF align=center><input type=submit value="دخول">
</td></tr></form></table>
<?
}
elseif ($user2 and $password2) {
$check_login_info = mysql_query("select * from authers where
user='$user2' and password='$password2'")
or die (mysql_error());
if (mysql_num_rows($check_login_info) > 0 ) {
$re = mysql_query("select * from authers where user='$user2'");
while ( $r = mysql_fetch_array($re))
{ $userid_ = $r["id"]; }
session_register("userid_");
$user_id = mysql_query("select * from authers where id='$userid_'");
while ($row = mysql_fetch_array($user_id)) {
$username = $row["user"];
}
echo "<table width=15% dir=rtl bordercolor=000000 border=1 align=center>
<tr><td bordercolor=FFFFFF align=center>
<font face=Tahoma size=1>أهلا بـ $username</font></td></tr>
<tr><td bordercolor=FFFFFF align=center>
<a href=edit.php?ids=$userid_>الملف الشخصي</a></td></tr>
<tr><td bordercolor=FFFFFF align=center>
<a href=login.php?o=out>خروج</a></td></tr>";
}
else { echo "<tr><td height=100 bordercolor=FFFFFF align=center>
<font size=2 face=Tahoma>اسم المستخدم وكلمة المرور غير صحيحة</font>
</td></tr></table>"; }
}
}
elseif (session_is_registered("userid_")) {
$user_id = mysql_query("select * from authers where id='$userid_'");
while ($row = mysql_fetch_array($user_id)) {
$username = $row["user"];
}
echo "<table width=15% dir=rtl bordercolor=000000 border=1 align=center>
<tr><td bordercolor=FFFFFF align=center>
<font face=Tahoma size=1>أهلا بـ $username</font></td></tr>
<tr><td bordercolor=FFFFFF align=center>
<a href=edit.php?ids=$userid_>الملف الشخصي</a></td></tr>
<tr><td bordercolor=FFFFFF align=center>
<a href=login.php?o=out>خروج</a></td></tr>";
}
?>






لاحظ أني قمت بادراج ملف آخر في بداية هذا الكود ، وهذا الملف يحتوي على معلومات الإتصـال بقاعدة البيـانات ، يمكنك نسخ هذا الكود من هنا ، قم بحفظه في نفس المجلد الذي سيحوي ملف التحقق من هوية المستخدم .

نعود للكود الذي ذكرته ، قم بنسخه واحفظه في ملف اسمه login.php أو أي اسم آخر ، وقم بتنفيذ الصفحة ، قد تظهر لك عدة رسائل أثناء تجربة الكود خاصة إذا كنت تعمل على جهازك الشخصي كسيرفر ، حتى وأن ظهر نموذج الإدخـال ربما تظهر لك رسائل الخطأ ، إذا صادفتك هذه المشكلة فعليك الذهـاب الى ملف الـ php.ini لديك والبحث عن كلمة Session ستجد سطراً يحتوي على السطر الأول في الكود التالي ، قم بتغييره الى السطر الثاني في الكود .. والكود كما يلي :
Code ..


session.save_path = /tmp
session.save_path = c:\windows\temp






قم بتجربة السكربت مرة أخرى وستجد أن الرسـائل أختفت ! ، وما قمنا به ببسـاطة هو تغيير مجلد حفظ ملفات الجلسـات أو الـ Session الى مجلد موجود فعلاً ، يمكنك تغييره الى أي مجلد ترغب به .




شرح الكود 1

حاليـاً كل شي جـاهز لمحـاولة الدخول بإسم المستخدم وكلمة المرور ، جرب أي أسم يخطر على بالك وأي كلمة مرور تخترعها ، ستجد أن النتيجة عدم الدخول الى لوحة التحكم ، بل كانت النتيجة هو ظهور رسـالة عدم السمـاح بالدخول ، قم بالعودة والدخول بإسم المستخدم الصحيح php وكلمة المرور الصحيحة 123 ستظهر لك لوحة التحكم ، وهنـا ساشرح الكود السابق بشي من التفصيل والمرور على أغلب الأسـطر .

1- البداية بكود تسجيل الخروج التالي :

Code ..


<?
if ($o == out) {
session_destroy("userid_");
}
?>





وهنا يتم التأكد من وجود المتغير $o إذا كان يسـاوي out فسيتم استدعاء الدالة session_destroy وهي تقوم بالغاء الجلسة المسندة اليها ، وهي في مثالنا userid_ ، ببسـاطة هذه الدالة تجعل كأن شيئا لم يحدث ولم يتم تسجيل الدخول من الأسـاس ، ويرجع النموذج الخاص بادخال اسم المستخدم وكلمة المرور بالظهور مجدداً ..
2- الكود التالي هو لعرض نموذج الإدخال :
Code ..


<?
echo "<table width=15% bordercolor=000000 dir=rtl border=1 align=center>";
if (!session_is_registered("userid_")) {
if (!$user2 and !$password2) {
echo "<form method=post action=$PHP_SELF>";
?>
<tr><td colspan=2 bordercolor=FFFFFF align=center>
<font face=Tahoma size=2>المستخدم</font></td></tr>
<tr><td colspan=2 bordercolor=FFFFFF align=center>
<input type=textbox name=user2 size=15>
</td></tr>
<tr><td colspan=2 bordercolor=FFFFFF align=center>
<font face=Tahoma size=2>كلمة المرور</font></td></tr>
<tr><td colspan=2 bordercolor=FFFFFF align=center>
<input type=password name=password2 size=15> </td></tr>
<tr><td bordercolor=FFFFFF align=center><input type=submit value="دخول">
</td></tr></form></table>
<?
}
?>





والمهم هنا هو الشرط if (!session_is_registered("userid_")) { وهو للتأكد من عدم تسجيل الدخول وعدم تسجيل الجلسة userid_ ، إذا تحقق الشرط فسيتم تنفيذ السطر الذي يليه ، وهو يحتوي على شرط آخر هو if (!$user2 and !$password2) { ، وهذا الشرط للتأكد من عدم تنفيذ النموذج ليتم عرضه ، إذا كان المتغيران user2 و password2 غير موجودين وليس لهما أي قيمة فسيتم تنفيذ الأسطر التـالية وهي عرض النموذج .




شرح الكود 2

3- الأسطر التالية هي :
Code ..


<?
elseif ($user2 and $password2) {
$check_login_info = mysql_query("select * from authers where
user='$user2' and password='$password2'")
or die (mysql_error());
if (mysql_num_rows($check_login_info) > 0 ) {
$re = mysql_query("select * from authers where user='$user2'");
while ( $r = mysql_fetch_array($re))
{ $userid_ = $r["id"]; }
session_register("userid_");
$user_id = mysql_query("select * from authers where id='$userid_'");
while ($row = mysql_fetch_array($user_id)) {
$username = $row["user"];
}
echo "<table width=15% dir=rtl bordercolor=000000 border=1 align=center>
<tr><td bordercolor=FFFFFF align=center>
<font face=Tahoma size=1>أهلا بـ $username</font></td></tr>
<tr><td bordercolor=FFFFFF align=center>
<a href=edit.php?ids=$userid_>الملف الشخصي</a></td></tr>
<tr><td bordercolor=FFFFFF align=center>
<a href=login.php?o=out>خروج</a></td></tr>";
}
?>





وهي في حالة عدم تحقق الشرط السابقة ذكره if (!$user2 and !$password2) { ، سيتم الإنتقـال الى المقطع الثاني من الشرط والذي يحتوي على elseif ($user2 and $password2) { ، وسيتم تنفيذ ما جاء بعده إن تحقق الشرط ، وكما هو واضح فإن الشرط يتحقق في حالة إدخال اسم المستخدم وكلمة المرور والضغط على تنفيذ ، سيتم تنفيذ جميع الأسطر التالية والتي فيها التحقق من اسم المستخدم المدخل وكلمة المرور المدخلة والتأكد من صحتهما ، إن كان كذلك سيتم تسجيل الجلسة في السطر :
Code ..


<?
session_register("userid_");
?>





وسيتم عرض لوحة التحكم فيما يلي هذا السطر من أسطر .


تابـــــــــــــــــــــــــــــــــــــــــــــــ ــــــــــــــــــــــع






العاطفي غير متواجد حالياً   قديم 05-12-2005, 02:38 PM
رد مع اقتباس
عضو نشيط جدا
تاريخ التسجيل: Nov 2005-
#17 (permalink)  

شرح الكود 3

4- الكود التالي هو :
Code ..


<?
else { echo "<tr><td height=100 bordercolor=FFFFFF align=center>
<font size=2 face=Tahoma>اسم المستخدم وكلمة المرور غير صحيحة</font>
</td></tr></table>"; }
}
?>





وهو في حالة عدم تحقق الشرط الخاص بالتحقق من اسم المستخدم وكلمة المرور والشرط هو if (mysql_num_rows($check_login_info) > 0 ) { ، بمعنى أن النتائج من قاعدة البيانات هي أكبر من الصفر أي تم إيجاد البيانات ، عند عدم تحقق هذا الشرط ستظهر الرسالة ( اسم المستخدم وكلمة المرور غير صحيحة ) .
5- آخر جزء هو :
Code ..


<?
elseif (session_is_registered("userid_")) {
$user_id = mysql_query("select * from authers where id='$userid_'");
while ($row = mysql_fetch_array($user_id)) {
$username = $row["user"];
}
echo "<table width=15% dir=rtl bordercolor=000000 border=1 align=center>
<tr><td bordercolor=FFFFFF align=center>
<font face=Tahoma size=1>أهلا بـ $username</font></td></tr>
<tr><td bordercolor=FFFFFF align=center>
<a href=edit.php?ids=$userid_>الملف الشخصي</a></td></tr>
<tr><td bordercolor=FFFFFF align=center>
<a href=login.php?o=out>خروج</a></td></tr>";
}
?>





وفيه سيتم إظهار لوحة التحكم إن لم يتحقق أول الشروط وهو :
Code ..


<?
if (!session_is_registered("userid_")) {
?>





وكما قلت فهو شرط خاص بالتحقق من عملية تسجيل الجلسة userid_ .

هنـا نكون قد انتهينا من الجزء الأول من الدرس ، وهو بنـاء لوحة التحكم ، بقي فقط أن نحمي بعض الملفـا