Strict Standards: Resource ID#18 used as offset, casting to integer (18) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#24 used as offset, casting to integer (24) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#26 used as offset, casting to integer (26) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401

Strict Standards: Resource ID#27 used as offset, casting to integer (27) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/fm.class.php on line 401
ТвойWeb :: Кодировка в форме (textarea, text и т.д.)
ТвойWeb ТвойWeb
Качественный Европейский хостинг
Форум для чайников
 Чат на форуме      Помощь      Поиск      Пользователи


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

> Без описания
UFO
Отправлено: 26 Августа, 2009 - 13:53:11
Post Id



Full Member


Покинул форум
Сообщений всего: 212
Дата рег-ции: Янв. 2005  

Карма 0




Нашел я тут плагин к WordPress, который добавляет форму "Обратной связи". Плагин западный, поэтому саму форму перевел на русский, больше ничего не переводил - ни админку, ни редкие сообщения об ошибках. Сам сайт тоже русскоязычный, само собой в UTF-8, как это принято у всех WordPress сборок. Но вот проблема возникает такая - если вдруг пользователь напортачил в форме обратной связи, то ему выпадет ошибка на русском или английском - не важно, я часть ошибок перевел, а все введенные русскоязычные данные в форме преобразуется в нечитаемый вид типа такого:
CODE:
а�а�а�а

Даже если ничего не трогать, исправить ошибку и отправить так, то мне на почту именно в таком виде и приходит. Это не читабельно. Как можно сделать так, чтобы не менялась кодировка у букв, которые уже введены в textarea, text и т.п. Кодировка в браузере не меняется при этом всем, причем сам сайт корректно работает и в кириллице (авто), и в Unicode UTF-8, а на сайте четко прописана UTF-8.
Кстати, переводил я файл тоже с учетом UTF-8, т.е. в редакторе, который поддерживает эту кодировку. Плагин во вложении, проблемный файл wp-contactform.php
Проблемный кусок кода:
CODE:
if(strlen($wpcf_legend)>0) {
$form .= '<legend>'.$wpcf_legend.'</legend>';
}
$form .= '<form action="'.get_permalink().'" name="wpcf_form" method="post">';
$form .= '<input type="hidden" value="process" name="wpcf_stage"/>';
$form .= $wpcf_strings['error'];
$form .= '<p><label for="wpcf_your_name">'. __('Ваше имя:','wpcf').'</label>';
$form .= $wpcf_strings['name'].'</p>';
$form .= '<p><label for="wpcf_email">'. __('Ваш Email:','wpcf').'</label>';
$form .= $wpcf_strings['email'].'</p>';
$form .= '<p><label>'.__('Вопрос:','wpcf').'</label><span class="challenge">'. __($question, 'wpcf').'</span></p>';
$form .= '<p><label for="wpcf_response">'. __('Ответ:','wpcf').'</label>';
$form .= $wpcf_strings['response'].'</p>';
$form .= '<p><label for="wpcf_website">'. __('Ваш сайт:','wpcf').'</label>';
$form .= '<input class="field" type="text" name="wpcf_website" id="wpcf_website" maxlength="100" tabindex="14" value="'.htmlentities($_POST['wpcf_website']).'" /></p>';
$form .= '<p><label for="wpcf_usersubject">'. __('Тема сообщения:','wpcf').'</label>';
if(strpos(get_option('wpcf_subject'),"|")>0) {
$subjectarray = array();
$subjectarray = explode("|",get_option('wpcf_subject'));
$form .= '<select class="field" name="wpcf_usersubject" id="wpcf_usersubject" tabindex="15">';
for ($i=0; $i<count($subjectarray);$i++ ) {
$arrayoption = '';
$arrayoption = trim($subjectarray[$i]);
if ($arrayoption!='') {
$form .= '<option value="'.trim($subjectarray[$i]).'">'.trim($subjectarray[$i]).'</option>';
}
}
$form .= '</select>';
} else {
if (get_option('wpcf_showsubject')=="TRUE") {
$form.= $wpcf_strings['usersubject'];
}
}
$form .= '</p>';
$form .= '<p><label for="wpcf_msg">'. __('Ваше сообщение :','wpcf').'</label>';
$form .= $wpcf_strings['msg'].'</p>';
if (get_option('wpcf_copy')=='TRUE') {
$form .= '<p><label for="wpcf_copy">'. __('Отправить копию мне','wpcf').'</label>';
$form .= '<input id="copy" type="checkbox" tabindex="17" value="true" name="copy" title="'. __('Отправить копию мне','wpcf').'"/></p>';
}
$form .= '<p class="button"><input id="contactsubmit" type="submit" value="'. __('Отправить','wpcf').'" tabindex="18" name="Submit"/></p>';
$form .= '</form></fieldset></div>';

Скачать файл: wp-contact-form.zip
Скачан раз: 0
 
 Top
shurph
Отправлено: 01 Сентября, 2009 - 19:38:10
Post Id



Junior Member


Покинул форум
Сообщений всего: 58
Дата рег-ции: Июнь 2007  

Карма 1




Трудно судить по такому отрывку. Возможно, проблема вот в этой строке:
CODE:
if(strlen($wpcf_legend)>0)

и вот в этой:
CODE:

if(strpos(get_option('wpcf_subject'),"|")>0) {


Функции strpos, strlen и иже с ними некорректно работают с мультибайтными кодировками, к которым и относится UTF8.

Попробуйте использовать функции mb_strpos, mb_strlen и т.д.
 
 Top
Davinchi
Отправлено: 07 Сентября, 2009 - 03:30:06
Post Id


Full Member


Покинул форум
Сообщений всего: 152
Дата рег-ции: Нояб. 2006  

Карма -2




shurph пишет:
Трудно судить по такому отрывку. Возможно, проблема вот в этой строке:
CODE:
if(strlen($wpcf_legend)>0)

и вот в этой:
CODE:

if(strpos(get_option('wpcf_subject'),"|")>0) {


Функции strpos, strlen и иже с ними некорректно работают с мультибайтными кодировками, к которым и относится UTF8.

Попробуйте использовать функции mb_strpos, mb_strlen и т.д.


что бы это проверить перекодировать надо все в win 1251
 
 Top
shurph
Отправлено: 09 Сентября, 2009 - 17:10:44
Post Id



Junior Member


Покинул форум
Сообщений всего: 58
Дата рег-ции: Июнь 2007  

Карма 1




---

(Отредактировано автором: 17 Мая, 2010 - 09:10:23)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 1 (гостей: 1, зарегистрированных: 0, скрытых: 0)
« HTML »


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



Форум на AlfaSpace.NET


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

[Script Execution time: 0.0306]     [ Gzipped ]



Notice: ob_end_flush(): failed to send buffer of ob_gzhandler (1) in /home/tvoyweb/domains/tvoyweb.ru/public_html/forums/include/page_tail.php on line 33