مرحبآ بعودة سوالف سوفت
عذراً, تم ايقاف التسجيل حتى اشعار اخر و جعل طريقة لحل مشكلة الاسبام .



موضوعات متميزة :
مرحبآ بعودة سوالف سوفت نقاش حول الفرق بين الشبكات الاجتماعيه والمنتديات والمدونات
طريقة معرفة ال IP الخاص بالمستخدم حتى لو مع VPN هل قمت بالترقية الى وندوز 10؟ ماهو انطباعك بعد الطريقة + شرح طريقة الترقية
هل لديك مشكله في الارشفه بموقعك؟ (فلنتعاون) [شاركنا] ما تعلمته خارج سوالف
دورة تصميم استايلات منتديات الجيل الرابع vBulletin4 تسمع عن API في لغات البرمجة ولكن هل تعرف ماهي ؟
بالصور .. إصدار cPanel/WHM الجديد 11.50 ومميزاته تبادل الخبرات[7](صفحاتنا و المعايير القياسية)


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

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

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

    طريقة عمل رمز التحقق 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 بايت, 603 مشاهدات)

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

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

    لدي اضافة فقط


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

    كود 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

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

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





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

  4. #4

    تاريخ التسجيل
    Jun 2005

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





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

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

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






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

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

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






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

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






    __________________

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

    جميل جداً ..

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






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

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

    كود 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

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

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





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


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

  12. #12
    عضو سوبر نشيط
    تاريخ التسجيل
    Apr 2006

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

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

    الكود
    كود 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

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





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

  14. #14
    عضو سوبر نشيط
    تاريخ التسجيل
    Apr 2006

    اﻷحمر





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

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

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

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

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

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





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

صفحة 1 من 2 12 الأخيرةالأخيرة




المواضيع المتشابهه

  1. كيف تتم عملية قراءة captcha وتخطيها Bypass Captcha
    بواسطة MtRp في المنتدى بي اتش بي php
    مشاركات: 11
    آخر مشاركة: 18-03-2010, 07:03 PM
  2. صورة رمز التحقق captcha بإحترافية
    بواسطة azizsoft في المنتدى بي اتش بي php
    مشاركات: 5
    آخر مشاركة: 05-10-2008, 06:00 PM
  3. مشاركات: 5
    آخر مشاركة: 22-02-2007, 12:19 AM
  4. ما هي طريقة التحقق الرابط موجود أم لا ؟؟
    بواسطة Hossam AL-Abdeh في المنتدى بي اتش بي php
    مشاركات: 5
    آخر مشاركة: 29-05-2005, 10:56 AM

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

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