чат спам

Статус
В этой теме нельзя размещать новые ответы.

titzei

Новичок
Репутация
0 / 277
чат в игре как сделать так что бы не флудили сообшения отправить 1раз в 3секунды
 
Он имеет введ: Поставить какуюта хрень типо чтоб в чать можно было писать 1 сообщения за 3 секунды, не раньче, чтобы небыла флуда ))) меня ето тож интерисует :)
 
Вообщем на сколько я понял, то в базе время сообщения в формате time(). Значит перед тем как добавить новое сообщение, нужно сделать проверку

Код:
$query=mysql_fetch_array(mysql_query("SELECT date FROM chat where login='$user_login' ORDER by date DESC LIMIT 1"));
if ( $query['date']-time()>=3 ) {
//заносим сообщение в чат
} else {
// сообщаем о флуде
}

Вроде так


//Едитед
 
Вообщем на сколько я понял, то в базе время сообщения в формате time(). Значит перед тем как добавить новое сообщение, нужно сделать проверку

Код:
$query=mysql_fetch_array(mysql_query("SELECT date FROM chat where login='$user_login' ORDER by date DESC LIMIT 1"));
if ( $query['date']-time()>=3 ) {
//заносим сообщение в чат
} else {
// сообщаем о флуде
}

Вроде так


//Едитед
Если не хочеш лишний запрос в бд делать то запиши в сессию чтото типа last_chat_time и проверяй его.
 
Вообщем на сколько я понял, то в базе время сообщения в формате time(). Значит перед тем как добавить новое сообщение, нужно сделать проверку

Код:
$query=mysql_fetch_array(mysql_query("SELECT date FROM chat where login='$user_login' ORDER by date DESC LIMIT 1"));
if ( $query['date']-time()>=3 ) {
//заносим сообщение в чат
} else {
// сообщаем о флуде
}

Вроде так


//Едитед
это в базу зулить?
 
кто сделал выложите код а тоя чайник сделал и не понел не работает=(
 
тебе дали код сказали куда вставлять и если уже не можеш сам разобраться то извени. :) :)
 
тебе дали код сказали куда вставлять и если уже не можеш сам разобраться то извени. :) :)
В природе я тебе об этом вот и говарил *wink*

Сори за ОффТоп все небуду флудякать =D
 
Итак.. Тестировал на Newlord.ru_by_FatalitY

Открываем файл chat.php (лежит в корне). Сразу после
Код:
<?
Добавляем
Код:
session_start();
 if ( !isset($_SESSION['msg_time']) || $_SESSION['msg_time']=='' ) {
$_SESSION['msg_time']=time()-3;
}
Далее находим
Код:
if ($_GET['action']=="send") {
и добавляем проверку
Код:
    $check=time()-$_SESSION['msg_time'];
    if ( $check >= 3 ) {
и после
Код:
  $mess_id=$_POST['message_id'];
еще 2 строчки
Код:
  $_SESSION['msg_time']=time();
  }


В случае если 3 секунды не прошло, сообщение просто не отсылается. + у меня оно остается напечатанным в строке. Вполне удобно.

П.С. продублирую в модах ИВ
П.П.С. работа за спасибо
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху