Forum Webscript.Ru
Программирование => Perl => Тема начата: Юстас от 22 Февраля 2007, 12:48:05
-
Из известных модулей собрал небольшую программу, которая берет данные формы и отправляет в почту.
Но при этом программа при каждом обращении открывает у юзера новое окно, которое мне не нужно. Его, конечно можно тутже закрыть, вставив в него скрипт на JS, но тогда на экране получается эффект моргания.
Если ничего не сообщать для нового окна, то оно все равно открывается, но с ошибкой 502.
Заголовок программы такой:
#!/usr/bin/perl
use strict;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
Есть простое решение задачи?
-
удалить use CGI::Carp qw(fatalsToBrowser); ?
-
эффект тот же ... пытается сгенерить окно
-
попробуйте удалить строки с 14 по 32.
-
очень ценный совет, по эффекту сравним с "удалить волосы"
-
Юстас описано весьма размыто. Постарайтесь изложить все как будто ребенку объясняешь, тогда и советы будут четкими.
-
удалили, не помогло?
-
NeoNox
Попробую подробнее.
В программе на Perl всего около 20 строк. Беру данные из формы и отправляю их себе на почтовый адрес. Если в программу не вставлять ни одного print, то у юзера открывается новое коно с текстом - ошибка 502, если вставить, то содержимое print выводится опять же в новом окне. Мне нужно сделать так чтобы новое окно вообще не появлялось. Где-то прочитал что нужно отправить заголовок 204, но пока не получается.
-
Юстас:
В программе на Perl всего около 20 строк.
Ну так выложи ее всю.
Юстас:
Где-то прочитал что нужно отправить заголовок 204, но пока не получается.
print header(-status=>204)
-
NeoNox ок, вот текст (адреса убрал чтобы не посчитали раскруткой ресурса) :
#!/usr/bin/perl
use strict;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);
my $query = CGI->new;
print $query->header(-type => \'text/plain\', -status=> \'204 No Response\');
sub main
{
my $n1 = param(\'n1\'); my $n2 = param(\'n2\'); my $n3 = param(\'n3\');
$summ = " $n1 $n2 $n3 ";
&sendmail(\'aaaaaaaaaaaa\',\'bbbbbbbbbbbb\',$summ);
}
sub sendmail
{ my ($email, $subject, $data) = @_;
my $login = \'cccccccccccccccc\';
my $From = \'dddddddddddddddddd\';
my $FromName = \'eeeeeeeeeeee\';
my $mail = "/usr/sbin/sendmail -t -f$login";
local(*SM);
if (open(SM, "|$mail")) {
print SM "From: $FromName <$From>\\n";
print SM "To: $email\\n";
print SM "Subject: $subject\\n";
print SM "Content-Type: text/plain; charset=Windows-1251\\n\\n";
print SM "$data\\n";
close(SM);
} else { die "Ошибка: не найден $mail"; }
}
&main;
-
интересно, как это все работает?
>perl justas.pl
Global symbol "$summ" requires explicit package name at justas.pl line 12.
Global symbol "$summ" requires explicit package name at justas.pl line 13.
Execution of justas.pl aborted due to compilation errors.
>
-
arto
... ну стер с адресами еще и my $summ; ...
... вопрос не в том что и как выводится в письмо, а в том как выключить создание новой страницы, текст остальной программы может быть практически любой...
-
этот вопрос больше по html, чем по Perl. :)
если вы пишите