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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблемы с кодировкой! Не могу разобраться в скрипте! 
:(
    Опции темы
rusws
  Дата 20.5.2008, 11:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть скрипт «рекомендовать другу», для отправке сообщения с сайта, но сообщения приходят в KOI8-R кодировке, как сделать, чтобы было windows-1251?

Товарищи выручайте!  smile 

Код

#!/usr/bin/perl



    $mailprogram = '/usr/sbin/sendmail';
    # $mailprogram = '/usr/lib/sendmail';
    # $mailprogram = '/usr/bin/sendmail';

# Edit this one to achieve color matching with the rest
# of your site - this would be what goes in your html <BODY> tag.
#
# NOTE : DO NOT use " ' # < or >
# Use the below example to help you with what is allowed

    $body = 'bgcolor=000000 text=ffffff link=fac700 alink=ff0000 vlink=ff0000';

# URL of this script - include the filename.

    $scripturl = 'http://www.site.ru/cgi-bin/easyrefer.cgi';

# Actual PATH (not the URL) of the log file - include the filename.

    $logpath = '/path/to/refer.log';

# Change this to the URL of the site or webpage you want to 
# allow referals for

    $refersite = 'http://www.site.ru';

# Change this to the name of your site or webpage

    $refertitle = 'В помощь веб-мастеру';

# Change this to your e-mail address 
# If you're not using PERL 5 on your system ie. version 4
# or earlier, you will need to escape the @ sign like this :
# ( \@ instead of just @ )
#
# Perl 5 users should be able to enter their straight e-mail address

    $myemail = '[email protected]';

# How long a message (in characters) do you want to allow 
# a visitor to send to their friend?

    $maxlength = '40';

####################   STOP HERE!   ####################
#                                                      #
# You may now upload this file to your server, using   #
# the instructions you received in the readme.txt file #
#                                                      #
########################################################
#                                                      #
# WARNING : Changing anything in this box or below     #
#           may damage the script.                     #
#                                                      #
########################################################


# Get the form variables 

    if ($ENV{'REQUEST_METHOD'} eq 'GET') {
         $buffer = $ENV{'QUERY_STRING'};
    }    
    else {
         read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
    }

# Break em up into a format the script can read

    @pairs = split(/&/, $buffer);
    foreach $pair (@pairs) {
         ($name, $value, $message) = split(/=/, $pair);
         $value =~ s/\+/ /g;
         $value =~ s/%([0-9A-H]{2})/pack('C',hex($1))/eg;
         $FORM{$name} = $value;
    }

# Assign shorter variable names 
# (Laziness on my part - but I find the longer 
# a script gets the more work typing long 
# variable names becomes.)

    $sender=$FORM{'sender'};
    $recip= $FORM{'recip'};
    $message= $FORM{'message'};

# Check for empty fields and print error page with a link 
# back to the page they were on if there is

    if ($FORM{'sender'} eq "") {
        print "Content-type: text/html; charset=windows-1251\n\n";
        print "<html><head><title>Ошибка - Недостающие Данные</title></head><body $body>\n";
        print "<H1>Ошибка - Пустая Область Отправителя</H1>\n";
        print "<FORM ACTION=\"$scripturl\" METHOD=\"GET\"><CENTER><TABLE BORDER=1 BGCOLOR=000077><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><TR><B>Расскажи другу про этот сайт!</B></FONT>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>Ваш E-mail</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"sender\" SIZE=25 VALUE=\"$sender\"></TD></TR><TR>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>E-mail Вашего друга</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"recip\" SIZE=25 VALUE=\"$recip\"></TD></TR><TR>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>Ваш коментарий</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"message\" SIZE=25 MAXLENGTH=$maxlength VALUE=\"$message\"></TD></TR></TABLE><INPUT TYPE=\"submit\" VALUE=\"Отправить!\"></CENTER></FORM><P>\n";
        print "<A HREF=\"$refersite\">Click Here</A> to return.\n";
                print "<P>Powered by <A HREF=\"http://www.getperl.com\">";
        print "<B>EasyRefer</B></A> Copyright 1998 by Thomas J. Delorme\n";
        print "</body></html>\n";
        exit;
    }
    if ($FORM{'recip'} eq "") {
        print "Content-type: text/html; charset=windows-1251\n\n";
        print "<html><head><title>Ошибка - Недостающие Данные</title></head><body $body>\n";
        print "<H1>Ошибка - Пустая Область Получателя</H1>\n";
        print "<FORM ACTION=\"$scripturl\" METHOD=\"GET\"><CENTER><TABLE BORDER=1 BGCOLOR=000077><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><TR><B>Расскажи другу про этот сайт!</B></FONT>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>Ваш E-mail</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"sender\" SIZE=25 VALUE=\"$sender\"></TD></TR><TR>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>E-mail Вашего друга</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"recip\" SIZE=25 VALUE=\"$recip\"></TD></TR><TR>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>Ваш коментарий</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"message\" SIZE=25 MAXLENGTH=$maxlength VALUE=\"$message\"></TD></TR></TABLE><INPUT TYPE=\"submit\" VALUE=\"Отправить!\"></CENTER></FORM><P>\n";
        print "<A HREF=\"$refersite\">Click Here</A> to return.\n";
        print "<P>Powered by <A HREF=\"http://www.getperl.com\">";
        print "<B>EasyRefer</B></A> Copyright 1998 by Thomas J. Delorme\n";
        print "</body></html>\n";
        exit;
    }

    if ($FORM{'message'} eq "") {
        print "Content-type: text/html; charset=windows-1251\n\n";
        print "<html><head><title>Ошибка - Недостающие Данные</title></head><body $body>\n";
        print "<H1>Ошибка - Пустая Область Сообщения</H1>\n";
        print "<FORM ACTION=\"$scripturl\" METHOD=\"GET\"><CENTER><TABLE BORDER=1 BGCOLOR=000077><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><TR><B>Расскажи другу про этот сайт!</B></FONT>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>Ваш E-mail</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"sender\" SIZE=25 VALUE=\"$sender\"></TD></TR><TR>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>E-mail Вашего друга</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"recip\" SIZE=25 VALUE=\"$recip\"></TD></TR><TR>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>Ваш коментарий</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"message\" SIZE=25 MAXLENGTH=$maxlength VALUE=\"$message\"></TD></TR></TABLE><INPUT TYPE=\"submit\" VALUE=\"Отправить!\"></CENTER></FORM><P>\n";
        print "<A HREF=\"$refersite\">Click Here</A> to return.\n";
        print "<P>Powered by <A HREF=\"http://www.getperl.com\">";
        print "<B>EasyRefer</B></A> Copyright 1998 by Thomas J. Delorme\n";
        print "</body></html>\n";
        exit;
    }

# Only complete the rest if there are no empty form fields

    if ($FORM{'message'} ne "" && $FORM{'recip'} ne "" && $FORM{'sender'} ne "") {

# Send e-mail for site recommendation to the Recipient

    open (MAIL,"|$mailprogram -t");
                print MAIL "To: $recip\n";
                print MAIL "From: $sender\n";
                print MAIL "Subject: Рекомендую посмотреть этот сайт!\n";
          print MAIL "$sender Ваш друг рекомендовал вам посмотреть этот сайт $refertitle!\n\n";
            print MAIL "Комментарии :\n$message\n";
                print MAIL "$refersite\n\n";
        print MAIL "Powered by :\n";
        print MAIL "EasyRefer - Copyright 1998 by Thomas J. Delorme\n";
        print MAIL "http://www.getperl.com\n";
    close(MAIL);

# Send thank-you e-mail to sender for recommending 
# your site to a friend.

    open (MAIL,"|$mailprogram -t");
                print MAIL "To: $sender\n";
                print MAIL "From: $myemail\n";
                print MAIL "Subject: Спасибо!\n";
        print MAIL "Спасибо за рекомендацию сайта $refertitle для $recip!\n\n";
                print MAIL "Ваше сообщение:\n$message\n";
        print MAIL "$refersite\n\n";
        print MAIL "Powered by :\n";
        print MAIL "EasyRefer - Copyright 1998 by Thomas J. Delorme\n";
        print MAIL "http://www.getperl.com\n";
    close(MAIL);

# Send e-mail to you notifying you of the recommendation

    open (MAIL,"|$mailprogram -t");
                print MAIL "To: $myemail\n";
                print MAIL "From: $sender\n";
                print MAIL "Subject: Рекомендация сайта\n";
        print MAIL "Сообщение отправленно $recip\n\n";
        print MAIL "$message\n";
                print MAIL "$refersite\n\n";
        print MAIL "Powered by :\n";
        print MAIL "EasyRefer - Copyright 1998 by Thomas J. Delorme\n";
        print MAIL "http://www.getperl.com\n";
    close(MAIL);

# Open the log and record the sender and recipient's e-mail addresses

        open (LOG, ">>$logpath");
            print LOG "$message - $recip referred by $sender\n";
        close (LOG);

# Finally, print message sent screen for the sender 
# with a link back to the page he was on.

        print "Content-type: text/html charset=windows-1251\n\n";
        print "<html><head><title>Спасибо - Ваше собщение отправлено</title></head><body $body>\n";
        print "<H1>Сообщение отправлено!</H1>\n";
        print "<FORM ACTION=\"$scripturl\" METHOD=\"GET\"><CENTER><TABLE BORDER=1 BGCOLOR=000077><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><TR><B>Расскажите еще кому нибудь о сейта $refertitle?</B></FONT>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>Ваш E-mail</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"sender\" SIZE=25 value=\"$sender\"></TD></TR><TR>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>E-mail Вашего друга</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"recip\" SIZE=25></TD></TR><TR>\n";
        print "<TD><FONT FACE=\"arial,helvetica\" COLOR=\"FAC700\"><B>Ваш коментарий</B></FONT></TD><TD><INPUT TYPE=\"text\" name=\"message\" SIZE=25 MAXLENGTH=$maxlength value=\"$message\"></TD></TR></TABLE><INPUT TYPE=\"submit\" VALUE=\"Отправить!\"></CENTER></FORM><P>\n";
        print "<A HREF=\"$refersite\">Click Here</A> to return.\n";
        print "<P>Powered by <A HREF=\"http://www.getperl.com\">";
        print "<B>EasyRefer</B></A> Copyright 1998 by Thomas J. Delorme\n";
        print "</body></html>\n";

    }


Код

<FORM ACTION="http://www.site.ru/cgi-bin/easyrefer.cgi" METHOD="POST"><CENTER><TABLE BORDER=1 BGCOLOR=000000><FONT FACE="arial,helvetica" COLOR="FAC700"><TR><B>Расскажи другу про этот сайт!</B></FONT>
<TD><FONT FACE="arial,helvetica" COLOR="FAC700"><B>Ваш E-mail</B></FONT></TD><TD><INPUT TYPE="text" name="sender" SIZE=25></TD></TR><TR>
<TD><FONT FACE="arial,helvetica" COLOR="FAC700"><B>E-mail Вашего друга</B></FONT></TD><TD><INPUT TYPE="text" name="recip" SIZE=25></TD></TR><TR>
<TD><FONT FACE="arial,helvetica" COLOR="FAC700"><B>Ваш коментарий</B></FONT></TD><TD><INPUT TYPE="text" name="message" SIZE=25 MAXLENGTH=40></TD></TR></TABLE><INPUT TYPE="submit" VALUE="Отправить!">
</CENTER></FORM>

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


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


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

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



модуль cyrillic smile


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


Новичок



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

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



и как это сделать? smile 
PM MAIL   Вверх
shamber
Дата 21.5.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1422
Регистрация: 5.9.2006
Где: Россия

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



rusws, конвертировать в доках хорошо описано
PM MAIL Jabber   Вверх
rusws
Дата 21.5.2008, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема решена!  smile 
добавил заголовок Content-type: и все заработало, как надо!  smile 


Код

print MAIL "To: Имя отправителя \n";
print MAIL "From: Адрес получателя \n";
print MAIL "Subject: Ваш друг порекомендовал Вам этот сайт!\n";
print MAIL "Content-type: text/plain; charset=\"windows-1251\"\n";
print MAIL "Содержание письма \n\n";


 smile 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl"
korob2001
sharq
  • В этом разделе обсуждаются общие вопросы по языку Perl
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Если ваш вопрос относится к CGI программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", можно скачать здесь


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

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


 




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


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

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