Есть проблема в отпрвке юзверями комментов! Шаблон формы следуюющий: HTML: <!-- TITLE: Обратная связь --> <script LANGUAGE="JavaScript"> <!-- function validate() { var error = ""; var f = document.frm; if (f.name.value == "") { error += "Пожалуйста, введите Ваше имя.\n"; } if(f.email.value.indexOf(".")<1 || f.email.value.indexOf("@") < 1) { error += "Пожалуйста, введите email.\n"; f.email.focus(); } if (f.comments.value == "") { error += "Пожалуйста, введите сообщение до 1000 символов.\n"; } if (!error) return true; else{ msg = "Oops! С формой отправки проблемы.\n\n" + error; window.alert(msg); return false; } } function CommentsChange(){ var f = document.frm; txtCount(f.comments,f.commentsleft,1000); } // --> </script> <p>Обратная связь<br><br> Поля жирным обязательны</p> <form name=frm method="POST" onSubmit="return validate();"> <input type=hidden name=page value="feedback"> <span class=red>##err_msg##</span> <p> <table border=0 cellspacing=0 cellpadding=0 width=415 class=shownot> <tr><td align="right" valign="top"><b>Имя:</b> </td> <td><input name=name value="##name##" size="30"></td></tr> <tr><td> </td><td> Ваше имя полностью.</td></tr> <tr><td colspan=2> </td></tr> <tr><td align="right" valign="top"><b>Email:</b> </td> <td><input name=email value="##email##" size=30 /></td> </tr> <tr><td> </td><td> Email, на который нам прислатьответ</td></tr> <tr><td colspan=2> </td></tr> <tr><td align="right" valign="top">Ваш сайт: </td> <td><input name=url value="##url##" size=30></td></tr> <tr><td> </td><td> Адрес Вашего сайта (выборочно)</td></tr> <tr><td colspan=2> </td></tr> <tr><td align="right" valign="top">Нашли нас: </td> <td><input name=foundus value="##foundus##" size=30></td></tr> <tr><td> </td><td> Как Вы нас нашли? (выборочно)</td></tr> <tr><td colspan=2> </td></tr> <tr><td align="right" valign="top"><b>Сообщение:</b> </td> <td><textarea wrap="virtual" name=comments rows=7 cols=40 onKeyDown="CommentsChange()" onKeyUp="CommentsChange()">##comments##</textarea></td></tr> <tr><td> </td><td> Ваше сообщение, <input readonly type=text name=commentsleft size=3 maxlength=4 value="1000" tabindex=5000> символов осталось</td></tr> <tr><td colspan=2> <!-- IF ##EN_IMG_VER## --> <table border=0> <tr bgcolor="#ffffff"> <td colspan=3 class=blck> Мера предосторожности: <br> Введите символы, которые видите на картинке!</td> </tr> <tr bgcolor="#ffffff"> <td class=blck>Проверочный код:</td> <td colspan=2> <table border=0> <tr> <td> <input name="img_text" size=10></td> <td> <img src="index.php?page=feedback&mode=image"></td> </tr> </table></td> </tr> </table> <!-- ENDIF --> </td></tr> <tr><td colspan=2 align=center><br /> <table width="100%"> <tr><td class=blck> <center> <center><input type=submit class=button value="Отправить"></a></center></td></tr></table> </td></tr> </table> </form> <script> CommentsChange(); </script>
Файл обработки формы PHP: <?php if(!defined('SITE_PATH')) die('Access Denied'); $EN_IMG_VER = 1; // main code // is GD library present ? if(!GD_VER) $EN_IMG_VER = 0; if($_GET['mode']=='image'){ if($EN_IMG_VER) { $o_iv =& Factory::create('Image_Verify'); $o_iv->DisplayImage(); } exit; } $whitelist = array( 'name' => array( 'type' => 'string', 'maxlength' => 100, ), 'email' => array( 'type' => 'email', 'maxlength' => 100, ), 'url' => array( 'type' => 'string', 'maxlength' => 100, ), 'foundus' => array( 'type' => 'string', 'maxlength' => 100, ), 'comments' => array( 'type' => 'print_ws', 'maxlength' => 1000, ), ); $err_msg = ''; $tpl_v = array(); $tpl_v['EN_IMG_VER'] = $EN_IMG_VER; if($_SERVER['REQUEST_METHOD']=='POST') { $clean = esFilter($_POST, $whitelist); if(!$clean['email']) $err_msg = hwLng('req_email'); elseif(!$clean['comments']) $err_msg = hwLng('req_comments'); if(!$err_msg && $EN_IMG_VER){ $o_iv =& Factory::create('Image_Verify'); if(!$o_iv->IsTextOK($_POST['img_text'])) $err_msg = hwLng('err_img_code'); } if(!$err_msg){ foreach(array_keys($whitelist) as $k) $tpl_v[$k] = htmlspecialchars($clean[$k], ENT_QUOTES, $GLOBALS['CHARSET']); EvalAdvTpl(TPL_PATH.'feedback_ok.htm', $tpl_v, 1); $tpl_v['HTTP_REFERER'] = htmlspecialchars($_SERVER['HTTP_REFERER'], ENT_QUOTES, $GLOBALS['CHARSET']); $email_body = EvalAdvTpl(TPL_PATH.'feedback.mail',$tpl_v); hwSendMail(ADMIN_EMAIL, $tpl_v['email'], '', $email_body); return; } } //end POST foreach(array_keys($whitelist) as $k) $tpl_v[$k] = isset($_POST[$k]) ? htmlspecialchars($_POST[$k], ENT_QUOTES, $GLOBALS['CHARSET']) : ''; $tpl_v['err_msg'] = $err_msg; EvalAdvTpl(TPL_PATH.'feedback.htm', $tpl_v, 1); ?>
Проблема следующая, если ввожу все латиницей - работает! Пишу по русски - ответ об ошибке - Введите Ваше сообщение Т.е. он говори, что в поле comments - я ничего не писал! Как решить данную проблему? Заранее спасибо!
форма не работает с кириллицей... Может попробовать в мета-заголовок вбить тип кодировки, и в обработчике iconv() заюзать?
Так в форме есть <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> Или это совсем другое?