Кодировка в форме отправки

Тема в разделе "Как сделать...", создана пользователем vave, 27 мар 2013.

  1. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Вот код
    PHP:
    <head>
    <?php
    // send message
    if($_POST[submit]) {
       
        
    // check for suspected injection strings
        
    foreach($_POST as $name => $value) {
            
    filter_string($value);
        }
       
        
    // check for unexpected newline characters
        
    foreach($_POST as $name => $value) {
            if(
    $name != 'message'filter_string($value);
        }
       
        
    $_POST safe_data($_POST'display');
       
        
    // check for required information
        
    if(!$_POST[name])
            
    $error .= 'The <strong>&#1048;&#1084;&#1103;</strong> &#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072;, &#1079;&#1072;&#1087;&#1086;&#1083;&#1085;&#1080;&#1090;&#1077; &#1074;&#1089;&#1077; &#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1099;&#1077; &#1087;&#1086;&#1083;&#1103;.<br/>';
        if(!
    check_email($_POST[email]))
            
    $error .= 'The <strong>E-mail</strong> &#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072;, &#1079;&#1072;&#1087;&#1086;&#1083;&#1085;&#1080;&#1090;&#1077; &#1074;&#1089;&#1077; &#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1099;&#1077; &#1087;&#1086;&#1083;&#1103;.<br/>';
        if(!
    $_POST[subject])
            
    $error .= 'The <strong>&#1053;&#1086;&#1084;&#1077;&#1088; &#1090;&#1086;&#1074;&#1072;&#1088;&#1072;</strong> &#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072;, &#1079;&#1072;&#1087;&#1086;&#1083;&#1085;&#1080;&#1090;&#1077; &#1074;&#1089;&#1077; &#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1099;&#1077; &#1087;&#1086;&#1083;&#1103;.<br/>';
        if(!
    $_POST[message])
            
    $error .= 'The <strong>&#1057;&#1086;&#1086;&#1073;&#1097;&#1077;&#1085;&#1080;&#1077;</strong> &#1055;&#1086;&#1078;&#1072;&#1083;&#1091;&#1081;&#1089;&#1090;&#1072;, &#1079;&#1072;&#1087;&#1086;&#1083;&#1085;&#1080;&#1090;&#1077; &#1074;&#1089;&#1077; &#1085;&#1077;&#1086;&#1073;&#1093;&#1086;&#1076;&#1080;&#1084;&#1099;&#1077; &#1087;&#1086;&#1083;&#1103;.<br/>';
       
        
    // send message if no errors have occurred
        
    if(!$error) {
       
            
    $message "&#1047;&#1072;&#1082;&#1072;&#1079; &#1087;&#1088;&#1080;&#1085;&#1103;&#1090;: ".date($conf[dformat].' '.$conf[tformat], time()+(3600*$conf[toffset]))."
     
    Name: 
    $_POST[name]
    Email: 
    $_POST[email]
    Phone: 
    $_POST[phone]
    Adres: 
    $_POST[adres]
    kupon: 
    $_POST[kupon]
    Metod oplati: 
    $_POST[contact]
     
    $_POST[message]";
           
            
    // remove any punctuation from name to prevent email errors
            
    $_POST[name] = ereg_replace("[[:punct:]]"" "$_POST[name]);
           
            
    mail($sendto$_POST[subject], $message"From:$_POST[name] <$_POST[email]>");
           
            
    $sent true;
           
            
    // create summary of message to display
            
    $summary "
            <strong>Sent:</strong>&nbsp;&nbsp;"
    .date($conf[dformat].' '.$conf[tformat], time()+(3600*$conf[toffset]))."
           
            <p>&nbsp;&nbsp;
    $_POST[name]<br/>
            &nbsp;&nbsp;
    $_POST[email]<br/>
            &nbsp;&nbsp;
    $_POST[phone]</p>
            &nbsp;&nbsp;
    $_POST[adres]<br/>
            &nbsp;&nbsp;
    $_POST[kupon]</p>
           
            <p>
    $_POST[contact]</p>
           
            <p>&nbsp;&nbsp;
    $_POST[subject]</p>
           
            <p><br/>"
    .nl2br($_POST[message])."</p>";
       
        }
     
    }
     
    ?>
     
    </head>
     
    <div style='margin-bottom:10px;'>
       
     
     
    <?php if($sent) { ?>
     
    <div align="center">
        <table border="0" cellpadding="0" cellspacing="0">
            <tr>
                <td width="4"><img src="_l.gif" border="0"></td>
                <td><span lang="ru">
                <font face="Arial" style="font-size: 15pt" color="#87AE00">СПАСИБО
                ЗА ВАШУ ПОКУПКУ</font></span></td>
                <td width="4"><img src="_r.gif" border="0"></td>
            </tr>
        </table>
    </div>
     
    <p align="center"><font face="Arial" color="#333333">Теперь вы можете закрыть
    это окно.</font></p>
     
    <div style='margin-top:10px;'>
        <?php echo $summary?>
    </div>
     
    <?php } else { ?>
     
     
     
    <form action='<?php echo $_SERVER[PHP_SELF]; ?>' method='post'>
    <div style='margin-top:10px;'>
        <table border='0' cellpadding='0' cellspacing='0'>
       
            <tr>
                <td class='label'>&nbsp;</td>
                <td valign="middle">
                <div align="left">
                    <table border="0" cellpadding="0" cellspacing="0">
                        <tr>
                            <td width="4"><img src="_l.gif" border="0"></td>
                            <td><span lang="ru">
                            <font face="Arial" style="font-size: 15pt;" color="#87AE00">
                            ОФОРМЛЕНИЕ ЗАКАЗА</font></span></td>
                            <td width="4"><img src="_r.gif" border="0"></td>
                        </tr>
                    </table>
                </div>
                </td>
            </tr>
       
            <tr>
                <td class='label'>&nbsp;</td>
                <td>
                <p align="center"><font face="Arial" size="1" color="#959595">
                <span lang="ru">БУДЬТЕ ВНИМАТЕЛЬНЫ ПРИ ЗАПОЛНЕНИИ ПОЛЕЙ</span></font></td>
            </tr>
       
            <tr>
                <td class='label'>&nbsp;</td>
                <td><font face="Arial"><font color="#333333"><b><span lang="ru">
                <font style="font-size: 11pt">Имя, Фамилия, Отчесвто</font></span></b><font style="font-size: 11pt"><b><label for='name'>:</label></b><br>
                </font></font><span style="font-size: 11pt"><font color="#333333">
                <input style="border:1px solid #EEDDC8; height:30px" size="60" id='name' name='name' value='<?php echo $_POST[name]; ?>'/></font></span></font></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td><font face="Arial"><font color="#333333"><b><label for='email'>
                <font style="font-size: 11pt">E<span lang="ru">-</span>mail </font>
                </label><font style="font-size: 11pt"><span lang="ru">адрес</span></font></b><label for='email'><font style="font-size: 11pt"><b>: </b><br>
                </font>
                </label></font><span style="font-size: 11pt"><font color="#333333"><input style="border:1px solid #EEDDC8; height:30px" style="height:30px;" size="60" id='email' name='email' value='<?php echo $_POST[email]; ?>'/></font></span></font></td>
            </tr>
            <tr>
                <td>&nbsp;</td>
                <td><font face="Arial"><font color="#333333"><b><label for='phone'>
                <span lang="ru"><font style="font-size: 11pt">Номера телефона</font></span><font style="font-size: 11pt">:</font></label></b><font style="font-size: 11pt"><br>
                </font></font><span style="font-size: 11pt"><font color="#333333">
                <input style="border:1px solid #EEDDC8; height:30px" style="height:30px;" size="60" id='phone' name='phone' value='<?php echo $_POST[phone]; ?>'/></font></span></font></td>
            </tr>
           
                    <tr>
                <td>&nbsp;</td>
                <td><font face="Arial"><font color="#333333"><b><label for="phone">
                <font style="font-size: 11pt"><span lang="ru">Страна, город, район,
                улица, № дома, № квартиры</span>, <span lang="ru">индекс</span>:</font></label></b><font style="font-size: 11pt"><br>
                </font></font><span style="font-size: 11pt"><font color="#333333">
                <input style="border:1px solid #EEDDC8; height:30px" style="height:30px;" size="60" id='phone' name='adres' value='<?php echo $_POST[adres]; ?>'/></font></span></font></td>
            </tr>
           
                    <tr>
                <td>&nbsp;</td>
                <td><font face="Arial"><font color="#333333">
                <font style="font-size: 11pt"><br>
                </font></font>
                <label for='phone'><font style="font-size: 11pt"><span lang="ru">
                <b>
                <font color="#87AE00">Купон </font></b><font color="#87AE00">
                (введите номер скидки) </font></span></font>
                </label>
                <span lang="ru"><font style="font-size: 11pt" color="#87AE00">&nbsp;</font><font color="#FF3300" size="1"><a target="_blank" href="index.php?menu=rabota" style="text-decoration: none"><font color="#FF3300"><span >&#8594;
                ПОДРОБНЕЕ</span></font></a></font></span></span><label for='phone'><font style="font-size: 11pt"><span lang="ru"><b><font color="#333333"><br>
                </font></b></span></font>
                </label><span style="font-size: 11pt"><font color="#333333"><input style="border:1px solid #EEDDC8; height:30px" style="height:30px;" size="60" id='phone' name='kupon' value='<?php echo $_POST[kupon]; ?>'/></font></span></font></td>
            </tr>
           
            <tr>
                <td>&nbsp;</td>
                <td><b><label for="subject"><span lang="ru">
                <font face="Arial" style="font-size: 11pt" color="#333333">Номер
                товара</font></span></label></b><font face="Arial"><font color="#333333"><b><label for='subject'><font style="font-size: 11pt">:</font></label></b><font style="font-size: 11pt"><br>
                </font></font><span style="font-size: 11pt"><font color="#333333">
                <input id='subject' name='subject' value='<?php echo $_POST[subject]; ?>' style="border:1px solid #EEDDC8; height:30px" style="height:30px;" size="60"/></font></span></font></td>
            </tr>
           
            <tr>
                <td>&nbsp;</td>
                <td><font face="Arial">
                <font style="font-size: 11pt" color="#333333"><b><span lang="ru">
                Сообщение в свободной форме</span></b><br>
                </font><span style="font-size: 11pt">
                <font face="Arial" color="#333333">
                <textarea id='message' name='message' style="border:1px solid #EEDDC8; font-family:Arial; color:#808080" rows="5" cols="40" ><?php echo $_POST[message]; ?></textarea></font></span></font></td>
            </tr>
           
            <tr>
                <td>&nbsp;</td>
                <td>
                    <font face="Arial"><font color="#333333">
                    <label for="contact"><b><span lang="ru">
                    <font style="font-size: 11pt">Способ оплаты</font></span></b><font style="font-size: 11pt"><b>:</b>&nbsp;
                    </font>
                    </label>
                    </font><span style="font-size: 11pt"><font color="#333333">
                    <select style="border:1px solid #EEDDC8; height:30px" style="height:30px;" id='contact' name='contact'>
                        <option value='&#1041;&#1072;&#1085;&#1082;&#1086;&#1074;&#1089;&#1082;&#1080;&#1081; &#1087;&#1077;&#1088;&#1077;&#1074;&#1086;&#1076;' <?php if($_POST[contact] == '&#1041;&#1072;&#1085;&#1082;&#1086;&#1074;&#1089;&#1082;&#1080;&#1081; &#1087;&#1077;&#1088;&#1077;&#1074;&#1086;&#1076;') echo "selected='selected'"?>>
                        Банковский перевод</option>
                        <option value='Western Union' <?php if($_POST[contact] == '&#1053;&#1072;&#1083;&#1086;&#1078;&#1077;&#1085;&#1085;&#1099;&#1081; &#1087;&#1083;&#1072;&#1090;&#1105;&#1078;') echo "selected='selected'"?>>
                        Western Union</option>
                        <option value='&#1041;&#1083;&#1080;&#1094; &#1087;&#1077;&#1088;&#1077;&#1074;&#1086;&#1076;' <?php if($_POST[contact] == '&#1041;&#1083;&#1080;&#1094; &#1087;&#1077;&#1088;&#1077;&#1074;&#1086;&#1076;') echo "selected='selected'"?>>
                        Блиц перевод</option>
                        <option value='&#1053;&#1072;&#1083;&#1080;&#1095;&#1085;&#1099;&#1077;' <?php if($_POST[contact] == '&#1053;&#1072;&#1083;&#1080;&#1095;&#1085;&#1099;&#1077;') echo "selected='selected'"?>>
                        Наличные</option>
                        <option value='PayPal' <?php if($_POST[contact] == 'PayPal') echo "selected='selected'"?>>
                        PayPal</option>
                    </select></font></span><font color="#333333"><font style="font-size: 11pt">
                    </font>
                    </font>
                <span lang="ru"><font style="font-size: 11pt" color="#87AE00">&nbsp;</font><font color="#FF3300" size="1">&#8594;
                    </font><font color="#333333" size="1">
                    <a href="index.php?menu=oplata" style="text-decoration: none" target="_blank"><font color="#FF3300">
                    <span>ПОДРОБНЕЕ</span></font></a></font></span></font></td>
            </tr>
           
            <tr>
                <td></td>
                <td><font face="Arial"><span style="font-size: 11pt">
                <input type='submit' name='submit' value='&#1043;&#1054;&#1058;&#1054;&#1042;&#1054;' style="font-size: 10pt; font-weight: bold"/></span></font></td>
            </tr>   
           
        </table>
    </div>
    <input type='hidden' name='mode' value='<?php echo $_GET[mode]; ?>'/>
    <input type='hidden' name='id' value='<?php echo $_GET[id]; ?>'/>
    </form>
     
    <?php ?>
    Какой код и куда нужно вставить, что бы на почту не приходили иероглифы?
     
  2. Css_Ufa

    Css_Ufa

    Регистр.:
    25 ноя 2008
    Сообщения:
    542
    Симпатии:
    323
    Можно обойтись другим способом.

    Во-первых: Выставить в php файле по умолчанию кодировку UTF-8 (без BOM)
    Во-вторых: Добавить .htaccess в корень сайта со следующим содержанием AddDefaultCharset utf-8

    И все будет приходить без иероглифов.
     
  3. swdns

    swdns Создатель

    Регистр.:
    22 сен 2007
    Сообщения:
    32
    Симпатии:
    12
    А если у человека сайт в windows-1251 ?

    лучше на форму
    Код:
    <?php header('Content-type: text/html; charset=utf-8'); ?>
     
  4. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    ничего не помогло, нужно что бы текст приходил на почту в UTF-8, сам сайт в windows-1252
     
  5. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    причем тут php header и .htaccess ? когда речЪ идет о почте, кодировку нужно указывать в хидере письма

    Код:
    $header = "From: \"".$_POST['name'] ."\" <".$_POST['email'].">\n";
    $header .= "Content-type: text/plain; charset=\"utf-8\"";
    mail($sendto, $_POST[subject], $message, $header);
    
     
    Шумадан нравится это.
  6. Nei

    Nei Nosce te ipsum

    Регистр.:
    5 сен 2009
    Сообщения:
    600
    Симпатии:
    468
    Не факт, что именно utf-8 используется.
    Vave, определите вначале кодировку, которая в которую необходимо конвертировать письмо, затем укажите её кодом выше.
     
  7. vave

    vave

    Регистр.:
    23 июн 2007
    Сообщения:
    364
    Симпатии:
    14
    Извиняюсь за столь длительный ответ!
    Сам сайт в кодировке windows-1251
    Почтовый ящик, в кодировке UTF-8
    По этому желательно, что бы письма приходили в кодировке UTF-8

    В обычной форме отправки, мне предложили вставить этот код
    PHP:
    $additional_headers 'MIME-Version: 1.0' "\r\n".'Content-Type: text/plain; charset="windows-1251"' "\r\n";
    if(@
    mail($your_email,$email_subject,$email_content,$additional_headers)) {
    Только как подобное прописать в форму, которой посвящен данный топик?