Подскажите, пожалуйста, как можно запретить пользователям использовать в своих сообщениях ссылки на определенные сайты? В частности интересует, как запретить постить картинки с определенных хостингов. Автоцензор на ссылки картинок не работает..
Запретить ссылки на определенные сайты
Правила форума
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
).
Местная Конституция | Шаблон запроса | Документация (phpBB3) | Переход на 3.0.6 и выше | FAQ-3 (phpbb3) | Как задавать вопросы | Как устанавливать моды
Ваш вопрос может быть удален без объяснения причин, если на него есть ответы по приведённым ссылкам (а вы рискуете получить предупреждение
-
katherine
- phpBB 1.2.1
- Сообщения: 27
- Стаж: 16 лет 2 месяца
- Благодарил (а): 12 раз
Запретить ссылки на определенные сайты
Здравствуйте.
Подскажите, пожалуйста, как можно запретить пользователям использовать в своих сообщениях ссылки на определенные сайты? В частности интересует, как запретить постить картинки с определенных хостингов. Автоцензор на ссылки картинок не работает..
Подскажите, пожалуйста, как можно запретить пользователям использовать в своих сообщениях ссылки на определенные сайты? В частности интересует, как запретить постить картинки с определенных хостингов. Автоцензор на ссылки картинок не работает..
-
MIT
- Former team member
- Сообщения: 2500
- Стаж: 17 лет 6 месяцев
- Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
- Благодарил (а): 3 раза
- Поблагодарили: 351 раз
Re: Запретить ссылки на определенные сайты
Ничего сложного.
includes\message_parser.php
Find:After add:
Где
includes\message_parser.php
Find:
Код: Выделить всё
return (!$update_this_message) ? $return_message : $this->warn_msg;
}
} Код: Выделить всё
if (preg_match("/.*(site1\.com|site2\.com|site3\.ru|site4\.com).*/i",$this->message)>0)
{
$this->warn_msg[] = $user->lang['LANG_WARNING'];
return $this->warn_msg;
} LANG_WARNING — языковая константа (с примерным содержанием "Нефиг постить ссылки на всякие там пакоостные сайты!")-
владимир1983
- phpBB 3.2.6
- Сообщения: 5954
- Стаж: 16 лет 4 месяца
- Откуда: Сергиев Посад
- Благодарил (а): 373 раза
- Поблагодарили: 727 раз
Re: Запретить ссылки на определенные сайты
MIT
это работает если постят через BBcode: ?
это работает если постят через BBcode:
Код: Выделить всё
[img]http://savepic.ru/1598283.png[/img]За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)
Нет человека - нет проблемы. (c)
-
Nekstati
- Поддержка

- Сообщения: 3365
- Стаж: 17 лет 6 месяцев
- Благодарил (а): 37 раз
- Поблагодарили: 1454 раза
Re: Запретить ссылки на определенные сайты
Автоцензор работает, если написать так:katherine писал(а):Автоцензор на ссылки картинок не работает
*ipicture*, *savepic* и т. п.-
katherine
- phpBB 1.2.1
- Сообщения: 27
- Стаж: 16 лет 2 месяца
- Благодарил (а): 12 раз
Re: Запретить ссылки на определенные сайты
Сделала, как вы сказали — при нажатии на Отправить, страница просто перезагружается, никакого сообщения не выдается, и сам пост никак нельзя добавить.MIT писал(а):Ничего сложного.
includes\message_parser.php
Если так написать, то вместо http://savepic.ru/777888999.jpg получается http://Читайте правила.ru/777888999.jpg.. Это не очень хороший вариант.Nekstati писал(а):Автоцензор работает, если написать так: *ipicture*, *savepic* и т. п.
Скажите, а нельзя ли сделать так, чтобы человек мог написать сообщение, но просто при его публикации вместо картинки или ссылки на «плохой» хостинг выводилась надпись «Читайте правила форума».
-
MIT
- Former team member
- Сообщения: 2500
- Стаж: 17 лет 6 месяцев
- Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
- Благодарил (а): 3 раза
- Поблагодарили: 351 раз
Re: Запретить ссылки на определенные сайты
владимир1983
Работает при любом упоминании домена в сообщении.
katherine
Языковую переменную мне на твой форум добавить, али сами там управитесь как-нибудь?
Работает при любом упоминании домена в сообщении.
katherine
Языковую переменную мне на твой форум добавить, али сами там управитесь как-нибудь?
-
Nekstati
- Поддержка

- Сообщения: 3365
- Стаж: 17 лет 6 месяцев
- Благодарил (а): 37 раз
- Поблагодарили: 1454 раза
Re: Запретить ссылки на определенные сайты
Конечно, можно. Вот пример на яваскрипте. Заменяются картинки, ссылки, а также картинки, являющиеся ссылками — в общем, любые объекты с нежелательными URL — на нужную вам ссылку «Читайте правила форума».katherine писал(а):а нельзя ли сделать так, чтобы человек мог написать сообщение, но просто при его публикации вместо картинки или ссылки на «плохой» хостинг выводилась надпись «Читайте правила форума».
Код: Выделить всё
window.onload = block_links;
function block_links()
{
sitename = /savepic.ru|ipicture.ru|radikal.ru/gi;
for (i = 0; i < document.getElementsByTagName('A').length; i++)
{
link = document.getElementsByTagName('A')[i];
if (link.href.search(sitename) >= 0 || link.innerHTML.search(sitename) >= 0)
{
link.href = '.\/rules\/';
link.innerHTML = 'Читайте правила форума';
}
}
for (j = 0; j < document.getElementsByTagName('img').length; j++)
{
img = document.getElementsByTagName('img')[j];
if (img.src.search(sitename) >= 0)
{
replacement = '<a href=".\/rules\/">Читайте правила форума<\/a>';
if (img.outerHTML) // IE, Opera, Chrome, Safari
{
img.outerHTML = replacement;
}
else // Firefox
{
var range = document.createRange();
range.setStartBefore(img);
var docFrag = range.createContextualFragment(replacement);
img.parentNode.replaceChild(docFrag, img);
}
}
}
}Код: Выделить всё
sitename = /savepic.ru|ipicture.ru|radikal.ru/gi;.\/rules\/ на свой путь к правилам, например, .\/viewtopic.php?t=123.-
владимир1983
- phpBB 3.2.6
- Сообщения: 5954
- Стаж: 16 лет 4 месяца
- Откуда: Сергиев Посад
- Благодарил (а): 373 раза
- Поблагодарили: 727 раз
Re: Запретить ссылки на определенные сайты
Nekstati
На сабсильвер можно поправить? а то не работает.
На сабсильвер можно поправить? а то не работает.
За ваши деньги решу ваши проблемы. Стучи в ЛС.
Нет человека - нет проблемы. (c)
Нет человека - нет проблемы. (c)
-
katherine
- phpBB 1.2.1
- Сообщения: 27
- Стаж: 16 лет 2 месяца
- Благодарил (а): 12 раз
Re: Запретить ссылки на определенные сайты
Я пробовала добавлять языковую переменную ('LANG_WARNING' => 'Читаем правила!') и в language/ru/common.php, и в posting.php, но тогда при загрузке форума открывается пустая страница. Подскажите, что неправильно..MIT писал(а):Языковую переменную мне на твой форум добавить, али сами там управитесь как-нибудь?
Спасибо! В принципе неплохой вариант. Единственная проблема — если человек, например, вставил в сообщение 10 фотографий, то приходится сначала ждать пока они все полностью загрузятся, и только потом заменятся на ссылку «Читайте правила». А нельзя сделать, чтобы уже на выводе сообщения всё преобразовывалось?Nekstati писал(а):Конечно, можно. Вот пример на яваскрипте. Заменяются картинки, ссылки, а также картинки, являющиеся ссылками — в общем, любые объекты с нежелательными URL — на нужную вам ссылку «Читайте правила форума».
-
Shredder
- Former team member
- Сообщения: 2266
- Стаж: 17 лет 9 месяцев
- Благодарил (а): 283 раза
- Поблагодарили: 584 раза
Re: Запретить ссылки на определенные сайты
katherine
Вам только на определённые фотохостинги запрет надо или вообще на любые посторонние сайты? Лично я у себя сделал именно последнее - по крайней мере, не придётся беспокоиться, что изображения не твои и куда-то потом пропадут.
Вам только на определённые фотохостинги запрет надо или вообще на любые посторонние сайты? Лично я у себя сделал именно последнее - по крайней мере, не придётся беспокоиться, что изображения не твои и куда-то потом пропадут.
Последний раз редактировалось Shredder 25.08.2010 7:53, всего редактировалось 1 раз.
-
MIT
- Former team member
- Сообщения: 2500
- Стаж: 17 лет 6 месяцев
- Откуда: 56°20′02″ с. ш. 36°42′45″ в. д.
- Благодарил (а): 3 раза
- Поблагодарили: 351 раз
Re: Запретить ссылки на определенные сайты
Значит добавляешь неправильно. Про запятую, небось, забыли?katherine писал(а):что неправильно
-
Пчелкин
- phpBB 3.3.0
- Сообщения: 11361
- Стаж: 16 лет 8 месяцев
- Благодарил (а): 1832 раза
- Поблагодарили: 1358 раз
Re: Запретить ссылки на определенные сайты
Вам же по русски написали...MIT писал(а):Где LANG_WARNING — языковая константа (с примерным содержанием "Нефиг постить ссылки на всякие там пакоостные сайты!")
NIKON-D90, AF-S 18-105, AF-S 14-24, AF-S 24-70
-
katherine
- phpBB 1.2.1
- Сообщения: 27
- Стаж: 16 лет 2 месяца
- Благодарил (а): 12 раз
Re: Запретить ссылки на определенные сайты
Забыли..MIT писал(а):Про запятую, небось, забыли?
Теперь всё работает!
Я думаю, запрещать ссылки на любые посторонние сайты — слишком жестко по отошению к пользователям, ведь они постоянно делятся интересными ссылками на всякие новости и пр. Но вот хостинги запрещать надо (особенно, если ресурсы позволяют), потому что уже через несколько месяцев от половины файлов и следа не остается... А когда всё хранится на форуме, уже не нужно волноваться за сохранность материаловShredder писал(а):Вам только на определённые фотохостинги запрет надо или вообще на любые посторонние сайты? Лично я у себя сделал именно последнее - по крайней мере, не придётся беспокоиться, что изображения не твои и куда-то потом пропадут.
-
Shredder
- Former team member
- Сообщения: 2266
- Стаж: 17 лет 9 месяцев
- Благодарил (а): 283 раза
- Поблагодарили: 584 раза
Re: Запретить ссылки на определенные сайты
Не сайты, а именно картинки с сайтов. Т.е., обычные ссылки на сайты проходят, а на картинки, включая любые хостинги - нет.katherine писал(а):Я думаю, запрещать ссылки на любые посторонние сайты — слишком жестко по отошению к пользователям, ведь они постоянно делятся интересными ссылками на всякие новости и пр.
-
Shredder
- Former team member
- Сообщения: 2266
- Стаж: 17 лет 9 месяцев
- Благодарил (а): 283 раза
- Поблагодарили: 584 раза
Re: Запретить ссылки на определенные сайты
katherine
Именно.
Вместо той части кода, что давал MIT, добавляется вот это:
Это выдаёт такое же предупреждение и не даёт разместить сообщение, с той лишь разницей, что отрезает ссылки на картинки с вообще любых сайтов. А проверка
Именно.
Вместо той части кода, что давал MIT, добавляется вот это:
Код: Выделить всё
if (isset($post_id))
{
preg_match_all('#' . get_preg_expression('url') . '|' . get_preg_expression('www_url') . '#iu', $this->message, $matches);
foreach ($matches[0] as $match)
{
if (preg_match('#\.(?:gif|jpg|jpe|png|bmp)#iu', $match))
{
$this->warn_msg[] = $user->lang['LANG_WARNING'];
return (!$update_this_message) ? $return_message : $this->warn_msg;
}
}
}if (isset($post_id)) в самом начале нужна для того, чтобы код не запрещал эти ссылки в личных сообщениях, потому что кто и что там в них постит - это их личное дело и запрещать как-то глупо, мне важна сохранность только общедоступной информации.
