![]() |
|
| Правила Форума редакция от 22.06.2020 |
|
|||||||
|
|
Окажите посильную поддержку, мы очень надеемся на вас. Реквизиты для переводов ниже. |
|
![]() |
|
|
Опции темы | Опции просмотра |
Language
|
|
|
#1
|
|
Я делал простую форму заказа тура со страницы сайта (его еще нет). С формой получилось все ОК, а вот скрипт перла, который правильно отправляет данные из форм на email владельца хромает на все четыре. Нет все из форм он отправляет и прописывает и дату и IP клиента (или какого спамера), а вот письмо присылается с кракозябрами в месте "ОТ КОГО" у которых на конце добавлено еще и /@ххххх.ru/ (последнее ххххх.ru это мой хостер). Заметно, что собрана из кусков да и еще и с ошибками.
Может кто более умный посмотрел бы сей опус. А? ================================================== ======== #!/usr/bin/perl $mailprog = '/usr/lib/sendmail'; $thank_url = 'http://хххххххххххх.ru/thankyou.htm'; $archivefile = 'contact.txt'; $toname = 'Для хххххххх заказ'; $tomail = 'ххххххх@rambler.ru'; $subject = 'Клиент пришел с сайта ххххххххх'; @months = ("Января","Февраля","Марта","Апреля","Мая","Июн я", "Июля","Августа","Сентября","Октября","Ноября" ,"Де кабря"); $at = "в"; $timeoffset = +4; $timezone = '(время московское)'; read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); @pairs = split(/&/, $buffer); foreach $pair (@pairs) { ($name, $value) = split(/=/, $pair); $value =~ tr/+/ /; $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; $value =~ s/<!--(.|\n)*-->//g; $FORM{$name} = $value; } ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isd st) = gmtime(time+$timeoffset*3600); $time = sprintf("%02d:%02d",$hour,$min); $year += 1900; $date = "$mday $months[$mon] $year $at $time $timezone"; open(HANDLE,"|$mailprog -t") || die "Не возможно открыть $mailprog!\n"; &send_message; close(HANDLE); open(HANDLE, ">>$archivefile") || die "Не возможно открыть архив для записи: $!"; &send_message; print HANDLE "\n=======================================\n\n "; close(HANDLE); print "Location: $thank_url\n\n";; sub send_message { print HANDLE "To: $toname <$tomail>\n"; print HANDLE "From: $FORM{'name'}\n"; print HANDLE "Тема письма: $subject\n"; print HANDLE "$date\n"; print HANDLE "Это сообщение пришло со страницы $ENV{'HTTP_REFERER'}.\n"; print HANDLE "IP адрес пользователя: $ENV{'REMOTE_ADDR'}\n\n"; print HANDLE "Этот клиент хочет: $FORM{'tur'}\n"; print HANDLE "В какой стране: $FORM{'strana'}\n"; print HANDLE "Мои координаты: $FORM{'contact'}\n"; print HANDLE "\n ==========Дополнительные пожелания==========\n"; print HANDLE "$FORM{'message'}\n"; print HANDLE "$FORM{'name'}"; print HANDLE "\n ================Конец заказа================\n"; }
__________________
Был, есть, и буду есть! Пить тоже буду. |
|
|
|
|
| Реклама: | Заходите на сайт MebelStol.ru: стеллаж деревянный купить в москве недорого - отличные цены и большой выбор! | прокат банкетных стульев москва | Цепная бензиновая пила Patriot PT 3816 Imperial | Тепловентилятор AC Electric AFH/С-155 | видеокарта geforce rtx 5070 solid |
|
|
#2
|
|
Неактивный пользователь
Регистрация: 28.05.2007
Сообщений: 3
Репутация: 0
|
У тебя проблемы с кирилицей будь она не ладная. Советую зайти в соседнюю тему и там спросить:
http://www.nowa.cc/showthread.php?t=98175 |
|
|
|
|
|
#3
|
|||||||||||||||||||
|
FAQ на странице хостера есть? Читал?
![]()
Это может помочь напрячь ВСЕХ на нужную кодировку, браузеры будут открыватся только в ОДНОЙ кодировке, даже если юсер поставил себе по умолчанию китайскую. Ну или сразу показывать ему кракозябры если юсер упертый и у него нет автоматической кодировки в браузере и тупо выставлена вьетнамская стандартная. Форма допустим у тебя win1251 а скрипт (или сервак) держит КОИ в итоге ты ясен пень при обработке получишь кракозябры (если нет автодетекта кодировки и перекодировки на лету). А да и чем посылает скрипт в Content-Type: text/html; charset="??????????" По моему копатся здесь и надо, по моему все должно совпадать: charset на форме, charset в скрипте (default charset на сервере) интерпретатора и ессно charset в теле письма. Cделай генератор хтмл письма, увы я в CGI не силен, помочь не могу, иначе пользовтель будет обречен постоянно менять кодировки в почтовом клиенте. Кстати ХТМЛ письмо и выглядит покрасивше да и юсеров кто сидит на текстовых е-майл клиентах я думаю среди заказчиков туров вряд ли будет много (если будет вообще).
__________________
Aufwiederzehen!
Последний раз редактировалось Il_Burbero; 05.06.2007 в 09:11.. Причина: :) |
||||||||||||||||||||
|
|
|
|
|
#4
|
|
Неактивный пользователь
Пол:
Регистрация: 29.05.2007
Сообщений: 6
Репутация: 1
|
--------------------------------------------------------------------------------
Perl book http://rapidshare.com/files/59919048/perl.pdf |
|
|
|
|
|
#5
|
|
Неактивный пользователь
Пол:
Регистрация: 28.12.2007
Сообщений: 43
Репутация: 9
|
Использовать модули CGI (или аналогичные попроще) и MIME::Lite. Тогда программа сильно упрощается. А вообще - надо в заголовках письма проставлять кодировку. И сама программа должна быть в правильной кодировке.
|
|
|
|
|
|
#6
|
|
Неактивный пользователь
Регистрация: 08.09.2008
Сообщений: 2
Репутация: 0
|
???? ??????? ?? ???? ??????? ????? ????!!!!!!
|
|
|
|
|
|
#7
|
|
Новичок
Пол:
Регистрация: 30.07.2007
Сообщений: 9
Репутация: 0
|
Примерно так:
use Encode qw/encode decode/; my $val = encode("CP1251", decode("UTF-8", "Текст из поля формы")); |
|
|
|
![]() |
| Опции темы | |
| Опции просмотра | |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Не разбирусь с CSS. Помогите кто может. | blood_2007 | CSS | 17 | 01.04.2011 08:08 |
| Виртуализация XEN: помогите, кто может! | Lorte | UNIX, Linux, MacOs для PC и другие ОС | 1 | 26.06.2008 15:47 |
| Кто может,помогите,пожалуйста... | Наталья1967 | Macromedia Flash | 5 | 22.03.2008 23:52 |
| Помогите кто чем может! | serg2t2 | Настройка интернета | 21 | 08.01.2008 14:42 |
| Помогите кто может | LordDevil | Архив | 7 | 27.11.2007 13:49 |
|
|