Модераторы: korob2001, ginnie

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Форма обратной связи на сайте, Отсылка введенных в форму данных в utf  
V
    Опции темы
Blanka
Дата 15.12.2013, 14:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.12.2013

Репутация: нет
Всего: нет



Помогите, пожалуйста, с возможным решением проблемы.
Нужен скрипт на Перл для формы обратной связи, корректно (в правильной кодировке, без аброкодабр) отсылающий данные из формы из разных броузеров.
Сайт в utf-8.


PM MAIL   Вверх
Bulat
Дата 15.12.2013, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(Blanka @  15.12.2013,  14:09 Найти цитируемый пост)
отсылающий данные

куда отсылающий??


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Blanka
Дата 17.12.2013, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.12.2013

Репутация: нет
Всего: нет



При переходе сайта на utf-8. Текст сообщения присылаемого на электронную почту из формы обратной связи стал нечитабельным. Я бы хотела найти решения этого вопроса. 
PM MAIL   Вверх
Bulat
Дата 17.12.2013, 14:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Blanka, а может код какой выложишь?


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Blanka
Дата 17.12.2013, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.12.2013

Репутация: нет
Всего: нет



Код

#!/usr/bin/perl

use CGI;

use CGI::Carp;

$query = new CGI;

use Encode;

&print_page_start;
&validate_form;
&test_code;
&send_mail;
&print_page;
&print_page_end;

sub print_page_start {
    print "Content-type: text/html; charset=utf-8\n\n";
    print "<HTML>\n<HEAD>\n";
    print "<meta charset=\"UTF-8\">";
    print "<TITLE> спасибо за интерес к нашей мебели</TITLE>\n";
    print "</HEAD>\n";
    print "<style type=\"text/css\">\n<!--\n";
    print "td {font-family: Arial; color: #160a16;";
    print "font-size:11px}\n";
    print "a:active {font-family: Arial; color: #af45c5; text-decoration: none;";
    print "font-size:11px}\n";
    print "a:link {font-family: Arial; color: #af45c5; text-decoration: none;";
    print "font-size:11px }\n";
    print "a:visited {font-family: Arial; color: #af45c5; text-decoration: none;";
    print "font-size:11px }\n";
    print "a:hover {font-family: Arial; color: #af45c5; text-decoration: underline;";
    print "font-size:11px}\n";
    print "//-->\n</style>\n<BODY>\n";
}

sub print_page_end  {
    print "</BODY>\n</HTML>\n";
}

sub validate_form  {
    $n1 = $query->param('n1');
    $n2 = $query->param('n2');
    $n3 = $query->param('n3');
    $ar = $query->param('ar');
    $kod = $query->param('kod');
}

sub test_code  {
    if ($query->param('kod') ne "fl372")  {
    &spam_error;
    }
}

sub send_mail  {
open (MAIL, "| /usr/sbin/sendmail -t");
print MAIL "From: xxx\@xxx.ru\n";
print MAIL "To: xxx\@xxxl.ru\n";
print MAIL "Subject: Оставлен контакт от клиента с сайта \n\n";
print MAIL "Фамилие, имя, отчество - $n1\n";
print MAIL "E-mail - $n2\n";
print MAIL "Телефон - $n3\n";
print MAIL "Ваше сообщение - $ar\n";
close MAIL;
}

sub print_page  {
    print "<TABLE border=\"1\" bordercolor=\"#160a16\" cellpadding=\"30\" cellspacing=\"0\"><TR><TD>\n";
    print "Спасибо за вопрос. <br />Проверьте, пожалуйста, Ваши контактные данные и текст вопроса:<br /><br />\n";
    print "Фамилия, имя, отчество: " . $query->param('n1') . "<br>\n";
    print "E-mail: " . $query->param('n2') . "<BR>\n";
    print "Телефон: " . $query->param('n3') . "<BR>\n";
    print "Ваше сообщение: " . $query->param('ar') . "<BR><BR>\n";
    print "<A HREF=\"http://www.xxx.ru\">вернуться на главную страницу </A>";
    print "</TD></TR></TABLE>";
}

# Ошибка введенного кода
sub spam_error  {
    print "<html><head><title>Ошибка введенного кода</title></head>\n";
    print "<BODY><FONT color=\"#ff0000\"><h4>Ошибка введенного кода</h4></FONT>";
    print "<FONT color=\"#000000\">Введите, пожалуйста, ";
    print "символы изображенные на рисунке!\n";
    print "<FORM ACTION=\"http://www.xxx.ru/cgi-bin/email.pl\">\n";
    print "Фамилия, имя, отчество: <INPUT TYPE=\"TEXT\" SIZE=\"53\" name=\"n1\"";
    print "value=\"" . $query->param('n1') . "\"><br><br>\n";
    print "E-mail: <INPUT TYPE=\"TEXT\" SIZE=\"26\" name=\"n2\""; 
    print "value=\"" . $query->param('n2') . "\"> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Телефон:";
    print " <INPUT TYPE=\"TEXT\" SIZE=\"27\" name=\"n3\" value=\"" . $query->param('n3') . "\"><br><br>\n";
    print "<input type=hidden name=\"ar\" ";
    print "value=\"" . $query->param('ar') . "\">\n";
    print "<img src=\"http://www.xxx.ru/pict1.gif\" width=75 height=25 border=1><br>\n";
    print "<input type=text name=\"kod\" value=\"" . $query->param('kod') . "\" size=9><P>";
    print "<input type=\"submit\" name=\"submit\" value=\"Отправить\"> ";
    print "<input type=\"reset\" name=\"reset\" value=\"Очистить\"></form><hr>\n";
    print "<A HREF=\"http://www.xxx.ru\">вернуться на главную страницу </A>";
    print "\n</FONT></BODY>\n</HTML>\n";
   exit;
}


Добавлено @ 14:26
код типовой ничего особенного.

На html-страницу все выводится корректно. Заголовок письма "Оставлен контакт от клиента с сайта", тоже на нормальном русском, а текст сообщения УВЫ!!

Это сообщение отредактировал(а) Blanka - 17.12.2013, 14:35
PM MAIL   Вверх
noize
Дата 17.12.2013, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: нет
Всего: 3



вы, я смотрю, любите рисковать - код пишете без strict'ов и warnings'ов
PM MAIL   Вверх
Blanka
  Дата 17.12.2013, 15:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.12.2013

Репутация: нет
Всего: нет



Это как?

Добавлено через 2 минуты и 47 секунд
Код написан лет 10 назад. Я сейчас немного другими вопросами занимаюсь, поэтому в программировании меня можно сейчас назвать Чайником... Очень буду признательна, если укажите на недостатки...
PM MAIL   Вверх
noize
Дата 17.12.2013, 15:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


5.18.2
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 10.7.2010
Где: СПб

Репутация: нет
Всего: 3



добавьте в код вот это:
Код

use strict;
use warnings;

и от этого уже пляшите
PM MAIL   Вверх
alezzz
Дата 17.12.2013, 18:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


сплю...
**


Профиль
Группа: Участник
Сообщений: 499
Регистрация: 17.8.2009

Репутация: 2
Всего: 14



Цитата(noize @  17.12.2013,  15:49 Найти цитируемый пост)
добавьте в код вот это:код Perl1:2:use strict;use warnings;

хороший универсальный совет, подходит под любую проблему если в начале кода нет этих строчек smile.
 
Blanka

&send_mail; переместите за &print_page_end;
перед open MAIL попробуйте для всех переменных ($n1, $ar...) перебрать такие варианты:
Encode::_utf8_on($n1);
или
Encode::_utf8_off($n1);

Sendmail-ом не отсылал, может у него какая неприязнь к utf или в какой он там кодировке отправляет по умолчанию. У меня работает автоматическая отправка через связку mutt - ssmtp, с utf были проблемы, но решались.
PM MAIL   Вверх
Blanka
  Дата 17.12.2013, 18:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.12.2013

Репутация: нет
Всего: нет



Спасибо. Можно, конечно, добавить. Правда программа элементарная

Добавлено через 2 минуты и 25 секунд
alezzz, тоже спасибо. Попытаюсь сделать, как Вы рекомендуете.

PM MAIL   Вверх
Bulat
Дата 17.12.2013, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Там на самом деле мож проще перекодировать в cp1251 при отправке!


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Blanka
Дата 17.12.2013, 19:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.12.2013

Репутация: нет
Всего: нет



alezzz, похоже действительно проблема в sendmail хостера. Перенесла файлы на другой хостинг для экспериментов над ними. 
Вопрос с нечитабельностью текста писем снялся.
Придется теперь много вопросов задавать тех. поддержке.

Добавлено через 6 минут и 55 секунд
Bulat, при отправке пробовала перекодировать accept-charset в тег form. 
Но IE на это не отреагировал, а в  остальных браузерах помогло с текстом сообщения, но стало выводить "вопросики" при выводе введенных данных на страницу. 
PM MAIL   Вверх
Bulat
Дата 17.12.2013, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


татарский Нео
***


Профиль
Группа: Завсегдатай
Сообщений: 1701
Регистрация: 22.3.2006
Где: Альметьевск

Репутация: нет
Всего: 57



Цитата(Blanka @  17.12.2013,  19:44 Найти цитируемый пост)
при отправке пробовала перекодировать accept-charset в тег form. 

Я имел ввиду в момент отправки письма, через Encode


--------------------
менеджер по кодеврайтингу  smile 
PM MAIL WWW   Вверх
Blanka
Дата 17.12.2013, 22:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.12.2013

Репутация: нет
Всего: нет



Цитата(Bulat @ 17.12.2013,  20:32)
Цитата(Blanka @  17.12.2013,  19:44 Найти цитируемый пост)
при отправке пробовала перекодировать accept-charset в тег form. 

Я имел ввиду в момент отправки письма, через Encode

Поделитесь  методом, пжс.
PM MAIL   Вверх
Blanka
Дата 18.12.2013, 00:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 9
Регистрация: 15.12.2013

Репутация: нет
Всего: нет



И еще вопросик от чайничка.
? Можно ли в заголовок отправляемого мыла вписать что-то вроде print MAIL "Content-type: text/html; charset=utf-8"; 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.1438 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.