صفحة 1 من 2 12 الأخيرةالأخيرة
النتائج 1 إلى 15 من 28

الموضوع: طريقة عمل رمز التحقق captcha

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

    طريقة عمل رمز التحقق captcha



    باسم الله الرحمان الرحيم
    وَلَوْ أَرَادُواْ الْخُرُوجَ لأَعَدُّواْ لَهُ عُدَّةً وَلَكِن كَرِهَ اللَّهُ انبِعَاثَهُمْ فَثَبَّطَهُمْ وَقِيلَ اقْعُدُواْ مَعَ الْقَاعِدِينَ
    سورة التوبة الآية 46
    السلام عليكم و رحمة الله و بركاته

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



    2
    نموذج التسجيل في سكربت LayeredPanel كذلك







    3
    في مجلة يستطيع المشرف العام منع الزائر من تسجيل الدخول إلا بعد كتابة كود التحقق







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

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


    كود PHP:
    <?php
     
     
     session_start
    ();




    قم بتخزين قيمة المتغير $azizsoft_ca في جلسة و لتكن على سبيل المثال

    كود PHP:
    $_SESSION['azizsoft_ca'] = $azizsoft_ca


    نحتاج لبرمجة صورة التحقق التي سيظهر داخلها الكود


    1 تحديد اسم و نوع الملف عن طريق دالة header


    كود PHP:
    header('Content-Disposition: filename="azizsoft.jpg"'); 
    كود PHP:
     header('(anti-spam-content-type:) image/jpeg'); 

    2 إنشاء إطار الصورة استنادا إلى متغيري الطول و الارتفاع


    كود PHP:
    $height 25
    $width 62
    $image_p imagecreate($width$height); 

    3 تحديد لون الكتابة و لون الخلفية

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


    4 تحديد حجم الخط


    كود PHP:
    $font_size 28

    5 إنشاء الصورة و كتابة الرقم العشوائي داخلها

    كود PHP:
    imagestring($image_p$font_size55$azizsoft_ca$white); 


    6 تحديد الجودة

    كود PHP:
    imagejpeg($image_pnull20); 
    سنحصل على نتيجة مثل






    الكود كاملا
    كود PHP:
    <?php
    session_start
    ();
    $azizsoft_ca rand(100000999999);
    $_SESSION['azizsoft_ca'] = $azizsoft_ca;
     
    header('Content-Disposition: filename="azizsoft.jpg"'); 
    header('(anti-spam-content-type:) image/jpeg'); 
     
     
    $height 25
    $width 62
    $image_p imagecreate($width$height); 
    $black imagecolorallocate($image_p000); 
    $white imagecolorallocate($image_p255255255); 
    $font_size 28
    imagestring($image_p$font_size55$azizsoft_ca$white); 
    imagejpeg($image_pnull20);
     
     
    ?>


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








    كما تلاحظون فالنموذج مجرد مثال مبسط :
    1. حقل الإدخال
    2. صورة الكود
    3. رز الإدخال
    3 تصميم صفحة الاستقبال

    أولا لابد من فتح الجلسة



    كود PHP:
    <?

    كود PHP:
     session_start(); 

    إنشاء الشرط الذي يتمحور حوله الموضوع

    هل توجد جلسة؟
    هل القيمة القادمة من النموذج لا تطابق قيمة متغير الجلسة $azizsoft_ca
    و النص البرمجي للشرط سيكون افتراضيا بهدا الشكل



    كود PHP:
    if(!$_SESSION['azizsoft_ca'] || $_SESSION['azizsoft_ca'] != $_POST['azizsoft_ca']) 

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



    كود PHP:
    {
    die(
    "عفوا ! <br> كود التحقق الدي أدخلته غير صحيح");


    بهدا سيتوقف الزائر عند هده العبارة
    يمكن جلب صفحة النموذج داخل الشرط عن طريق دالة include و دلك حتى يتمكن الزائر من مشاهدة النموذج دون الحاجة للعودة للصفحة السابقة




    كود PHP:
    {
    echo 
    "عفوا ! <br> كود التحقق الدي أدخلته غير صحيح";
    include(
    "ca.html");
    die();



    هدا باعتبار أن ca.html هو اسم صفحة النمودج
    أسفل هده المنطقة يمكنك برمجة ما تريد أن يشاهده الزائر عند ادخال الكود بشكل صحيح
    المتال كاملا



    كود PHP:
    <?
    session_start
    ();
    if(!
    $_SESSION['azizsoft_ca'] || $_SESSION['azizsoft_ca'] != $_POST['azizsoft_ca'])
    {
     
    die(
    "ere");
     
    }
    echo 
    "ok<br>";
     
    ?>


    المتال الكامل للدرس مرفق مع الموضوع
    التحية للجميع
    azizsoft





    الملفات المرفقة الملفات المرفقة
    • نوع الملف: zip ca.zip‏ (968 بايت, 700 مشاهدات)


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


    مشكور على الموضوع المهم

    لدي اضافة فقط


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

    كود PHP:
    // دالة كتابة رقم الكود الأمني على الصورة
      
    function Imagen($codigo)
      {
        
    $codigo base64_decode($codigo);
        
    $imagen imagecreatefromjpeg("images/codigo.jpg");
        
    $color_texto imagecolorallocate($imagen808080);
        
    header("(anti-spam-content-type:) image/jpeg");
        
    imagestring ($imagen5122$codigo$color_texto);
        
    imagejpeg($imagen''75);
        
    imagedestroy($imagen);
          die();
      }
    // #############################################################################
    // أمر بدأ الكتابة
      
    $op $_GET["op"];
      switch (
    $op)
      {
        case 
    "Imagen":
          
    $codigo $_GET["codigo"];
          
    Imagen($codigo);
        break;
      } 
    وهذا الكود الذي يوضع في النموذج :



    كود PHP:
    <td>Image Code</td>
                <td>
                  <img src="<? $codigo rand(100000999999); $codigo base64_encode($codigo); echo "$PHP_SELF?op=Imagen&codigo=$codigo"?>" alt="Secure Code">
                  <input type="hidden" name="codigo" value="<?= $codigo ?>">
                  <input type="hidden" name="enviado" value="<?= rand(1111111,9999999?>">
                </td>


    وهذه الجملة الخاصة في التحقق من ان الرقم نفس الصورة
    كود PHP:
      if( base64_decode($_POST["codigo"])== $_POST["codigouser"] ) 



    فقط !!





    __________________

  3. #3
    عضو نشيط
    تاريخ التسجيل
    May 2006
    المشاركات
    294


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

    وجعله الله في موازين اعمالك ..





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



  4. اكثر من رائع ... شكرا لك عزيز سوفت و بارك الله فيك





    __________________
    Keepondev | مدونه شديد التخصص فى الجافاسكربت
    جافاسكربت الموجهه بالكائنات | أنماط تصميم جافاسكربت

  5. #5
    عضو جديد
    تاريخ التسجيل
    Apr 2008
    المشاركات
    12


    ما شاء الله
    بارك الله فيك أخي الكريم






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

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


    مشكورين كتير على مروركم و الحمد لله أن الدرس نال اعجابكم






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


    العفو يا شباب ... :con2:






    __________________

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


    جميل جداً ..

    لجعل الصورة حروف وأرقام نعمل الآتي ..
    كود PHP:
    $azizsoft_ca substr(md5(time()), 06); 
    لاحظ اننا استخدمنا time() بدلاً من rand() وبذلك نضمن وجود كود جديد مختلف عن غيره في كل عمليه أو بالاحرى في كل ثانية ..






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


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

    كود PHP:
    function rand_string($length

        
    $set = array("-","_","a","A","b","B","c","C","d","D","e","E","f","F","g","G","h","H","i","I","j","J","k","K","l","L","m","M","n","N","o","O","p","P","q","Q","r","R","s","S","t","T","u","U","v","V","w","W","x","X","y","Y","z","Z"); 
        
    $str
        for(
    $i 1$i <= $length$i++) 
        { 
            
    $ch rand(0count($set)-1); 
            
    $str .= $set[$ch]; 
        } 
        return 
    $str

    يمكنك تغيير عناصر المصفوفة $set حسب رغبتك

    طريقة الاستخدام
    كود PHP:
    $azizsoft_ca rand_string(4); 
    مع استبدال الرقم 4 بعدد الحروف التي تريد أن يتكون منها الرقم العشوائي

    و شكرا لاغنائك الموضوع






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


    جزاكم الله ألف خير

    هذا ماكنت أبحث عنه





    __________________
    AboRa3d
    ~][أبـورعــد][~


    كـل مـواضـيـعـي

  12. #12


    درس جميل ومفيد

    يمكن وضع تشويش تحت اﻷرقام والحروف

    الكود
    كود PHP:

    <?php
    $img
    =imagecreatetruecolor(120,40);
    $bg=imagecolorallocate($img,250,50,80);
    $color=imagecolorallocate($img,154,251,23);
    $color2=imagecolorallocate($img,250,20,0);
    $char=array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","s","t","u","v","w","x","y","z"
    ,"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","S","R","T","U","V","X","Y","Z",1,2,3,4,5,6,7,8,9,0);
    for(
    $i=0;$i<6;$i++)
      {
    $txt=$char[rand(0,count($char)-1)];
    $txt2.=$char[rand(0,count($char)-1)];
    imagestring($img,20,rand(5,80),rand(5,20),$txt,$color);
    }
    imagestring($img,20,40,15,$txt2,$color2);
    header("(anti-spam-content-type:) image/png");
    imagepng($img);

    ?>
    طبعا المتغير هو $txt2
    يمكن حفظه في جلسة ﻻستخدامه التحقق كما في الدرس ...





    __________________
    عدت
    اقتراحاتكم -> www.elbachiri.com

  13. #13
    عضو جديد
    تاريخ التسجيل
    Apr 2008
    المشاركات
    12


    جزاك الله خيرا أخي عبد الواحد
    ولكن أيهما الأساسي ؟!
    الأحمر أم الأخضر





    التعديل الأخير تم بواسطة mas123 ; 17-04-2008 الساعة 04:28 PM

  14. #14


    اﻷحمر





    __________________
    عدت
    اقتراحاتكم -> www.elbachiri.com

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


    الأخ عبد الواحد
    شكرا لك على الاضافة الرائعة و شكرا لكل من تفاعل مع الموضوع

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

    و قد قمت بمحاولة أخرى لخلق صورة أكتر تطورا تعتمد على خلفية صورة بدل أرقام انطلاقا من الكود الدي طرحته
    خلفية الصورة تتغير مع كل تحديت و توجد 6 صور مختلفة و يمكن أضافة المزيد

    كود الصورة في المرفقات





    الملفات المرفقة الملفات المرفقة
    • نوع الملف: zip code.zip‏ (12.3 كيلوبايت, 166 مشاهدات)





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

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

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