Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
Не работает форма с кирилицей |

09.08.2008, 15:47
|
|
Участник форума
Регистрация: 28.01.2008
Сообщений: 247
Провел на форуме: 205760
Репутация:
28
|
|
Не работает форма с кирилицей
Есть проблема в отпрвке юзверями комментов!
Шаблон формы следуюющий:
Код 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>
|
|
|

09.08.2008, 15:50
|
|
Участник форума
Регистрация: 28.01.2008
Сообщений: 247
Провел на форуме: 205760
Репутация:
28
|
|
Файл обработки формы
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);
?>
|
|
|

09.08.2008, 15:52
|
|
Участник форума
Регистрация: 28.01.2008
Сообщений: 247
Провел на форуме: 205760
Репутация:
28
|
|
Проблема следующая, если ввожу все латиницей - работает!
Пишу по русски - ответ об ошибке - Введите Ваше сообщение
Т.е. он говори, что в поле comments - я ничего не писал!
Как решить данную проблему?
Заранее спасибо!
|
|
|

09.08.2008, 21:34
|
|
Участник форума
Регистрация: 24.05.2007
Сообщений: 229
Провел на форуме: 2308963
Репутация:
309
|
|
форма не работает с кириллицей...
Может попробовать в мета-заголовок вбить тип кодировки, и в обработчике iconv() заюзать?
|
|
|

09.08.2008, 23:22
|
|
Участник форума
Регистрация: 28.01.2008
Сообщений: 247
Провел на форуме: 205760
Репутация:
28
|
|
Так в форме есть
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
Или это совсем другое?
|
|
|

09.08.2008, 23:45
|
|
Участник форума
Регистрация: 24.05.2007
Сообщений: 229
Провел на форуме: 2308963
Репутация:
309
|
|
Это оно. Короч остается попробовать iconv() в обработчике.
|
|
|

10.08.2008, 17:40
|
|
Флудер
Регистрация: 20.11.2006
Сообщений: 3,316
Провел на форуме: 16641028
Репутация:
2371
|
|
В js загоняй в base64, в php делай iconv
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|