Компьютерный форум NoWa.cc Здесь может быть Ваша реклама
Правила Форума
редакция от 22.06.2020
Портал .::2BakSa.WS::.
Вернуться   Компьютерный форум NoWa.cc > В помощь вебмастеру > Веб - Программирование > Perl

Уважаемые пользователи nowa.cc и 2baksa.ws. У нас сложилось тяжелое финансовое положение. Мы работаем для вас вот уже более 15 лет и сейчас вынуждены просить о помощи. Окажите посильную поддержку проектам. Мы очень надеемся на вас. Реквизиты для переводов ниже.
Webmoney Webmoney WMZ: 826074280762 Webmoney WMR: 146037758184 Webmoney WMP: 209123518174 Webmoney WME: 804621616710
PayPal PayPal_Email E-mail для связи по вопросу помощи
Кошелек для вашей помощи YooMoney 410013204813773
YooMoney Спасибо за поддержку!
Ответ
 
Опции темы Поиск в этой теме Опции просмотра Language
Старый 05.05.2007, 19:32   #1
Неактивный пользователь
 
Аватар для proparket
 
Пол:Мужской
Регистрация: 21.10.2005
Сообщений: 41
Репутация: 54
По умолчанию Помогите кто может!

Я делал простую форму заказа тура со страницы сайта (его еще нет). С формой получилось все ОК, а вот скрипт перла, который правильно отправляет данные из форм на 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";
}
__________________
Был, есть, и буду есть! Пить тоже буду.
proparket вне форума
 
Ответить с цитированием Вверх
Здесь может быть Ваша реклама


Реклама: противопожарный клапан kzo-1-120-1000х1000-o-s220-tвешалку напольную купитьмаленькие узкие прихожиекупить вешалки для одеждынасос grundfos tpd 65-410/2 96087595


Старый 05.06.2007, 02:19   #2
lesto
Неактивный пользователь
 
Регистрация: 28.05.2007
Сообщений: 3
Репутация: 0
По умолчанию Ответ: Помогите кто может!

У тебя проблемы с кирилицей будь она не ладная. Советую зайти в соседнюю тему и там спросить:
http://www.nowa.cc/showthread.php?t=98175
lesto вне форума
 
Ответить с цитированием Вверх
Старый 05.06.2007, 09:52   #3
Il_Burbero
Неактивный пользователь
 
Аватар для Il_Burbero
 
Регистрация: 21.09.2006
Адрес: Москва
Сообщений: 136
Репутация: 38
По умолчанию Ответ: Помогите кто может!

FAQ на странице хостера есть? Читал?
Цитата:
Для того чтобы сервер выдавал кодировку документа в http-заголовке (это рекомендует делать yandex.ru для корректного индексирования), вам необходимо добавить в файл .htaccess следующюю строчку:
AddDefaultCharset windows-1251
либо
AddDefaultCharset koi8-r
- в зависимости от кодировки сайта.

Это может помочь напрячь ВСЕХ на нужную кодировку, браузеры будут открыватся только в ОДНОЙ кодировке, даже если юсер поставил себе по умолчанию китайскую. Ну или сразу показывать ему кракозябры если юсер упертый и у него нет автоматической кодировки в браузере и тупо выставлена вьетнамская стандартная.

Форма допустим у тебя win1251 а скрипт (или сервак) держит КОИ в итоге ты ясен пень при обработке получишь кракозябры (если нет автодетекта кодировки и перекодировки на лету).

А да и чем посылает скрипт в Content-Type: text/html; charset="??????????"
По моему копатся здесь и надо, по моему все должно совпадать: charset на форме, charset в скрипте (default charset на сервере) интерпретатора и ессно charset в теле письма.

Cделай генератор хтмл письма, увы я в CGI не силен, помочь не могу, иначе пользовтель будет обречен постоянно менять кодировки в почтовом клиенте. Кстати ХТМЛ письмо и выглядит покрасивше да и юсеров кто сидит на текстовых е-майл клиентах я думаю среди заказчиков туров вряд ли будет много (если будет вообще).
__________________
Aufwiederzehen!

Последний раз редактировалось Il_Burbero; 05.06.2007 в 10:11.. Причина: :)
Il_Burbero вне форума
 
Ответить с цитированием Вверх
Старый 03.10.2007, 11:24   #4
nigat
Неактивный пользователь
 
Пол:Мужской
Регистрация: 29.05.2007
Сообщений: 6
Репутация: 1
По умолчанию Ответ: Помогите кто может!

--------------------------------------------------------------------------------

Perl book http://rapidshare.com/files/59919048/perl.pdf
nigat вне форума
 
Ответить с цитированием Вверх
Старый 28.12.2007, 22:28   #5
chorny
Неактивный пользователь
 
Пол:Мужской
Регистрация: 28.12.2007
Сообщений: 43
Репутация: 9
По умолчанию Ответ: Помогите кто может!

Использовать модули CGI (или аналогичные попроще) и MIME::Lite. Тогда программа сильно упрощается. А вообще - надо в заголовках письма проставлять кодировку. И сама программа должна быть в правильной кодировке.
chorny вне форума
 
Ответить с цитированием Вверх
Старый 13.02.2009, 13:32   #6
Walkman55
Неактивный пользователь
 
Регистрация: 08.09.2008
Сообщений: 2
Репутация: 0
По умолчанию Re: Помогите кто может!

???? ??????? ?? ???? ??????? ????? ????!!!!!!
Walkman55 вне форума
 
Ответить с цитированием Вверх
Старый 07.05.2010, 13:52   #7
Slava0008
Новичок
 
Пол:Мужской
Регистрация: 30.07.2007
Сообщений: 9
Репутация: 0
По умолчанию Re: Помогите кто может!

Примерно так:

use Encode qw/encode decode/;
my $val = encode("CP1251", decode("UTF-8", "Текст из поля формы"));
Slava0008 вне форума
 
Ответить с цитированием Вверх
Ответ

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не разбирусь с 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

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Текущее время: 23:41. Часовой пояс GMT +3.


Copyright ©2004 - 2021 2BakSa.WS

Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc. Перевод: zCarot
Время генерации страницы 0.17829 секунды с 11 запросами