Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с кодировкой 
:(
    Опции темы
ZuLLeR
Дата 15.6.2009, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 5.6.2008

Репутация: нет
Всего: нет



Есть код обработчика формы, на почту приходит текст каракулями, как в данном случае решить эту проблему с кодировкой?

Код:
Код

<?
function complete_mail() {

        $_POST['fio'] =  substr(htmlspecialchars(trim($_POST['fio'])), 0, 50);

        $accommodation=Array('1-местное','2-местное');
            if (empty($_POST['accommodation']) || !in_array($_POST['accommodation'], $accommodation))
             die('Нет такого пункта!');

        $cnumbers=Array('Стандартный номер Twin','Стандартный номер Queen','Номер для инвалидов Twin','Стандартный номер Super Queen','Exclusive');
            if (empty($_POST['cnumbers']) || !in_array($_POST['cnumbers'], $cnumbers))
             die('Нет такого пункта!');

        $_POST['nrooms'] =  substr(htmlspecialchars(trim($_POST['nrooms'])), 0, 2);

        $arrival_days=Array('01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');
            if (empty($_POST['arrival_days']) || !in_array($_POST['arrival_days'], $arrival_days))
             die('Нет такого пункта!');

        $arrival_months=Array('01','02','03','04','05','06','07','08','09','10','11','12');
            if (empty($_POST['arrival_months']) || !in_array($_POST['arrival_months'], $arrival_months))
             die('Нет такого пункта!');

        $arrival_years=Array('2009','2010','2011','2012','2013','2014','2015');
            if (empty($_POST['arrival_years']) || !in_array($_POST['arrival_years'], $arrival_years))
             die('Нет такого пункта!');

        $departure_days=Array('01','02','03','04','05','06','07','08','09','10','11','12','13','14','15','16','17','18','19','20','21','22','23','24','25','26','27','28','29','30','31');
            if (empty($_POST['departure_days']) || !in_array($_POST['departure_days'], $departure_days))
             die('Нет такого пункта!');

        $departure_months=Array('01','02','03','04','05','06','07','08','09','10','11','12');
            if (empty($_POST['departure_months']) || !in_array($_POST['departure_months'], $departure_months))
             die('Нет такого пункта!');

        $departure_years=Array('2009','2010','2011','2012','2013','2014','2015');
            if (empty($_POST['departure_years']) || !in_array($_POST['departure_years'], $departure_years))
             die('Нет такого пункта!');

        $breakfast=Array('Да','Нет');
            if (empty($_POST['breakfast']) || !in_array($_POST['breakfast'], $breakfast))
             die('Нет такого пункта!');

        $_POST['city'] =  substr(htmlspecialchars(trim($_POST['city'])), 0, 20);

        $transfer=Array('Да','Нет');
            if (empty($_POST['transfer']) || !in_array($_POST['transfer'], $transfer))
             die('Нет такого пункта!');

        $_POST['tel'] =  substr(htmlspecialchars(trim($_POST['tel'])), 0, 30);
        $_POST['email'] =  substr(htmlspecialchars(trim($_POST['email'])), 0, 30);
        $_POST['cont'] =  substr(htmlspecialchars(trim($_POST['cont'])), 0, 50);
        $_POST['organiz'] =  substr(htmlspecialchars(trim($_POST['organiz'])), 0, 30);
        $_POST['testimonials'] =  substr(htmlspecialchars(trim($_POST['testimonials'])), 0, 10000);

        $payment=Array('безналичная','наличная');
            if (empty($_POST['payment']) || !in_array($_POST['payment'], $payment))
             die('Нет такого пункта!');

        // если не заполнено поле "ФИО" - показываем ошибку 0
        if (empty($_POST['fio']))
             output_err(0);
        // если не заполнено поле "Ваш город" - показываем ошибку 1
        if (empty($_POST['city']))
             output_err(1);
        // если не заполнено поле "Телефон/факс" - показываем ошибку 2
        if (empty($_POST['tel']))
             output_err(2);
        // если неправильно заполнено поле email - показываем ошибку 3
        if(!preg_match("/[0-9a-z_]+@[0-9a-z_^\.]+\.[a-z]{2,3}/i", $_POST['email']))


             output_err(3);
        // если не заполнено поле "Контактное лицо" - показываем ошибку 4
        if(empty($_POST['cont']))
             output_err(4);

        // создаем наше сообщение
        $mess = '
ФИО:'.$_POST['fio'].'
Размещение:'.$_POST['accommodation'].'
Категория номера:'.$_POST['cnumbers'].'
Колличество номеров:'.$_POST['nrooms'].'
Дата заезда:'.$_POST['arrival_days'].' '.$_POST['arrival_months'].' '.$_POST['arrival_years'].'
Дата выезда:'.$_POST['departure_days'].' '.$_POST['departure_months'].' '.$_POST['departure_years'].'
Наличие завтрака:'.$_POST['breakfast'].'
Город:'.$_POST['city'].'
Трансфер:'.$_POST['transfer'].'
Телефон:'.$_POST['tel'].'
Контактное лицо:'.$_POST['cont'].'
Организация:'.$_POST['organiz'].'
Форма оплаты:'.$_POST['payment'].'
Контактный email:'.$_POST['email'].'
Написал Вам:'.$_POST['testimonials'];

        // $to - кому отправляем
        $to = '[email protected]';
        // $from - от кого
        $from='Просьба забронировать<www.kw2002.ru>';
        $headers = "Content-type: text/plain; charset=windows-1251";
        mail($to, $_POST['cont'], $mess, "From:".$from, $headers);

    echo '<br><br><br><p align="center"><strong><h1>Спасибо! Ваше письмо отправлено.</h1><br><br>
через 5 секунд Вы автоматически будете перекинуты на главную страницу сайта.
        </strong></p>';
        echo ('<html><head>
<meta http-equiv="content-type" content="text/plain; charset=windows-1251">
<meta http-equiv="refresh" content="5; url=http://www.kw2002.com/">
</head></html>');
}

function output_err($num)
{
    $err[0] = 'ОШИБКА! Не введено ФИО.';
    $err[1] = 'ОШИБКА! Вы не указали Ваш город.';
    $err[2] = 'ОШИБКА! Вы не указали телефон/факс.';
    $err[3] = 'ОШИБКА! Неверно введен e-mail.';
    $err[4] = 'ОШИБКА! Вы не указали контактное лицо.';
    echo '<p><font color="red">'.$err[$num].'</font></p>';
    exit();
}

if (!empty($_POST['submit'])) complete_mail();
?>


PM MAIL   Вверх
skyboy
Дата 15.6.2009, 15:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: 75
Всего: 260



письмо формируется.(PHP)
письмо отправляется.(через-что-там-письмо-отправляется: sendmail, mail, smtp)
письмо принимается.(ваш почтовый сервер)
письмо открывается и просматривается.(почтовый клиент или web-интерфейс)
на каждом этапе(кроме третьего - от коряво настроенного почтового сервера ничто не убережет, но такой вариант маловероятен) можно отследить, какие данные в какой кодировке пришли.
Рекомендую начать с конца: убедиться, что в почтовом клиенте стоит автоопределение кодировки или же, вручную указана корректная кодировка.
потом рекомендую убедиться в том, что данные для отправки формируются в той кодировке, в которой ожидает получить данные почтовый клиент уже после получения письма.
PM MAIL   Вверх
icewind
Дата 15.6.2009, 15:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



Кодировку письма в заголовке укажи utf-8 вместо windows-1251


--------------------
user posted image
PM MAIL Skype   Вверх
ZuLLeR
Дата 15.6.2009, 16:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 5.6.2008

Репутация: нет
Всего: нет



Указал все равно тухлые ромбики(((
PM MAIL   Вверх
icewind
Дата 15.6.2009, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 393
Регистрация: 11.4.2009
Где: Ростов-на-Дону

Репутация: 20
Всего: 20



А контент у тебя утф? просто заголовок указывать толку не будет, сам текст должен быть в утф.

Это сообщение отредактировал(а) icewind - 15.6.2009, 16:19


--------------------
user posted image
PM MAIL Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0780 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.