Как я могу обнаружить и предупредить, что конкретный пользователь отправляет много сообщений подряд?
В чат, как я могу обнаружить и предупредить, что данный пользователь системы вы отправляете много сообщений подряд (flood)?
5
Author: UzumakiArtanis, 2013-12-17
1 answers
Предлагаю сохранить в сеансе дату, когда было отправлено сообщение, и счетчик сообщений. Если пользователю отправить еще одно сообщение, сравните дата, с который хранится в сеансе, если разница во времени будет короткой, увеличьте счетчик в сессии.
, Если этот счетчик добраться на порог (например, 3 сообщения) отказаться в ближайшие requests до определенного времени не прошло.
, Чтобы сохранить время последнего поста
$_SESSION["LastPost"] = time();
, Чтобы сравнить время post -
// se o post foi feito novamente nos últimos 10 segundos
if (isset($_SESSION["LastPost"])
&& $_SESSION["LastPost"] <= (time() - 10))
{
if (!isset($_SESSION["PostCount"]))
$_SESSION["PostCount"] = 0;
$_SESSION["PostCount"] += 1;
}
, чтобы проверить, если пользователь достиг предела постов в секунду
if (isset($_SESSION["PostCount"]) && $_SESSION["PostCount"] == 3)
{
// você pode setar uma trava
$_SESSION["LockPost"] = time() + 60;
}
Если защелка существует ignore request.
if (isset($_SESSION["LockPost"]) && $_SESSION["LockPost"] >= time())
{
// bloqueado, ignore
}
else if (isset($_SESSION["LockPost"]))
{
// o tempo de bloqueio passou
// zere todas as variáveis da sessão
unset($_SESSION["LockPost"]);
// ...
}
7
Author: BrunoLM, 2014-01-17 01:32:11