بتـــــاريخ : 2/26/2011 3:43:32 AM
الفــــــــئة
  • الحـــــــــــاسب
  • التعليقات المشاهدات التقييمات
    0 1427 0


    الجزء الأول من درس عمل سكربت

    الناقل : elmasry | العمر :42 | الكاتب الأصلى : feras007 | المصدر : www.arabteam2000-forum.com

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

    السلام عليكم :

    في الحقيقة قررت أن أبدأ بكتابة سلسلة من الدروس التطبيقية في لغة الـ PHP واسئل الله أن يوفقني ! واعتقد أن طريقة الدروس التطبيقية هي الأفضل ! لأنها تثبت في ذهن الطالب الأكواد , أنا لست محترفاً في اللغة إنما أنا طالب مثلي مثلكم ولكن كما يُقال الإنسان يتعلم عندما يعلم الأخرين ! لذا أحببت أن أساعد كل المبتدئين في لغة الـ PHP عن طريق هذا الدرس التطبيقي .
    في هذا الدرس سنتعلم برمجة سكريبت يقوم من خلاله الأدمن بإدراج مواضيع ويقوم الزوار بكتابة ردودهم ! يعني تقريباً مثل فكرة المنتديات ولكن بشكل مبسط , والهدف من هذه الدروس كما قلت تعلم الأكواد وتكوين فكرة الكود في رأسك المبرمج قبل تطبيقه .
    ماسنقوم ببرمجته في هذا السكريبت :
    1- ملف install متعدد الصفحات .
    2- ملف خاص للأدمن يكون كلوحة تحكم .
    3- ملف يعرض المواضيع .
    4- ملف الردود .
    هذا كان استعراضاً سريعاً لما سنقوم ببرمجته والآن سأبدأ باسم الله الرحمن الرحيم :
    كما تعلمون في البداية يجب علينا برمجة ملف الـ install ولكن قبل ملف الــ install يجب أن يكون هناك ملف يحتوي على معلومات قاعدة البيانات والذي يُدعى config.php , برمجته سهلة جداً ! أو باللغة العامية ليست برمجته بل كتابته سهلة جداً .
    بسم الله الرحمن الرحيم :
    كتابة ملف config.php
    1- نُنشأ في قاعدة البيانات القاعدة الذي نود العمل عليها .
    2- من الأفضل وضع ماسنطبقه في مجلد لوحده .
    3- داخل المجلد نفتح المفكرة ونكتب الكود التالي :

    <?

    $db_host = "localhost"; // هنا نكتب اسم المستضيف وعادةً يكون localhost
    $db_name= "project"; // هناك نكتب اسم قاعدة البيانات
    $db_user= "root"; // هنا نكتب اسم مستخدم اقاعدة البيانات
    $db_pass= "0000"; // هنا نكتب كلمة مرور اسم مستخدم قاعدة البيانات
    $connect = @mysql_connect($db_host,$db_user,$db_pass);
    $select = @mysql_select_db($db_name);
    ?>

    والآن سنشرح الكود الموجود في الأعلى .
    قمنا بتعريق المتغيرات التي تلزمنا للاتصال في قاعدة البيانات !
    حيث
    $db_host = "localhost"; // هنا نكتب اسم المستضيف وعادةً يكون localhost

    وغالباً مايكون localhost .
    أما
    $db_name= "project"; // هنا نكتب اسم قاعدة البيانات

    في المشروع هذا سميتها project
    $db_user= "root"; // هنا نكتب اسم مستخدم اقاعدة البيانات
    $db_pass= "0000"; // هنا نكتب كلمة مرور اسم مستخدم قاعدة البيانات

    هنا عرفنا اسم مستخدم قواعد البيانات وكذلك كلمة المرور , إلى حد الآن اعتقد كل شيء واضح ولا يوجد شيء صعب .
    والآن نشرح هذا الكود :
    $connect = @mysql_connect($db_host,$db_user,$db_pass);
    $select = @mysql_select_db($db_name);

    في الحقيقة هذا الكود يتصل بقاعدة البيانات.
    ولقد وضعته هنا في ملف الــ config لكي لا أكتبه كل مرة في كل صفحة ! فأنا فقط أكتب في كل صفحة
    include ('config.php');

    ويتصل تلقائياً بالقاعدة !
    $connect = @mysql_connect($db_host,$db_user,$db_pass);

    mysql_connect or mysql_pconnect لهما نفس العمل ويمكنك استخدامهما كلاهما ! وتحصل على نفس النتيجة ! ولكنني وضعت @ قبل دالة mysql_connect لكي لا تظهر لا يكتب لي النظام الأخطاء التي قد تواجهني ! وهذه الفكرة ستتوضح لكم في شرح ملف الـ install.php
    أما كود
    $select = @mysql_select_db($db_name);

    فهو يختار قاعدة البيانات التي عرفناها !
    وهكذا يكون انتهي شرح ملف config !
    بعدما كتبت هذا الكود ! احفظ الملف باسم config.php !
    ربما ملف config هو أسهل الملفات ! وإن شاء الله ستكون كل الملفات بالسهولة ذاتها !
    والآن ننتقل لملف الـ install وهي ملف طريقة برمجته طويلة .
    أول شيء نضع هذا الكود :
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
    <CENTER>
    <body bgcolor="#E0DFE3">
    <font face="Tahoma" size="2">

    هذا الكود هو كود HTML وقد وضعته في بداية الصفحة لكي تتم التأثيرات على كل الصفحة وفي جميع المراحل ! المهم شرح الكود هو أول شيء ترميز اللغة العربية ! لكي لا تظهر الحروف العربية بطريقة مشفرة أو بترميز مختلف !
    وكذلك لون الخلفية ! حددناه باللون الرمادي ! وجعلنا كل شيء يكون بالمنتصف والخط بشكل عام سيكون تاهوما ! إلى الآن اعتقد لا مشاكل !! :1power:
    نضيف بعدها الكود التالي :
    <?
    include('config.php');

    if ($_GET['step'] <1)
    {
    echo 'أهلاً وسهلاً بك ';
    echo '<BR>';
    if ($connect){
    echo '<BR><B><FONT COLOR=green>- تم الإتصال بقاعدة البيانات</FONT></BR></B>';
    }else{
    echo '<BR><B><FONT COLOR=red>- هناك خطأ لم يتم الإتصال بقاعدة البيانات</FONT></BR></B>';
    }
    if ($select){
    echo '<BR><B><FONT COLOR=green>- وجد البرنامج قاعدة البيانات المحددة</FONT></BR></B>';
    echo '<BR><B><FONT COLOR=green><a href=install?step=2>اضغط هنا للانتقال للخطوة الثانية</a></FONT></BR></B>';
    }else{
    echo '<BR><B><FONT COLOR=red>- لم يجد البرنامج قاعدة البيانات المحددة</FONT></BR></B>';
    }
    }

    كود طويل صحيح !! لنشرح على مهل !
    include('config.php');

    هنا عملنا تضمين لملف الـ config الذي قمنا ببرمجته مسبقاً لأننا يجب أن نكون متلصين بقاعدة البيانات هنا !
    if ($_GET['step'] <1)
    {

    هنا حددنا أنه إذا كان المتغير step والذي يعني رقم الخطوة أصغر من الرقم واحد فأنه سيعرض لنا الكوود التالي :
    echo 'أهلاً وسهلاً بك ';
    echo '<BR>';

    $_GET ويعني أخذ قيمة المتغير من شريط العنوان ! يعني انت لو طلبت www.....com/install.php
    في هذه الحالة المتغير step أصغر من الواحد ولكن لو طلبت الخطوة الثانية www....com/install.php?step=2
    ستكون قيمة المتغير $_GET['step'] تساوي 2 ! وننتقل لخطوة أخرى !
    المهم نتابع شرح الكود !
    بعدها سيتأكد من أن الإتصال بقواعد البيانات قد تم وأن القاعدة اللي محددينها موجودة ! ولو تم كل هذا يظهر لنا رابط نضغطه لكي ننتقل للخطوة التالية ! وماشرحته هذا كوده
    if ($connect){
    echo '<BR><B><FONT COLOR=green>- تم الإتصال بقاعدة البيانات</FONT></BR></B>';
    }else{
    echo '<BR><B><FONT COLOR=red>- هناك خطأ لم يتم الإتصال بقاعدة البيانات</FONT></BR></B>';
    }
    if ($select){
    echo '<BR><B><FONT COLOR=green>- وجد البرنامج قاعدة البيانات المحددة</FONT></BR></B>';
    echo '<BR><B><FONT COLOR=green><a href=install?step=2>اضغط هنا للانتقال للخطوة الثانية</a></FONT></BR></B>';
    }else{
    echo '<BR><B><FONT COLOR=red>- لم يجد البرنامج قاعدة البيانات المحددة</FONT></BR></B>';
    }
    }

    دائماً عندما يكون لدينا متغير بداخلة كود يقوم بشيء يمكننا التأكد من حدوثه من خلال وضع المتغير بين قوسين !
    يعني
    if ($sql) { echo 'كل شيء تمام ';

    وهنا نقصد لو المتغير sql اشتغل تمام ! اطبع كل شيء تمام !
    أريد التنبيه على شيء أنه في حالة عدم التمكن من الإتصال ستظهر عبارة " هناك خطأ لم يتم الإتصال بقاعدة البيانات" باللون الأحمر دون أي شيء أخر ولكن لو لم نضع في ملف الـ config إشارة @ قبل الدالة mysql_connect لظهرت لنا عبارة من النظام تخبرنا بفشل الإتصال ! وهنا تكمن فائدة إشارة @.
    هنا نكون انتهينا من شرح الخطوة الأولى والآن ننتقل في الخطوة الثانية !
    if ($_GET['step'] == 2)
    {

    هن نخبره أنه لو كانت قيمة المتغير $_GET['step'] تساوي 2 فسيقوم ببعض الأعمال !
    $sql = "CREATE TABLE admin (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    user varchar(50) NOT NULL,
    pass varchar(50) NOT NULL,
    PRIMARY KEY(id)
    )";
    $query = MYSQL_QUERY($sql);
    $sqlt = "CREATE TABLE thread (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    title varchar(25) NOT NULL,
    text longtext NOT NULL,
    date varchar(100) NOT NULL,
    PRIMARY KEY(id)
    )";
    $queryt = MYSQL_QUERY($sqlt);
    $sqlr = "CREATE TABLE reply (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    thread_id INT NOT NULL,
    replier_name varchar(200) NOT NULL,
    reply_date varchar(200) NOT NULL,
    reply_text varchar(200) NOT NULL,
    PRIMARY KEY(id)
    )";
    $queryr = MYSQL_QUERY($sqlr);
    if ($query){
    echo '<BR><B><FONT COLOR=green> تم إنشاء جدول المدير العام بنجاح</FONT></BR></B>';
    }else{
    echo '<BR><B><FONT COLOR=red>هناك خطأ لم يتم إنشاء جدول المدير العام </FONT></BR></B>';
    }
    if ($queryt){
    echo '<BR><B><FONT COLOR=green> تم إنشاء جدول المواضيع بنجاح</FONT></BR></B>';
    }else{
    echo '<BR><B><FONT COLOR=red> هناك خطأ لم يتم إنشاء جدول المواضيع</FONT></BR></B>';
    }
    if ($queryr){
    echo '<BR><B><FONT COLOR=green> تم إنشاء جدول الردود بنجاح</FONT></BR></B>';
    echo '<BR><B><FONT COLOR=green><a href=install?step=3>اضغط هنا للانتقال للخطوة الثالثة</a></FONT></BR></B>';
    }else{
    echo '<BR><B><FONT COLOR=red> هناك خطأ لم يتم إنشاء جدول الردود بنجاح</FONT></BR></B>';
    }
    }

    هذا الكود بأكمله وسأقوم بالشرح على مهل !
    في هذه الخطوة يجب على البرنامج إنشاء ثلاثة جداول ! واحد سيحتوي على معلومات المشرف العام ! والثاني يحتوي على المواضيع ! والثالث يحتوي على الردود !
    $sql = "CREATE TABLE admin (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    user varchar(50) NOT NULL,
    pass varchar(50) NOT NULL,
    PRIMARY KEY(id)
    )";
    $query = MYSQL_QUERY($sql);
    $sqlt = "CREATE TABLE thread (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    title varchar(25) NOT NULL,
    text longtext NOT NULL,
    date varchar(100) NOT NULL,
    PRIMARY KEY(id)
    )";
    $queryt = MYSQL_QUERY($sqlt);
    $sqlr = "CREATE TABLE reply (
    id INT UNSIGNED NOT NULL AUTO_INCREMENT,
    thread_id INT NOT NULL,
    replier_name varchar(200) NOT NULL,
    reply_date varchar(200) NOT NULL,
    reply_text varchar(200) NOT NULL,
    PRIMARY KEY(id)
    )";
    $queryr = MYSQL_QUERY($sqlr);

    استخدمنا دالة
    CREATE TABLE لكي ننشىء الجدول المراد !
    وسأشرح هنا بعض الخاصيات في الحقول
    وتعني هذه الخاصية أن هذا الحقل يجب أن يحتوي فقط على أرقام
    INT

    وتعني هذه الخاصية أنه يجب أن لا يكون الحقل فارغاً
    NOT NULL

    وتعني هذه الخاصية أن قيمة العدد يجب أن لا تكون سالبة !
    UNSIGNED

    AUTO_INCREMENT
    وتعني هذه الخاصية أن التعداد سيكون تلقائي !
    VARCHAR
    وتعني هذه الخاصية أن الحقل يحتوي على أرقام وحروف ! ويمكنك كتابة عدد الأحرف والأرقام بين قوسين (25) كمثال !
    LONGTEXT
    وتعني الحقل سيحتوي على نص طويل
    PRIMARY KEY
    وتعني جعل أحد الحقول هو المفتاح الأساسي في الجدول !
    هكذا شرحنا كل الخصائص الذي استخدمناها لكل حقل من الجدول ! ولكن دالة CREATE TABLE لا تقوم بوظيفتها دون دالة مساعدة ! وهذه الدالة هي mysql_query !
    لذلك قمت بوضع هذه الدالة بعد كل دالة إنشاء لجدول !! ومن ثم تأكدت إذا تم العمل بشكل صحيح فليكتب تم كما في الخطوة الأولى تماماً .
    والآن الخطوة الثالثة لا يوجد فيها شرح كير لأنه عبارة عن نموذج لتسجيل معلومات المشرف العام
    if ($_GET['step'] ==3){

    هنا قلنا له لو كانت قيمة المتغير _GET['step'] تساوي 3 سيقوم بشيء معين !
    echo '
    <form method=POST action=install?step=4>
    <div align=center>
    <table border=1 width=54% id=table1 dir=rtl>
    <tr>
    <td colspan=2>
    <p align=center><font size=2>يُرجى تعبئة معلومات المشرف العام</td>
    </tr>
    <tr>
    <td width=22% align=center><font size=2>اسم المستخدم<font size=2> :</td>
    <td width=61%>

    <p align=center><input type=text name=T1 size=45>
    </td>
    </tr>
    <tr>
    <td width=22% align=center><font size=2>كلمة المرور :</td>
    <td width=61%>
    <p align=center><input type=password name=T2 size=45></td>
    </tr>
    <tr>
    <td width=22% align=center><font size=2>تأكيد كلمة المرور : </td>
    <td width=61%>
    <p align=center><input type=password name=T3 size=45></td>
    </tr>
    </table>
    </div>

    <input type=submit value=تابع name=B1><input type=reset value=مسح الحقول name=B2></p>

    </form>

    ';
    }

    وهذا المتغير يحتوي على فورم رابطه install?step=4
    وفيه مكان لكتابة اسم المشرف العام واسمه T1
    ومكان لكتابة كلمة المرور اسمه T2 ومكان لتأكيد كلمة المرور واسمه T3
    والآن ننتقل للخطوة الرابعة وهي الأخيرة :
    if ($_GET['step'] == 4){
    if (empty($_POST['T1']) or empty($_POST['T2']) or empty($_POST['T3'])){
    echo '<BR><B><FONT COLOR=red> يُرجى تعبئة كافة الحقول </FONT></BR></B>';
    echo '<BR><B><FONT COLOR=green><a href=install?step=3>العودة للخطوة السابقة</a></FONT></BR></B>';
    }
    elseif ($_POST['T2'] != $_POST['T3']){
    echo '<BR><B><FONT COLOR=red> كلمتا المرور غير متطابقتان </FONT></BR></B>';
    echo '<BR><B><FONT COLOR=green><a href=install?step=3>العودة للخطوة السابقة</a></FONT></BR></B>';
    }
    else{
    $check = "select * from admin";
    $cquery = mysql_query($check);
    $num = mysql_num_rows($cquery);
    if ($num > 1){
    echo '<BR><B><FONT COLOR=RED>لا يمكنك التسجيل فهناك مدير عام سابق</FONT></BR></B>';
    }else{
    $user = $_POST['T1'];
    $pass = md5($_POST['T2']);
    $reg = "INSERT INTO admin(id,user,pass) VALUES(NULL,'$user','$pass')";
    $reg_query = MYSQL_QUERY($reg);
    if ($reg_query){
    echo '<BR><B><FONT COLOR=green>تم الستجيل بنجاح ,, يُرجى حذف ملف install.php </FONT></BR></B>';
    echo '<BR><B><FONT COLOR=green><a href=admin.php>الإنتقال للوحة التحكم</a></FONT></BR></B>';
    }else{
    echo '<BR><B><FONT COLOR=RED>لم يتم التسجيل هناك مشكلة</FONT></BR></B>';
    }
    }
    }
    }

    كما كل خطوة ! يأخذ قيمة المتغير step ويطبق المطلوب وهنا المطلوب منه
    التأكد من أن لا تكون الحقول T1 & t2 & T3 فارغة ! وكذلك يجب أن تكون كلمتا المرور متطابقة في الحقل T2 & T3 عن طريق الكود التالي :
    if (empty($_POST['T1']) or empty($_POST['T2']) or empty($_POST['T3'])){
    echo '<BR><B><FONT COLOR=red> يُرجى تعبئة كافة الحقول </FONT></BR></B>';
    echo '<BR><B><FONT COLOR=green><a href=install?step=3>العودة للخطوة السابقة</a></FONT></BR></B>';
    }
    elseif ($_POST['T2'] != $_POST['T3']){
    echo '<BR><B><FONT COLOR=red> كلمتا المرور غير متطابقتان </FONT></BR></B>';
    echo '<BR><B><FONT COLOR=green><a href=install?step=3>العودة للخطوة السابقة</a></FONT></BR></B>';
    }

    ومن ثم إذا لم تتحقق الشروط فوق يقوم بالتحقق من عدم وجود مشرف من خلال هذه الكود :
    else{
    $check = "select * from admin";
    $cquery = mysql_query($check);
    $num = mysql_num_rows($cquery);
    if ($num > 1){
    echo '<BR><B><FONT COLOR=RED>لا يمكنك التسجيل فهناك مدير عام سابق</FONT></BR></B>';

    استخدمنا دالة
    SELECT * FROM admin وتعني اختيار كل الحقول من جدول admin
    ومن ثم استخدمنا دالة mysql_num_rows لعدّها فلو كان العدد أكبر من 0 ! فيعني وجود حقول !! ووجود حقول يعني وجود مشرفين من قبل وبالتالي لا يقبل المتابعة !
    وإذا لم يكون كذلك يقوم بإدخال معلومات المشرف العام لجدول admin من خلال هذه الكود
    }else{
    $user = $_POST['T1'];
    $pass = md5($_POST['T2']);
    $reg = "INSERT INTO admin(id,user,pass) VALUES(NULL,'$user','$pass')";

    فمت بتعريف الحقل الخاص بكلمة المرور على أنه $pass ومن ثم قمت بتشفيره باستخدام md5 لأنه سيتم إدخاله في قواعد البيانات بشكل مشفر وهكذا أفضل !
    واستخدما دالة INSERT TO admin(od,user,pass) وهي الحقول التي أنشأناها في جدول admin
    وقلنا له ادخل القيم التالية عن طريق VALUES(NULL,'$user','$pass') أول فيمة وهي NULL تعود على حقل id الذي حددناه نحن بالأساس بأن يكون العد فيه بشكل تلقائي ! صحيح؟؟ :nice:
    أما المتغير user فعرفناه على أنه حقل كتابة اسم المستخدم ! أما المتغير pass فهو حقل كلمة المرور بعد التشفير !! هذا كل شيء !
    ولكن دالة INSERT TO كدالة CREATE تحتاج لدالة مساعدة وهي دالة mysql_query
    $reg_query = MYSQL_QUERY($reg);

    والآن نقوم كالعادة بالتأكد من حدوث المتغيرات بشكل سليم !
    if ($reg_query){
    echo '<BR><B><FONT COLOR=green>تم الستجيل بنجاح ,, يُرجى حذف ملف install.php </FONT></BR></B>';
    echo '<BR><B><FONT COLOR=green><a href=admin.php>الإنتقال للوحة التحكم</a></FONT></BR></B>';
    }else{
    echo '<BR><B><FONT COLOR=RED>لم يتم التسجيل هناك مشكلة</FONT></BR></B>';
    }
    }
    }
    }


    وبهكذا نكون انتهينا من ملف الــ install ربما طويل بعض الشيء ولكن لو فهمته بشكل جيد الباقي سيكون سخيف !! في الملفات المرفقة ملفي config + install بشكل كامل لكي تقارنو عملكم بعملي !! وهذا كل شيء
    ارجو من الأساتذة المبرمجين تقيم عملي وذكر النقاط السلبية لكي أتعلم منها
    تحياتي
    فراس

    ---
    تم تعديل حجم الخط من قبل الأدارة
     
    ملف مرفق(ملفات)
     
    ملف مرفق  project1.zip (1.85كيلو )

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

    تعليقات الزوار ()