Notice: Undefined index: name in /home/exbb/exbb.info/www/community/include/lib.php on line 293 ExBB Community :: Версия для печати :: Не могу войти на форум. [2]
ExBB Community » Файловый ExBB » Решение проблем » Не могу войти на форум.

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

16. cooper - 17 февраля 2015 — 10:12 - перейти к сообщению
Вообще, поскольку результат переговоров с хостерами, реально не предсказуем, - универсальным средством для любого хостинга, могло бы стать перекодирование средствами РНР.
Ввести условие для ввода текста, при UTF-8 перекодировать через:
CODE:
echo iconv("utf-8", "windows-1251", "Перекодировать на cp-1251.");

Кто знает, в скольких файлах нужно было бы это сделать?
И возможно ли?
17. - 17 февраля 2015 — 11:03 - перейти к сообщению
Я не в курсе. Огорчение
18. 1Bot - 17 февраля 2015 — 13:29 - перейти к сообщению
cooper , попробуйте советы из темы Необходимо ввести текст сообщения!
19. cooper - 17 февраля 2015 — 16:19 - перейти к сообщению
1Bot пишет:
cooper , попробуйте советы из темы Необходимо ввести текст сообщения!

Там уже вводили перекодировку через iconv в include/vars.class.php
CODE:
function _String($key,$var = '') {
$this->input[$key] = (isset($this->input[$key]) && $this->input[$key] != '') ? $this->input[$key]:$var;
return $this->input[$key];
}

на
CODE:
function _String($key,$var = '') {
$this->input[$key] = (isset($this->input[$key]) && $this->input[$key] != '') ? $this->input[$key]:$var;
return iconv('UTF-8', 'Windows-1251', $this->input[$key]);
}


Но разблокировала работу форума отмена проверки:
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;
}

Сообщения добавляются, кириличиские ники входят на форум, но появились ошибки сверху.
Считаю более правильным решение с перекодировкой, а с отменой проверки - только временным.
Интересно, что это в одном и том же файле.
Наверно там нужно согласовать приоритетность.
1.Что проверять перед перекодировкой.
2.Что перекодировать.
3.Что проверять после перекодировки.
Скорее всего, это этим же файлом и ограничится, поскольку в нем все разблокировалось.
Если эту проблему решить, то форум спокойно можно ставить и на сервера с UTF-8. Улыбка
20. cooper - 19 февраля 2015 — 17:48 - перейти к сообщению
Что если прямо в этом скрипте прописать проверку на кодировку и перекодировку?
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:
$name = stripslashes($this->charset=="windows-1251" && mb_detect_encoding($name,"UTF-8",true)!==false ? iconv("UTF-8", "windows-1251", $name) : $name);

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

Powered by ExBB
[Script Execution time: 0.0166]     [ ]