подскажите pls;) форма обратной связи - приходит абракадабра!

Тема в разделе "Как сделать...", создана пользователем Andrey Romanov, 12 окт 2015.

  1. Andrey Romanov

    Andrey Romanov Постоялец

    Регистр.:
    16 июн 2013
    Сообщения:
    76
    Симпатии:
    4
    Форма на HTML странице.
    Имя
    Email
    Сообщение

    приходит,
    по английский всё отлично, а по русски:
    " тест

    -Василий Сквазняков "
    как то так)

    Вот файл php формы:

    <?php
    if($_POST)
    {
    $to_email = "mail@mail.ru"; //Recipient email, Replace with own email here

    //check if its an ajax request, exit if not
    if(!isset($_SERVER['HTTP_X_REQUESTED_WITH']) AND strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) != 'xmlhttprequest') {

    $output = json_encode(array( //create JSON data
    'type'=>'error',
    'text' => 'Sorry Request must be Ajax POST'
    ));
    die($output); //exit script outputting json data
    }

    //Sanitize input data using PHP filter_var().
    $name = filter_var($_POST["name"], FILTER_SANITIZE_STRING);
    $email = filter_var($_POST["email"], FILTER_SANITIZE_EMAIL);
    $message = filter_var($_POST["message"], FILTER_SANITIZE_STRING);

    //email body
    $message_body = $message."\r\n\r\n-".$name."\r\nEmail : ".$email;

    //proceed with PHP email.
    $headers = 'From: '.$name.'' . "\r\n" .
    'Reply-To: '.$email.'' . "\r\n" .
    'X-Mailer: PHP/' . phpversion();

    $send_mail = @mail($to_email, $name, $message_body, $headers);

    if(!$send_mail)
    {
    //If mail couldn't be sent output error. Check your PHP email configuration (if it ever happens)
    $output = json_encode(array('type'=>'error', 'text' => 'Could not send mail! Please check your PHP mail configuration.'));
    die($output);
    }else{
    $output = json_encode(array('type'=>'message', 'text' => 'Приветстуем Вас '.$name .'! Спасибо за ваше сообщение!'));
    die($output);
    }
    }
    ?>

    Что тут добавить убрать ? Или где добавить и что то изменить?
     
  2. Runapa

    Runapa Постоялец

    Регистр.:
    30 окт 2010
    Сообщения:
    63
    Симпатии:
    5
    Походу проблема с кодировкой. Попробуй перекодировать файл в utf-8 без BOM.
     
  3. igumenov

    igumenov

    Регистр.:
    30 июн 2009
    Сообщения:
    262
    Симпатии:
    100
    $headers = array("Content-Type: text/html; charset=UTF-8");
     
    Andrey Romanov нравится это.
  4. Andrey Romanov

    Andrey Romanov Постоялец

    Регистр.:
    16 июн 2013
    Сообщения:
    76
    Симпатии:
    4
    Спасибо! Заработало!)
    ...теперь ОТ КОГО в приходящем письме "абракадабра"))
     
  5. denverkurt

    denverkurt Denve®

    Регистр.:
    23 дек 2013
    Сообщения:
    608
    Симпатии:
    347
    попробуйте сконвертировать имя отправителя
    Код:
    $name = iconv('windows-1251', 'utf-8', $name);
     
    Andrey Romanov нравится это.
  6. comdev

    comdev Писатель

    Заблокирован
    Регистр.:
    31 янв 2014
    Сообщения:
    7
    Симпатии:
    1
    проверь кодировки файлов, если используется ajax также его кодировку.
     
    Andrey Romanov нравится это.
  7. interdividend

    interdividend Создатель

    Регистр.:
    23 дек 2014
    Сообщения:
    19
    Симпатии:
    2
    для nginx решением будет
    Код:
    charset UTF-8;
    в директиву server, мб кому пригодится
     
    Andrey Romanov нравится это.