Автор Тема: CGI::redirect. нужен ли die?  (Прочитано 5409 раз)

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

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
CGI::redirect. нужен ли die?
« : 13 Ноября 2003, 02:06:06 »
Вопрос, возможно, не самый умный, но всё же. При работе с модулём CGI, а именно, его методом redirect возникла неуверенность: нужно ли заканчивать работу программу её "умерщвлением" (die) или при использовании redirect программа сама прекратит своё выполнение?
Собссно вопрос всплыл по воспоминаниям, что в ПХП, помнится, после Header("Location..."), нужно "умирать"
 BlueJacking среди нас

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
CGI::redirect. нужен ли die?
« Ответ #1 : 13 Ноября 2003, 11:04:38 »
Нет не нужно. Perl сам увидит что пора умирать. Но если задать в явном виде это не будет ошибкой.
The documentations is your friend

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
CGI::redirect. нужен ли die?
« Ответ #2 : 13 Ноября 2003, 11:33:49 »
2NeoNox
ОК. Спасибо :)
 BlueJacking среди нас

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
CGI::redirect. нужен ли die?
« Ответ #3 : 20 Ноября 2003, 00:21:18 »
А вот, оказывается, не всегда Perl знает, что нужно "умереть". Пример:

($params{smth} =~ s/\\s*(.+?)\\s*/$1/)
or $cgi->param(-name=>\'error\', -value=>qq(Blah, blah, blah...)),
$cgi->param(-name=>\'smth1\', -value=>$params{smth1}),
die print redirect(-uri => $refer_url[0].\'?\'.$cgi->query_string());

Без die в последней строчке выполнение программы продолжается, и только после её завершения, осуществляется перенаправдение.
« Последнее редактирование: 20 Ноября 2003, 00:29:51 от metton »
 BlueJacking среди нас

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
CGI::redirect. нужен ли die?
« Ответ #4 : 20 Ноября 2003, 11:12:53 »
В данном случае это механизм модуля CGI.
Создание хедера ручками приведет к обратному выводу.
The documentations is your friend

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
CGI::redirect. нужен ли die?
« Ответ #5 : 20 Ноября 2003, 17:20:01 »
2NeoNox
Не понял тебя.
Что конкретно в данном случае механизм модуля CGI и на что он влияет?
И что значит, что "Создание хедера ручками приведет к обратному выводу"?
 BlueJacking среди нас

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
CGI::redirect. нужен ли die?
« Ответ #6 : 20 Ноября 2003, 18:58:18 »
Цитировать
metton:
Что конкретно в данном случае механизм модуля CGI и на что он влияет?

Я имею ввиду что не смотрел как написан redirect в CGI модуле.
Я не знаю как и когда он хедер отправляет.
Цитировать
metton:
И что значит, что "Создание хедера ручками приведет к обратному выводу"?

print "Location:  http://perl.org/\\r\\n\\r\\n";
The documentations is your friend

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
CGI::redirect. нужен ли die?
« Ответ #7 : 20 Ноября 2003, 23:24:55 »
2NeoNox
Я понял, что значит ручками, я не понял что значит "приведет к обратному выводу"
 BlueJacking среди нас

Оффлайн Chs

  • Perl программер
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 1108
  • +0/-0
  • 2
    • Просмотр профиля
    • http://chs.now.at/
CGI::redirect. нужен ли die?
« Ответ #8 : 21 Ноября 2003, 09:09:14 »
Цитировать
я не понял что значит "приведет к обратному выводу"

Редирект пойдет сразу, до завершения скрипта.
2B OR NOT 2B = FF

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
CGI::redirect. нужен ли die?
« Ответ #9 : 21 Ноября 2003, 10:39:00 »
2Chs
Странно, а почему же при редиректе redirect-ом Perl не знает, что надо "умирать"? Может, потому что redirect использует немного другой заголовок: "Status: 302 Moved\\r\\nLocation: http://perl.org/\\r\\n\\r\\n"?
« Последнее редактирование: 21 Ноября 2003, 10:47:49 от metton »
 BlueJacking среди нас

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
CGI::redirect. нужен ли die?
« Ответ #10 : 21 Ноября 2003, 11:38:55 »
Это не Perl не знает, а модуль CGI отправляет заголовки и тело тогда когда он считает нужным. Возможно только после того как сформировано все вплоть до end_html. Нужно поднимать документацию или смотреть модуль.
Цитировать
metton:
Может, потому что redirect использует немного другой заголовок: "Status: 302 Moved\\r\\nLocation: http://perl.org/\\r\\n\\r\\n"?

Нет, этот трюк позволяет выставить куки и сделать редирект.
(я написал позволяет а не выставляет). Этот пример в факе по этому форуму лежит.
The documentations is your friend

Оффлайн metton

  • access granted
  • Старожил
  • ****
  • Сообщений: 320
  • +0/-0
  • 2
    • Просмотр профиля
    • http://bluejack.ru/
CGI::redirect. нужен ли die?
« Ответ #11 : 22 Ноября 2003, 12:25:40 »
2NeoNox
В ФАКЕ ПО ФОРУМУ такого я не нашёл. Либо плохо искал, либо ты имел ввиду не ФАКУ ПО ФОРУМУ, а что-то другое...
 BlueJacking среди нас

Оффлайн NeoNox

  • Координатор
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 3012
  • +0/-0
  • 0
    • Просмотр профиля
CGI::redirect. нужен ли die?
« Ответ #12 : 24 Ноября 2003, 12:17:28 »
Как выяснилось ФАК по Perl сейчас лежит. Будем стараться поднять его.
The documentations is your friend

 

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