PHP - Resim Doğrulama ya da Güvenlik Kodu [MySQL, PHP, AJAX]

'HTML-PHP-ASP-JAVA' forumunda Mavi_Sema tarafından 15 Mayıs 2009 tarihinde açılan konu

  1. Mavi_Sema

    Mavi_Sema Özel Üye

    Sponsorlu Bağlantılar
    PHP - Resim Doğrulama ya da Güvenlik Kodu [MySQL, PHP, AJAX] konusu Son günlerde DDos ataklarının artması üzerine Güvenlik kodu ya da Resim doğrulama sistemi (MySQL Tipi) Veri Tabanı kullanan her sitenin ihtiyacı haline geldi.

    Sizlere vBulletinin kullanmış olduğu Image Kütüphanesini tekrar düzenleyerek kullanılabilir bir sistem çıkardım.

    Öncelikle Download linkini vereyim ve nasıl kullanacağınızın açıklamasını yapayım.

    Link: RapidShare: Easy Filehosting ar.html
    Çalışır Halin Videosu: RapidShare: Easy Filehosting ml

    Yükleme:
    Öncelikle imageverify.rar dosyasının içeriğindeki tüm dosyaları scriptinizin içeriğine atın.

    PHP Scriptinizin Veri tabanında Şu SQL Kodunu çalıştırın:
    Kod:
    Kod:
    CREATE TABLE `imageverify` (
      `imageverifyid` int(10) unsigned NOT NULL auto_increment,
      `imagehash` varchar(32) NOT NULL default '',
      `verifyvalue` varchar(12) NOT NULL default '',
      `time` int(10) unsigned NOT NULL default '0',
      PRIMARY KEY  (`imageverifyid`)
    ) 
    Son olarak: includes/config.php içerisinde ki

    // Veri Tabanınızın Sunucu Adını
    $config['DB']['server'] = 'localhost';

    // Veri Tabanınızın Veri Tabanı Portu
    $config['DB']['port'] = 3306;

    // Veri Tabanı Kullanıcı Adı
    $config['DB']['username'] = 'root';

    // Veri Tabanı Şifresi
    $config['DB']['password'] = '';

    // Veri Tabanı Adı
    $config['DB']['dbname'] = '';
    $config['DB']['useptconnect'] = false;

    // Veri Tabanınızın MySQL Versiyonu 4.1 veya Fazla ise Bunu kullanın
    $config['DB']['charset'] = '';

    $config['Misc']['fullpath'] = '';

    // Resim Oluştururken Rasgele Yazı Tipi Kullanılması
    $config['image']['randomfont'] = true;

    // Resim Oluştururken Rasgele Yazı Büyüklüğü Kullanılması
    $config['image']['randomsize'] = false;

    // Resim Oluştururken Karekterleri Yatırma
    $config['image']['randomslant'] = false;

    // Rasgele Renk
    $config['image']['randomcolor'] = true;

    // Rasgele Biçim
    $config['image']['randomshape'] = false;

    Kısımınlarını Kendinize göre ayarlayın.

    Kullanım:

    Kullandığınız php scriptinin En başında Şu kod çalışmalı:

    Kod:
    Kod:
    <?php
     
    require('./global.php');
     
    $imagehash = create_newimagehash();
     
    ?> 
    Burada $imagehash ile yeni bir Resim Doğrulama Kodunun Anahtarını oluşturuyoruz. AJAX ile Resim Yenilime için: scriptinizin <head></head> tagları arasına

    Kod:
    Kod:
    <script type="text/javascript" src="js/global.js"></script>
    <script type="text/javascript" src="js/class_ajax.js"></script>
    Kodlarını ekliyoruz.

    Daha sonraki adımda:

    Form 'unuza:

    Kod:
    Kod:
    <input type="hidden" name="imagehash" id="imageverify_hash" value="<?php echo $imagehash; ?>" /> 
    Kodunu ve Formuzun dizaynına göre

    Kod:
    Kod:
    <img src="image.php?imagehash=<?php echo $imagehash; ?>" id="imageverify_image" /><br />
    <a href="#" id="image_refresh">Resmi Yenile</a> &nbsp; <img src="http://www.bakterim.com/images/imagerefresh.gif" id="imageverify_indicator" style="display: none;" />
    Kodlarını ekleyin.

    Güvenlik Kodununun girilebileceği "input" 'u girin. Örnek:

    Kod:
    Kod:
    Resim Doğrulama Değeri: <input type="text" name="imageverify" maxlength="6" /> 
    ve Son olarak: </body> Tagının Hemen üstüne

    Kod:
    Kod:
     <script type="text/javascript" src="js/imageverify.js"></script>
    <script type="text/javascript">
    <!--
     
    Image_Verify_Init();
    //-->
    </script> 
    Kodlarını ekleyin. Zor gibi görünebilir Fakat En altta ki Örnek Kodu incelediğinizde çok da zor olmadığını göreceksiniz.

    Peki Girilen Kodun Doğruluğunu nasıl ölçeriz... Örnek Kod:

    Kod:
    Kod:
    <?php
    require('./global.php');
    if ($_POST['imagehash'] AND $_POST['imageverify'])
    {
     if (verify_imagehash($_POST['imagehash'], $_POST['imageverify']))
     {
      echo $_POST['imageverify'] . " -> Doğru!";
      exit;
     }
     else
     {
      echo $_POST['imageverify'] . " -> Yanlış!";
      exit;
     }
    }
    else
    {
     echo "Lütfen Resim Doğrulama Alanını Doldurun!";
     exit;
    }
    ?> 
    Örnek Kod:

    Kod:
    Kod:
    <?php
    require('./global.php');
    $imagehash = create_newimagehash();
    ?>
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html dir="ltr" lang="tr">
    <head>
     <meta http-equiv="Pragma" content="no-cache" />
     <meta http-equiv="Expires" content="-1" />
     <meta http-equiv="Cache-Control" content="no-cache" />
     <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-9" />
     <title>Image Verify</title>
     <script type="text/javascript" src="js/global.js"></script>
     <script type="text/javascript" src="js/class_ajax.js"></script>
    </head>
    <body>
    <form method="post" action="test.php">
     <input type="hidden" name="imagehash" id="imageverify_hash" value="<?php echo $imagehash; ?>" />
     <table cellpadding="6" cellspacing="0" width="430" align="center" border="0">
     <tr>
      <td align="center" colspan="2">
       <img src="image.php?imagehash=<?php echo $imagehash; ?>" id="imageverify_image" /><br />
    <a href="#" id="image_refresh">Resmi Yenile</a> &nbsp; <img src="http://www.bakterim.com/images/imagerefresh.gif" id="imageverify_indicator" style="display: none;" />
      </td>
     </tr>
     <tr>
      <td class="alt" colspan="2">
       Resim Doğrulama Değeri: <input type="text" name="imageverify" maxlength="6" />
      </td>
     </tr>
     <tr>
      <td class="tfoot" colspan="2" align="center">
       <input type="submit" value="Giriş Yap" class="button" />
      </td>
     </tr>
     </table>
    </form>
    </div>
    <script type="text/javascript" src="js/imageverify.js"></script>
    <script type="text/javascript">
    <!--
     
    Image_Verify_Init();
    //-->
    </script>
    </body>
    </html>
    alıntı
     

Bu Sayfayı Paylaş