Решение проблемы русских символов при добавлении пользователем своего варианта ответа.Установил опрос PollXT, никаких проблем с кодировкой в процессе эксплуатации не обнаружил, пока...
пока не захотел
дать возможность пользователю добавлять свой вариант ответа.
Есть там такое в настройках. Чтобы его активировать нужно зайти в Опрос, нажать Вопрос, выбрать один из Ответов на него и в настройках указать
Произвольный текст - Да
Новый вариант ответа? - на выбор:
- Никода - х.з. - наверное только из тех, кот. есть в опросе
- Только зарегистрированные - х.з., наверное только из всех вариантов, которые есть в базе
- Всегда (неопубликованные) - вариант добавится, но будет виден только в админке, пользователь его не увидит
- Всегда (опубликованные) - вариант добавится прямо на страницу опроса и пользователь его увидит (после обновления страницы)
С первыми двумя предлагаю поэкспериментировать самостоятельно и отписать сюда же.
Главное с чем вы столкнётесь,
дав пользователю возможность добавлять свой вариант ответа - это:
варианты, состоящие из русских букв будут заноситься в базу в непонятной кодировке.
Решению этой проблемы я посвятил целых 2 вечера (это было уже принципиально :-) )... самое трудное было найти в каком месте значение заносится в базу... или готовится к занесению. Но решение было найдено!
В файле components/com_pollxt/script/pollxt.js замените
ft = new Array(el.id.substr(1,el.id.length), el.value);
на
ft = new Array(el.id.substr(1,el.id.length), encodeURIComponent(el.value));
А в файле components/com_pollxt/class/pollxt.vote.php замените
$odb->qoption = html_entity_decode($val);
на
$odb->qoption = html_entity_decode(preg_replace('/%([0-9a-f]{2})/ie', "chr(hexdec('\\1'))", $val));
Это частая ошибка, которая возникает при работе AJAX и кириллических символов. Для её излечения я сначала в файле с JavaScript-кодом перекодировал значение добавляемого пользователем варианта в UTF-8, а перед занесением в базу уже на PHP раскодировал его. Я думаю, что решение универсальное... и если у Вас используется AJAX в связке с PHP и возникли проблемы с передачей кириллических символов, то этот вариант может "прокатить". Главное найти JavaScript-код, в котором значение передаётся на AJAX-сервер, и php-код на этом сервере, где полученное значение уже заносится в базу.
Если Ваш сайт работает в кодировке cp1251, то возможно, понадобится дополнительное преобразование. Подробнее читайте, пожалуйста, вот тут:
AJAX и русские буквы - проблема с кодировкой P.S. Модифицированную версию (русский перевод тоже включен!) PollXT с учетом всех изменений, описанных во всех сообщениях этой темы можете взять тут:http://ecolora.com/index.php/programmy/category/4-joomla_____________________________________
Если Вы хотите отблагодарить меня за проделанную работу, зарегистрируйтесь по этим партнёрским ссылкам:
Это биржи ссылок. Из личного опыта: к примеру, доход для вёбмастера для сайта с тИЦ 10 и PR 2 - с каждой из них от 1000 р./мес и выше.