Хостинг. Проблемы с кодировкой при отправке писем.

textexpress
6 лет
0

Добрый день.
Прошу помочь решить такой вопрос. Есть html форма для отправки данных с сайта на почтовый сервис. Есть рhp скрипт обработчик данной формы. Данные передаются посредством функции mail(). Когда в поля формы вводятся латинские символы скрипт работает корректно. При вводе кириллицы скрипт возвращает ошибку - "Введите имя". То есть он не видит информации на русском языке. Пробовал по разному решать данную проблему. В html файле и в файле скрипта указывал CP1251, потом utf-8. То же самое проделывал в настройках сайта в панели управления хостингом и в файле конфигурации веб сервера. Также пробовал не привязываться к кодировке нигде. Результат без изменений. Уже не знаю, как решить данный вопрос. Буду благодарен за помощь.

sonicua
6 лет
0

Код скрипта в студию.

textexpress
6 лет
0

Вот сам скрипт:
<?php
$name=htmlspecialchars($_POST["name"], ENT_COMPAT, 'cp1251');
$email=htmlspecialchars($_POST["email"]);
$tema=htmlspecialchars($_POST["tema"], ENT_COMPAT, 'cp1251');
$message=htmlspecialchars($_POST["message"], ENT_COMPAT, 'cp1251');
$myemail="text0@gmail.com";
$name=check_input($_POST["name"],"Введіть ваше ім'я!");
$tema=check_input($_POST["tema"],"Вкажіть тему повідомлення!");
$email=check_input($_POST["email"],"Введіть свою e-mail адресу!");
$message=check_input($_POST["message"],"Вкажіть текст повідомлення!");
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$email))
{
show_error("<br/>Е-mail адреси не існує");
}
$message_to_myemail="Повідомлення з веб сайту.
Ім'я відправника: $name
E-mail: $email
Тема: $tema
Текст повідомлення: $message";
$from="From:$yourname<$email> \r\n Reply-To:$email \r\n";
mail($myemail,$tema,$message_to_myemail,$from);
?>
<p>Ваше повідомлення успішно відправлено!</p>
<p>На <a href="index.html">Головну>>></a></p>
<?php
function check_input($data,$problem="")
{
$data=trim($data);
$data=stripslashes($data);
$data=htmlspecialchars($data);
if($problem && strlen($data)==0)
{
show_error($problem);
}
return$data;
}
function show_error($myError)
{
?>
<p>Будь-ласка виправте слідуючу помилку:</p>
<?php echo $myError; ?>
<?php
exit();
}
?>

sonicua
6 лет
0

Попробуйте изменить
$data=htmlspecialchars($data);
на
$data=htmlspecialchars($data, ENT_COMPAT, 'cp1251');
подобно первым строчкам кода.

textexpress
6 лет
0

Большое спасибо! Все работает отлично)

Тема закрыта.