Автор Тема: как отключить создание страницы?  (Прочитано 6884 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Юстас

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://musicangel.ru
как отключить создание страницы?
« : 22 Февраля 2007, 12:48:05 »
Из известных модулей собрал небольшую программу, которая берет данные формы и отправляет в почту.
Но при этом программа при каждом обращении открывает у юзера новое окно, которое мне не нужно. Его, конечно можно тутже закрыть, вставив в него скрипт на JS, но тогда на экране получается эффект моргания.
Если ничего не сообщать для нового окна, то оно все равно открывается, но с ошибкой 502.
Заголовок программы такой:
#!/usr/bin/perl
use strict;
use CGI qw(:standard);
use CGI::Carp qw(fatalsToBrowser);

Есть простое решение задачи?

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
как отключить создание страницы?
« Ответ #1 : 22 Февраля 2007, 14:19:12 »
удалить use CGI::Carp qw(fatalsToBrowser); ?

Оффлайн Юстас

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://musicangel.ru
как отключить создание страницы?
« Ответ #2 : 22 Февраля 2007, 14:23:30 »
эффект тот же ... пытается сгенерить окно

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
как отключить создание страницы?
« Ответ #3 : 22 Февраля 2007, 15:44:21 »
попробуйте удалить строки с 14 по 32.

Оффлайн Юстас

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://musicangel.ru
как отключить создание страницы?
« Ответ #4 : 22 Февраля 2007, 15:52:30 »
очень ценный совет, по эффекту сравним с "удалить волосы"

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
как отключить создание страницы?
« Ответ #5 : 22 Февраля 2007, 17:31:00 »
Юстас описано весьма размыто. Постарайтесь изложить все как будто ребенку объясняешь, тогда и советы будут четкими.
The documentations is your friend

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
как отключить создание страницы?
« Ответ #6 : 22 Февраля 2007, 22:41:36 »
удалили, не помогло?

Оффлайн Юстас

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://musicangel.ru
как отключить создание страницы?
« Ответ #7 : 26 Февраля 2007, 11:36:40 »
NeoNox
Попробую подробнее.
В программе на Perl всего около 20 строк. Беру данные из формы и отправляю их себе на почтовый адрес. Если в программу не вставлять ни одного print, то у юзера открывается новое коно с текстом - ошибка 502, если вставить, то содержимое print выводится опять же в новом окне. Мне нужно сделать так чтобы новое окно вообще не появлялось. Где-то прочитал что нужно отправить заголовок 204, но пока не получается.

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
как отключить создание страницы?
« Ответ #8 : 26 Февраля 2007, 13:18:00 »
Цитировать
Юстас:
В программе на Perl всего около 20 строк.

Ну так выложи ее всю.

Цитировать
Юстас:
Где-то прочитал что нужно отправить заголовок 204, но пока не получается.


print header(-status=>204)
The documentations is your friend

Оффлайн Юстас

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://musicangel.ru
как отключить создание страницы?
« Ответ #9 : 26 Февраля 2007, 13:36:38 »
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;

Оффлайн arto

  • Ветеран
  • *****
  • Сообщений: 699
  • +0/-0
  • 2
    • Просмотр профиля
как отключить создание страницы?
« Ответ #10 : 26 Февраля 2007, 13:52:06 »
интересно, как это все работает?

>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.

>

Оффлайн Юстас

  • Заглянувший
  • Новичок
  • *
  • Сообщений: 8
  • +0/-0
  • 0
    • Просмотр профиля
    • http://musicangel.ru
как отключить создание страницы?
« Ответ #11 : 26 Февраля 2007, 14:03:02 »
arto
... ну стер с адресами еще и     my $summ;   ...

... вопрос не в том что и как выводится в письмо, а в том как выключить создание новой страницы, текст остальной программы может быть практически любой...

Оффлайн AnnA

  • Фанатка форума
  • Старожил
  • ****
  • Сообщений: 263
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
как отключить создание страницы?
« Ответ #12 : 28 Февраля 2007, 13:42:06 »
этот вопрос больше по html, чем по Perl. :)
если вы пишите http://www.captain.at/howto-ajax-form-post-get.php (даже я все сразу поняла ;) ) ну и все же придется немного подправить свой скрипт: сначала необходимо проверить - пришли ли ему параметры. если нет - выводить форму, если пришли - отправлять письмо и выводить форму.
пока-пока. :)

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28