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.