Şimdi Ara

Aynı Kullanıcının Tekrar Form verisi girmesinin ip ye göre engellenmesi

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
1 Misafir - 1 Masaüstü
5 sn
4
Cevap
0
Favori
552
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba,
    Aynı kullanıcıların sürekli aynı verileri veri tabanına girmesini "ip" bilgisine göre nasıl engelleyebiliriz. REcaptca bulunması ve onay mekanizmasının olması da işin can sıkıcı olmasını engellemiyor maalesef. Ekleme kodu aşağıda tabi öncesinden öngörülmediği için "ip" çeken bir kod içerikte yok:

    $kategori = $_POST['kategori'];
    $ad = $_POST['ad'];
    $adres = $_POST['adres'];
    $tel = $_POST['tel'];
    $eposta = $_POST['eposta'];
    if(empty($kategori)){
    echo("*Lütfen Tüm Alanları Doldurun");
    }elseif(empty($ad)){
    echo("<b>ADI YAZMADINIZ. LÜTFEN GERİ DÖNÜP DOLDURUNUZ.</b>");
    }elseif(empty($adres)){
    echo("<b>ADRESİ YAZMADINIZ. LÜTFEN GERİ DÖNÜP DOLDURUNUZ.</b>");
    }elseif(empty($tel)){
    echo("<b>TELEFONU YAZMADINIZ. LÜTFEN GERİ DÖNÜP DOLDURUNUZ.</b>");
    }elseif(empty($eposta)){
    echo("<b>E-POSTANIZI YAZMADINIZ. LÜTFEN GERİ DÖNÜP DOLDURUNUZ.</b>");
    }else{
    include "baglanti.php";
    @$sql = "insert into tablo (kategori, ad, adres, tel, eposta) values ('$kategori', '$ad', '$adres', '$tel', '$eposta')";
    @$kayit = mysql_query($sql);
    }
    if (isset ($kayit)){
    echo "TEBRİKLER! Kaydınız alındı. ";
    }
    else {
    echo "";
    }







  • genelde email adresinin aynı olup olmadığı kontrol edilir, ama siz illa ip adresiyle kontrol etmek istiyorsanız tablonuzda ekstradan bir ip adresi field'ı oluşturabilirsiniz. bu ip adresi fieldini unique olarak işaretleyin.

    sql kodunuz;

    $sql = "insert into tablo (kategori, ad, adres, tel, eposta) values ('$kategori', '$ad', '$adres', '$tel', '$eposta','{$_SERVER['REMOTE_ADDR']}')";

    şeklinde değişecek..


    ayrıca şuanki kodunuz sql injection'a açık durumda, onu bir şekilde kapatmanızı tavsiye ederim, bunun için en kısa yol;
    include "baglanti.php";
    satırını en üste taşıyıp mysql_real_escape_string fonksiyonunu kullanmanız.

    $kategori = $_POST['kategori'];

    yerine

    $kategori = mysql_real_escape_string($_POST['kategori']);

    aynısı diğerleri için de geçerli..
  • Paylaşımınız için teşekkürler. Dediğiniz gibi ip ye göre çözüm biraz uzun olabilir. hali hazırda e-posta sütünü bulunduğundan böyl bir çözüm ile lgili bir kod parçası paylaşabilir misiniz? Şimdiden teşekkürler.
  • rica ederim,

    o zaman; phpmyadmin'den email alanını unique/tekil olarak değiştirirseniz yeterli. eğer "aynı email adresiyle kayıtlı bir üye zaten var" şeklinde bir mesaj göstermek isterseniz;

    if (isset ($kayit)){
    echo "TEBRİKLER! Kaydınız alındı. ";
    }
    else {
    echo "";
    }


    kodunuzu bu şekilde değiştirebilirsiniz.


    if (isset ($kayit)){
    echo "TEBRİKLER! Kaydınız alındı. ";
    } elseif (mysql_errorno()==1062) {
    echo "Aynı e-mail adresiyle kayıtlı bir üye zaten var. ";
    } else {
    echo "";
    }



    < Bu mesaj bu kişi tarafından değiştirildi vona70 -- 2 Nisan 2018; 23:17:37 >
  • 
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.