Смысл в том, что у меня форум 2 года в локальной сети, но готовится для выхода в интернет.
Понятное дело, ссылки в темах, картинки в статьях и многое другое имеет вид локальных ссылок типа http://192.168.1.2/... для интернета они не подходят.
Вот и возникла идея создания мода, который будет преобразовывать ссылки такого типа во внешние, если посетитель заходит из инета.
Смысл заключается в использовании буферизации ob_start().
В page_header.php
FIND:
Код: Выделить всё
//
// Generate logged in/logged out status
//
if ( $userdata['session_logged_in'] )
Код: Выделить всё
function replace_addr($buffer)
{
$orig_addr = "http://192.168.1.2/";
$new_addr = "http://siava.ru/";
$s = str_replace($orig_addr, $new_addr, $buffer);
return $s;
}
function is_local($addr)
{
$net = substr($addr, 0, 7);
if (($net == "192.168") || ($net == "194.105"))
{ return true; } else { return false; }
}
if (!is_local($client_ip)) ob_start("replace_addr");
функция function replace_addr заменяет один адрес на другой.
функция function is_local проверяет откуда пришёл посетитель, из инета или из внутренней сети (маски адресов внутренней сети внутри функции).
В page_tail.php
FIND:
Код: Выделить всё
//
// Close our DB connection.
//
$db->sql_close();
Код: Выделить всё
if (!is_local($client_ip)) ob_end_flush();
Эта конструкция работает не очень стабильно, иногда вылезают глюки с белым экраном.. наверно что-то с буферизацией не то сделал

Мне кажется, что я накосячил в последнем коде и там надо не ob_end_flush(); а ob_get_contents();
Знатоки, поправьте меня

Добавлено спустя 1 час 3 минуты 23 секунды:
Что-то я рано помощи попросил

Действительно, правильно будет
Код: Выделить всё
if (!is_local($client_ip)) ob_get_contents();

Вечером залью на рабочий форум, потестирую пару дней и если будет ок, то оформлю модом

Добавлено спустя 5 часов 46 минут 27 секунд:
Всё работает
