Относительные ссылки в тегах bbcode

Проблемы с установкой или работой phpBB 3.0.x? Получите помощь здесь!

Относительные ссылки в тегах bbcode

Сообщение bobr 24.06.2008 15:27

Извиняюсь, если плохо искал через поиск по данному вопросу.

Интересует как заюзать относительные ссылки в тегах [img] и [url]. Очень надо, для мультидоменности.
Может кто-то делал или модифицировал парсинг ббкодов, чтобы они хавали относительные ссылки, а не выдавали текст вместо них ? :)

зы: рылся ща в bbcode.php и functions_posting.php ... пока ничего не нарыл
bobr
phpBB 1.0.0
 
Сообщения: 3
Зарегистрирован: 24.06.2008 15:18


Re: Относительные ссылки в тегах bbcode

Сообщение bobr 24.06.2008 16:32

Все .. переписал код для [url] .. завтра для изображений перепишу

Кому надо, могу поделиться
bobr
phpBB 1.0.0
 
Сообщения: 3
Зарегистрирован: 24.06.2008 15:18

Re: Относительные ссылки в тегах bbcode

Сообщение rxu 24.06.2008 16:46

Делитесь, может быть, кому-то надо :)
Изображение
Аватара пользователя
rxu
phpBB Guru
 
Сообщения: 4606
Зарегистрирован: 12.05.2006 17:16
Откуда: Красноярск

Re: Относительные ссылки в тегах bbcode

Сообщение bobr 25.06.2008 12:08

Сейчас доточил код, возможность XSS тоже учел.
Если ссылка идет на этот-же домен (с которого постят), то делает ее относительной. Также понимает, собственно, относительные ссылки вида ./folder/mylink.php
Создатели phpbb было учли относительные ссылки (на что указывает get_preg_expression('relative_url'), но сам код неверен), но они не работали :?

Для того, чтобы тег [url] понимал относительные ссылки нужно:

ОТКРЫВАЕМ ФАЙЛ includes/message_parser.php

НАХОДИМ
Код: Выделить всё
preg_match('#^' . preg_quote(generate_board_url(), '#') . get_preg_expression('relative_url') . '$#i', $url))

ЗАМЕНЯЕМ НА
Код: Выделить всё
preg_match('#^' . get_preg_expression('relative_url') . '$#i', $url)) //BoBr: changed (why they was used generate_board_url() here ?)


НАХОДИМ
Код: Выделить всё
if (!preg_match('#^[a-z][a-z\d+\-.]*:/{2}#i', $url))

ЗАМЕНЯЕМ НА
Код: Выделить всё
if (!preg_match('#^[a-z][a-z\d+\-.]*:/{2}|^\./#i', $url))   //BoBr: changed, +prevent XSS attack


НАХОДИМ
Код: Выделить всё
// Is this a link to somewhere inside this board? If so then remove the session id from the url
if (strpos($url, generate_board_url()) !== false && strpos($url, 'sid=') !== false)
{
   $url = preg_replace('/(&|\?)sid=[0-9a-f]{32}&/', '\1', $url);
   $url = preg_replace('/(&|\?)sid=[0-9a-f]{32}$/', '', $url);
   $url = append_sid($url);
}


ВСТАВЛЯЕМ ПОСЛЕ
Код: Выделить всё
// BoBr: make relative urls from absolute
$url = preg_replace('|^' . str_replace('.', '\.', generate_board_url()) . '|iU', '.', $url);
// BoBr: end;


ВСЁ :twisted:

ща надо для картинок еще сделать ...
bobr
phpBB 1.0.0
 
Сообщения: 3
Зарегистрирован: 24.06.2008 15:18


Вернуться в Поддержка phpBB 3.0.х

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 0