Посмотрел, да, криво.
В поле hidden пепедается токен, он вычисляется каждый раз.
$token = mt_rand(1000, 100000);
$_SESSION['token'] = $token;Не лучше ли сделать в бд поле secret, при реге заполнить его значениен md5(unixtime + rand int), создавать соль при генерации формы для токена и при генерации формы делать:
$token = $salt + ":" + md5($salt + ":" + $secret)Потом на сервере взяв соль с токена и зная secret можно проверять поле и не будет не каких ошибок ввода данных у юзеров