багом не является Локальная ссылка

killserver

Пользователь
Версия: 2.1.5 [ALPHA]
Описание:
Баг состоит в том, что если ссылка является "локальной"
Код:
[url=/viewtopic.php?id=123]test[/url]
ссылка превратится в

Please Login or Register to view hidden text.


Фикс, который я написал(файл library/includes/bbcode.php):
Код:
    function url_callback ($m)
    {
        global $bb_cfg;

        $url = trim($m[1]);
        $url_name = (isset($m[2])) ? trim($m[2]) : $url;

        if (!preg_match("#^(http|https)://#isu", $url) && !preg_match("/^#/", $url) && substr($url, 0, 1)!="/") {
            $url = 'http://' . $url;
        }

        if (in_array(parse_url($url, PHP_URL_HOST), $bb_cfg['nofollow']['allowed_url']) || $bb_cfg['nofollow']['disabled'])
        {
            $link = "<a href=\"$url\" class=\"postLink\">$url_name</a>";
        }
        else
        {
            $link = "<a href=\"$url\" class=\"postLink\" rel=\"nofollow\">$url_name</a>";
        }

        return $link;
    }
Тоесть в этой функции заменил:
Код:
        if (!preg_match("#^https?://#isu", $url) && !preg_match("/^#/", $url)) $url = 'http://' . $url;
на:
Код:
        if (!preg_match("#^(http|https)://#isu", $url) && !preg_match("/^#/", $url) && substr($url, 0, 1)!="/") {
            $url = 'http://' . $url;
        }

Можете проигнорировать, либо изменить данный фикс. А можете - включить его в обиход;)
 
Последнее редактирование:

Exile

Администратор
killserver спасибо за указание на недочет. Проблема в том что у движка действительно нет поддержки относительных ссылок. Посмотрим что сделать.
 
Сверху