[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Антифлуд
maximka787
Вчера нашел хороший скрипт в сети, немного упростил его, но не могу разобраться как сверить даты. Кто-нить знает как? Надо блокировать обращение от одного sid чаще 5 секунд

<?
session_start();
$sid = session_id();

@ $db = mysql_pconnect('localhost', '', ''); mysql_select_db('');

$result = mysql_query("select * from sessions where sid = '".$sid."'");
$row = mysql_fetch_array($result);

if(mysql_num_rows($result) > 0){

if($row['sdate'] > /*ВОТ ТУТ НЕ ПОЙМУ ЧТО ПИСАТЬ?*/){
echo 'остановисььь, не так часто приятель.';
exit;
}else{
mysql_query("update sessions set sdate = NOW() WHERE sid = '".$sid."'");
}
}

else{
mysql_query("insert into sessions values('".$sid."', NOW())");
}




Спустя 3 минуты, 48 секунд (25.08.2010 - 10:34) maximka787 написал(а):
Совсем забыл
CREATE TABLE `sessions` (
`sid` varchar(32),
`sdate` datetime NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=cp1251;

Спустя 2 минуты, 3 секунды (25.08.2010 - 10:36) Семён написал(а):
А может ну его? БД не ice на мой взгляд для таких случаев использовать.

Спустя 43 секунды (25.08.2010 - 10:36) IamSmorodin написал(а):
Семён
А как лучше проверять антифлуд?

Спустя 1 минута, 3 секунды (25.08.2010 - 10:37) maximka787 написал(а):
Цитата (Семён @ 25.08.2010 - 07:36)
А может ну его? БД не ice на мой взгляд для таких случаев использовать.

Да я бы рад, но надо хотя бы от зажатия F5 то ограничить.) куки говорят менее эффективны. Хотя они наверно менее эффективны от профи.

Спустя 5 минут, 47 секунд (25.08.2010 - 10:43) maximka787 написал(а):
У меня сайт по перевозкам, там на странице index идет подключение к 2м базам, и всего 7 запросов к БД + арифметики на пару десятков строк. Думаю не самый лучший вариант оставить вообще без проверки)

Спустя 7 минут, 40 секунд (25.08.2010 - 10:51) Семён написал(а):
maximka787
Для этого есть AntiDDoS модули. (CISCO)
(на хостингах уже всё давно сделано за вас и настроено), если сервер ваш то настройте iptables вашей серверной ОС, если есть необходимость всё же делать защиту изза большого кол-ва запросов, реализовывайте в файловом варианте.

Вот уже народ примерно делал наработки:
http://forum.xaknet.ru/showthread.php?t=8122
http://www.google.ru/search?q=anti+ddos+ph...&client=firefox

Спустя 6 минут, 9 секунд (25.08.2010 - 10:57) maximka787 написал(а):
Семён спасибо. почитаю. Сервер не мой а hc.ru. они говорят что если начнется что-то сильное то отключат) хотя обращение к БД на проверку сессий и времени это тоже запрос к серверу. Значит почитаю то, что ты кинул и наверное куки изучу. До сих пор не было времени ими заняться)

Спустя 22 минуты, 6 секунд (25.08.2010 - 11:19) FatCat написал(а):
Цитата (maximka787 @ 25.08.2010 - 11:37)
куки говорят менее эффективны. Хотя они наверно менее эффективны от профи.

Основная проблема - это не дураки с кирпичом на кнопке F5, и не любители двойных кликов мышкой, а боты парсеры контента - воровалки под сплоги и дерьмопоисковки типа ХотБота, которые сайт грузят своими запросами, а посетителей с них ноль.

Без базы никак. Не только для блокировки повторного вывода по таймлимиту, но и счетчик нагрузки в базу писать, чтобы особо настырным автоматом айпишник в эйчтиакцесс дописывало.
У нас здесь такое реализовано, за неделю до 500 айпишников в бан уходит.
И авторазбан по таймеру через 10 суток, чтобы эйчтиакцесс не разрастался свыше необходимого.

Спустя 20 минут, 29 секунд (25.08.2010 - 11:40) maximka787 написал(а):
Ну я вот наверху я написал код, там есть непонятное мне место.

$row['sdate'] выводит 2010-08-20 15:00:00 например (у меня интервал не меньше 5 сек)

как доделать условие что все сессии которые были зафиксированы после
2010-08-20 15:00:05 обрабатывались, а например 2010-08-20 15:00:02 блокировалась.

Раньше я делал сравнение вот таким образом
$data = date("Y-m-d H:i");
$query = "select DATE_FORMAT(data,'%Y-%m-%d %H:%i') as dataT, ip from book where ip='$ip'";

и условие простое получалось
if($data == $row['dataT']) { exit; } else{ ...}

там раз в минуту можно было отправить запрос, те я не выводит секуды. Проверку по IP я уже не делаю, вместо него sid


_____________
..Работает - не трогай!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.