Простой антиспам фильтр

  • Автор темы Oddi Cepl
  • Дата начала

Oddi Cepl

Guest
Простой антиспам фильтр

В php я новичек и решил написать свой скрипт гостевой книги, все шло хорошо пока я не задумался над тем что нажимая много раз F5, можно сделать много одинаковых записей.
Решение проблемы мне видится в следующем:
PHP:
session_start();
// если флага нет, то заносим новую запись
if (!isset($_SESSION['flag'])) {
   $guest->newrec['nick'] = $_POST['nick']; 
   ...
   $guest->AddRec();
   
   // сохраняем время когда произведена запись
   $_SESSION['flag'] = time(); 
} else {
   if (($timeout=time()-$_SESSION['flag'])>5)
      unset($_SESSION['flag']);
   else
      echo "Произвести запись можно только через $timeout сек.";
}
Все это работает, но почему то через раз, т.е. первый раз добавили запись=> вышел таймаут=> добавляем запись, ни чего не записывается=> еще раз, все в порядке. Подскажите плз, в чем причина.

PHP 5.03, Apache2, WinXP
 

rotoZOOM

ACM maniac
... Вышел таймаут ... после этого ты нажимаешь F5 выполнение у тебя пошло по 2 ветке IF'а .. а где у тебя там добавление то в книгу ?
Там только уничтожение flag.
А вот второй раз нажмешь ... произойдет добавление.
 

Oddi Cepl

Guest
Ответ прост как аллюминивая чашка =)
Спасибо rotoZOOM
 

Мутник

Новичок
А лушче, наверное, сделать редирект на ту же самую страницу, чтобы Ф5 не работал и показать уведомление про время добавления...
 

Oddi Cepl

Guest
Автор оригинала: Мутник
А лушче, наверное, сделать редирект на ту же самую страницу, чтобы Ф5 не работал и показать уведомление про время добавления...
Ну это само собой, я разбирался как сделать механизм, какой существует на многих форумах - ограничение количества сообщений за период времени.
 
Сверху