За последние 24 часа нас посетили 17639 программистов и 1649 роботов. Сейчас ищут 896 программистов ...

Форма обратной связи. Некорректно отображается кириллица.

Тема в разделе "PHP для новичков", создана пользователем imil, 22 авг 2017.

  1. imil

    imil Новичок

    С нами с:
    22 авг 2017
    Сообщения:
    1
    Симпатии:
    0
    Доброго времени суток. Имею код:
    PHP:
    1. <?php
    2.  
    3. $emailto = 'Manager95@gmail.com';
    4. $fromName = 'MySite';                
    5. $mailfrom = isset($_POST['email']) ? $_POST['email'] : $mailto;
    6. $subject = 'Contact Form';        
    7.  
    8.  
    9. if(isset($_POST['emailto'])) {
    10.     $emailto = $_POST['emailto'];
    11. }
    12.  
    13. if(isset($_POST['fromname'])) {
    14.     $fromName = $_POST['fromname'];
    15. }
    16.  
    17.  
    18. if(isset($_POST['subject'])) {
    19.     $subject = $_POST['subject'];
    20. }
    21.  
    22. $html = "";
    23. $len = intval($_POST['len']);
    24.  
    25. if ($len){
    26.     if (isset($_POST['fromname_label'])){
    27.         $html .= htmlentities($_POST['fromname_label'], ENT_QUOTES, "UTF-8") . ": ";
    28.         $html .= htmlentities($fromName, ENT_QUOTES, "UTF-8") . "<br>\n";
    29.     }
    30.  
    31.     if (isset($_POST['fromemail_label'])){
    32.         $html .= htmlentities($_POST['fromemail_label'], ENT_QUOTES, "UTF-8") . ": ";
    33.         $html .= htmlentities($fromEmail, ENT_QUOTES, "UTF-8") . "<br>\n";
    34.     }
    35.  
    36.     if (isset($_POST['subject_label'])){
    37.         $html .= htmlentities($_POST['subject_label'], ENT_QUOTES, "UTF-8") . ": ";
    38.         $html .= htmlentities($subject, ENT_QUOTES, "UTF-8") . "<br>\n";
    39.     }
    40.  
    41.     for($i=0; $i<$len; $i++){
    42.         if (isset($_POST['field'. $i .'_label'])){
    43.             $html .= htmlentities($_POST['field'. $i .'_label'], ENT_QUOTES, "UTF-8") . ": ";
    44.             $html .= htmlentities($_POST['field'. $i .'_value'], ENT_QUOTES, "UTF-8") . "<br>\n";
    45.         }
    46.     }
    47.  
    48.     $headers = "MIME-Version: 1.0\r\nContent-type: text/html; charset=utf-8\r\n";
    49.     if ($fromName != "" || $fromEmail != ""){
    50.         $headers .= "From: " . $fromName . "<". $fromEmail .">\r\n";
    51.     }
    52.     $headers .= "Reply-To: " .  $fromEmail . "\r\n";
    53.  
    54.     $html = utf8_decode($html);
    55.  
    56.     if ($html && mail($emailto, $subject, $html, $headers))
    57.         echo 'ok';
    58.     else
    59.         echo 'error';
    60. } else {
    61.     echo 'error';
    62. }
    63.  
    64. ?>
    Проблема в следующем: Буквы латинского алфавита приходят с формы на почту в должном виде, но если вводить кириллицу - на почте кириллица отображается в виде вопросительных знаков.

    Может кто подскажет как исправить? Заранее благодарю!
     
    #1 imil, 22 авг 2017
    Последнее редактирование: 22 авг 2017
  2. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.818
    Симпатии:
    1.333
    Адрес:
    Лень
    Код (Text):
    1. 1) .htaccess > AddDefaultCharset UTF-8
    2. 2) скрипт.php - кодировка > UTF-8 no BOM
     
  3. htmaker

    htmaker Новичок

    С нами с:
    22 авг 2017
    Сообщения:
    12
    Симпатии:
    0
    Используй Notepad++ , меню: Кодировки -> Преобразовать в UTF-8 без BOM...