Защита от спама с помощью кукисов

На события передвижения мыши mousemove или прикосновения к экрану touch вешаем обработчик, который устанавливает кукисы 1):

common.js
$('body').on('mousemove touch',
  function() {
    setCookie('project-name');
  }
);
 
function setCookie(str) {
  var NowDate = new Date();
  var day = (NowDate.getDate() < 10 ? '0' + NowDate.getDate() : NowDate.getDate());
  var month = ((NowDate.getMonth() + 1) < 10 ? '0' + (NowDate.getMonth() + 1) : (NowDate.getMonth() + 1));
  var fullDate = day + '.' + month + '.' + NowDate.getFullYear();
  var cookieName = $().crypt({method:"md5", source:str + fullDate});
  var cookieVal = $().crypt({method:"md5", source:str + fullDate + str});
  if (!$.cookie(cookieName)) {
    var CookieOption = {path: '/'};
    $.cookie(cookieName, cookieVal, CookieOption);
  }
}

На стороне сервера проверяем:

check.php
function isCookieOk() {
  $key = 'project-name';
  $cookieName = md5($key.date('d.m.Y', time()));
  $cookieVal = md5($key.date('d.m.Y', time()).$key);
  return isset($_COOKIE[$cookieName]) && $_COOKIE[$cookieName] == $cookieVal;
}
1) Используются jQuery плагины jQuery Cookie Plugin и jQuery Cryptography Plug-in