Bu moda geçen gün canverde de ihtiyaç olmuştu, ben de phpBB sitesine bir bakayım istedim, belki vardır diye... karşıma bu başlık çıktı... iyiki çıktı.... ben de biraz düzenledim...
Flood Kontrol
Üyelerin gönderdikleri mesajlarda ve başlıklarda flood yapmalarına engel olacak bir kaç moda ihtiyaç vardı, ben bunları hazırlayıp bir tek başlık altında topladım...
Kullanım şekli
Burada flood kontrol modunun farklı şekilleri size sunulacaktır... Bütün bu kodların hepsi posting.php dosyasında aynı yere eklenmesi gerekmektedir. Bu açıdan hepsini birden kurmaya kalkmayın!
Flood kontrol kodlarını nereye yerleştirmemiz gerekmektedir
- Kod: Tümünü seç
----- [ AÇ ] ---------------------
posting.php
----- [ BUL ] ---------------------
//
// What auth type do we need to check?
//
----- [ ÖNCESİNE EKLE ] ---------------------
Not: Bloklar numaralandırılmıştır. Hata bildirimi yaparken lütfen bu numaraları kullanarak referans veriniz.
Dil dosyasına eklenecek hata mesajları
$lang['flood_error_1'] = 'Sorry, you have already started your maximum number of topics today. Please try again later!';
$lang['flood_error_2'] = 'Sorry, you have already started a topic / the maximum number of topics in this forum!';
$lang['flood_error_3'] = 'Sorry, there are too many topics being started at the moment. Please try again later!';
$lang['flood_error_4'] = 'Sorry, the maximum amount of posts for this forum has been reached today. Please try again later!';
$lang['flood_error_5'] = 'Sorry, your maximum amount of posts for this forum has been reached today. Please try again later!';
$lang['flood_error_6'] = 'Sorry, your maximum amount of posts for today has been reached. Please try again later!';
$lang['flood_error_7'] = 'Sorry, your maximum amount of posts for today has been reached. Please try again later!';
1. YENİ BAŞLIK: Üyelerin 24 saat içinde 3 mesajdan fazla mesaj göndermesine engel olmak
- Kod: Tümünü seç
if ($mode == 'newtopic') //Only in these cases
{
if ($userdata['user_level'] <= USER) //Do not limit MODS and ADMINS in any way
{
$time_span = time() - 24*3600; //24 hours
$topic_limit = 3; // 3 topics per day
$error_msg = $lang['flood_error_1'];
$sql = "SELECT count(topic_id) as topic_count
FROM " . TOPICS_TABLE . "
WHERE topic_time > $time_span
AND topic_poster = " . $userdata['user_id'];
if ( $result = $db->sql_query($sql) )
{
$row = $db->sql_fetchrow($result);
$topic_count = $row['topic_count'];
if ($topic_count >= $topic_limit) message_die(GENERAL_MESSAGE, $error_msg);
}
}
}
2. YENİ BAŞLIK: forumlar için zaman sınırı olmaksızın mesaj sınırı
- Kod: Tümünü seç
if ($mode == 'newtopic') //Only in these cases
{
if ($userdata['user_level'] <= USER) //Do not limit MODS and ADMINS in any way
{
$forum_list = array(12); //Forum id list like array(1, 2, 3, 5, 8)
$topic_limit = 1; // 1 topic
$error_msg = $lang['flood_error_2'];
if (in_array($forum_id, $forum_list))
{
$sql = "SELECT count(topic_id) as topic_count
FROM ".TOPICS_TABLE."
WHERE forum_id = $forum_id
AND topic_poster = ".$userdata['user_id'];
if ($result = $db->sql_query($sql))
{
$row = $db->sql_fetchrow($result));
$topic_count = $row['topic_count'];
if ($topic_count >= $topic_limit) message_die(GENERAL_MESSAGE, $error_msg);
}
}
}
}
3. YENİ BAŞLIK: 3 dakika da 5 mesaj sınırı
- Kod: Tümünü seç
if ($mode == 'newtopic') //Only in these cases
{
if ($userdata['user_level'] <= USER) //Do not limit MODS and ADMINS in any way
{
$time_span = time() - 5*60; //5 minutes
$topic_limit = 3; // 3 topics per 5 minutes
$error_msg = $lang['flood_error_3'];
$sql = "SELECT count(topic_id) as topic_count
FROM " . TOPICS_TABLE . "
WHERE topic_time > $time_span";
if ( $result = $db->sql_query($sql) )
{
$row = $db->sql_fetchrow($result);
$topic_count = $row['topic_count'];
if ($topic_count >= $topic_limit) message_die(GENERAL_MESSAGE, $error_msg);
}
}
}
4. YENİ MESAJ: belli forumlar için 24 satte 100 mesaj sınırı
- Kod: Tümünü seç
if ($mode == 'reply' || $mode == 'quote' || $mode == 'newtopic') //Only in these cases
{
if ($userdata['user_level'] <= USER) //Do not limit MODS and ADMINS in any way
{
$forum_list = array(12); //Forum id list like array(1, 2, 3, 5, 8)
$time_span = time() - 24*3600; //24 hours
$post_limit = 100; //Max messages per time
$error_msg = $lang['flood_error_4'];
if (in_array($forum_id, $forum_list))
{
$sql = "SELECT count(post_id) as post_count
FROM " . POSTS_TABLE . "
WHERE post_time > $time_span
AND forum_id = $forum_id";
if ($result = $db->sql_query($sql))
{
$row = $db->sql_fetchrow($result);
$post_count = $row['post_count'];
if ($post_count >= $post_limit) message_die(GENERAL_MESSAGE, $error_msg);
}
}
}
}
5. YENİ MESAJ: belli forumlar için, 24 saat içinde üye başına 3 mesaj sınırı
- Kod: Tümünü seç
if ($mode == 'reply' || $mode == 'quote' || $mode == 'newtopic') //Only in these cases
{
if ($userdata['user_level'] <= USER) //Do not limit MODS and ADMINS in any way
{
$forum_list = array(12); //Forum id list like array(1, 2, 3, 5, 8)
$time_span = time() - 24*3600; //24 hours
$post_limit = 3; //Max messages per time
$error_msg = $lang['flood_error_5'];
if (in_array($forum_id, $forum_list))
{
$sql = "SELECT count(post_id) as post_count
FROM " . POSTS_TABLE . "
WHERE post_time > $time_span
AND forum_id = $forum_id
AND poster_id = ".$userdata['user_id'];
if ($result = $db->sql_query($sql))
{
$row = $db->sql_fetchrow($result);
$post_count = $row['post_count'];
if ($post_count >= $post_limit) message_die(GENERAL_MESSAGE, $error_msg);
}
}
}
}
6. YENİ MESAJ: üye 15 mesaj ve 50 mesaj arasında ise günde en fazla 3 mesaj gönderebilsin
- Kod: Tümünü seç
if ($mode == 'reply' || $mode == 'quote' || $mode == 'newtopic') //Only in these cases
{
if ($userdata['user_level'] <= USER) //Do not limit MODS and ADMINS in any way
{
$time_span = time() - 24*3600; //24 hours
$post_limit = 3; //Max messages per time
$threshold = 15; //Until this amount has been posted
$post_maximum = 50; //Never more than this
$error_msg = $lang['flood_error_6'];
$sql = "SELECT count(post_id) as post_count_total
FROM " . POSTS_TABLE . "
WHERE poster_id = ".$userdata['user_id'];
if ($result = $db->sql_query($sql))
{
$row = $db->sql_fetchrow($result);
$post_count_total = $row['post_count_total'];
$sql = "SELECT count(post_id) as post_count
FROM " . POSTS_TABLE . "
WHERE post_time > $time_span
AND poster_id = ".$userdata['user_id'];
if ($result = $db->sql_query($sql))
{
$row = $db->sql_fetchrow($result);
$post_count = $row['post_count'];
if (($post_count_total < $threshold && $post_count >= $post_limit) || $post_count >= $post_maximum ) message_die(GENERAL_MESSAGE, $error_msg);
}
}
}
}
7. YENİ MESAJ: belli bir üyeye, gün başına 10 mesaj sınırı koymak...
- Kod: Tümünü seç
if ($mode == 'reply' || $mode == 'quote' || $mode == 'newtopic') //Only in these cases
{
$user_id_list = array(1); //Fill in the user id(s) of the users you want to block,
//for example array(5, 10, 45, 81)
$time_span = time() - 24*3600; //24 hours
$post_limit = 10; //Max messages per time
$error_msg = $lang['flood_error_7'];
if (in_array($userdata['user_id'], $user_id_list) )
{
$sql = "SELECT count(post_id) as post_count
FROM " . POSTS_TABLE . "
WHERE post_time > $time_span
AND poster_id = ".$userdata['user_id'];
if ($result = $db->sql_query($sql))
{
$row = $db->sql_fetchrow($result);
$post_count = $row['post_count'];
if ($post_count >= $post_limit) message_die(GENERAL_MESSAGE, $error_msg);
}
}
}