• 02-03-2010, 19:03:11
    #1
    Merhabalar, garip bir sorunla karşı karşıyayım, umarım bir çözüm yolu bulabilirim. Bir form verisinden gelenleri veritabanına ekliyorum ancak bazı üyeler form girişi yaptığında script aynı veriyi iki defa ekliyor. Bu veri eklemeyi yapan tek dosya var sadece ve bu dosyada iki defa sql sorgusu çalışmasını sağlayabilecek hiç bir döngü yer almıyor. sadece formdan gelen verileri tek sql sorgusu ile veritabanına ekliyor yani şu şekilde:

    mysql_query("INSERT INTO mesajlar (`id`, `sahibi`, `konusu`, `icerik`, `gun`, `ay`, `yil`, `saat`) VALUES ('','$sahibi','$kid','$msj','$gun','$ay','$yil','$saat')");
    bu şekilde tek sorgu olmasıan rağmen kimi yollanan verileri 2 defa kaydediyor. Bu olay da sadece bazı üyelerde meydana geliyor. Mesela benim hiç başıma gelmedi ama bazı üyelerde kronik olarak oluyor.

    Bu konuda bir fikri ve çözüm önerisi olan varsa ve aydınlatırsa sevinirim.
  • 02-03-2010, 19:15:49
    #2
    Merhaba, formu dolduran kişi doldurup yolladıktan sonra sayfayı yeniliyorsa (refresh) aynı bilgiler tekrar db ye kayıt olacaktır. o yüzden güvenlik doğrulaması kullan. doğrulama kodu yani (caphtca) .
  • 02-03-2010, 19:20:10
    #3
    Öncelikle ilgilendiğiniz için teşekkürler, evet dediğiniz mantıklı bir sebep kaynağı bu olabilir ancak şöyle de bir durum var bu bir sözlük sitesi ve bu kısım sadece üyelerin siteye entry yolladıkları bir kısım yani eğer buraya caphtca koyacak olursak halimiz duman olur, kimse 1 tane bile mesaj yazmaz.
  • 02-03-2010, 20:50:02
    #4
    Üyeliği durduruldu
    submit butonunu tıklanınca bir kez daha tıklanmaması için pasifleştirmen gerekebilir
  • 02-03-2010, 22:07:26
    #5
    bundan önce for while foreach döngüsü var mı o yüzden de olabilir
  • 02-03-2010, 22:31:30
    #6
    Üyeliği durduruldu
    mysql_query("INSERT INTO mesajlar (`id`, `sahibi`, `konusu`, `icerik`, `gun`, `ay`, `yil`, `saat`) VALUES ('','$sahibi','$kid','$msj','$gun','$ay','$yil','$saat')");
    buradaki id sutunun sanırım autoincrement olsa gerek onu kaldır gerek yok zaten koysanda koymasanda işlemini yapıcaktır zaten
    $Sql=mysql_query("INSERT INTO mesajlar (`id`, `sahibi`, `konusu`, `icerik`, `gun`, `ay`, `yil`, `saat`) VALUES ('','$sahibi','$kid','$msj','$gun','$ay','$yil','$saat')");
    gibi değişkende insert ettikten sonra
    <?
    if($Sql){
    ?>
    <script>alert('Ekleme Başarıyla Tamamlandı'); window.location='index.php';</script>
    <?
    }
    ?>
    şeklinde yapmayı denermisin veya kod blogunu paylaşırsan belkide refresh komutu vardır
    insanlık hali yapılabiliyor böyle hatalar
  • 02-03-2010, 23:09:12
    #7
    Kurumsal PLUS
    Session ile her sayfada bir kod oluşturur ve mysql sorgusundan önce bunu kontrol ettirirsin, eğer birbirini tutmuyorsa(refresh yaptıysa adam) veri eklenmez.
  • 03-03-2010, 00:32:42
    #8
    sorunun kaynağını buldum, Teknoix'in de söylemiş olduğu gibi kullanıcıların sayfayı yenilemesinden kaynaklanıyoruş. şöyle bir çözüm getirdim; eklemeden önce formdan gelen verinin veritabanında eklenmiş olup olmadığını kontrol edip, eklenmemişse eklenmesini gerektirecek şekilde yaptım, sayfayı yenileyince de sorun olmuyor artık.

    ilgi gösteren ve yardımcı olan herkese çok teşekkür ederim