Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Антифлуд

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Антифлуд повремени
Ivanovsky
Отправлено: 18 Июля, 2011 - 20:33:35
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




Добрый день! Кому не лень дать мне код антифлуда (тоесть чтоб можно было писать сообщения раз в минуту??)))
 
 Top
LIME
Отправлено: 18 Июля, 2011 - 20:40:45
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Ivanovsky что там писать...
берешь время time() и отправляеш его кукой
потом проверяешь пришедшую куку если мин не прошла выводишь ответ что "низзя"
 
 Top
Ivanovsky
Отправлено: 18 Июля, 2011 - 20:42:09
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Май 2011  


Помог: 0 раз(а)




LIME пишет:
Ivanovsky что там писать...
берешь время time() и отправляеш его кукой
потом проверяешь пришедшую куку если мин не прошла выводишь ответ что "низзя"


А можешь написать полностю код?? Я в этом деле ещё ламер...даже хуже лаера...)))
 
 Top
OrmaJever Модератор
Отправлено: 18 Июля, 2011 - 20:56:27
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




LIME а ведь куки можно и изменить Подмигивание


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
White
Отправлено: 18 Июля, 2011 - 20:58:40
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




LIME
куки подделать несложно, а в случае когда отправляется автоматически n сообщений в минуту, а показатель это время в прошлом (например год назад в каждой куке) еще проще.
лучше хранить тот самый time() во временном файле с именем юзверя или в соответсвующем поле в таблице "юзеры" в БД
(Добавление)
хотя это скорей антиспам чем антифлуд


-----
if(time()>1356048000) die();
 
 Top
LIME
Отправлено: 18 Июля, 2011 - 21:02:06
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




Ivanovsky это вставить в начало кода
<?php
if (isset($_COOKIE['time'])&& ($_COOKIE['time']-time()<60)) die('иш какой быстрый');
setcookie('time',time());
?>
 
 Top
White
Отправлено: 18 Июля, 2011 - 21:03:13
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




LIME а если куки выключить?


-----
if(time()>1356048000) die();
 
 Top
LIME
Отправлено: 18 Июля, 2011 - 21:04:06
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




White тогда уж проще в сессии...
 
 Top
White
Отправлено: 18 Июля, 2011 - 21:07:55
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




LIME пожалуй, если только особо быстрый юзер не успеет выйти и войти меньше чем за минуту Радость
(Добавление)
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. if(!isset($_SESSION['last_submit']) or $_SESSION['last_submit']+60>time()) die();
  4. ?>
  5.  


-----
if(time()>1356048000) die();
 
 Top
LIME
Отправлено: 18 Июля, 2011 - 21:12:02
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




White ну да ...вообще-то если кому-то приспичит то он бот сделает и будет удалять куки и сиды
да...файл однозначно...но не БД ...если только логировать не надо
 
 Top
White
Отправлено: 18 Июля, 2011 - 21:14:33
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




LIME пожалуй для антифлуда этого хватит, для антиспама нет
(Добавление)
LIME пишет:
удалять куки

куки и без бота можно банально выключить в настройках браузера


-----
if(time()>1356048000) die();
 
 Top
Roler
Отправлено: 18 Июля, 2011 - 21:36:57
Post Id



Посетитель


Покинул форум
Сообщений всего: 458
Дата рег-ции: Авг. 2008  
Откуда: Россия


Помог: 1 раз(а)




LIME пишет:
White тогда уж проще в сессии...

А ничего, что идентефикатор сессии в тех же куках и хранится?)

На серверве, всё на сервере хранить надо.
 
 Top
White
Отправлено: 18 Июля, 2011 - 21:55:22
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




Roler пишет:
А ничего, что идентефикатор сессии в тех же куках и хранится?)

ничего, особенно если передавать его через адрессную строку, а если нет, читайте код приведенный выше

(Отредактировано автором: 18 Июля, 2011 - 21:56:48)



-----
if(time()>1356048000) die();
 
 Top
OrmaJever Модератор
Отправлено: 18 Июля, 2011 - 22:07:52
Post Id



Активный участник


Покинул форум
Сообщений всего: 7540
Дата рег-ции: Янв. 2010  
Откуда: Чернигов


Помог: 299 раз(а)




White просто через сесии тоже не выдет, индефикатор сесии можно вобще не передавать скрипт будет работать.
Нужно делать авторизацию через сесии и запретить писать коментарии не авторизированым.
Если индефикатор сесии не передать то пользователь получится не авторизирован и писать будет нельзя, вот тогда можно безопасно зделать Подмигивание


-----
Если вы хотя бы 3-4 раза не решите всё выкинуть и начать заново - вы явно что-то делаете не так.
 
 Top
White
Отправлено: 18 Июля, 2011 - 22:17:17
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 830
Дата рег-ции: Июнь 2011  
Откуда: Днепропетровск


Помог: 28 раз(а)




OrmaJever
честно говоря само задание предполагает отсутствие "анонимов", иначе тут и придумывать нечего, разве что генерировать на основе заголовков посылаемых браузером "уникальный" идентификатор для каждого хоста (примерно так как это делают скрипты подсчета посетителей), писать его как имя временному файлу(или тот же идентификатор сессии), и таким образом делать проверку для анонимов (опять же подводных камней здесь много)


-----
if(time()>1356048000) die();
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« HTTP и PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB