Böylece gibi bir şey var ...
<form action="wtv.php" method="POST">
<input type="hidden" name="date" value="<?php echo date('l jS \of F Y h:i:s A'); ?>" />
<input type="submit" />
</form>
... Ve kullanıcı, 'tarih' girişin değeri en az 30 saniye önce gelen olup olmadığını kontrol etmek istiyorum 'submit' üzerine tıkladığında?
Ken Keenan gibi bir şey önerir ile bu yapabileceğini ... ama sorun, istemci girişi güvenmiyor olabilir. Jeroen cevabı üzerine yorumunuzda istemci betik güvenilmez bir farkındalık olduğunu gösterir, ancak bu komut dosyası ile sınırlı değil; Gerçekten hiç kimse fazla 30 saniye istedikten sonra bu formu göndermek, böylece bu güvenli olması gerekiyorsa <form>, başka bir şey yapmak zorunda.
Sorun ne sunucu "tarih" girdi beklediğini öngörülebilir olmasıdır; Ben senin <form> ziyaret ve Firebug açmak hatta HTML belgeyi kaydedin ve not defteri açın, ben <input /> yüzden güncellemek için nasıl oldukça kolay tahmin edebilirsiniz Ben gönderebilirsiniz.
Bunun yerine bir simge kullanın.
Rasgele benzersiz, rastgele kimlik bir tür oluşturmak ve oturum veya veritabanında depolamak ...
$unique = md5(uniqid()).md5(time()); // there are better ways to get a unique random ID
$_SESSION['tokens'][$unique] = time();
Ardından token (değil tarih / saat!) Dahil <form> ...
<form action="wtv.php" method="POST">
<input type="hidden" name="token" value="<?php echo htmlentities($unique); ?>" />
<input type="submit" />
</form>
... Ve o belirteci süresi 30 saniyeden daha az uzakta olduğunu kontrol gönderin.
<?php
// partially borrowed from Ken Keenan's answer...
if((time() - $_SESSION['tokens'][$_POST['token']]) > 30) {
echo "Time's up!";
}
?>