PHP письма из формы шифрования символов кириллицы

Вот что это такое. Поскольку сегодня я использую PHP, я столкнулся с этой проблемой.
Я создал форму для компании ISP, в которой я работаю, и которая отправляет результаты по электронной почте. Клиенты заполняют эту форму, чтобы запросить новую услугу у нас. Поскольку компания является иностранной (болгарской), 99% людей собираются заполнять ее на кириллице, поэтому я проверил ее, заполнив ее сам, и получил это письмо.


От кого:

Номер телефона: 56

Избранные услуги:

Интернет: 100 || Телевизор: комфорт

Сообщение:

ЪР• DDDDDD


Поэтому я провел небольшое исследование, проверил несколько других постов на эту тему в StackOverflow, но ни одна из них не сработала … большинство предложили добавить
$header .= "\nContent-type: text/plain; charset=\"utf-8\"";

Одна проблема заключается в том, что я не совсем точно знаю, как реализовать это решение, во-вторых, оно не сработало для человека, который задал вопрос, даже в одном из рассмотренных мной вопросов.

Вот код PHP и код HTML, надеясь, что вы можете дать мне ТОЧНЫЙ способ исправить это, так как я почти не имею представления о синтаксисе в PHP.

<!DOCTYPE html>
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Online Request</title>
<meta content="php, contact, form, thinking" name="keywords">
<meta content="Contact us and let us know if we can help you out further." name="description">

<style>
input, textarea {
color: #fff;
padding: 5px;
margin: 10px;
font-family: Cambria, Cochin, serif;
font-size: medium;
font-weight: bold;
outline: none;
}
p {
font-family: Cambria, Cochin, serif;
font-size: large;
margin-bottom: -5px;
}
input[type=text], textarea {
width: 350px;
background-color: #000;
border: 1px solid #000;
}
input[type=submit] {
width: 100px;
background-color: #710000;
border: 1px solid #000;
font-size: large;
color: #FFFFFF;
}
input[type=submit]:hover {
background-color: #990000;
cursor: pointer;
}
input[type=submit]:active {
background-color: #4A6F00;
}

h1 {
text-size: 26px;
font-family: Arial;
text-shadow:
-1px -1px 0 #000,
1px -1px 0 #000,
-1px 1px 0 #000,
1px 1px 0 #000;
color: #ff0000;}
body {
padding: 10px;
background-color: #F4F4F4;
}
.checkbox {
font-family: Cambria, Cochin, serif;
font-size: large;
margin-bottom: -5px;
}
</style>

</head>

<body>
<h1>Online Request</h1>
<form action="emailer.php" method="POST" accept-charset="UTF-8">
<div>
<p>Имена</p>
<input name="name" type="text"> <br>
</div>
<div>
<p>Телефон за връзка</p>
<input type="text" name="number" min="10" max="10">
<br>
</div>
<div>
<p> Вид услуга - Internet </p> <br/>
<input name="servicetypeINT" type="radio" value="30"><span class="checkbox"> Internet Value - 30Mpbs </span> <br/>
<input name="servicetypeINT" type="radio" value="60"><span class="checkbox"> Internet Mania - 60 Mbps </span><br/>
<input name="servicetypeINT" type="radio" value="100"><span class="checkbox"> Internet Extreme - 100Mbps</span> <br/>
<input name="servicetypeINT" type="radio" value="150"><span class="checkbox"> Internet Pro - 150Mpbs</span><br/>
</div>
<hr/>
<div>
<p>Вид услуга - Телевизия</p> <br/>
<input name="servicetypeTV" type="radio" value="anal"><span class="checkbox"> Аналогова телевизия - 50 канала </span> <br/>
<input name="servicetypeTV" type="radio" value="start"><span class="checkbox"> Start TV - 40+ Цифрови канала </span><br/>
<input name="servicetypeTV" type="radio" value="comfort"><span class="checkbox"> Confort TV - 160+ Цифрови канала</span> <br/>
<input name="servicetypeTV" type="radio" value="mania"><span class="checkbox"> Mania TV - 160+ Цифрови / 20+ HD канала</span><br/>
</div>
<div>
<p>Comment</p>
<textarea cols="30" name="comment" rows="9"></textarea>
<br> </div>
<div>
<input name="submit" type="submit" value="Изпрати"> </div>
</form>
</body>

</html>


<?php

if(isset($_POST['submit'])) {
$to = "denislav@svishtov.net";
$subject = "New Internet and/or TV request";

// data the visitor provided
$name_field = filter_var($_POST['name'], FILTER_SANITIZE_STRING);
$phone_field = filter_var($_POST['number']);
$selectedINT_field = filter_var($_POST['servicetypeINT']);
$selectedTV_field = filter_var($_POST['servicetypeTV']);
$comment = filter_var($_POST['comment'], FILTER_SANITIZE_STRING);


//constructing the message
$body = "From: $name_field\n\n
Phone number: $phone_field\n\n
Selected Services:\n\nInternet: $selectedINT_field || TV: $selectedTV_field \n\n
Message:\n\n $comment ";

// ...and away we go!
mail($to, $subject, $body);

// redirect to confirmation
header('Location: confirmation.html');
} else {
// handle the error somehow
echo "Грешка в попълването на формата";
}
?>

Еще один интересный факт заключается в том, что когда я открыл файл со своего локального компьютера (так как, если я попробую с того, который размещен в сети, я получу эхо-сообщение об ошибке), текст кириллицы в самом коде php был отображен так же, как результат электронной почты …
Но когда я открыл его с хоста, напрямую обращаясь к нему, я получил сообщение об ошибке прямо … на болгарском языке … без всякого толку.

Строка кода в PHP

header('Content-Type: text/html; charset=utf-8');

казалось конвертировать заголовок сообщения. Я попытался обратиться $name_field('Content-Type: text/html; charset=utf-8');

Но результат был пустой, php не функционировал должным образом, я думаю, так как я дал ему неправильную или неработоспособную строку кода с такой адресацией $name_field,

Вопрос в том, как мне правильно это решить, и я даже на правильном пути с таким подходом?

0

Решение

ФИКСИРОВАННЫЙ
добавлен тип содержимого $ headers в начале кода php

<?php
$headers  = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text; charset=utf-8' . "\r\n";

и включил заголовки $ в функцию MAIL

mail($to, $subject, $body, $headers);

Это заняло у меня четыре часа, но так оно и есть в начале.
Во всяком случае, спасибо за помощь или отсутствие таких. Хорошего дня и надеюсь, что этот поможет кому-то

1

Другие решения

Других решений пока нет …