Один из методов, который я использовал для предотвращения злоупотребления формой, - это добавление скрытого поля, содержащего хеш-переменную, установленную на сервере.Когда форма отправляется через AJAX в PHP-скрипт, она сравнивает значение POST со значением, сгенерированным значением SESSION.
Во включаемом файле в начале всех страниц мне нужно сгенерировать хеш
$hashed_password = crypt($_SERVER['REMOTE_ADDR'],session_id());
$_SESSION['hashed_password'] = $hashed_password;
Форма отправляется через AJAX, и код там есть;
if ($_SESSION['hashed_password'] !== $_POST['thisname']) {
// do stuff like show a message, record to a log, etc
die();
}
Примечание: это имя - имя скрытого поля в форме.
Это прекрасно работает99,9% времени.Но иногда они не совпадают.Не спамеры, а постоянные клиенты.Кажется, в основном на Chrome.
Я не понимаю, как это может быть.Изменение в их IP-адресе между доставкой формы и отправкой формы?
Есть идеи?
Спасибо