Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Тематические » Системы управления сайтами » Решение проблемы прекодировки в PHP-Nuke 7.1

Модерирует : Antuan

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

axelz



Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Поставил  PHP-Nuke версии 7.1  Final  взяв ссылку из поста  PHP-NUKE 7.0 FINAL доступен для скачивания
 
воспользовавшись ссылкой Servelat PHP-Nuke 7.1 FINAL Released
 
После установки возникла проблема с неправильной перекодировкой полей вводимых по русски в разделе администратор/свойства.
Т.е. попросту говоря после ввода  полей Название сайта. Приветствие и нек. др.по русски и сохранения результата  форма обновлялась, но вместо введенных руских символов были какие-то кракозябры.
 
Проверка  хостера, установок апача и вырезания тега
Код:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1251">

ничего не дало.
Немного прошелся по исходникам и в
Код:
 php-huke_route/admin/modules/settings.php    
нашел ту бяку из-за которой все происходило  
 
Код:
 
settings.php
строка 452 и далее по тексту
 
    $xsitename = htmlentities($xsitename, ENT_QUOTES);
    $xslogan = htmlentities($xslogan, ENT_QUOTES);
    $xbackend_title = htmlentities($xbackend_title, ENT_QUOTES);
    $xnotify_subject = htmlentities($xnotify_subject, ENT_QUOTES);
    $xsingleaccountname = htmlentities($xsingleaccountname, ENT_QUOTES);  
 
 

 
Дело в том, что функция htmlentities использованная для преобразования полей имя_сайта, слоган и др.  использует при преобразовании кодовую таблицу ISO-8859-1 вот здесь похоже собака и порылась.  
Замена функции htmlentities на htmlspecialchars спасает положение.
 

Код:
 
$xsitename = htmlspecialchars($xsitename, ENT_QUOTES); // aXeL (c) 2004 change htmlentities for ru symbols  
    $xslogan = htmlspecialchars($xslogan, ENT_QUOTES);     // aXeL (c) 2004 change htmlentities for ru symbols
    $xbackend_title = htmlspecialchars($xbackend_title, ENT_QUOTES); // aXeL (c) 2004 change htmlentities for ru symbols  
    $xnotify_subject = htmlspecialchars($xnotify_subject, ENT_QUOTES); // aXeL (c) 2004 change htmlentities for ru symbols  
    $xsingleaccountname = htmlspecialchars($xsingleaccountname, ENT_QUOTES); // aXeL (c) 2004 change htmlentities for ru symbols  
 

 
На безопасность замена функций не влияет.
 
 
 
Добавлено
Да, забыл добавить. Для счастливых обладателей хостинга с php версии 4.1.0. и выше
можно просто добавить третий аргумент в функцию   htmlentities  

Код:
 
settings.php
строка 452 и далее по тексту
 
    $xsitename = htmlentities($xsitename, ENT_QUOTES, cp1251);
    $xslogan = htmlentities($xslogan, ENT_QUOTES, cp1251);
    $xbackend_title = htmlentities($xbackend_title, ENT_QUOTES, cp1251);
    $xnotify_subject = htmlentities($xnotify_subject, ENT_QUOTES, cp1251);
    $xsingleaccountname = htmlentities($xsingleaccountname, ENT_QUOTES, cp1251);  
 
 

 
Именно с версии PHP 4.1.0. появилась поддержка других кодовых таблиц, кроме таблицы по умолчанию ISO-8859-1.
 
 
 
 
 

Всего записей: 3 | Зарегистр. 09-02-2004 | Отправлено: 12:29 09-02-2004 | Исправлено: axelz, 13:03 09-02-2004
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Тематические » Системы управления сайтами » Решение проблемы прекодировки в PHP-Nuke 7.1


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru