Anti-Bot comment system With some advice from SO, I developed this system, which I think is quite strong for bots to automatically post comments.

index.php 

&lt;html&gt;
&lt;head&gt;
&lt;script type="text/javascript" src="jquery.js"&gt;&lt;/script&gt;
&lt;script&gt;
function main()
{
 var str=$("#key").load("getToken.php",function (responseText) {
                                                 $("#key").val(responseText);
                                               }
      );
 setTimeout("main()", 100000);
}
&lt;/script&gt;
&lt;/head&gt;
 &lt;body onload='main()'&gt;
 &lt;form name="f" action="poster.php" method="post"&gt;
  &lt;input type="text" name="text"/&gt;&lt;br&gt;
  &lt;input type="text" name="key" id="key" value=""/&gt;&lt;br&gt;
  &lt;input type="submit"&gt;
 &lt;/form&gt;
&lt;/body&gt;
&lt;/html&gt;


getToken.php

&lt;?php
 $key=date("Y-m-d H:i:s");
 $hash=sha1($key.'mySecretKey');
 echo $key.'#'.$hash;
?&gt;


poster.php

&lt;?php
if (!isset($_POST['key']))
 exit;

$parts = explode('#',$_POST['key'],2);
$key = $parts[0];
$hash = $parts[1];

$date1 = $key;
$date2 = date("Y-m-d H:i:s");
$diff = abs(strtotime($date2) - strtotime($date1)); 
$years   = floor($diff / (365*60*60*24)); 
$months  = floor(($diff - $years * 365*60*60*24) / (30*60*60*24)); 
$days    = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24)/ (60*60*24));
$hours   = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24)/ (60*60)); 
$minuts  = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60)/ 60); 
$seconds = floor(($diff - $years * 365*60*60*24 - $months*30*60*60*24 - $days*60*60*24 - $hours*60*60 - $minuts*60)); 

if ($seconds &lt; 5)
 echo $seconds.' Too fast, must be a naughty bot &lt;br&gt;';
else if ($seconds&gt;5 &amp;&amp; $seconds &lt; 600)
 echo $seconds.' In time &lt;br&gt;';
else
 echo $seconds.' time out &lt;br&gt;';

if ($hash == (sha1($key.'sou')))
 echo $_POST['text'];
else
 echo 'You are a bot !';
?&gt;
365*60*60*24 should be a constant.
You should really improve your variable naming.

$date2 = date("Y-m-d H:i:s");

date2? Does that say anything? currentTime is more like it. Always describe what variables contain, not what they are.
Isn't $diff already the number of seconds?
Most part of the date/time checking could be rewritten to:

$seconds = time() - strtotime($key);