ExBB Community ExBB Community
 Сайт проекта ExBB Общение объединяет!
Войдите на форум при помощиВойти через loginza
 Чат на форуме      Помощь      Поиск      Пользователи     BanList BanList


 Страниц (1): [1]   

> Описание: Работа форума на хостинге с UTF-8
cooper
Отправлено: 14 октября 2015 — 14:21
Post Id



Пользователь
Junior Member


Покинул форум
Сообщений всего: 66
Дата рег-ции: Авг. 2011  
Репутация: 1




Уже около полугода сижу на хостинге с UTF-8.
Почему? - просто бесплатные имеют ограничения, а платные с windows-1251 существенно дороже.
Форум работает выбрасывает иногда ошибки на шапкой, но в целом функциональность нормальная - все работает. И я бы даже забыл что форум работает на сервере с UTF-8, если бы не хакер, который начал вставлять в названия тем и сообщения различные коды.
Но все по-порядку:
-
С самого начала столкнулся с проблемой - кирилические ники и сообщения не отображаются, и я стал раскапывать почему.
Тут постоянно говорилось, что форум работает только на серверах с windows-1251.
Ппрописать в .htaccess эту строку:
CODE:
AddDefaultCharset windows-1251

- ничего не решает.
Эта строка регламентирует сервер передавать браузеру инфу в этой кодировке, и то, если не будет другой команды. На то, что передает браузер на сервер, это не распространяется.
Есть еще две директивы:
CODE:
CharsetSourceEnc windows-1251

- Загрузка файлов только в windows-1251
CODE:
CharsetDisable on

- Запрет перекодировать файлы.
Обе эти директивы вызывают у меня на хостинге - ошибку 500.
.htaccess ограничено в своей работе директивами заданными в httpd.conf
 
 
cooper
Отправлено: 14 октября 2015 — 14:45
Post Id



Пользователь
Junior Member


Покинул форум
Сообщений всего: 66
Дата рег-ции: Авг. 2011  
Репутация: 1




Как позднее оказалось проверка сообщений на вредоносный код не пропускают UTF-8. Поэтому отмена проверки разблокирует работу форума, но делает его уязвимым. В файле include/vars.class.php
CODE:
function Clean_Key($key) {
$key = trim($key);
if ($key == '') {
return '';
}
$key = preg_replace( "/\.\./" , '' , $key );
$key = preg_replace( "/\_\_(.+?)\_\_/" , '' , $key );
$key = preg_replace( "/^([\w\.\-\_]+)$/", "$1", $key );
return $key;
}

function Clean_Value($var) {
$var = (get_magic_quotes_gpc()) ? trim(stripslashes($var)):trim($var);
$var = preg_replace("#\r#","",$var);
return preg_replace("#&(\#[0-9]+;)#", "&$1", htmlspecialchars($var,ENT_QUOTES));
}

было заменено на
CODE:
function Clean_Key($key) {
if ($key == '') {
return '';
}
return $key;
}

function Clean_Value($var) {
return $var;
}
 
 
cooper
Отправлено: 14 октября 2015 — 15:00
Post Id



Пользователь
Junior Member


Покинул форум
Сообщений всего: 66
Дата рег-ции: Авг. 2011  
Репутация: 1




Поскольку для разблокирование работы форума на сервере с UTF-8 необходимо внести изменения лишь в один файл, то напрашивается вывод:
А не внести ли функцию перекодировки прямо этот файл?
В этом случае можно вернуть функцию проверки.
-
Но фокус в том, что этим уже занимались но не совсем удачно - функции перекодировки iconv нередко заблокированы через php.ini
Поэтому перекодировку лучше выполнить отдельным перекодировщиком:
CODE:
<? function _charset_utf8_win($s)
{
$r='';
$state=1;
for ($i=0;$i<strlen($s);$i++) {="" $c="ord($s[$i]);" switch($state)="" case="" 1:="" not="" a="" special="" symbol="" if($c="">&lt;=127)
{
$r.=$s[$i];
}
else
{
if(($c&gt;&gt;5)==6)
{
$c1=$c;
$state=2;
}
else
$r.=chr(128);
}
break;
case 2: //an utf-8 encoded symbol has been meet
$new_c2=($c1&amp;3)*64+($c&amp;63);
$new_c1=($c1&gt;&gt;2)&amp;5;
$new_i=$new_c1*256+$new_c2;
switch($new_i)
{
case 1025: $out_c='Ё'; break;
case 1105: $out_c='ё'; break;
case 0x00ab: $out_c='«'; break;
case 0x00bb: $out_c='»'; break;
default: $out_c=chr($new_i-848);
}
$r.=$out_c;
$state=1;
break;
}
}
return $r;
} ?>

Или ему подобным.
Может кто-то подскажет, как это сделать перед $key
 
 
cooper
Отправлено: 16 октября 2015 — 13:32
Post Id



Пользователь
Junior Member


Покинул форум
Сообщений всего: 66
Дата рег-ции: Авг. 2011  
Репутация: 1




Скачал релиз на UTF-8 и сравнил include/vars.class.php - там точно такая же проверка ключей.
Почему же она пропускает кирилицу в UTF-8?
Ничего не понимаю.
-
Загрузил файлы из обоих релизов UTF-8 и windows-1251
Может кто чего подскажет.........................

Скачать файл: (для скачивания файла Войдите или зарегистрируйтесь)
Скачан раз: 1
 
 
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0)
« Решение проблем »

> Похожие темы: Работа форума на хостинге с UTF-8
Темы Форум Информация о теме Обновление
Неактивные ссылки
после обновления форума с 0.15
Установка и обновление Ответов: 3
Автор темы: Pauk
14 ноября 2010 — 14:27
Автор: Pauk
Как поставить tapatalk
просмотр форума с мобильного
Общие вопросы Ответов: 2
Автор темы: hvory
14 августа 2011 — 12:15
Автор: hvory
Мод Postimage
внешний загрузчик картинок для вашего форума
Модификации и дополнения Ответов: 5
Автор темы: Guyver
2 января 2018 — 13:44
Автор: Guyver
Sitemap
Генерация карты сайта/форума
Обсуждение Ответов: 3
Автор темы: mastersound
5 августа 2009 — 23:52
Автор: mastersound
Объявление на форуме для гостей (или для пользователей с другими правами) с админкой
На главной форума, но можно вывести в любом другом месте
Модификации и дополнения Ответов: 1
Автор темы: Guyver
8 сентября 2016 — 16:30
Автор: Liliat
 



Все гости форума могут просматривать этот раздел.
Только администраторы и модераторы могут создавать новые темы в этом разделе.
Только администраторы и модераторы могут отвечать на сообщения в этом разделе.
 




Яндекс.Метрика   

Powered by ExBB
ExBB FM 1.0 RC1 by TvoyWeb.ru
InvisionExBB Style converted by Markus®

[Script Execution time: 0.1086]     [ ]