sхс
Легенда
Нашел наконец для себя самый оптимальный вариант борьбы со спамерами Суть в том что баним IP и UID пользователей со стажем меньше месяца которые запостили ссылку в теме или ответе
Также нужно создать закрытый форум, который может просматривать только админ и в этом форуме создать тему. Ну и указать id этого форума и темы вместо
$post['forum_id'] = 230;
$topic_id = 16509;
Но. После того как юзер попадает в банлист, он по прежнему может постить сообщения пока не разлогинится. Так что можно добавить проверку бан листа перед постингом юзером сообщения
В posting.php перед submit_post(.............
В ajax/posts.php перед DB()->sql_query("INSERT INTO " . BB_POSTS.......................
PHP:
///////ANTISPAM
$is_spammer = false;
if(
!empty($message) AND
($userdata['user_id']>1) AND
(time()-$userdata['user_regdate'])<(60*60*30)
){
$is_spammer = (stristr($message.$post_subject,'http://') OR stristr($message.$post_subject,'https://')) ? true : false;
}
//\\\\\ANTISPAM
//////ANTISPAM
if($is_spammer){
if ($mode=='newtopic')
{
$forum_id = 230;
}
if ($mode=='editpost' OR $mode=='reply')
{
$forum_id = 230;
$topic_id = 16509;
}
$sql = "UPDATE " . BB_USERS . " SET user_active='0' WHERE user_id=".$userdata['user_id'];
if ( !DB()->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't insert uid info into database", "", __LINE__, __FILE__, $sql);
}
$sql = "INSERT INTO " . BB_BANLIST . " (ban_ip)
VALUES ('" . $userdata['user_last_ip'] . "')";
if ( !DB()->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't insert ban_ip info into database", "", __LINE__, __FILE__, $sql);
}
$sql = "INSERT INTO " . BB_BANLIST . " (ban_userid) VALUES (" . $userdata['user_id'] . ")";
if ( !DB()->sql_query($sql) ){
message_die(GENERAL_ERROR, "Couldn't insert ban_userid info into database", "", __LINE__, __FILE__, $sql);
}
}
//\\\\\ANTISPAM
В ajax/posts.php перед DB()->sql_query("INSERT INTO " . BB_POSTS.......................
PHP:
///////ANTISPAM
$is_spammer = false;
if(
!empty($message) AND
($userdata['user_id']>1) AND
(time()-$userdata['user_regdate'])<(60*60*30)
){
$is_spammer = (stristr($message,'http://') OR stristr($message,'https://')) ? true : false;
}
//\\\\\ANTISPAM
//////ANTISPAM
if($is_spammer){
$post['forum_id'] = 230;
$topic_id = 16509;
$sql = "UPDATE " . BB_USERS . " SET user_active='0' WHERE user_id=".$userdata['user_id'];
if ( !DB()->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't insert uid info into database", "", __LINE__, __FILE__, $sql);
}
$sql = "INSERT INTO " . BB_BANLIST . " (ban_ip)
VALUES ('" . $userdata['user_last_ip'] . "')";
if ( !DB()->sql_query($sql) )
{
message_die(GENERAL_ERROR, "Couldn't insert ban_ip info into database", "", __LINE__, __FILE__, $sql);
}
$sql = "INSERT INTO " . BB_BANLIST . " (ban_userid) VALUES (" . $userdata['user_id'] . ")";
if ( !DB()->sql_query($sql) ){
message_die(GENERAL_ERROR, "Couldn't insert ban_userid info into database", "", __LINE__, __FILE__, $sql);
}
}
//\\\\\ANTISPAM
Также нужно создать закрытый форум, который может просматривать только админ и в этом форуме создать тему. Ну и указать id этого форума и темы вместо
$post['forum_id'] = 230;
$topic_id = 16509;
Но. После того как юзер попадает в банлист, он по прежнему может постить сообщения пока не разлогинится. Так что можно добавить проверку бан листа перед постингом юзером сообщения