[Другое] Ip.board обновление системы безопасности

GIwild

Постоялец
Регистрация
6 Май 2006
Сообщения
116
Реакции
8
Сегодня вышло обновление системы безопасности для следующих версий
IP.Board 3.2.x
IP.Board 3.1.x
IP.Board 3.0.x
скачать можно бесплатно перейдя по ссылке
Для просмотра ссылки Войди или Зарегистрируйся
 
Сегодня вышло новое обновление системы безопасности.
Источник: Для просмотра ссылки Войди или Зарегистрируйся
It has come to our attention that a security issue is present in IP.Board.

We strongly recommend that you follow the instructions below to patch your community.

Instructions
This security update is a simple one file patch. Simply download the relevant zip file for your version. Expand the zip file and upload /admin/sources/base/core.php to your /admin/sources/base directory on your server ensuring that the file is overwritten.

Please contact technical support if you're unsure how to update your community.

The main download zips have been updated at the time of this announcement.

IP.Board 3.3.x
Для просмотра ссылки Войди или Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся 38.93K 1181 downloads

IP.Board 3.2.x
Для просмотра ссылки Войди или Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся 37.28K 187 downloads

IP.Board 3.1.x
Для просмотра ссылки Войди или Зарегистрируйся Для просмотра ссылки Войди или Зарегистрируйся 57.78K 135 downloads

НО!!! После установки выдаёт ошибку и форум не загружается.
Fatal error: Call to undefined method IPSText::makeSeoTransliterate() in /sata1/home/users/tuning1/www/forum.tuning.crimea.ua/admin/sources/classes/output/publicOutput.php on line 2036
в чём может быть причина? Кто сталкивался?

Установлен Invision Power Board 3.3.3 Russian Nulled by IPBMafia
 
В русских версиях IP.Board присутствует полезная возможность транслита URL.
Поисковикам нравится, если адреса на сайте написаны латинскими буквами, поэтому это помогает в поисковой оптимизации форума.

Однако, в англоязычных версиях такой функции нет (попросту не нужно), поэтому, если вы поставили англоязычную версию форума, адреса будут отображаться как есть, без транслита. Ниже я описываю как добавить эту функцию в англоязычную версию форума.
Внимание! Это нужно только если у вас англоязычная версия, не от IBR!
Откройте файл root/admin/sources/base/core.php (где root - корень вашего форума).
Найдите:
Код:
static public function encodeForXml( $string )
{
if ( function_exists( 'mb_detect_encoding' ) )
{
$encoding = mb_detect_encoding( $string );
if ( $encoding != 'UTF-8' )
{
$string = IPSText::convertCharsets( $string, $encoding );
}
}
elseif ( strtolower( IPS_DOC_CHAR_SET ) == 'utf-8' )
{
$string = utf8_encode( $string );
}
 
return $string;
}

ниже вставьте:
Код:
static public function transliterate( $text )
{
return str_replace( array('а','б','в','г','д','е','ё','ж','з','и','й','к','л','м','н','о','п','р','с','т','у','ф','х','ц','ч','ш','щ','э','ю','я','ы','ь','ъ'), array('a','b','v','g','d','e','e','zh','z','i','i','k','l','m','n','o','p','r','s','t','u','f','h','c','ch','sh','sh','a','ju','ja','i','',''), $text);
}
 
static public function makeSeoTransliterate( $text )
{
$text = urldecode($text);
$text = self::transliterate( $text );
$text = preg_replace('#[^a-z0-9-]#', '', $text);
$text = urlencode($text);
return $text;
}

Теперь в этом же файле найдите

Код:
 /**
* Make an SEO title for use in the URL
* We parse them even if friendly urls are off so that the data is there when you do switch it on
*
* @param string Raw SEO title or text
* @return string Cleaned up SEO title
*/
static public function makeSeoTitle( $text )
{
if ( ! $text )
{
return '';
}
 
/* Strip all HTML tags first */
$text = strip_tags($text);
 
/* Preserve %data */
$text = preg_replace('#%([a-fA-F0-9][a-fA-F0-9])#', '-xx-$1-xx-', $text);
$text = str_replace( array( '%', '`' ), '', $text);
$text = preg_replace('#-xx-([a-fA-F0-9][a-fA-F0-9])-xx-#', '%$1', $text);
 
/* Convert accented chars */
$text = self::convertAccents($text);
 
/* Convert it */
if ( self::isUTF8( $text ) )
{
if ( function_exists('mb_strtolower') )
{
$text = mb_strtolower($text, 'UTF-8');
}
 
$text = self::utf8Encode( $text, 250 );
}
 
/* Finish off */
$text = strtolower($text);
 
if ( strtolower( IPS_DOC_CHAR_SET ) == 'utf-8' )
{
$text = preg_replace( '#&.+?;#'  , '', $text );
$text = preg_replace( '#[^%a-z0-9 _-]#', '', $text );
}
else
{
/* Remove &#xx; and &#xxx; but keep &#xxxx; */
$text = preg_replace( '/&#(d){2,3};/', '', $text );
$text = preg_replace( '#[^%&#;a-z0-9 _-]#', '', $text );
$text = str_replace( array( '"', '&'), '', $text );
}
 
$text = str_replace( array( '`', ' ', '+', '.', '?', '_', '#' ), '-', $text );
$text = preg_replace( "#-{2,}#", '-', $text );
$text = trim($text, '-');
 
IPSDebug::addMessage( "<span style='color:red'>makeSeoTitle ($text) called</span>" );
 
return ( $text ) ? $text : '-';
}

и после строчки
Код:
$text = trim($text, '-');
вставьте:

Код:
$text = self::makeSeoTransliterate( $text );
Внимание Сохраните этот файл в кодировке UTF-8 БЕЗ BOM! По умолчанию он в кодировке ANSI, поэтому работать ничего не будет! Для того, чтобы сохранить файл в этой кодировке, скачайте программу Notepad++, откройте в ней этот файл (root/admin/sources/base/core.php) и выберите в верхнем менюКодировки → Преобразовать в UTF-8 без BOM, после этого сохраните файл и закачайте к себе на сервер.
Теперь откройте файл root/admin/sources/classes/output/publicOutput.php
Найдите:



Код:
/**
 
* Formats the URL (.htaccess SEO, etc)
 
*
 
* @access public
 
* @param string Raw URL
 
* @param string Any special SEO title passed
 
* @param string Any special SEO template to use. If none is passed but SEO is enabled, IPB will search all templates for a match
 
* @return string Formatted URL
 
*/
 
public function formatUrl( $url, $seoTitle='', $seoTemplate='' )
 
{
 
//-----------------------------------------
 
// INIT
 
//-----------------------------------------
 
if ( ! ipsRegistry::$settings['use_friendly_urls'] )
 
{
 
return $url;
 
}

и после этой фигурной скобки вставьте:
Код:
$seoTitle = IPSText::makeSeoTransliterate( $seoTitle );
Все. Теперь адреса содержащие кириллицу будут отображаться транслитом.

Нашел подобную ошибку на другом ресурсе , это как бы статья для исправления ошибки.


 
Спасибо. Помогло. Сравнил с предыдущей версией core.php - там это уже было.
В связи с тем что транслит у меня уже был настроен, корректировать publicOutput.php не пришлось ;)
Вопрос исчерпан.
 
а заплатка не стучит?
вышла новая версия и вот думаю, ставить - не ставить?
 
  • Заблокирован
  • #6
  • Заблокирован
  • #8
Назад
Сверху