Правила Форума редакция от 22.06.2020 |
|
|
|
|
|
Опции темы | Опции просмотра | Language |
05.05.2007, 19:32 | #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"; }
__________________
Был, есть, и буду есть! Пить тоже буду. |
|
Реклама: | В КНС всегда выгодно SP008GLSTU160N02 - билеты на футбол в подарок каждому покупателю | круиз на теплоходе княжна анастасия 2024 | театральный зал дом музыки фото | prifab | Рекомендуем гипермаркет КНС.ру - SMP350EI - более 50-ти тысяч наименований товаров со склада в Москве |
05.06.2007, 02:19 | #2 |
Неактивный пользователь
Регистрация: 28.05.2007
Сообщений: 3
Репутация: 0
|
Ответ: Помогите кто может!
У тебя проблемы с кирилицей будь она не ладная. Советую зайти в соседнюю тему и там спросить:
http://www.nowa.cc/showthread.php?t=98175 |
05.06.2007, 09:52 | #3 | |||||||||||||||||||
Ответ: Помогите кто может!
FAQ на странице хостера есть? Читал?
Это может помочь напрячь ВСЕХ на нужную кодировку, браузеры будут открыватся только в ОДНОЙ кодировке, даже если юсер поставил себе по умолчанию китайскую. Ну или сразу показывать ему кракозябры если юсер упертый и у него нет автоматической кодировки в браузере и тупо выставлена вьетнамская стандартная. Форма допустим у тебя win1251 а скрипт (или сервак) держит КОИ в итоге ты ясен пень при обработке получишь кракозябры (если нет автодетекта кодировки и перекодировки на лету). А да и чем посылает скрипт в Content-Type: text/html; charset="??????????" По моему копатся здесь и надо, по моему все должно совпадать: charset на форме, charset в скрипте (default charset на сервере) интерпретатора и ессно charset в теле письма. Cделай генератор хтмл письма, увы я в CGI не силен, помочь не могу, иначе пользовтель будет обречен постоянно менять кодировки в почтовом клиенте. Кстати ХТМЛ письмо и выглядит покрасивше да и юсеров кто сидит на текстовых е-майл клиентах я думаю среди заказчиков туров вряд ли будет много (если будет вообще).
__________________
Aufwiederzehen! Последний раз редактировалось Il_Burbero; 05.06.2007 в 10:11.. Причина: :) |
||||||||||||||||||||
03.10.2007, 11:24 | #4 |
Неактивный пользователь
Пол: Регистрация: 29.05.2007
Сообщений: 6
Репутация: 1
|
Ответ: Помогите кто может!
--------------------------------------------------------------------------------
Perl book http://rapidshare.com/files/59919048/perl.pdf |
28.12.2007, 22:28 | #5 |
Неактивный пользователь
Пол: Регистрация: 28.12.2007
Сообщений: 43
Репутация: 9
|
Ответ: Помогите кто может!
Использовать модули CGI (или аналогичные попроще) и MIME::Lite. Тогда программа сильно упрощается. А вообще - надо в заголовках письма проставлять кодировку. И сама программа должна быть в правильной кодировке.
|
13.02.2009, 13:32 | #6 |
Неактивный пользователь
Регистрация: 08.09.2008
Сообщений: 2
Репутация: 0
|
Re: Помогите кто может!
???? ??????? ?? ???? ??????? ????? ????!!!!!!
|
07.05.2010, 13:52 | #7 |
Новичок
Пол: Регистрация: 30.07.2007
Сообщений: 9
Репутация: 0
|
Re: Помогите кто может!
Примерно так:
use Encode qw/encode decode/; my $val = encode("CP1251", decode("UTF-8", "Текст из поля формы")); |
Опции темы | |
Опции просмотра | |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Не разбирусь с CSS. Помогите кто может. | blood_2007 | CSS | 17 | 01.04.2011 09:08 |
Виртуализация XEN: помогите, кто может! | Lorte | UNIX, Linux, MacOs для PC и другие ОС | 1 | 26.06.2008 16:47 |
Кто может,помогите,пожалуйста... | Наталья1967 | Macromedia Flash | 5 | 22.03.2008 23:52 |
Помогите кто чем может! | serg2t2 | Настройка интернета | 21 | 08.01.2008 14:42 |
Помогите кто может | LordDevil | Архив | 7 | 27.11.2007 13:49 |
|
|