ООО ЭкоЮнит
FAQSearchMemberlistUsergroupsFilesLog inRegisterГлавная
printer-friendly view
 
 
AuthorMessage
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

Вариант мода Block guest's links.
Позволяет удалять гостевые ссылки на этапе записи сообщения в базу.

Code:

#
#---- [ OPEN ]-----------------
#
includes/functions_post.php

#
#---- [ FIND ]-----------------
# in function prepare_message
#
    global $board_config, $html_entities_match, $html_entities_replace;

#
#---- [ AFTER, ADD ]-----------------
#
    global $post_data;

#
#---- [ FIND ]-----------------
# in function prepare_message
#
    // Clean up the message
    //
    $message = trim($message);

#
#---- [ AFTER, ADD ]-----------------
#
    if ( $post_data['poster_id'] == ANONYMOUS ) 
    { 
        $replacer = $lang['Link_deleted_bbcode'];
        $message = preg_replace("#(^|[\n ])([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", $replacer, $message); 
        $message = preg_replace("#(^|[\n ])((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*)#is", $replacer, $message); 
        $message = preg_replace("#(^|[\n ])([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+)#i", $replacer, $message);

        $message = preg_replace("#\[url\]([\w]+?://([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is", $replacer, $message);
        $message = preg_replace("#\[url\]((www|ftp)\.([\w\#$%&~/.\-;:=,?@\]+]+|\[(?!url=))*?)\[/url\]#is", $replacer, $message);
        $message = preg_replace("#\[url=([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is", "\\2 $replacer", $message);
        $message = preg_replace("#\[url=((www|ftp)\.[\w\#$%&~/.\-;:=,?@\[\]+]*?)\]([^?\n\r\t].*?)\[/url\]#is", "\\3 $replacer", $message);

        $message = preg_replace("#\[email\]([a-z0-9&\-_.]+?@[\w\-]+\.([\w\-\.]+\.)?[\w]+)\[/email\]#si", $replacer, $message);
    } 

#
#---- [ OPEN ]-----------------
#
language/lang_english/lang_main.php

#
#---- [ FIND ]-----------------
#
//
// That's all, Folks!
// -------------------------------------------------

#
#---- [ BEFORE, ADD ]-----------------
#
$lang['Link_deleted_bbcode'] = 'Link deleted!';

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline View user's profile Visit poster's website Skype Name
DragonDX Gender:Male

Участник


Joined: 21 Aug 2006
Show/Hide

Это бета версия или можно смело ставить на рабочий форум? Smile
Back to topOffline View user's profile Visit poster's website
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

Лучше, конечно, сначала проверить на тестовом

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline View user's profile Visit poster's website Skype Name
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

Post Wed 11 Oct, 2006 18:09 Download Post Reputation: 88
 Модификация Detector Bots
Еще одни мысли, но уже по поводу Detector Bots.
Дело в том, что этот мод считает все ссылки в сообщении, не учитывая принадлежность их форуму или сайту, где находится форум. И если пользователь укажет в сообщении несколько ссылок на этот же сайт, он может безвинно пострадать. Еще недостаток: не учитываются ссылки на изображения в теге [img].
Можно исправить это дело так (для версии мода 2.0.6):
Code:

# 
#-----[ OPEN ]------------------------------------------ 
# 
includes/functions_post.php

# 
#-----[ FIND ]------------------------------------------ 
#
    global $unhtml_specialchars_match, $unhtml_specialchars_replace,$client_ip,$user_ip,$db,$userdata,$phpbb_root_path,$phpEx,$lang;

# 
#-----[ AFTER, ADD ]------------------------------------------ 
#
    global $board_config;

# 
#-----[ FIND ]------------------------------------------ 
# NOTE: this is a partial match
#
    preg_match_all('#
    if (isset($links[1])) {$link_count += count($links[1]);}

    if ($userdata['user_level'] == ADMIN && $userdata['session_logged_in']) {$link_count=0;} // Admin can post anything

# 
#-----[ REPLACE WITH ]------------------------------------------ 
#
    if ($userdata['user_level'] != ADMIN && $userdata['user_level'] != MOD)
    {
        $server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
        preg_match("/[^\.\/]+\.[^\.\/]+$/", trim($board_config['server_name']), $matches);
        $server_name = $matches[0];
        
        $link_count = 0; 
        $post_message_temp = preg_replace('(\r\n|\n|\r)', ' ', $message);
        //preg_match_all('#(\[img:' . $bbcode_uid . '(.*?)\[\/img:' . $bbcode_uid . '\])|(\[url(.*?)\[\/url\])|(([\n ]href=(.*?)&gt;)|((^|[\n ])([\w]+?://|www|ftp)[^ \"\n\r\t<>]*))|((^|[\n ]|mailto:)([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+))#si', $post_message_temp, $links);
        preg_match_all('#(\[url(.*?)\[\/url\])|(([\n ]href=(.*?)&gt;)|(icq.*?)|([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)|((^|[\n ])([\w]+?://|www|ftp)[^ \"\n\r\t<>]*))|((^|[\n ]|mailto:)([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+))#si', $post_message_temp, $links);
        if (sizeof($links[0]))
        {
            foreach ( $links[0] as $k => $str )
            {
                $temp = explode('[img', $str);
                if ( !preg_match("#($server_protocol)?(.*?)$server_name#i", $temp[0]) )
                {
                    $link_count ++;
                }
                else if ( !empty($temp[1]) && !preg_match("#($server_protocol)?(.*?)$server_name#i", $temp[1]) )
                {
                    $link_count ++;
                }
            }
        }
    }


Заодно разрешим модераторам постить любое количество ссылок (ведь предполагается наличие у них адекватности и здравого смысла).

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline This post has 1 review(s) View user's profile Visit poster's website Skype Name
forall

Участник


Joined: 27 Jan 2008
Show/Hide

Попробовал ваш вариант из первого сообщения, чет не сработало.
Все делал верно.
Back to topOffline View user's profile
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

А какой текст скармливали?

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline View user's profile Visit poster's website Skype Name
forall

Участник


Joined: 27 Jan 2008
Show/Hide

пробовал просто forum.aeroion.ru/
ну и там всякие ya.ru/
Сообщения нормально публикуются.

Решил проблему другим образом, как подсказали на пхпгуру: поставил счетчик для гостей >0
и теперь сообщения с ссылками вообще не проходят. Ну и выделил жирненько для гостей, что сообщения с ссылками не постятся.

Добавлено спустя 1 час 23 минуты 43 секунды:

а, извинияюсь:думаю не срабатывало из за того, что не добавил в руссиан/лангмайн
Хотя для меня удобен вариант что ссылок не должно быть вообще =)
Back to topOffline View user's profile
Siava Gender:Male

Партнер


Joined: 25 Dec 2005
Show/Hide

Sergey, привет Smile
На счёт этого сообщения есть вопрос.
Поскольку строчкой
Code:
  preg_match_all('#(\[img:' . $bbcode_uid . '(.*?)\[\/img:' . $bbcode_uid . '\])|(\[url(.*?)\[\/url\])|(([\n ]href=(.*?)&gt;)|((^|[\n ])([\w]+?://|www|ftp)[^ \"\n\r\t<>]*))|((^|[\n ]|mailto:)([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+))#si', $post_message_temp, $links); 

не блокируются ссылки вида:
Code:
[url=http://spam.ru/link.php][img]http://mysite.ru/img.gif[/img]

Использую другую, которую предложил edgar на "гуру" (добавлена блокировка по http и icq):
Code:
 preg_match_all('#(\[url(.*?)\[\/url\])|(([\n ]href=(.*?)&gt;)|(icq.*?)|(http.*?)|((^|[\n ])([\w]+?://|www|ftp)[^ \"\n\r\t<>]*))|((^|[\n ]|mailto:)([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+))#si', $post_message_temp, $links); 


Но теперь все ссылки, даже на мой форум воспринимаются как реклама. Возможно ли изменить регулярку, чтобы всё работало корректно? Rolling Eyes

_________________
Siava.Ru
Back to topOffline View user's profile Visit poster's website
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

Уфф. Кажется, выродил решение. Я подставил на локалхосте в конфигурации твой домен, то есть в переменной $server_name содержится siava.ru. Путь к форумам в данном случае значения не имеет.
Набор тестов при $first_post_max_link = 2:
Protected Text:
Show
Код в предыдущем посте.

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline View user's profile Visit poster's website Skype Name
Siava Gender:Male

Партнер


Joined: 25 Dec 2005
Show/Hide

Sergey, это зачёт! Теперь всё работает Smile Спасибо большое, я весь вечер вчера убил этим Mr. Green

_________________
Siava.Ru
Back to topOffline View user's profile Visit poster's website
vlad77 Gender:Male

Модератор


Joined: 15 Mar 2008
Show/Hide

Sergey @ Wed 11 Oct, 2006 18:09 wrote: (View Post)
Show
Мод не учитывает ссылки на изображения, поставленные модом Mod Alt and Title IMG tags . Спамеры правда пока не додумались это использовать...
Back to topOffline View user's profile
Siava Gender:Male

Партнер


Joined: 25 Dec 2005
Show/Hide

Вот снова я Smile
Спустя 3 месяца тестирования обнаружилась ещё одна брешь. Мод позволяет оставить ссылку такого вида: forum.aeroion.ru

Добавлено спустя 13 минут 59 секунд:

Хотя это наверное не столь критично.

Добавлено спустя 4 минуты 43 секунды:

Кажись разобрался Smile надо добавить ещё:
Code:
([\w\d\-]+(\.[\w\d\-]+)+)

для отлова символических доменных имён или IP адресов. Хотя наверное это не очень корректно, вдруг кто в тексте забудет пробел добавить после точки и бац. Rolling Eyes

_________________
Siava.Ru
Back to topOffline View user's profile Visit poster's website
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

Тут вариантов может быть масса. Кстати, такие "ссылки" без или www. ведь ссылками не являются, это просто текст, это может быть название или номер чего-то.
Вот пример: 79.39.011. Это что за IP адрес? А это просто каталожный номер "Шестерня ведомая конечной передачи в сборе ДТ-75, ВТ-150" Mr. Green

Короче, спам дело тонкое.

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline View user's profile Visit poster's website Skype Name
Siava Gender:Male

Партнер


Joined: 25 Dec 2005
Show/Hide

Сергей, привет!
Есть мысли как сделать список доменов-исключений в эту конструкцию? Чтобы не только $board_config['server_name'] разрешался, а ещё какие-нибудь адреса.

Code:
    if ($userdata['user_level'] != ADMIN && $userdata['user_level'] != MOD)
    {
        $server_protocol = ($board_config['cookie_secure']) ? 'https://' : 'http://';
        preg_match("/[^\.\/]+\.[^\.\/]+$/", trim($board_config['server_name']), $matches);
        $allowed_addresses[] = $matches[0];
        
        //an array of allowed addresses
        $allowed_addresses[] = 'siava.ru';
        $allowed_addresses[] = 'phpbb.com';
        $allowed_addresses[] = 'phpbbguru.net';
        //an array of allowed addresses
        
        $allowed_address = implode('|', $allowed_addresses);
        $reg_patt = "#(https://|http://)?(.*?)($allowed_address)#i";

        $link_count = 0;
        $post_message_temp = preg_replace('(\r\n|\n|\r)', ' ', $message);
        preg_match_all('#(\[url(.*?)\[\/url\])|(([\n ]href=(.*?)&gt;)|([\w]+?://[\w\#$%&~/.\-;:=,?@\[\]+]*)|((^|[\n ])([\w]+?://|www)[^ \"\n\r\t<>]*))|((^|[\n ]|mailto:)([a-z0-9&\-_.]+?)@([\w\-]+\.([\w\-\.]+\.)*[\w]+))#si', $post_message_temp, $links);
        if (sizeof($links[0]))
        {
            foreach ( $links[0] as $k => $str )
            {
                $temp = explode('[img', $str);
                if ( !preg_match($reg_patt, $temp[0]) )
                {
                    $link_count ++;
                }
                else if ( !empty($temp[1]) && !preg_match($reg_patt, $temp[1]) )
                {
                    $link_count ++;
                }
            }
        }
    } 

_________________
Siava.Ru
Back to topOffline View user's profile Visit poster's website
Sergey Gender:Male


Местный босс - администратор


Joined: 06 Jan 2005
Show/Hide

Есть. Посмотри на свой пост Удаление ссылок анонимных пользователей . Красным цветом выделены добавленные/изменённые строки, зелёным - массив разрешённых адресов $allowed_addresses, в который следует добавить нужные адреса по образцу в кавычках, то есть без протокола , или удалить ненужные. По умолчанию в массиве содержится адрес конференции.
В принципе массив не критично, можно обойтись строкой адресов, разделённых прямой чертой '|'. Здесь он только для наглядности и удобства.

_________________
Профессионал - это тот же дилетант, только знающий где ошибется. Генератор db_update.php для phpBB2 с некоторыми удобствами.
Как ставить моды. Что такое [SQL] и с чем его едят | Как правильно задавать вопросы и получать адекватные ответы | Правила форума
Бесплатная техподдержка только на форуме! Не надо стучаться в аську, скайп, слать емайлы, пытаться писать в приват. Спасибо за понимание. Please do not PM, ICQ, Skype or email me for support help - you won't get any reply. If you have a question or issue, post it in the appropriate forum/topic. Thanks!
Back to topOffline This post has 1 review(s) View user's profile Visit poster's website Skype Name
Display posts from previous:   

Summary Rating For >> Удаление ссылок анонимных пользователей
Average Rating: 0.00 :: Min Rating: 0 :: Max Rating: 0 :: Number of Ratings: 0
Choose Rating: 1   2   3   4   5  

Similar Topics
Topic Author Forum Replies Last Post
No new posts Мод Block spambots in registration
защита от автоматической регистрации спам-ботов на форуме
Название мода: Block spambots in registration. Описание мода: Позволяет предотвращать регистрацию на форуме спам-роботов. Версия мода: 1.0.2 Сложность установки: Легко Время установки: ~5 минут Примечание автора: Данный
Sergey Поддержка и моды для phpBB2 4 Wed 04 Apr, 2018 16:03 View latest post
vlad77
No new posts [RC] Simple opening external links in a new window for phpBB3 & phpBB2
открытие внешних ссылок в новом окне
Наименование модификации: Simple opening external links in a new window. Описание: Позволяет открывать все внешние ссылки в новом окне без использования сторонних библиотек This MOD allows to open all external links in a
Sergey Поддержка и моды для phpBB3 13 Tue 01 Sep, 2015 19:56 View latest post
Митя
No new posts Bots supposedly look closed sections
Название мода: bots_supposedly_look_closed_sections Автор: vlad77 Описание мода: Этот мод при редиректе убирает из сессии текущую страницу. Что бы не пугать пользователей, что боты смотрят недоступные для них разделы.
vlad77 Поддержка и моды для phpBB2 0 Tue 06 Sep, 2016 17:58 View latest post
vlad77
No new posts Мод Links Hack - проблемы
Существует такой мод Links Hack , он предназначен для создания на сайте раздела где посетители могли бы оставлять ссылки на различные веб ресурсы , имеет неплохой набор функций - можно создавать категории и имеется
Dedof Поддержка и моды для phpBB2 2 Sat 21 Feb, 2009 22:58 View latest post
Dedof
No new posts Полное удаление юзера с БД
удаление юзера
Ранее был удален юзер, к примеру Вася, сейчас он на форуме светится и в БД в таблицах тоже, но не как зарегенный а просто как текст. Как можно удалить, или изменить его по всей БД и по всем таблицам к примеру на гость?
Ренегат Поддержка и моды для phpBB2 4 Wed 24 Jan, 2018 12:25 View latest post
Ренегат






All times are UTC + 3 hours
Users browsing this topic:
Registered Users: None

Jump to:   
printer-friendly view
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum
/a
Username:

Password:

Log me on automatically each visit
  Яндекс.Метрика
CrackerTracker © 2004 - 2018 CBACK.de