emreyvz adlı üyeden alıntı

Merhaba, aşağıdaki HTML ve PHP koduyla forma bir kayıt yapıldığında COOKIE'ye bir değer setlenir ve 1 gün boyunca bir dahaki gelişte o değer göre form gösterilir veya gösterilmez.. 

 

   <?php 
      $formVisibility = "initial";
      $formFilledCookie= $_COOKIE["formFilled"];
      if (!empty($formFilledCookie)){
             $formVisibility = "none";
      }
      if ($_POST['name']) { 
          $name = $_POST['name']; 
          $currentUnixTime = strtotime("now");
          setcookie("formFilled", $currentUnixTime,  time() + (86400 * 30));  // 1 günlük cookie
      } 
   ?> 

<form style="display:<?php echo $formVisibility; ?>;" method="post" action= "#"> 
        İsim: <input type="text" name="name"> 
        <br><br> 
        <input type="submit"> 
</form> 

 

Ama bu metot 2 sebeple güvenilir değildir. 

 

1. COOKIE'ler kullanıcının bilgisayarında store edilirler. Dolayısıyla manipüle edilebilir ve süresi geçmemiş olmasına rağmen tekrar form gönderimi yapılabilir. Bunun önüne geçmek için de SESSION kullanılabilir. Kullanım olarak çok benzerdir. Kullanıcının bilgisayarında tutulmaz.

 

2. İlk probleme çözüm olarak verilen yöntem de ilk halinden güvenli olmasına rağmen en iyi çözüm değildir. En iyi çözüm ise kullanıcının formu gönderip göndermediğinin kaydını veritabanında tutup, request'in handle edildiği adımda bu kontrolün sağlanıp herhangi bir şekilde veritabanına insert yapılmasına izin vermemektedir. Böylecek kullanıcı ön yüzde ne yaparsa yapsın veritabanına istenmeyen veri sokamayacaktır.

 

Kolay gelsin.

Merhaba üstadım.
Aydınlatıcı cevabınız için çok teşekkür eerim.

Kodu deneyeceğim.

Aslındda ne session ne de cokie kullanmak istemiyorum fakat esas ihtiyacım olan algoritmayı çözemedim henüz ve şu aşamada denemeler yapıyorum.

Konu tam olarak şu;

* Yayınlanan yazılara ve yapılan yorumlara üye girişi yapılmadan yani her ziyaretçi tarafından 
   iyi - kötü - vs gibi gibi reaksiyonlar veriliyor.
   Fakat bunu 1 kere ile sınırlandırmak istiyorum.

* Ziyaretçinin ip adresini ve tepki verdiği yazının / yorumun id bilgisini  farklı bir veri tablosuna kaydediyorum.

Sonraki adımları  en sade ve mantıklı şekilde oluşturmaya çalışıyorum...

Ne önerirsiniz?