• 20-08-2007, 20:24:45
    #1
    Arkadaşlar Güvenlik kodu uygulaması yapıyorum fakat olmuyor
    doğruyu yazsam bile güvenlik kodu yanlış diyor
    kodları inceler misiniz?
    yardım eden herkese teşekkürler

     
    <form method="POST" action="index.php?kod=dogrulama">
    <p>
     <?php
     $g_kodu = rand(100000,999999); 
     ?>
      <input type="text" name="gkod" size="20"></p>
      <p><input type="submit" value="Gönder" name="B1"></p>
    </form>
    <?php
    $sayfa = $_REQUEST["kod"];
    $kod = $_REQUEST["gkod"];
    if($sayfa=='dogrulama'){
    if($kod=='$g_kodu'){
    echo "Kod doğru";
    }else{
    echo "kod yanlış";
    }
    }
    ?>
  • 20-08-2007, 20:47:12
    #2
    Kurumsal PLUS
    $_REQUEST kullanma, onun yerine $_GET yada $_POST kullan;
    session çalıştırıyorsan session_start(); unutma;
    session tanımlarken $_SESSION['xx'] = "dssdaf";
    kullan

    bunu sayfada gösterirken de
    $_SESSION['xx'] kullan bi sorun yaşamaman lazım
  • 20-08-2007, 21:01:56
    #3
    Takılırsan şuraya 1 göz at istersen
    https://www.r10.net/php/65986-php-cap...tml#post710137
  • 20-08-2007, 21:19:15
    #4
    Arkadaşlar dediklerinizi yaptım fakat sonuç alamadım
    kodumu düzenleyecek birisi varsa çok sevinirim
    teşekkürler
  • 20-08-2007, 21:32:50
    #5
    index.php her açıldığında kodu tekrar üretiyor ve bir önceki gelen kod ile karşılaştırıyor. Eski kodu yeni sayfaya kullanıcının müdahale edemyeceği bir şekilde taşıman lazım. Session ile yapılmış hali üstte verdiğim adreste mevcut.
  • 21-08-2007, 00:06:16
    #6
    tmm teşekkürler ama bana daha basit bişey lazım
    daha küçük kod lazım benim kodumu düzenlerseniz çok sevinirim
    teşekkürler..
  • 21-08-2007, 00:22:46
    #7
    Üyeliği durduruldu
    anlamadığım şey kodu resme yazdırmadığın için almak istediğin güvenlik önmeli suistimal edilebilinir.

    <?php
    
    create_image();
    exit();
    
    function create_image()
    {
       
        $md5 = md5(rand(0,999)); 
        $pass = substr($md5, 10, 5);
    
        $width = 100;
        $height = 20; 
     
        $image = ImageCreate($width, $height); 
      
        $white = ImageColorAllocate($image, 255, 255, 255);
        $black = ImageColorAllocate($image, 0, 0, 0);
        $grey = ImageColorAllocate($image, 204, 204, 204);
     
        ImageFill($image, 0, 0, $black);
       
        ImageString($image, 3, 30, 3, $pass, $white);
        
        ImageRectangle($image,0,0,$width-1,$height-1,$grey); 
        imageline($image, 0, $height/2, $width, $height/2, $grey);
        imageline($image, $width/2, 0, $width/2, $height, $grey); 
       
        header("Content-Type: image/jpeg");
       
        ImageJpeg($image);
        
        ImageDestroy($image);
    }
    ?>
    ayrıca session kullanıyorsa kodun başlangıcına session_start(); eklemeyi unutma.

    karışık geldi anlamadım diyorsan şunu kullan.
    ___________________________
    index.php
    <?php
    
    session_start();  
    
    $resim_kodu=""; 
    
    function rasgele() { 
    
          $gecici_deger = mt_rand(1,3); 
    
      
    
          switch ($gecici_deger) {
    
              case 1:
    
    
              $gecici_deger = mt_rand(97, 122);
             
    
              break;
    
              case 2:
    
    
              $gecici_deger = mt_rand(48, 57);
             
    
              break;
    
              case 3:
    
    
              $gecici_deger = mt_rand(65, 90);
    
    
              break;
    
           }
    
    
           return chr($gecici_deger);
    
    }
    
    
    for ($i = 1; $i <= 4; $i++) {
    
                 $resim_kodu.= rasgele();
    
    }
    
     
    
    $_SESSION['guvenlik_kodu'] = $resim_kodu;
    
    
     
    
    echo '<html><head><title>Güvenlik kodu uygulaması</title></head><body><br>
    
    <form action="kontrol.php" method="POST" name="guvenlik" target="_self">
    
    <table width="500" border="0" cellspacing="0" cellpadding="0" align="center">
    
      <tr><td>
    
          <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Lütfen resimde
    
    gördüğünüz kodu, resmin yanındaki kutucuğa giriniz. Eğer kodu tam okuyamıyorsanız F5
    
    tuşuna basarak yeni kodu görebilirsiniz.</font></p>
    
          <p align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><img src="resim.php?';
    
    
    echo session_id();  
    
    
    echo '"></font></p>     
    
            <p><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Kodu girin: </font>
    
              <input name="kod" type="text" id="kod" size="30">
    
                  <input type="submit" name="Submit" value="OK">
    
            </p>
    
          <p align="center"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">
    
                <b>Not:</b>Güvenlik kodu büyük küçük harf duyarlıdır!
    
          </p>
    
        </td></tr>
    
    </table></form></body></html>';
    
    ?"gt;

    resim.php
    <?php
    
    session_start();
    
    $guvenlik_kodu= $_SESSION['guvenlik_kodu'];
    
    
    $resim=imagecreate(100,40);
    
    
    $resim_siyah = imagecolorallocate($resim,0,0,0);
    
    $resim_beyaz = imagecolorallocate($resim,255,255,255);
    
    
    imagefill($resim,0,0,$resim_siyah);
    
    
    
    imagechar($resim,4,20,13,$guvenlik_kodu[0],$resim_beyaz);
    
    imagechar($resim,5,40,13,$guvenlik_kodu[1],$resim_beyaz);
    
    imagechar($resim,3,60,13,$guvenlik_kodu[2],$resim_beyaz);
    
    imagechar($resim,4,80,13,$guvenlik_kodu[3],$resim_beyaz);
    
    header('Content-type: image/png');
    
    imagepng($resim);
    
    ?>
    kontrol.php
    <?php
    
    
    session_start();
    
    $girilen_kod = $_POST['kod'];
    
    
    $guvenlik_kodu=$_SESSION['guvenlik_kodu'];
    
    
    
    if ($girilen_kod == $guvenlik_kodu) {
    
           echo 'çok beceriklisiniz. doğru kodu girdiniz.';
    
    }
    
    else {
    
           echo 'güvenlik kodu hatalı';
    
    }
    
    
    session_unset();
    
    session_destroy();
    
    ?>

    GD kütüphanesiin unutma
  • 21-08-2007, 01:00:24
    #8
    Hocam teşekkürler ama basit bir kontrol istiyorum
    Bunun suistimal edilebileceğini de sanmıyorum
    Yani Resimli falan değil kod gözükse yeter ilgilenen herkese teşekkürler...
  • 21-08-2007, 01:34:37
    #9
    Üyeliği durduruldu
    sayfa yenilendiği için kod değişir rand() ile alıyorsun cünkü.
    aynı sayfada tekrar rand açmanın mantığı yok SESSION kullanman gerekli
    # Adım 1: Güvenlik Kodu Dosyamız : gk.php yapalım.
    <?
     $sifre = rand(0,999999);
     if ($sifre) {
      session_start();
      $_SESSION["guv"] = $sifre;
    }
    ?>
    # Adım 2: Güvenlik Kodu çalışcak bölüme include edelim ve kullanalım.
    <? include('gk.php'); ?>
    <form action="kontrol.php" method="post">
    Güvenlik Kodu  : <?php echo $_SESSION["guv"]; ?>
    <input name="gkod" type="text">
    <input type="submit">
    </form>
    # Adım 3:Kontrol Edilmesi : kontrol.php
    Not: Bu dosyaya gk.php include edilmemesi lazım yoksa yeni kod atar!
    $guvenlik = strip_tags($_POST['gkod']);
    if (empty($_SESSION["guv"]) || !$_SESSION["guv"] || $guvenlik != $_SESSION["guv"]) { 
    //hata verdir...
    } else {
    //işlem yaptır...
    }
    Önemli Not : Bu işlemlerin hepsini yapabilmen için SESSION başlatman lazım tüm kodlarının en üstünde.
    Buda şu şekilde olur.
    ob_start();
    session_start();
    Kolay gelsin umarım anlatım işine yarar.