€
$
₴
₽
EN
RU
Vmeste.EU
Лента
Каталог
Файлы
Форумы
Услуги
Основное
Radiotalk
Пользовательское
Программирование
6 •
Посмотреть все темы
Неверная кодировка формы
1
10
James
@James
22.07.2013
И снова с вами коматозное ламо, люди добрые устал уже биться, 3 день пошёл, в гугле не забанили но там вижу фигу.
И так есть форма отправки в HTML:
HTML
<html>
<title>Обработка HTML формы с помощью PHP</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<form action="form_processing.php" method="post">
<p>Ваше имя:<br /><input type="text" name="your_name" /></p>
<p>E-mail:<br /><input type="text" name="email" /></p>
<p>Тема:<br /><input type="text" name="tema" /></p>
<p>Сообщение:<br />
<textarea name="message" rows="5" cols="45"> </textarea></p>
<p><input type="submit" value="Отправить"></p>
</form>
</body>
</html>
И обработчик на
PHP
:
<?php
/* Осуществляем проверку вводимых данных и их защиту от враждебных
скриптов */
$your_name = htmlspecialchars($_POST["your_name"]);
$email = htmlspecialchars($_POST["email"]);
$tema = htmlspecialchars($_POST["tema"]);
$message = htmlspecialchars($_POST["messages"]);
/* Устанавливаем e-mail адресата */
$myemail = "мой mail@mail.ru";
/* Проверяем заполнены ли обязательные поля ввода, используя check_input
функцию */
$your_name = check_input($_POST["your_name"], "Введите ваше имя!");
$tema = check_input($_POST["tema"], "Укажите тему сообщения!");
$email = check_input($_POST["email"], "Введите ваш e-mail!");
$message = check_input($_POST["message"], "Вы забыли написать сообщение!");
/* Проверяем правильно ли записан e-mail */
if (!preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/", $email))
{
show_error("<br /> Е-mail адрес не существует");
}
$headers = "Content-Type: text/plain; charset=windows-1251\r\n";
/* Создаем новую переменную, присвоив ей значение */
$message_to_myemail = "Здравствуйте!
Вашей контактной формой было отправлено сообщение!
Имя отправителя: $your_name
E-mail: $email
Текст сообщения: $message
Конец";
$headers = "Content-Type: text/plain; charset=windows-1251\r\n";
/* Отправляем сообщение, используя mail() функцию */
$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)
{
?>
<html>
<body>
<p>Пожалуйста исправьте следующую ошибку:</p>
<?php echo $myError; ?>
</body>
</html>
<?php
exit();
}
?>
И ТАК ПРОБЛЕМА ТАКАЯ
:
После отправки сообщения форма почему выводит сообщение в неверной кодировки, ну да ладно, это я исправлю, но на ящик поступает сообщение с неверной кодировкой:
Здравствуйте!
Вашей контактной формой было отправлено сообщение!
Имя отправителя: Р�лья
E-mail: parsek00@mail.ru
Текст сообщения: Привет
Конец
ПОМОГИТЕ, МОЯ КРЫША ЩАС РУХНЕТ!
2615
Сергей
@Pegass
22.07.2013
$headers = "Content-Type: text/plain; charset=windows-1251\r\n";
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
А шо вы ещё хотели?
2615
Сергей
@Pegass
22.07.2013
быть не может
Хотя может, PHP основная кодировка какая стоит?
Отредактировано Pegass -
22.07.2013
10
James
@James
22.07.2013
Pegass
пишет:
$headers = "Content-Type: text/plain; charset=windows-1251\r\n";
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
А шо вы ещё хотели?
В HTML поставил тоже <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
Но проблемма осталась сообшения приходят в неверной кодировке
10
James
@James
22.07.2013
Pegass
пишет:
быть не может
Хотя может, PHP основная кодировка какая стоит?
На сервере стоит UTF8
Сопоставление cp1251_general_ci.
Отредактировано James -
22.07.2013
7094
Dim
@Render
22.07.2013
James
пишет:
Pegass
пишет:
быть не может
Хотя может, PHP основная кодировка какая стоит?
На сервере стоит UTF8
Сопоставление cp1251_general_ci.
Само содержимое файла, как html, так и php - так же должны быть в одной кодировке.
Сконвертировать можно в том же Notpead++.
з.ы и каким боком тема относится к разделу мп?
Перенесено.
Отредактировано Render -
22.07.2013
10
James
@James
22.07.2013
Render
пишет:
James
пишет:
Pegass
пишет:
быть не может
Хотя может, PHP основная кодировка какая стоит?
На сервере стоит UTF8
Сопоставление cp1251_general_ci.
Само содержимое файла, как html, так и php - так же должны быть в одной кодировке.
Сконвертировать можно в том же Notpead++.
з.ы и каким боком тема относится к разделу мп?
Перенесено.
делал в одной кодировке, и так и эдак, не помогает, сообщение как застывшее приходит в неверной кодировке и хоть лопни!
Отредактировано James -
22.07.2013
10
James
@James
22.07.2013
Ещё раз подчеркну, что тема письма приходит в верной кодировке... почему так?
6600
Александр
@admiral
22.07.2013
Может тогда в почтовом клиенте не выставлена автокодировка? В каком клиенте почту получаете и что с кодировкой в нем?
10
James
@James
22.07.2013
на разных почтовых клиентах пробовал, сами понимаете, не буду же я у всех пользователей этой формы бегать и настраивать кодировку
6600
Александр
@admiral
23.07.2013
James
,
**********
ваша форма, за исключением поправки одной строки в файле form_processing.php:
$from = "From: $your_name <$email> \r\n";
но это чисто для заголовка и еще в файле формы html:
<meta http-equiv="Content-Type" content="text/html; charset=
windows-1251
">
плюс файлы сами в 1251 кодировке и в клиенте кодировка как и в любом нормальном клиенте автоматически определяется, если нужна другая кодировка, то и сами файлы и в самих файлах делайте одну и ту же кодировку.
Отредактировано admiral -
23.07.2013
10
James
@James
23.07.2013
Проблему решил, дело было в кодировке самой формы на HTML