دروس phpلجميع الاعمار

الموضوع في 'منتدى البرامج المشروحة' بواسطة power, بتاريخ ‏28 سبتمبر 2008.

  1. power

    power مشرف سابق بالمنتدى

    إنضم إلينا في:
    ‏19 سبتمبر 2008
    المشاركات:
    179
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    0
    الدرس الاول :
    انشاء دومين فرعي subdomain برمجياً


    كثيرا ما نرى برمجيات وسكريبتات تقوم باعطاء العضو دومين فرعي subdomain باسمه بمجرد اشتراكه بالموقع، كمثال على ذلك مواقع الاستضافة المجانية والبلوجات blogs وما الى ذلك..
    اليوم سنتعلم كيفية تنفيذ هذه الطريقة


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

    مثال عملي:
    انشاء دومين فرعي لكل عضو هنا في المنتدى، يؤدي الى ملفه الشخصي..
    جرب coder.montadaphp.net أو amine.montadaphp.net مثلاً

    الخطوة الأولى: تعديل اعدادات السيرفر:
    انتبه: قبل أن تبدأ خذ نسخة احتياطية من الملفات

    كود PHP:
    /var/named/montadaphp.net.db/usr/local/apache/conf/httpd.conf


    في مكان آمن بالسيرفر

    قم بتنفيذ الأمر التالي في الشل:



    كود PHP:
    pico /usr/local/apache/conf/httpd.conf

    ملحوظة قد يختلف مسار الملف httpd.conf لديك عن هذا المسار
    ويمكنك ايجاده عن طريق طباعة الأمر locate httpd.conf في نافذة الشل

    بعد تنفيذ الأمر السابق سيتم فتح الملف للتحرير في البرنامج الشهير pico
    [​IMG]
    ابحث عن السطر التالي في الملف:



    كود PHP:
    ServerAlias montadaphp.net www.montadaphp.net

    قم باضافة في نهايته *.montadaphp.net
    بحيث يصبح كالتالي:



    كود PHP:
    ServerAlias montadaphp.net www.montadaphp.net *.montadaphp.net

    احفظ الملف واغلقه
    ملحوظة: استبدل montadaphp.net باسم الدومين لك
    قم بنفيذ الأمر التالي في الشل:



    كود PHP:
    pico /var/named/montadaphp.net.db

    سيتم ايضاً فتح نافذة لتحرير ملف الدومين
    أضف السطر التالي الى الملف:



    كود PHP:
    *.montadaphp.net. IN A 66.66.66.66

    واحفظ الملف واغلقه
    وأعد تشغيل السيرفر
    ملحوظة:استبدل montadaphp.net باسم الدومين لك و 66.66.66.66 برقم الآي بي سواء كان مشترك أو مستقل
    بهذا تكون قد انتهت الخطوة الأولى والخاصة باعدادات السيرفر


    الخطوة الثانية: انشاء ملف .htaccess ووضعه في الموقع
    قم بانشاء ملف بالاسم .htaccess وضع فيه المحتويات التالية:


    كود PHP:
    RewriteEngine On
    RewriteCond
    %{HTTP_HOST} !^www
    .
    RewriteCond %{HTTP_HOST} ^(.+).montadaphp.
    net
    RewriteRule
    ^(.*) http:
    //www.montadaphp.net/member.php?username=%1 [R=301,L]


    احفظ الملف


    انتهى
    الآن يمكنك مشاهدة الملف الشخصي لاي عضو عن طريق كتابة اسم العضو كدومين فرعي قبل اسم الدومين
    http://www.montadaphp.net/showthread.php?t=905


    الصورة الرفقة

    [​IMG]


    **************************************************************************

    الدرس الثانى

    نظام تسجيل و التفعيل عن طريق بريد العضو


    في هذا الدرس بإذن الله سنتعلم إنشاء نظام تسجيل و تفعيل العضوية عن طريق بريد المسجل ...

    في هذا الدرس سنحتاج لإنشاء أربعة ملفات و جدولين ...

    الملفات الأربعة ...

    1. signup.php
    2. signup_ac.php
    3. confirmation.php
    4. config.php
    الجدولين ...
    1. temp_members
    2. registered_members
    ماذا سنفعل ؟
    1- عند تسجيل العضو ، يحصل على كود تفعيل عضويته عبر بريده الإلكتروني الذي سجل به ...
    2- نضع بياناته و كود التفعيل في جدول temp_members ، و عند التفعيل نعيد وضع بياناته في جدول registered_members ( بدون كود التفعيل طبعا ) ، و نحذف البيانات من الجدول المؤقت temp_members ...
    3- و بالطبع لن يستقبل المسجل الرسالة إلا إذا كان البريد صحيحا ، و هذا جيدا للتأكد من صلاحية البريد الإلكتروني للمستخدم ...
    4- لن يصبح المسجل مفعلا و بعبارة أخرى عضوا حقيقيا إلا إذا ضغط على كود التفعيل الخاص به ...

    [​IMG]


    الجدول الأول ... temp_members


    كود PHP:
    CREATE TABLE `temp_members` (
    `
    confirm_code` varchar(65) NOT NULL default ''
    ,
    `
    name` varchar(65) NOT NULL default ''
    ,
    `
    email` varchar(65) NOT NULL default ''
    ,
    `
    password` varchar(15) NOT NULL default ''
    ,
    `
    country` varchar(65) NOT NULL default
    ''
    ) ENGINE=MyISAM DEFAULT CHARSET=cp1256
    ;

    الجدول الثاني ... registered_members



    كود PHP:
    CREATE TABLE `registered_members` (
    `
    id` int(4) NOT NULL auto_increment
    ,
    `
    name` varchar(65) NOT NULL default ''
    ,
    `
    email` varchar(65) NOT NULL default ''
    ,
    `
    password` varchar(65) NOT NULL default ''
    ,
    `
    country` varchar(65) NOT NULL default ''
    ,
    PRIMARY KEY (`id
    `)
    )
    ENGINE=MyISAM DEFAULT CHARSET=cp1256 AUTO_INCREMENT=1
    ;


    ملف signup.php ...

    هذا الملف بسيط نقوم بعمل فورم للتسجيل يتكون من الاسم و البريد كلمة المرور و البلد ( بالطبع هذه الحقول للشرح و يمكنك الإضافة و الحذف كما

    تشاء ) ، و ترسل المعلومات إلى الصفحة signup_ac ...

    [​IMG]




    كود PHP:
    <html dir="rtl">
    <
    head
    >
    <
    title>التسجيل</title
    >
    <
    style type="text/css"
    />
    body
    {
    font-family : Tahoma
    ;
    }
    </
    style
    >
    </
    head
    >
    <
    body
    >
    <
    table width="380" border="0" align="center" cellpadding="0" cellspacing="0"
    >
    <
    tr
    >
    <
    td><form name="signup" method="post" action="signup_ac.php"
    >
    <
    table width="100%" border="0" cellspacing="4" cellpadding="0"
    >
    <
    tr
    >
    <
    td colspan="3"><strong>التسجيل</strong></td
    >
    </
    tr
    >
    <
    tr
    >
    <
    td width="106">الاسم</td
    >
    <
    td width="3">:</td
    >
    <
    td width="305"><input name="name" type="text" id="name" size="30"></td
    >
    </
    tr
    >
    <
    tr
    >
    <
    td>البريد الإلكتروني</td
    >
    <
    td>:</td
    >
    <
    td><input name="email" type="text" id="email" size="30"></td
    >
    </
    tr
    >
    <
    tr
    >
    <
    td>كلمة المرور</td
    >
    <
    td>:</td
    >
    <
    td><input name="password" type="password" id="password" size="30"></td
    >
    </
    tr
    >
    <
    tr
    >
    <
    td>البلد</td
    >
    <
    td>:</td
    >
    <
    td><input name="country" type="text" id="country" size="30"></td
    >
    </
    tr
    >
    <
    tr
    >
    <
    td>&nbsp;</td
    >
    <
    td>&nbsp;</td
    >
    <
    td><input type="submit" name="Submit" value="سجل"> &nbsp
    ;
    <
    input type="reset" name="Reset" value="مسح"></td
    >
    </
    tr
    >
    </
    table
    >
    </
    form></td
    >
    </
    tr
    >
    </
    table
    >
    </
    body
    >
    </
    html
    >

    ملف signup_ac.php ...

    في هذه المرحلة ...
    1- ننشأ كود التفعيل ...
    2- نضيف بيانات المستخدم و كود التفعيل إلى الجدول المؤقت ...
    3- نرسل الرسالة برابط التفعيل للمستخدم ...

    [​IMG]


    بعد إذن أخي محمود سوف نستخدم دالتك [​IMG] ...

    الملف ثم بعده الشرح ...

    كود PHP:
    <?
    include('config.php'
    );

    $tbl_name=temp_members
    ;

    function
    rand_string($num_chars
    )
    {
    $chars = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z"
    );
    $string = array_rand($chars, $num_chars
    );
    foreach(
    $string as $s
    )
    {
    $ret .= $chars[$s
    ];
    }
    return
    $ret
    ;
    }

    $confirm_code = rand_string(20
    );

    $name=trim($_POST['name'
    ]);
    $email=trim($_POST['email'
    ]);
    $country=trim($_POST['country'
    ]);

    $sql=
    "INSERT INTO $tbl_name(confirm_code, name, email, password, country)VALUES('$confirm_code', '$name', '$email', '$password',

    '$country')"
    ;
    $result=mysql_query($sql
    );

    if(
    $result
    ){

    $to=$email
    ;
    $subject="كود تفعيل عضويتك"
    ;

    $header="from: By aMINE <g.amine.dz@gmail.com>"
    ;

    $message="رابط تفعيل عضويتك \r\n"
    ;
    $message.="إضغط على هذا الرابط ، ليتم تفعيل عضويتك \r\n"
    ;
    $message.="http://www.YOURWEBSITE.info/confirmation.php?passkey=$confirm_code"
    ;

    $sentmail = mail($to,$subject,$message,$header
    );
    }

    else {
    echo
    "للأسف ، لم يتم تسجيلك ... حاول مجددا"
    ;
    }

    if(
    $sentmail
    ){
    echo
    "لقد تم إرسال رابط تفعيل عضويتك إلى بريدك الإلكتروني"
    ;
    }
    else {
    echo
    "للأسف ، لم يتم إرسال رابط التفعيل إلى بريدك الإلكتروني"
    ;
    }

    ?>

    في هذا السطر ، قمنا بإستدعاء ملف الإتصال بقاعدة البيانات config.php ...



    كود PHP:
    include('config.php');




    تحديد الجدول المؤقت لبيانات المسجلين ...



    كود PHP:
    $tbl_name=temp_members;




    و بإستخدام دالة الأخ محمود قمنا بعمل كود التفعيل ، الذي يتكون من 20 حرف و رقم [​IMG] ...


    كود PHP:
    function rand_string($num_chars)
    {
    $chars = array("1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", à"s", "t", "u", "v", "w", "x", "y", "z"
    );
    $string = array_rand($chars, $num_chars
    );
    foreach(
    $string as $s
    )
    {
    $ret .= $chars[$s
    ];
    }
    return
    $ret
    ;
    }

    $confirm_code = rand_string(20
    );




    أعدنا تعريف البيانات المرسلة عبر الـ POST بإضافة أخي Bruce لإزالة الفراغات من البداية و النهاية ...
    كود PHP:
    $name=trim($_POST['name']);
    $email=trim($_POST['email'
    ]);
    $country=trim($_POST['country'
    ]);




    نقوم بإدخال البيانات في الجدول المؤقت ...


    كود PHP:
    $sql="INSERT INTO $tbl_name(confirm_code, name, email, password, country)VALUES('$confirm_code', '$name', '$email', '$password',

    '$country')"
    ;
    $result=mysql_query($sql
    );




    إذا تم الإدخال ، يتم تجهيز الرسالة ، طبعا يمكنك تغيير محتويات الرسالة و تفاصيلها كما تريد ، و يجب عليك تغيير رابط التفعيل ليتناسب مع رابط صفحةconfirmation.php ...
    كود PHP:
    if($result){

    $to=$email
    ;

    $subject="كود تفعيل عضويتك"
    ;

    $header="from: By aMINE <g.amine.dz@gmail.com>"
    ;

    $message="رابط تفعيل عضويتك \r\n"
    ;
    $message.="إضغط على هذا الرابط ، ليتم تفعيل عضويتك \r\n"
    ;
    $message.="http://www.YOURWEBSITE.info/confirmation.php?passkey=$confirm_code"
    ;

    $sentmail = mail($to,$subject,$message,$header
    );

    }




    إذا لم يتم الإدخال ، تظهر رسالة الإخفاق ...


    كود PHP:
    else {
    echo
    "للأسف ، لم يتم تسجيلك ... حاول مجددا"
    ;
    }




    و هنا نقوم بالإرسال ، فإن نجح تظهر رسالة النجاح و في حالة الإخفاق تظهر رسالة الإخفاق ...
    كود PHP:
    if($sentmail){
    echo
    "لقد تم إرسال رابط تفعيل عضويتك إلى بريدك الإلكتروني"
    ;
    }
    else {
    echo
    "للأسف ، لم يتم إرسال رابط التفعيل إلى بريدك الإلكتروني"
    ;
    }




    ملف confirmation.php ...

    الآن ، و عند فتح المستخدم لبريده سيجد رسالة التفعيل و بها رابط لصفحة confirmation.php مضافا إليه كود التفعيل ...

    في هذه المرحلة ...
    1- نتأكد من كود التفعيل ...
    2- إذا وجد كود التفعيل في جدول temp_members ، ينقل كل حقول المستخدم إلى جدول
    registred_members ...

    [​IMG]

    3- حذف البيانات رفقة كود التفعيل من الجدول المؤقت temp_members ...

    تابع الملف ، ثم الشرح ...
    كود PHP:
    <?
    include('config.php'
    );

    $passkey=$_GET['passkey'
    ];

    $tbl_name1="temp_members"
    ;

    $sql1="SELECT * FROM $tbl_name1 WHERE confirm_code ='$passkey'"
    ;
    $result1=mysql_query($sql1
    );

    if(
    $result1
    ){

    $count=mysql_num_rows($result1
    );

    if(
    $count==1
    ){

    $rows=mysql_fetch_array($result1
    );
    $name=$rows['name'
    ];
    $email=$rows['email'
    ];
    $password=$rows['password'
    ];
    $country=$rows['country'
    ];

    $tbl_name2="registered_members"
    ;

    $sql2="INSERT INTO $tbl_name2(name, email, password, country)VALUES('$name', '$email', '$password', '$country')"
    ;
    $result2=mysql_query($sql2
    );
    }

    else {
    echo
    "كود التفعيل خاطئ"
    ;
    }

    if(
    $result2
    ){

    echo
    "تم تفعيل عضويتك بنجاح"
    ;

    $sql3="DELETE FROM $tbl_name1 WHERE confirm_code = '$passkey'"
    ;
    $result3=mysql_query($sql3
    );

    }

    }
    ?>

    كالعادة ، إستدعاء ملف config.php ...




    كود PHP:
    include('config.php');




    إعادة تعريف كود التفعيل المرسل عبر الـ GET ...



    كود PHP:
    $passkey=$_GET['passkey'];




    تحديد جدول البيانات المؤقتة ...



    كود PHP:
    $tbl_name1="temp_members";




    إستخراج بيانات العضو بحيث أن شرط الإستخراج هو كود التفعيل ...



    كود PHP:
    $sql1="SELECT * FROM $tbl_name1 WHERE confirm_code ='$passkey'";
    $result1=mysql_query($sql1
    );




    إذا وجد نتائج ، يعيد تعريف بيانات العضو في متغيرات جديدة ...


    كود PHP:
    if($result1){

    $count=mysql_num_rows($result1
    );

    if(
    $count==1
    ){

    $rows=mysql_fetch_array($result1
    );
    $name=$rows['name'
    ];
    $email=$rows['email'
    ];
    $password=$rows['password'
    ];
    $country=$rows['country'
    ];

    تعريف جدول الأعضاء المفعلين ...




    كود PHP:
    $tbl_name2="registered_members";




    ينقل بيانات المسجل من الجدول المؤقت إلى جدول الأعضاء المفعلين ...



    كود PHP:
    $sql2="INSERT INTO $tbl_name2(name, email, password, country)VALUES('$name', '$email', '$password', '$country')";
    $result2=mysql_query($sql2
    );



    إذا كان كود التفعيل خاطئ تظهر رسالة الإخفاق ...


    كود PHP:
    else {
    echo
    "كود التفعيل خاطئ"
    ;

    أما إذا تمت الإضافة إلى جدول الأعضاء المفعلين يظهر رسالة النجاح ...

    كود PHP:

    if($result2){

    echo
    "تم تفعيل عضويتك بنجاح"
    ;




    و يتم حذف البيانات رفقة كود التفعيل من الجدول المؤقت temp_members ...


    كود PHP:
    $sql3="DELETE FROM $tbl_name1 WHERE confirm_code = '$passkey'";
    $result3=mysql_query($sql3
    );

    ملف config.php ...

    بالطبع هذا أسهل ملف ...



    كود PHP:
    <?

    $host
    ="localhost";
    // المستضيف
    $username="root";
    // اسم المستخدم
    $password="";
    // كلمة المرور
    $db_name="db";
    // قاعدة البيانات


    // الإتصال بالخادم و تحديد قاعدة البيانات
    mysql_connect("$host", "$username", "$password")or die("لا يمكن الإتصال بالخادم"
    );
    mysql_select_db("$db_name")or die("لا يمكن تحديد قاعدة البيانات"
    );

    ?>

    إنتهى ! ... لتحميل ملفات الدرس بالمرفقات ( ملاحظة تمت إضافة الترميز العربي )... و للتجربة من هنا ...

    المرفقات من هنا

    **************************************

    الدرس الثالث

    التبليغ البريدي لحماية حقوق المبرمج

    اليوم جهزت لكم درس خفيف و مفيد جدا في نفس الوقت لكل مبرمج لتتبع اعماله عبر النت

    و هو عبارة على كود تبليغ بريدي

    1- التبليغ البريدي في حالة تركيب السكريبت على موقع غير مرخص له
    2- التبليغ البريدي في حالة انتهاء مدة ترخيص سكريبت ما

    نبدأ بالاول : - تركيب السكريبت على موقع غير مرخص له
    كود PHP:
    <?php
    //////////////////////////////
    // كود التبليغ البريدي //
    // http://soufcastle.com //
    //////////////////////////
    $rtv = $_SERVER['HTTP_HOST'];
    // دالة استخراج دومين الموقع
    $rtv1 = $_SERVER['REQUEST_URI'];
    // دالة استخراج المسار الحالي للملف المتصفح
    $rtv2 = "localhost";
    // اكتب دومين الموقع بدون www
    $rtv3 = "localhost";
    // اكتب دومين الموقع مع www
    $rtv4 = "localhost";
    // رابط صفحة معلومات المبرمج و طرق الاتصال به
    $mailgust = "PHPPHP@gmail.com";
    // البريد الالكتروني للمبرمج
    ///////////////////////////////////////////////////////////////////////
    if ( getenv('HTTP_HOST') != "$rtv2" AND getenv('HTTP_HOST') != "$rtv3"
    )
    {
    // $subject عنوان الرسالة البريدية
    $subject = "تم تركيب السكربت من موقع "
    ;
    // $message نص الرسالة
    $message =
    "<p align='center'><b><font color='#FF0000'>تم تركيب نسخة من السكريبت على هذا
    الموقع </font></b></p>
    <p align='center'><a href='$rtv'>$rtv</a></p>
    <p align='center'><b><font color='#FF0000'>و ذالك على المسار التالي</font></b></p>
    <p align='center'>$rtv<span lang='fr'> $rtv1</span></p>
    "
    ;
    // دالة ارسال البريد
    $headers = "From: "."{$mailscript}\r\n"."Reply-To: "."{$mailscript}\r\n"."X-Mailer: PHP/".phpversion
    ( );
    @
    mail( $mailgust, $subject, $message, $headers
    );
    // نص رسالة التحذير التي تظهر لمنتهك الحقوق
    die(
    "<p align='center'><b><font color='#FF0000'><span lang='ar-dz'>اتقي الله فيما
    تفعل</span></font></b></p>
    <p align='center'><font color='#FF0000'><b>أنت تستعمل نسخة غير مرخصة من هذا
    البرنامج يجب عليك الحصول على ترخيص من المبرمج </b></font></p>
    <p align='center'><font color='#FF0000'><b>للاتصال بالمبرمج :
    <a target='_blank' href='$rtv4'>$rtv4</a></b></font></p>
    "
    );
    }
    ?>

    و الكود الثاني : - عند انتهاء مدة الترخيص

    كود PHP:
    <?php
    //////////////////////////////
    // كود التبليغ البريدي //
    // http://soufcastle.com //
    //////////////////////////
    $rtv = $_SERVER['HTTP_HOST'];
    // دالة استخراج دومين الموقع
    $rtv1 = $_SERVER['REQUEST_URI'];
    // دالة استخراج المسار الحالي للملف المتصفح
    $rtv4 = "localhost";
    // رابط صفحة معلومات المبرمج و طرق الاتصال به
    $mailgust = "PHPPHP@gmail.com";
    // البريد الالكتروني للمبرمج
    $timestamp = mktime($timestamp);
    // timestampاستخراج التارخ الحالي عى شكل
    $timestamp1 = mktime(0, 0, 0, 12, 20, 2008);
    // تاريخ انتهاء صلاحية الاستعمال
    if ( $timestamp > $timestamp1
    )
    {
    // $subject عنوان الرسالة البريدية
    $subject = "تم تركيب السكربت من موقع "
    ;
    // $message نص الرسالة
    $message =
    "<p align='center'><b><font color='#FF0000'>تم تركيب نسخة من السكريبت على هذا
    الموقع </font></b></p>
    <p align='center'><a href='$rtv'>$rtv</a></p>
    <p align='center'><b><font color='#FF0000'>و ذالك على المسار التالي</font></b></p>
    <p align='center'>$rtv<span lang='fr'> $rtv1</span></p>
    "
    ;
    // دالة ارسال البريد
    $headers = "From: "."{$mailscript}\r\n"."Reply-To: "."{$mailscript}\r\n"."X-Mailer: PHP/".phpversion
    ( );
    @
    mail( $mailgust, $subject, $message, $headers
    );
    // نص رسالة التحذير التي تظهر لمنتهك الحقوق
    die(
    "<p align='center'><b><font color='#FF0000'><span lang='ar-dz'>اتقي الله فيما
    تفعل</span></font></b></p>
    <p align='center'><font color='#FF0000'><b>أنت تستعمل نسخة غير مرخصة من هذا
    البرنامج يجب عليك الحصول على ترخيص من المبرمج </b></font></p>
    <p align='center'><font color='#FF0000'><b>للاتصال بالمبرمج :
    <a target='_blank' href='$rtv4'>$rtv4</a></b></font></p>
    "
    );
    }
    ?>

    الشرح موضح مع الكود

    هذه فكرة مبدئية عن عمل اكواد التبليغ و يمكن تطويرها كحفظ المعلومات في قاعدة بيانات و ما الى ذالك

    اتمنى من العزيز القدير اني وفقت في شرح العملية بطريقة يسيرة
    و الحمد لله رب العالمين

    ======================


    الدرس الرابع
    اضافة حقوق موقعك لآلاف الصور برمجياً

    درس اليوم في التعامل مع الصور، وهو عن كيفية اضافة حقوق موقعك أو اي نص تريده الى اي كمية من الصور..
    في الواقع لن يتم اضافة الحقوق الى الصور فعليا ولكنا سنقوم بطباعتها فوق الصورة عن طريق الخاصية mod_rewrite فكما سترى ستظل الصور كما هي عند استعراضها من FTP ولكن ستظهر الحقوق فقط للزوار او لاي شخص تريده..

    متطلبات الدرس:
    تحتاج الى وجود خاصية mod_rewrite + مكتبة الصور GD 2 على الأقل وهي اشياء متوافرة في أي استضافة تدعم PHP


    الخطوة الأولى:
    اضافة الكود التالي الى ملف .htaccess ورفعه الى مجلد الصور

    كود PHP:
    # .htaccess
    RewriteEngine On
    RewriteCond
    %{REQUEST_FILENAME} -
    f

    RewriteRule
    .(gif|jpeg|jpg|png)$ watermark.php [QSA,NC
    ]

    الخطوة الثانية:
    اضافة الكود التالي الى ملف watermark.php ورفعه الى مجلد الصور:


    كود PHP:
    <?php
    // watermark.php

    // Path the the requested file
    $path = $_SERVER['DOCUMENT_ROOT'].$_SERVER['REQUEST_URI'
    ];

    // Load the requested image
    $image = imagecreatefromstring(file_get_contents($path
    ));

    $w = imagesx($image
    );
    $h = imagesy($image
    );

    // Load the watermark image
    $watermark = imagecreatefrompng('watermark.png'
    );
    $ww = imagesx($watermark
    );
    $wh = imagesy($watermark
    );

    // Merge watermark upon the original image
    imagecopy($image, $watermark, $w-$ww, $h-$wh, 0, 0, $ww, $wh
    );

    // Send the image
    header('Content-type: image/jpeg'
    );
    imagejpeg($image
    );
    exit();
    ?>

    الخطوة الثالثة:
    رفع ملف بالاسم watermark.png يحتوي على العلامة المائية او حقوق الموقع (ويفضل أن تون خلفيته شفافة لكي يعطي مظهرا اجمل)

    الخطوة الرابعة:
    الذهاب الى عنوان أي صورة بالمتصفح لتجد الحقوق قد تم طباعتها عليها

    أمثلة عملية:
    http://www.montadaphp.net/lessons/wa...ng/nature1.jpg
    http://www.montadaphp.net/lessons/wa...ng/nature2.jpg
    http://www.montadaphp.net/lessons/wa...ng/nature3.jpg


    لتحميل المثال كاملاً بالمرفقات


    من درس: Watermarking images with PHP
    **************************************

    الدرس الخامس

    تصدير قاعدة البيانات PHP

    في هذا الدرس سوف نتعلم برمجة سكريبت يقوم بحفظ قاعدة البيانات في صورة ملف نصي بالامتداد .sql بحيث يتم حفظ قاعدة البيانات في صورة استعلامات يمكن اعادة تركيبها ببساطة في لوحة تحكم اي موقع أو سكريبت PHPmyAdmin

    مكونات السكريبت:
    الملف list.php >> وظيفته طباعة قائمة للجداول الموجودة داخل قاعدة البيانات يمكن الاختيار منها.
    الملف export.php >> وظيفته حفظ الجداول التي تم اختيارها في الملف السابق في صورة ملف .sql
    الملف config.php >> فيه يتم حفظ معلومات قاعدة البيانات المطلوب حفظها.

    مثال للسكريبت:
    http://www.montadaphp.net/lessons/db-backup/list.php

    الكود:
    الملف list.php

    كود PHP:
    <?
    // سكريبت حفظ قاعدة البيانات
    // جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
    // www.montadaphp.net
    // رجاء عدم ازالة هذه الحقوق أبدا
    ?>
    <html dir="rtl" lang="ar-sa">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1256" />
    <script language="JavaScript">
    function checkAll(form){
    for (var i = 0; i < form.elements.length; i++){
    eval("form.elements[" + i + "].checked = form.elements[0].checked");
    }
    }
    </script>
    </head>
    <body>

    <?
    require("config.php"
    );
    $tables = @mysql_query("SHOW TABLE STATUS");
    //عرض معلومات عن الجداول الموجودة في قاعدة البيانات
    ?>

    <form name="form1" method="post" action="export.php"/>
    <table width="80%" cellpadding="5px" border="1" style="border-collapse: collapse" bordercolor="#0B4250">
    <tr><td colspan="5">تحميل نسخة احتياطية من قاعدة البيانات</td></tr>
    <tr><td colspan="5" style="font-size:8pt;">اختر الجداول التي تريد تضمينها في النسخة الاحتياطية ومن ثم اضغط على تحميل</td></tr>
    <tr><td class="table_sub">الجدول</td><td class="table_sub">المساحة</td><td><input type="checkbox" name="check_all" checked="checked" onClick="checkAll(this.form)"/></td></tr>
    <?
    while($table = @mysql_fetch_array($tables
    ))
    {
    $size = round($table['Data_length']/1024, 2);
    // ايجاد حجم الجدول بالكيلوبايت
    echo "<tr><td width=\"20%\">$table[Name]</td><td width=\"65%\">$size كيلوبايت</td><td width=\"5%\"><input type=\"checkbox\" name=\"check[]\" value=\"$table[Name]\" checked=\"checked\" /></td></tr>"
    ;
    }
    ?>
    <tr><td colspan="5" class="table_header"><center><input type="submit" class="button" name="submit" value="تحميل" /></center></td></tr>
    </table></form>

    </body>
    </html>
    <?
    // سكريبت حفظ قاعدة البيانات
    // جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
    // www.montadaphp.net
    // رجاء عدم ازالة هذه الحقوق أبدا
    ?>

    الملف export.php

    كود PHP:
    <?
    // سكريبت حفظ قاعدة البيانات
    // جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
    // www.montadaphp.net
    // رجاء عدم ازالة هذه الحقوق أبداً
    require("config.php"
    );

    $tables = $_POST['check'
    ];
    $outta = ""
    ;
    foreach(
    $tables as $table
    )
    {
    $query = @mysql_query("SHOW CREATE TABLE ". $table);
    //الاستعلام عن كود انشاء الجدول
    $que = @mysql_fetch_array($query
    );
    $outta .= $que['Create Table'] . "\r\n";
    // طباعة كود انشاء الجدول
    $query2 = @mysql_query("SELECT * FROM `$que[Table]`");
    // ايجاد جميع الصفوف في الجدول
    while($result = @mysql_fetch_array($query2
    ))
    {
    while(
    $res = current($result
    ))
    {
    $fields[] .= "`".key($result)."`"
    ;
    $values[] .= "'$res'"
    ;
    next($result
    );
    }
    $fields = join(", ", $fields
    );
    $values = join(", ", $values
    );
    $q = "INSERT INTO `$que[Table]` ($fields) VALUES ($values);"
    ;
    $outta .= $q . "\r\n"
    ;
    unset(
    $fields
    );
    unset(
    $values
    );
    }
    }
    header("Content-length: " . strlen($outta
    ));
    header("Content-type: text/plain"
    );
    header("Content-Disposition: attachment; filename=$db.sql"
    );
    echo
    $outta
    ;
    exit;
    // سكريبت حفظ قاعدة البيانات
    // جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
    // www.montadaphp.net
    // رجاء عدم ازالة هذه الحقوق أبداً
    ?>

    الملف config.php

    كود PHP:
    <?
    // سكريبت حفظ قاعدة البيانات
    // جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
    // www.montadaphp.net
    // رجاء عدم ازالة هذه الحقوق أبداً

    $server = "localhost";
    // سيرفر قاعدة البيانات
    $username = "root";
    // اسم المستخدم لقاعدة البيانات
    $pass = "";
    // كلمة المرور لقاعدة البيانات
    $db = "dbname";
    // اسم قاعدة البيانات

    // لا تقم بالتعديل تحت هذا السطر
    @mysql_connect($server, $username, $pass
    );
    @
    mysql_select_db($db
    );

    // سكريبت حفظ قاعدة البيانات
    // جميع الحقوق محفوظة لمبرمج السكريبت coder@montadaphp.net
    // www.montadaphp.net
    // رجاء عدم ازالة هذه الحقوق أبداً
    ?>

    أخيراً فيمكنك استخدام السكريبت سواء استخدام شخصي او تجاري او نشره كيفما تريد
    بشرط واحد وهو الاحتفاظ بالحقوق المكتوبة داخل الكود

    تحياتي
    *******************************

    الدرس السادس

    الـ RSS باستخدام قاعدة البيانات


    درسنا اليوم طريقة عمل ملف خلاصة الموقع (RSS) باستخدام قاعدة البيانات (MySQL) ...

    قد يكون هذا سهلا لو أردنا عمله بامتداد PHP و لكن أكبر مشكلة هي لو أردنا إمتداد ملف الـ RSS بـ XML ...

    قد يعتبر الأمر بعد هذا الكلام مستحيلا ، لكن لا تقلق فلا مستحيل مع البرمجة [​IMG] ...



    نبدأ على بركة الله ...


    أولا نحن نحتاج لتعديل ملف .htaccess ، بإضافة هذا السطر فقط ...


    كود PHP:
    AddType application/x-httpd-php .xml

    و بهذا جعلنا كل ملف XML يعمل كملف PHP ...

    لا تقتصر هذا على ملفي PHP و XML فقط ، بل يمكنك إستخدام هذه الطريقة مثلا لتحويل ملفات الـ HTML إلى PHP ...

    ثانيا نقوم بعمل ملف XML عادي ( اي بامتداد XML ) ، و نكتب أول سطر ...


    كود PHP:
    <? header('Content-type: text/xml'); ?>

    لقد إستخدمنا هنا وسم PHP ، و هذا لأننا جعلنا بالأعلى كل ملف XML يعمل كملف PHP ...

    و الآتي هو أهم ما يمكن وضعه بالأعلى ( للعلم يمكنك وضع أوسمة أخرى ) ...


    كود PHP:
    <rss version="2.0">
    <
    channel
    >
    <
    title>aLM3RiFa</title
    >
    <
    description>...</description
    >
    <
    link>http:
    //www.alm3rifa.info/</link>

    السطر الأول به تعريف لنسخة الـ RSS ...
    السطر الثاني إفتتاح للعمل ...
    السطر الثالث هو عنوان الموقع و أسفل منه وصف للموقع و أسفله رابط الموقع ...

    الآن إعدادات الإتصال بقاعدة البيانات ، يمكنك إستدعاءه بالدالة INCLUDE أو REQUIRE إن كنت تستخدم ملف إعدادات عام للموقع ( مثل CONFIG.PHP )

    كود PHP:
    <?
    $dbhost
    = 'localhost'
    ;
    $dbuname = 'root'
    ;
    $dbpw = ''
    ;
    $dbname = 'rss'
    ;

    $conn = @mysql_connect($dbhost ,$dbuname ,$dbpw ) or die('error'
    );
    mysql_select_db($dbname ,$conn) or die('error');


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


    كود PHP:
    $query=mysql_query("SELECT `id`, `title`, `content` FROM topics ORDER BY `id` DESC LIMIT 0,5");
    while(
    $result = mysql_fetch_array($query
    )){
    ?>


    الجدول المستخدم ...

    كود PHP:
    CREATE TABLE `topics` (
    `
    id` int(11) NOT NULL auto_increment
    ,
    `
    title` text collate utf8_unicode_ci NOT NULL
    ,
    `
    content` text collate utf8_unicode_ci NOT NULL
    ,
    PRIMARY KEY (`id
    `)
    )
    ENGINE=MyISAM DEFAULT
    AUTO_INCREMENT

    تفصيل هذا الإستعلام : إستخدمت في هذا الدرس جدول مواضيع به ثلاث حقول ( المعرف ، العنوان ، المحتوى ) بحيث أن الإستخراج يكون لخمس

    آخر مواضيع ، ثم نضع النتيجة في مصفوفة عبر الدالة MYSQL_FETCH_ARRAY و في حلقة تكرار ...

    الآن نضع هذا الكود ...


    كود PHP:
    <item>
    <title><?=htmlentities(strip_tags($result['title'])); ?></title>
    <description> <?=htmlentities(substr($result['content'],0,60));?></description>
    <link>http://www.alm3rifa.info/?topic=<?=$result['id'];?></link>
    </item>
    <? } ?>

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

    ********************************

    الدرس السابع

    درس اضافة خبر + صورة مرفقه مع تلك الخبر


    هذا درس عملته خصيصاً للأخوان المبتدئين في لغة الــ php

    مضمون الدرس هو كالتالي :

    راح نعمل فورم لإضافة :
    1- عنوان الخبر title
    2- الخبر text
    3- صورة مرفقه مع الخبر وسوف يتم تخزين رابط كل صورة على حدا في مجلد راح نسميه upload يعني لازم تعمل مجلد وتسميه upload

    اولاً ازرع هذا الجدول في قاعدة بياناتك
    كود PHP:
    CREATE TABLE `news` (
    `
    id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY
    ,
    `
    title` VARCHAR( 99 ) NOT NULL
    ,
    `
    text` VARCHAR( 255 ) NOT NULL
    ,
    `
    catimage` VARCHAR( 99 ) NOT NULL
    ,
    `
    path` VARCHAR( 99 )
    NOT NULL
    ) ENGINE = MYISAM
    ;

    والآن راح نسرد الكود لوضع (العنوان + الخبر + الصورة المرفقه مع الخبر) وابيكم اي شيء فيه صعوبة عليكم لازم تسألون عنه

    بسم الله نبدء (هذا الملف سمه news)
    كود PHP:
    <?php

    /** ########################
    شرح بوصالح
    درس اضافة خبر وصورة
    منتديات تصميم التعليمية
    www.tsmim.com/vb
    // هنا الجدول كامل
    CREATE TABLE `news` (
    `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `title` VARCHAR( 99 ) NOT NULL ,
    `text` VARCHAR( 255 ) NOT NULL ,
    `catimage` VARCHAR( 99 ) NOT NULL ,
    `path` VARCHAR( 99 ) NOT NULL
    ) ENGINE = MYISAM ;
    ######################## */

    IF ($action=="add"
    ){
    if (
    $_SERVER["REQUEST_METHOD"]=="POST"
    )
    {

    /** هنا راح نستقبل البيانات المرسلة من الاستماره **/
    $title = addslashes($_POST['title'
    ]);
    $title = trim($_POST['title'
    ]);
    $text = addslashes($_POST['message'
    ]);
    $text = trim($text
    );

    /** تحويل اسم الصورة الى متغير **/
    $file_name = $HTTP_POST_FILES['image']['name'
    ];

    /** عمل راندم لأسم جديد يتكون من اربع حروف **/
    $random_digit=rand(0000,9999
    );

    /** هنا سوف يتم عمل متغير جديد لأسم الصورة بعد اعادة تسميتها **/
    $new_file_name=$random_digit.$file_name
    ;

    //هنا سوف نتحقق من كتابة جميع الحقول
    if ($title =="" || $text =="" || $file_name ==""
    ) {
    echo
    "<BR><BR><BR><center><a href='javascript:history.back()'>أحد الحقول فارغ عد للخلف</a><BR><BR><BR>"
    ;


    }else{

    /** خنا سوف نحدد مسار تخزين الملف **/
    include("config.php"
    );
    $path= "upload/".$new_file_name
    ;
    if(
    $image !=none
    )
    {
    if(
    copy($HTTP_POST_FILES['image']['tmp_name'], $path
    ))
    {

    /** هنا سوف نعلم ادخال لأسم الصورة والمسار **/
    $catimage = $new_file_name;
    // اسم الصورة


    $query = @mysql_query ("INSERT INTO news (title,text,catimage,path) VALUES ('$title','$text','$catimage','$path')") or die ("error query"
    );

    if(
    $query
    ){
    echo
    "<BR>"
    ;
    echo
    "<CENTER><B>تم اضافة الخبر بنجاح "
    ;
    echo
    "<META HTTP-EQUIV='Refresh' CONTENT='1;URL=news.php'>"
    ;
    echo
    "<BR>"
    ;
    }else{
    echo
    "<BR>للأسف لم يتم ادخال المعلومات الى الجدول"
    ;

    EXIT;
    }
    }
    }
    }
    }

    }else{
    echo
    '
    <form method="POST" enctype="multipart/form-data" action="news.php?action=add" dir="rtl">
    <div align="center">
    <table border="1" cellspacing="1" width="450" dir="rtl" id="table1" bordercolorlight="#C0C0C0" bordercolordark="#C0C0C0">
    <tr>
    <td class="bigfont" width="100" align="center"><span lang="ar-sa">
    عنوان الخبر</span></td>
    <td>

    <input type="text" name="title" id="title" size="20">

    </td>
    </tr>
    <tr>
    <td class="bigfont" width="100" align="center"><span lang="ar-sa">
    الخبر</span></td>
    <td>

    <textarea rows="9" name="message" id="message" cols="29"></textarea></td>
    </tr>
    <tr>
    <td class="bigfont" width="100" align="center">صورة مع الخبر</td>
    <td>

    <input type="file" name="image" id="image" size="20">

    </td>
    </tr>
    </table>
    </div>
    <p align="center"><BR>
    <input type="submit" value="اعتمد" name="B1">
    <input type="reset" value="مسح" name="B2"></p>
    </form>'
    ;

    }

    والآن راح نتعلم كيف نعمل صفحة لعرض كل الاخبار المدخلة في جدولنا news وسم هذه الصفحة show_news
    كود PHP:
    <?php

    /** ########################
    شرح بوصالح
    درس اضافة خبر وصورة
    منتديات تصميم التعليمية
    www.tsmim.com/vb
    // هنا الجدول كامل
    CREATE TABLE `news` (
    `id` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `title` VARCHAR( 99 ) NOT NULL ,
    `text` VARCHAR( 255 ) NOT NULL ,
    `catimage` VARCHAR( 99 ) NOT NULL ,
    `path` VARCHAR( 99 ) NOT NULL
    ) ENGINE = MYISAM ;
    ######################## */

    include("config.php"
    );

    $Sql = mysql_query("SELECT * FROM news")or die ("Query failed"
    );

    /** هنا نعمل جرد لمحتوى جدول الاخبار **/
    $news = mysql_num_rows($Sql
    );

    if(
    $news == 0
    ){
    echo
    "<div class='smallfont' align='center'>لا يوجد اي خبر في قاعدة البيانات.</div>"
    ;
    }else{

    while (
    $Row = @mysql_fetch_array($Sql
    )){


    echo
    "

    <div align='center'>
    <table border='0' cellpadding='0' cellspacing='0' width='98%' dir='rtl' id='table1'>
    <tr>
    <td>
    <table border='0' cellpadding='0' cellspacing='0' width='100%' dir='rtl' id='table2'>
    <tr>
    <td valign='top'>
    <table border='0' cellpadding='0' cellspacing='0' width='100%' dir='rtl' id='table3'>
    <tr>
    <td valign='top'>
    <p align='center'>
    <img border='0' src='$Row[path]' alt='$Row[title]'>
    </td>
    </tr>
    <tr>
    <td valign='top' align='center'>$Row[title]</td>
    </tr>
    <tr>
    <td valign='top' align='center'>$Row[text]</td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    </td>
    </tr>
    </table>
    </div>




    "
    ;

    }
    }
    mysql_close
    ();
    ?>

    واي استفسار حول الدرس انا حاضر للجميع


    *****************************************

    الدرس الثامن

    6 دوال مميزة



    هذا الدرس عبارة عن 6 دوال مميزة جدا ..

    نبدأ في شرح الدرس:

    1. الدالة الاولى ..

    function_exists

    وهذه الدالة رائعة جدا وهي للتحقق من الدالة موجودة ام يبدأ في انشاءها

    فلو فرضنا ان لدينا دالة التالية

    File1.php



    كود PHP:
    <?php

    function ALBANNER
    ()
    {
    echo
    "THIS IS ALBANNER FUNCTION"
    ;
    }

    ?>

    فإذا فرضنا انني استدعيت الدالة الاولى في ملف ما مثلا

    File2.php

    كود PHP:
    <?php

    include("File1.php"
    );

    function
    ALBANNER
    ()
    {
    echo
    "THIS IS ALBANNER FUNCTION"
    ;
    }

    ?>

    هنا سوف يظهر لنا خطأ في الملف ان الدالة متكررة مرتين ؟
    والحل : ..

    كود PHP:
    <?php

    include("File1.php"
    );

    if(!
    function_exists("ALBANNER"
    ))
    {
    // إذا الدالة غير موجودة
    echo "This function ALBANNER doesn't Exists"
    ;
    }

    ?>

    ===========================
    2. دالة عرض قواعد البيانات

    mysql_list_dbs();

    وهي لعرض قواعد البيانات الموجودة في موقعك

    كود PHP:
    <?php

    // الاتصال بقاعدة البيانات
    $albanner = @mysql_connect("localhost", "root", "password"
    )
    or die(
    "لا يمكن الاتصال بقاعدة البيانات"
    );

    // نختار قواعد البيانات الموجودة في الاستضافة لموقعي
    $myDatabases = mysql_list_dbs($albanner
    );

    //عداد ولعرض قواعد البيانات في موقعي
    $i = 0
    ;
    while(
    $row = mysql_fetch_object($myDatabases
    ))
    {
    echo ++
    $i . ". " . $row->Database . ""
    ;
    }

    ?>

    سوف يظهر كالتالي:
    1. albanner_link
    2. albanner_ads
    3. albanner_shop
    4. albanner_talk
    وهكذا ...

    =====================================
    3. دالة لتفاصيل العنوان لل URL

    parse_url();

    كود PHP:
    <?php

    $myDomain
    = parse_url("http://www.devarticles.com/?param1=blah#bottom"
    );

    echo
    "Domain: " . $myDomain["host"] . ""
    ;
    echo
    "Query String: " . $myDomain["query"] . ""
    ;
    echo
    "Anchor: " . $myDomain["fragment"] . ""
    ;

    ?>

    ======================================

    4. لمعرفة نوع الصورة بالهيدر

    exif_imagetype();

    هنا نستخدم الدالة الاولى في معرفة هل هذه الدالة موجودة في المكتبة او لا
    وبعد ذلك نرفع الصورة

    كود PHP:
    <?php

    //للتأكد هل الدالة موجودة في المكتبة الصور ام لا
    if(function_exists("exif_imagetype"
    ))
    {
    // هنا سوف يختبر نوعية الصورة هل موجودة في مكتبة الصور كتصريح
    echo exif_imagetype("/pics/bounty.gif"
    );

    }else{

    // إذا لم تحتوي على الصورة على تعريف في المكتبة

    echo "You don't have the GD image library installed"
    ;
    }

    ?>

    ===================================

    5.دالة قراءة الملفات المضغوطة

    zip_open();



    كود PHP:
    <?php

    $zip
    = zip_open("/myfiles/file.zip"
    );

    while(
    $zipFile = zip_read($zip
    ))
    {
    echo
    "Filename: " . zip_entry_name($zipFile) . ""
    ;
    echo
    "Compressed Size: " . zip_entry_compresedsize($zipFile) . ""
    ;
    echo
    "Real Size: " . zip_entry_filesize($zilFile) . ""
    ;
    }

    ?>

    سوف يعطيك التالي:
    - اسم الملف المضغوط
    - حجمه بعد الضغط
    - حجمه قبل الضغط

    ========================================

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

    set_error_handler();

    كود PHP:
    <?php

    // الدالة بداخلها - رقم الخطأ، اسم الخطأ، الملف ، السطر ، المحتوى
    function my_error_handler ($errno, $errstr, $errfile, $errline, $errcontent
    )
    {
    echo
    "<font color='red'><b>An Error Occured!</b></font>"
    ;
    echo
    "<b>Error Number:</b> $errno"
    ;
    echo
    "<b>Error Description:</b> $errstr"
    ;
    echo
    "<b>Error In File:</b> $errfile"
    ;
    echo
    "<b>Error On Line:</b> $errline"
    ;
    }

    // استخدام الدالة
    set_error_handler("my_error_handler"
    );

    // كود مكتوب بشكل عادي من المبرمج باين انه خطأ لإظهار عمل الدالة
    $x = 5/0
    ;

    ?>

    سوف يظهر التالي:
    An Error Occured!
    Error Number: 2
    Error Description: Division by zero
    Error In File: c:\Test.php
    Error On Line: 14

    =======================================

    اتمنى ان اكون نقلت المفيد ..

    تمنياتي للجميع بالتوفيق ،،،

    النهاية

  2. الراجح

    الراجح عضو جديد

    إنضم إلينا في:
    ‏18 سبتمبر 2008
    المشاركات:
    6
    الإعجابات المتلقاة:
    0
    نقاط الجائزة:
    0
    رد: دروس phpلجميع الاعمار

    ما شاء الله تبارك الله
    شرح وافي ومجهود رائع بارك الله فيكم واسئل الله ان يوفقك في الدنيا والاخره

مشاركة هذه الصفحة