PDA

Просмотр полной версии : Проблема с кодировкой. Форма обратной связи.


Bashenko
24.11.2008, 09:41
Друзья, нашел в Сети пример формы обратной связи.

Четыре текстовых поля:
name
email
phone
message

Код на кнопке "Отправить":
on (release) {
if (name eq "" or phone eq "" or message eq "" or email eq "") {
stop();
} else {
loadVariablesNum("http://-------/form.php", 0, "POST");
gotoAndStop(2);
}
}


На кнопке "Очистить" (к нему вопросов нет, но для кучи)
on (release) {
name = "";
phone="";
message="";
email="";
}


Код в PHP-файле:
<?

$to = "mail@me.ru";
$msg = "$name\n\n";
$msg .= "$message\n\n";

mail($to, $phone, $msg, "From: My web site\nReply-To: $email\n");

?>




И в чем, тут, черт побери, дело?
Под маком в Сафари и Опере все прекрасно работает. Письма приходят на чистом русском.
А вот под виндой - кракозябры.
На текстовых полях стоит шрифт "_sans" - как семейство беззасечковых.
Однако, кракозябры тем не менее.

Что мне делать? Может я embend неправильно делаю? (щелкаю на текстовое поле, embend. Выбираю Cyrilic, basic Lanit, Numbers, Uppercase) и прописываю шрифт.

Сроки горят. Буду очень рад, если сможете помочь.
Облазил весь форум (в пределах доступного времени) – не нашел подобной проблемы.

aksios
24.11.2008, 10:25
embend такого слова нет.
Встраивание шрифта в флеш не сказывается на работе пхп.
Все дело в кодировке - в страничке html нужно прописать кодировку UTF-8 и видимо все.

nOobCrafter
24.11.2008, 17:35
**тут был плохой код**
Пропиши в первом кадре, это бяка, но все дело в ней. У меня такая же проблема, конретно щас пытаюсь найти решение, вот тема если хочешь посмотри http://demiart.ru/forum/index.php?showtopic=60439&view=findpost&p=1704945

iNils
24.11.2008, 18:12
nOobCrafter, забудьте, что useCodePage вообще существует. Советовать подобные вещи, это тоже самое, что выпускать обувь только 38 размера, кому-то налезет, а кому-то нет.

nOobCrafter
24.11.2008, 18:39
iNils я согласен на 100%, знаю чем это чревато, НО пока что я нашел только такой способ решения проблемы, он временный (я так думаю) но у чела сроки горят и по иде еэто должно помоч. Если есть еще идея то я с радостью их выслушаю

iNils
24.11.2008, 19:03
Об отправки почты (http://www.flasher.ru/forum/showthread.php?t=67377)
О кодировке aksios выше сказал.

scarbo
25.11.2008, 02:05
Во флешsend_mc.onPress = function(){
LO = new LoadVars();
LO.mailmsg = text_txt.text;
LO.subj = "Юлие Файн";
LO.fn = fio_txt.text+" ("+tel_txt.text+")";
LO.mail = mail_txt.text;
LO.sendAndLoad("pismo.php",LO,"POST");}
В PHP <?
$mail = iconv("UTF-8", "koi8-r", $mail);
$fn = iconv("UTF-8", "koi8-r", $fn);
$mailmsg = iconv("UTF-8", "koi8-r", $mailmsg);
$subj = iconv("UTF-8", "koi8-r", $subj);

mail("my_adress@mail.ru", $subj, $mailmsg,"From: $fn <$mail>");
?>

nOobCrafter
25.11.2008, 12:56
гхым..У меня такой пхп:
<?php
$contact_name = $_POST['fname'];
$contact_subject = $_POST['lname'];
$contact_email = $_POST['email'];
$contact_message = $_POST['comments'];

$contact_name = iconv("UTF-8", "koi8-r", $contact_name);
$contact_subject = iconv("UTF-8", "koi8-r", $contact_subject);
$contact_email = iconv("UTF-8", "koi8-r", $contact_email);
$contact_message = iconv("UTF-8", "koi8-r", $contact_message);

mail("mymail@gmail.ru","Сообщение с сайта",
"От кого : " .$contact_name.
"\nТема : " .$contact_subject.
"\nE-mail : " .$contact_email.
"\nСообщение : " .$contact_message);
?>
Спс scarbo теперь все приходит на русском и фсо ок, НО тут возникла другая проблема, строчки "От кого", "Тема" и т.д. приходят кракозябрами.. Как с этим бороться?.. Пробовал пересохранять под разными кодировками, никакого эффекта. Стоит дефолтная ANSI.

etc
25.11.2008, 13:40
Ещё бы, php-файл сохранен в ANSI, конвертирует он UTF-8 в KOI, отправляя в конечном итоге салат из собственной ANSI и KOI. Вот такая вот сборная солянка, почему нельзя было изначально работать только (только!) в UTF-8 — загадка.

nOobCrafter
25.11.2008, 14:12
Просто при сохрании пхп в UTF-8 приходит та же крокозябра, а при ANSI "Сообщение с сайта" приходит на русском языке, зато все остальные заголовки крокозябит((

etc
25.11.2008, 14:17
Потому что не надо разводить салат из кодировок, не надо ничего конвертировать. Нужно сохранить php-файл в кодировке UTF-8, убрать напрочь конвертацию через iconv и добавить заголовок Content-Type с указанной кодировкой utf-8.

nOobCrafter
25.11.2008, 14:54
$encoding = "utf-8";
$header ="Content-type: text/html; charset=$encoding\r\n";
??? это?.. пробовал, проблема в том что я не знаю куда "$header" засунуть что бы корректно работало((( при вставке в графу mail, оно мне просто выводит эту строчку(((

etc
25.11.2008, 15:01
Всё плохо. Понятно. Вот это сохранить в кодировке UTF-8:

<?php
$contact_name = $_POST['fname'];
$contact_subject = $_POST['lname'];
$contact_email = $_POST['email'];
$contact_message = $_POST['comments'];

mail("mymail@gmail.ru","Сообщение с сайта",
"От кого : " .$contact_name.
"\nТема : " .$contact_subject.
"\nE-mail : " .$contact_email.
"\nСообщение : " .$contact_message, "Content-Type: text/plain; charset=utf-8\r\n");
?>

И всё.

nOobCrafter
25.11.2008, 15:35
Угу спс помогло, только один нюанс, пропала тема — "Сообщение с сайта".
Еще вопрос какая разница между этим и тем как я делал:
<?php
$contact_name = $_POST['fname'];
$contact_subject = $_POST['lname'];
$contact_email = $_POST['email'];
$contact_message = $_POST['comments'];

$encoding = "utf-8";
$header ="Content-type: text/html; charset=$encoding\r\n";

mail("mymail@gmail.ru","Сообщение с сайта",
"От кого : " .$contact_name.
"\nТема : " .$contact_subject.
"\nE-mail : " .$contact_email.
"\nСообщение : " .$contact_message, $header);
?>
По моему все верно должно быть, но у меня просто в конце сообения выводило строчку Content-Type: text/plain; charset=utf-8\r\n ((

etc
25.11.2008, 16:00
Вы привели в первый раз кусок из своего кода, предлагая, что остальное мы сами в мозгу воспроизведем. Ваш вариант аналогичен моему.

nOobCrafter
25.11.2008, 16:17
хз проверил щас, вроде бы все пашет, может где запятую забыл поставить может что еще, разница только в том что у тебя Content-Type: text/plain;, а у меня было Content-Type: text/html;. А как быть с темой?.. Как сделать что бы она отображалась? Тема - "Сообщение с сайта"

etc
25.11.2008, 17:31
А тему надо специфически кодировать. Проще написать её на английском.

nOobCrafter
25.11.2008, 17:58
не не не, с кодировкой все ок! у меня ее просто невидно, даже графы такой нету((
От кого:
кому:
дата:
(тут должна быть строчка с темой но ее физически нет):
текст собщения:
Все остальное выводится просто прекрасно.
Если убрать строчка ", "Content-Type: text/plain; charset=utf-8\r\n"" то тема отображается, хоть и кракозябрами но есть. а если е еоставить то темы невидно.

etc
25.11.2008, 18:10
Поле темы должно быть закодировано в формате BASE64 (если не ошибаюсь).

nOobCrafter
25.11.2008, 18:15
Угу, на англ. отображается намана, а с русским тема накрылась медным тазомполучается?... Всеравно спс большое.

scarbo
26.11.2008, 02:03
to __etc, все в UTF-8 меня не спасло,при чтении почты с Outlook,там только кодировки помогли

etc
26.11.2008, 02:14
Это печально.

scarbo
26.11.2008, 02:42
Я не ратую за Outlook,но он стоит по умолчанию на Винде

aksios
26.11.2008, 10:27
Тема не стоит более детальной проработки - текст пришел, тема на английском, для формы обратной связи не критично. Я в форме обратной связи всегда ставлю название ресурса в качестве темы - имя домена латинскими буквами.
А аутлук - зло.

nOobCrafter
26.11.2008, 14:27
А аутлук - зло — +. Я считаю что дальнейшее развитие темы актуально лишь для саморазвития, ибо это может еще кой где приигодиться, так что если несложно может продолжим?

etc
26.11.2008, 15:58
Ну поищите варианты, как кодировать заголовок.