• 06-10-2014, 22:47:04
    #1
    Kimlik doğrulama veya yönetimden onay bekliyor.
    merhaba arkadaşlar,

    Bir üyelik formu ile veri tabanına üye kaydı alıyorum. Şöyle bir şey yapmaya çalışıyorum ama mantığını kuramadım. Aynı ip'den art arda kayıt olmak istediğinde 30 sn beklemesi gereksin kişinin. Bunun mantığını nasıl oluşturabilirim.
  • 06-10-2014, 22:55:56
    #2
    <?php 
    session_start(); 
    error_reporting(0); 
    mysql_connect("localhost","root",""); 
    $sure= "600"; //10 dk 
    ?> 
    <form action="" method="POST"> 
    <input type="text" name="bilgi"> <input type="submit" value="Gönder"> 
    </form> 
    <?php 
    if ($_POST['bilgi']) { 
    if (($_SESSION['kontrol']+$sure)>time()) { //Kontrol ediliyor 
    echo ("10 dk geçmeden ikinci bir post gönderemezsiniz"); 
    die(); 
    } 
    $ekle=mysql_db_query("dbadi","insert into tabloadi (kolon) values ('$bilgi')"); 
    $_SESSION['kontrol']=time(); 
    echo "başarı ile eklendi."; 
    } 
    ?>
  • 06-10-2014, 23:00:00
    #3
    uye tablosuna ziyaretçinin kayıt olurken kullandığı ip adresini ve kayıt tarihini ekleyin.

    Aynı ip den tekrar istek geldiğinde o ipye ait son kayıt olan üyenin, kayıt olma tarihi ile güncel saati karşılaştırın.

    Çıkan sonuç istediğiniz değerden düşük ise hata mesajını yazdırır, büyük ise de kayıt işlemini yaparsınız.
  • 06-10-2014, 23:31:06
    #4
    Teşekkürler ilginiz için,

    şöyle bir çözüm buldum. Kişinin kayıt olduğu zamanı time(); fonksiyonu ile veritabanına kayıt ediyorum. Tekrar kayıt olmak istediğin yine time() fonksiyonu ile kontrol ediyorum. Eğer kayıt ile şu anki time() zamanı arasındaki fark 30dan az ise bekletiyorum.

    Bu şekilde herhangi bir sıkıntı olur mu acaba?
  • 07-10-2014, 01:45:20
    #5
    ACYN adlı üyeden alıntı: mesajı görüntüle
    Teşekkürler ilginiz için,

    şöyle bir çözüm buldum. Kişinin kayıt olduğu zamanı time(); fonksiyonu ile veritabanına kayıt ediyorum. Tekrar kayıt olmak istediğin yine time() fonksiyonu ile kontrol ediyorum. Eğer kayıt ile şu anki time() zamanı arasındaki fark 30dan az ise bekletiyorum.

    Bu şekilde herhangi bir sıkıntı olur mu acaba?
    Yoğun bir sisteminiz var ise sürekli mysql e sorgu göndermek sisteminizi yavaşlatabilir, bunun yerine;

    mhmtknbck adlı üyeden alıntı: mesajı görüntüle
    <?php 
    session_start(); 
    error_reporting(0); 
    mysql_connect("localhost","root",""); 
    $sure= "600"; //10 dk 
    ?> 
    <form action="" method="POST"> 
    <input type="text" name="bilgi"> <input type="submit" value="Gönder"> 
    </form> 
    <?php 
    if ($_POST['bilgi']) { 
    if (($_SESSION['kontrol']+$sure)>time()) { //Kontrol ediliyor 
    echo ("10 dk geçmeden ikinci bir post gönderemezsiniz"); 
    die(); 
    } 
    $ekle=mysql_db_query("dbadi","insert into tabloadi (kolon) values ('$bilgi')"); 
    $_SESSION['kontrol']=time(); 
    echo "başarı ile eklendi."; 
    } 
    ?>
    Arkadaşın verdiği sistemde SESSION yerine COOKIE kullanarak yapabilirsin. SESSION tarayıcıyı kapatıp açtığında silinir COOKIE biraz daha güvenli olabilir böyle bir sistemde. Mysql'i de yormadığı için en mantıklısı bu yöntemdir.