Метод основывается на том, что большинство ботов вообще не поддерживают JavaScript, а если они и поддерживают его, то должны магическим образом научиться считывать содержимое нашего "антибот поля". Данный способ защитит вас от спам ботов на 100%. В нужную форму, например, регистрация вставляем скрытый input и наш javascript <form method="POST"> <input type="hidden" name="check" class="check"> <! -- Остальной код --> </form> <script> $(document).ready(function () { $('.check').val('<? echo $token;?>'); }); </script> Код <form method="POST"> <input type="hidden" name="check" class="check"> <! -- Остальной код --> </form> <script> $(document).ready(function () { $('.check').val('<? echo $token;?>'); }); </script> Скрипт будет вставлять значение токена ($token) в скрытый input после полной загрузки страницы. В php файл вставляем: $token = md5(uniqid(mt_rand() . microtime())); $_SESSION['token'] = $token; Код $token = md5(uniqid(mt_rand() . microtime())); $_SESSION['token'] = $token; Что делает код? Генерирует уникальный токен в MD5 и кладёт его в сессию. Далее, где у вас происходит обработка данных, вставляем код (пример): if (isset($_POST['submit'])) { $clientToken = $_POST['check']; // данные input'a из формы if ($serverToken) { // тут мы проверяем, не задана ли переменная, иначе в сессии будет другой токен, который сгенерируется только после нажатия на кнопку. $serverToken = $_SESSION['token']; } if ($clientToken != $serverToken) { // Если токены не совпадают, выдаем ошибку. exit; } // остальной код } Код if (isset($_POST['submit'])) { $clientToken = $_POST['check']; // данные input'a из формы if ($serverToken) { // тут мы проверяем, не задана ли переменная, иначе в сессии будет другой токен, который сгенерируется только после нажатия на кнопку. $serverToken = $_SESSION['token']; } if ($clientToken != $serverToken) { // Если токены не совпадают, выдаем ошибку. exit; } // остальной код } Аналогичным способом можно сделать проверку через $_COOKIE