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 |
|