النتائج 1 إلى 6 من 6

الموضوع: صورة رمز التحقق captcha بإحترافية

  1. #1
    عضو نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    169

    صورة رمز التحقق captcha بإحترافية



    بسم الله الرحمان الرحيم


    يَا أَيُّهَا الَّذِينَ آمَنُوا تُوبُوا إِلَى اللَّهِ تَوْبَةً نَّصُوحًا عَسَى رَبُّكُمْ أَن يُكَفِّرَ عَنكُمْ سَيِّئَاتِكُمْ وَيُدْخِلَكُمْ جَنَّاتٍ تَجْرِي مِن تَحْتِهَا الأَنْهَارُ يَوْمَ لا يُخْزِي اللَّهُ النَّبِيَّ وَالَّذِينَ آمَنُوا مَعَهُ نُورُهُمْ يَسْعَى بَيْنَ أَيْدِيهِمْ وَبِأَيْمَانِهِمْ يَقُولُونَ رَبَّنَا أَتْمِمْ لَنَا نُورَنَا وَاغْفِرْ لَنَا إِنَّكَ عَلَى كُلِّ شَيْءٍ قَدِيرٌ


    سورة التحريم آية 10

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

    و الذي أتمنى أن تجدوا فيه المتعة و الفائدة
    فعلى بركة الله نبدأ

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


    مثال


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



    لنبدأ بالخطوة الأسهل
    و هي توفير خلفيات متعدد للصورة
    تظهر في كل مرة خلفية
    الأبعاد يجب أن تكون موحدة . و في المثال الذي أدرجته الأبعاد هي 40 * 120
    ليس من الضروري أن تختار هده الأبعاد لكن لك الحرية في اختيار الأبعاد التي تناسب دوقك





    يجب أن تكون الصور
    1. موحدة الأبعاد
    2. موحدة الامتداد
    3. ذات أسماء رقمية متوالية مثل : 1 2 3 4 5 6
    4. لا تحتوي على ألوان متناقضة مثل الأبيض و الأسود و دلك حتى لا تستحيل قرائة رمز التحقق


    بعد توفير الخلفيات قم بحفظها في مجلد و ليكن افتراضيا هو :img

    الأن لنقم بفتح ملف نصي و لنبدأ معا في برمجة الصورة

    أول خطوة برمجية

    لازم يكون على هيئة صورة و بامتداد
    jpg و دالة header تفي بالغرض
    كود PHP:
     

    header
    ('Content-Disposition: filename="aziz.jpg"'); 
    header('(anti-spam-(anti-spam-(anti-spam-(anti-spam-(anti-spam-content-type:))))) image/jpeg'); 




    اختيار رقم عشوائي طريق دالة rand و تخزينه في متغير

    كود PHP:
     

    $char 
    rand(100,999); 


    لاحظ أن الرقم هنا سيكون محصورا بين 100 و 999 و دلك لأنني أريد أن أكتفي بتلاتة أرقام في المثال



    إدا أردت أرقاما أكتر ما عليك سوى تغيير القيمتين المدخلتين إلى دالة rand مثلا

    كود PHP:
    $char rand(10000,99999); 







    سبحان الله و بحمده سبحان الله العظيم





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




    كود PHP:
    $char1 substr($char01); 
    $char2 substr($char11);
    $char3 substr($char22); 




    هدا إدا افترضنا أن الكود مكون من 3 أرقام



    يهدا سنحصل على المتغيرات التالية $char1 $char2 $char3
    كل واحد منها يحتوي على رقم عشوائي




    بهدا ننتهي من إنجاز الكود و يبقى أمامنا اختيار الخلفية التي سنضع عليها الكود




    لدينا مثلا 10 خلفيات بامتداد jpg و بأسماء من 1 إلى 10



    سنحتاج إلى دالة rand لاختيار رقم من 1 إلى 10 و سيكون هو اسم الخلفية




    كود PHP:
    $imgname rand(1,10); 




    تم أنشاء الصورة عن طريق دالة imagecreatefromjpeg انطلاقا من الخلفية التي تم تحديدها
    بإختصار شديد :





    كود PHP:
    $image_p =imagecreatefromjpeg("img/".rand(1,10).".jpg"); 





    قبل كتابة الكود على الصورة نقوم بتحديد لونه عن طريق دالة imagecolorallocate

    كود PHP:
    $white imagecolorallocate($image_p255255255); 





    هدا للون الأبيض



    أدا كنت تريد اللون الأسود فهدا هو الكود الخاص به

    كود PHP:
    $white imagecolorallocate($image_p000); 








    الآن أدعوك للتأمل في الخلفية التالية جيدا





    أين يمكن أن نضع الرقم الأول من الكود ؟؟؟؟؟؟




    المنطقة 1 و 2 و 3 ممكن
    لكن بالنسبة للمنطقتين 4 و 5 ؟؟
    هدا أقل تقدير يمكن أن نتركه للرقمين الثاني و الثالث





    الرقم الثاني ؟؟؟؟؟؟



    إدا كان خارجا عن 2 . 3 .4 فأكيد أنه سيأخذ مكان الرقم الأول أو الثاني



    نفس التقدير بالنسبة للرقم الثالث
    3.4. أو 5





    لكل هده الاعتبارات سنبحث عن الموضع العرضي الممكن للرقم الأوسط عن طريق دالة rand




    كود PHP:
    $t120_2 rand(12,100); 




    أما الموضع الطولي فلا مشكلة أيا كان مكانه على شرط أن لا يخرج عن نطاق الصورة

    كود PHP:
    $t40_2 rand(0,25); 






    حجم الخط الذي اخترته هو 12



    لنقم بإدخال المتغيرات التي جمعناها إلى الصورة




    كود PHP:
    imagestring($image_p12$t120_2$t40_2$char2$white); 





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







    السؤال : أين يمكن وضع الرقم الأول والثالث ؟؟؟؟؟؟؟



    لنعالج أولا مشكلة الرقم الأول
    في المنطقة الرمادية – ممكن
    في المنطقة السوداء --------- ممكن بشرط ان يكون أمام الرقم الثاني





    كيف نحصل على مكان أمام الكود الثاني؟؟؟



    بسيطة !!!!!!!!
    لنرجع 10 بكسل عن المتغير $t120_2
    أي

    كود PHP:
    $t120_2-10 





    إدن

    كود PHP:
    $t120_1 rand(2,$t120_2-10); 






    بالنسبة للموضع الطولي يجب أن لا يكون أعلى من الرقم الثاني ب 5 بكسل و لا أسفل منه ب5 بكسل لأن دلك سيجعل الأرقام فوق بعضها البعض و يمكن أن نرى هدا المثال







    إدن

    كود PHP:
    $t40_1 rand($t40_2-5,$t40_2+5); 










    بعد هدا العناء تطفو مشكلة أخرى على السطح
    و لنشاهد المثال






    ربما تنخفض الأرقام خارج الصورة



    لدا علينا برمجة دالة تمنع خروج الأرقام عن أبعاد الصورة




    الدالة ستحتاج لثلاث مدخلات :
    1. ارتفاع الرقم
    2. أقصى ارتفاع ممكن
    3. أدنى ارتفاع ممكن




    سنحتاج لشرطين داخل الدالة
    1. ادا فاقت الصورة أقصى ارتفاع نعيدها إلى أقصى ارتفاع
    2. ادا قلت الصورة عن أدنى ارتفاع نعيدها إلى أدنى ارتفاع




    و ببساطة هدا هو كود الدالة


    كود PHP:

     
    function no_deplace($number,$min,$max
    if(
    $number $min){
    $number $min;
    }
    if(
    $number $max){
    $number $max;
    }
    return 
    $number;

    و الآن لنشرع في استخدام الدالة





    كود PHP:
    imagestring($image_p12$t120_1no_deplace($t40_1,0,25), $char1$white); 




    الرقم الثالث بنفس الطريقة


    كود PHP:

    $t40_3 
    rand($t40_2-5,$t40_2+5);
     
    $t120_3 rand($t120_2+10,110); 
    imagestring($image_p12$t120_3no_deplace($t40_3,0,25), $char3$white); 
    تحديد الجودة و لتكن أدنى جودة ممكنة




    كود PHP:
    imagejpeg($image_pnull20); 





    يمكن تحميل متال كامل من المرفقات

    ملاحضة : الشرح بواسطة عزيز سوفت
    حقوق النشر لكل مسلم





    الملفات المرفقة الملفات المرفقة


  2. #2
    عضو فعال
    تاريخ التسجيل
    Jul 2008
    المشاركات
    1,109


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





    __________________
    ســـــــبحان الله وبـــــــــحمده *سبـــــــــــحان الله العظيم
    لطلب البرمجة فقط
    helal-egypt@hotmail.com

  3. #3
    عضو نشيط جدا
    تاريخ التسجيل
    Aug 2007
    المشاركات
    597


    مشكوووووووووور

    والله موضوع رهييييييييييييب






  4. #4
    عضو نشيط
    تاريخ التسجيل
    Jan 2008
    المشاركات
    202

    Talking



    مشكور على الدرس

    يعني مالضرر الممكن ان يحصل في حالة عدم وجود الcaptcha ؟
    وماهي الاوامر المزعجة واين توضع او تكتب هل هي مكتوبة بلغة برمجية ؟! ان كان نعم فممكن تضع لنا مثال او فكرة برمجتها





    __________________
    فاسألوا أهل الذكر ان كنتم لا تعلمون - احب موقع اسلام ويب

    http://fatwa.islamweb.net/fatwa/index.php

  5. #5
    عضو سوبر نشيط
    تاريخ التسجيل
    May 2007
    المشاركات
    947


    درس مُفيد مشكور عليه
    لو استخدمت ملف font سيكون افضل بكثير





    __________________
    قل اللهم مالك المُلك تؤتي الملك من تشاء وتنزع الملك ممن تشاء وتعز من تشاء وتذل من تشاء بيدك الخير انك على كل شىء قدير

  6. #6
    عضو نشيط
    تاريخ التسجيل
    Nov 2005
    المشاركات
    92


    مشكور على الدرس اخوي





    __________________
    كود PHP:
    <?php
    $name 
    "w w w . A l m S l o o B . c o m";
    $name .= "من طلب العلا سهر الليالي";
    echo 
    $name;
    ?>
    منتديات المسلوب العربي .. نلتقي لنرتقي

    www.almsloob.com/vb





ضوابط المشاركة

  • لا تستطيع إضافة مواضيع جديدة
  • لا تستطيع الرد على المواضيع
  • لا تستطيع إرفاق ملفات
  • لا تستطيع تعديل مشاركاتك
  •  

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