Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Форма обратной связи - кракозябры! [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): « 1 [2]   

> Описание: Как и где прописать charset ???
dr.grotesque
Отправлено: 28 Апреля, 2014 - 13:54:36
Post Id


Новичок


Покинул форум
Сообщений всего: 7
Дата рег-ции: Апр. 2014  


Помог: 0 раз(а)




Знаю. Я кое-что поменял. Иначе не хочет на mail.ru слать - слишком длинный получается заголовок в поле "от кого" или типа того... уже точно не помню всех проблем с этим ящиком: основная проблема в том, что в заголовок помещалось название сайта, перемешанное с адресом почтового сервера Глазки в кучку и еще все данные лепил в письме в одну строчку (IP, браузер, имя, сообщение и т.д.)

Поэтому \n\n и text/plain
И все ОК!
 
 Top
slav-spb
Отправлено: 10 Июня, 2015 - 12:06:48
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Не стал создавать новую тему, ибо проблема похожая

Сижу пару дней над ней и не понимаю в чем дело.
Сообщения в почту яндекс приходят нормальные, но на телефон через почтовый клиент приходят кракозябры,
причем только тело сообщения, заголовок отображается нормально. Остальные сообщения на русском языке отображаются корректно. так что проблема с телефоном исключена

Есть код:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.    
  3. $quantity = $_POST['quantity'];
  4. $email = $_POST['email'];
  5. $tel = $_POST['tel'];
  6. $name = $_POST['name'];
  7. $secondname = $_POST['secondname'];
  8. $lastname = $_POST['lastname'];
  9. $postcode = $_POST['postcode'];
  10. $country = $_POST['country'];
  11. $region = $_POST['region'];
  12. $city = $_POST['city'];
  13. $address = $_POST['address'];
  14. $message = $_POST['message'];
  15. $from = 'From: Purif_Book_Form';
  16. $to = 'slav-spb@yandex.ru';
  17. $subject = 'Новый заказ на книгу "Чистое тело, ясный ум';
  18. $human = $_POST['human'];
  19.                        
  20. $body = "Поступил новый заказ на книгу 'Чистое тело, ясный ум':\n Количество заказанных книг: $quantity\n E-mail заказчика: $email\n Контактный номер телефона: $tel\n Имя: $name\n Отчество: $secondname\n Фамилия: $lastname\n Индекс: $postcode\n Страна: $country\n Регион: $region\n Город или населенный пункт: $city\n Адрес: $address\n Дополнительная информация: $message\n";
  21.                 if ($_POST['submit']) {
  22.     if ($quantity != '' && $email != '' && $tel != '' && $name != '' && $secondname != '' && $lastname != '' && $postcode != '' && $country != '' && $city != '' && $address != '') {
  23.         if ($human == '12') {                            
  24.            
  25.                         if (mail ($to, $subject, $body, $from)) {
  26.                 echo '<p class="form-message-ok">Благодарим Вас за заказ! Ваш запрос успешно отправлен в обработку!</p>';
  27.             } else {
  28.                 echo '<p class="form-message-false">Опс! Что-то пошло не так! Пожалуйста, проверьте правильность заполнения всех полей формы и повторите попытку еще раз!</p>';
  29.             }
  30.         } else if ($_POST['submit'] && $human != '12') {
  31.             echo '<p class="form-message-false">Неправильный ответ проверки защиты от спама! Пожалуйста, попробуйте еще раз!</p>';
  32.         }
  33.     } else {
  34.         echo '<p class="form-message-false">Пожалуйста, заполните все обязательные поля формы и отправьте запрос еще раз!</p>';
  35.     }
  36. }
  37. ?>


Сохранил файл в кодировке utf-8 без BOM

Прописал в .htaccess
AddDefaultCharset UTF-8
php_value default_charset utf-8

добавил строчку в самом начале php кода
$headers .= "Content-Type: text/plain; charset=utf-8\n";

пробовал вместо этой строчки добавить
header('Content-Type: text/html; charset=utf-8');

результат тот же.

Что я делаю не так?

(Отредактировано автором: 10 Июня, 2015 - 12:09:37)

 
 Top
Tyoma5891
Отправлено: 10 Июня, 2015 - 12:15:49
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




попробуйте так
PHP:
скопировать код в буфер обмена
  1.         $headers = 'MIME-Version: 1.0' ."\r\n";
  2.         $headers .= 'Content-transfer-encoding: base64'."\r\n";
  3.         $headers .= 'Content-type: text/plain; charset=utf-8';
  4.        


асамо тело сообщения:

 
 Top
slav-spb
Отправлено: 10 Июня, 2015 - 12:23:28
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Tyoma5891
Первые три строчки в начало письма - это я понял.
А куда вставить
$message = chunk_split(base64_encode($message));
?
Я совсем не программер!

(Отредактировано автором: 10 Июня, 2015 - 12:25:35)

 
 Top
Tyoma5891
Отправлено: 10 Июня, 2015 - 12:31:03
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




в Вашем случае это будет так:


вставить можно перед этой строчкой:
PHP:
скопировать код в буфер обмена
  1. if (mail ($to, $subject, $body, $from)) {
 
 Top
slav-spb
Отправлено: 10 Июня, 2015 - 12:39:35
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Вставил...

Приходят кракозябры, но другие:
0J/QvtGB0YLRg9C/0LjQuyDQvdC+0LLRi9C5INC30LDQutCw0Lcg0L3QsCDQutC90LjQs9GDICfQ
p9C40YHRgtC+0LUg0YLQtdC70L4sINGP0YHQvdGL0Lkg0YPQvCc6CiDQmtC+0LvQuNGH0LXRgdGC
0LLQviDQt9Cw0LrQsNC30LDQvdC90YvR hSDQutC90LjQszogMQogRS1tYWlsINC3 0LDQutCw0LfR
h9C40LrQsDogMQog0JrQvtC90YLQsNC60YLQvdGL0Lkg0L3QvtC80LXRgCDRgtC10LvQtdGE0L7Q
vdCwOiAxCiDQmNC80Y86IDEKIN


Код:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php
  2.    $headers = 'MIME-Version: 1.0' ."\r\n";
  3.    $headers .= 'Content-transfer-encoding: base64'."\r\n";
  4.    $headers .= 'Content-type: text/plain; charset=utf-8';
  5.         $quantity = $_POST['quantity'];
  6.         $email = $_POST['email'];
  7.         $tel = $_POST['tel'];
  8.         $name = $_POST['name'];
  9.    $secondname = $_POST['secondname'];
  10.         $lastname = $_POST['lastname'];
  11.    $postcode = $_POST['postcode'];
  12.         $country = $_POST['country'];
  13.         $region = $_POST['region'];
  14.         $city = $_POST['city'];
  15.         $address = $_POST['address'];
  16.         $message = $_POST['message'];
  17.    $from = 'From: Purif_Book_Form';
  18.    $to = 'slav-spb@yandex.ru';
  19.    $subject = 'Новый заказ на книгу "Чистое тело, ясный ум';
  20.    $human = $_POST['human'];
  21.        
  22.        
  23.    $body = "Поступил новый заказ на книгу 'Чистое тело, ясный ум':\n Количество заказанных книг: $quantity\n E-mail заказчика: $email\n Контактный номер телефона: $tel\n Имя: $name\n Отчество: $secondname\n Фамилия: $lastname\n Индекс: $postcode\n Страна: $country\n Регион: $region\n Город или населенный пункт: $city\n Адрес: $address\n Дополнительная информация: $message\n";
  24.                 if ($_POST['submit']) {
  25.    if ($quantity != '' && $email != '' && $tel != '' && $name != '' && $secondname != '' && $lastname != '' && $postcode != '' && $country != '' && $city != '' && $address != '') {
  26.         if ($human == '12') {                            
  27.             $body = chunk_split(base64_encode($body));                 
  28.                         if (mail ($to, $subject, $body, $from)) {
  29.                 echo '<p class="form-message-ok">Благодарим Вас за заказ! Ваш запрос успешно отправлен в обработку!</p>';
  30.             } else {
  31.                 echo '<p class="form-message-false">Опс! Что-то пошло не так! Пожалуйста, проверьте правильность заполнения всех полей формы и повторите попытку еще раз!</p>';
  32.             }
  33.         } else if ($_POST['submit'] && $human != '12') {
  34.             echo '<p class="form-message-false">Неправильный ответ проверки защиты от спама! Пожалуйста, попробуйте еще раз!</p>';
  35.         }
  36.    } else {
  37.        echo '<p class="form-message-false">Пожалуйста, заполните все обязательные поля формы и отправьте запрос еще раз!</p>';
  38.    }
  39. }
  40. ?>

(Добавление)
Братцы, помогите!! )))

(Отредактировано автором: 10 Июня, 2015 - 13:09:34)

 
 Top
Tyoma5891
Отправлено: 10 Июня, 2015 - 14:13:59
Post Id


Частый посетитель


Покинул форум
Сообщений всего: 621
Дата рег-ции: Авг. 2013  


Помог: 5 раз(а)




обрамите текст переменной $body в одинарные кавычки вместо двойных..
 
 Top
slav-spb
Отправлено: 10 Июня, 2015 - 14:54:37
Post Id


Новичок


Покинул форум
Сообщений всего: 4
Дата рег-ции: Июнь 2015  


Помог: 0 раз(а)




Обрамил.
Страница перестала загружаться.
 
 Top
Страниц (2): « 1 [2]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB