Forum Webscript.Ru
Программирование => Perl => Тема начата: DSA от 15 Июля 2005, 15:22:05
-
Здравствуйте многоуважаемый All!
Не подскажите ли как можно реализовать сабж. То есть, например, у меня такая ситуация:
При выполнении какого-то условия мне нужно отправить пользователя к другому скрипту.
Я пробовал пользоваться методом CGI->redirect("test.pl",1) (тоесть перенаправление на скрипт test.pl через 1 секунду), но он ведет себя мягко говоря по странному, иногда запуская нужный скрипт,а иногда выдавая такой результат:
Status: 302 Moved Window-Target: 1 location: test.pl
Подскажите, пожалуйста, как это можно реализовать.
-
DSA:
Я пробовал пользоваться методом CGI->redirect("test.pl",1) (тоесть перенаправление на скрипт test.pl через 1 секунду), но он ведет себя мягко говоря по странному, иногда запуская нужный скрипт,а иногда выдавая такой результат:
Status: 302 Moved Window-Target: 1 location: test.pl
1. печатает такое, то значит уже ранее были заголовки напечатаны, что неправильно
2. CGI->redirect("test.pl",1) насчет "перенаправления через 1 сек", вас кто-то обманул :) Возможно вам проще сделать страницу-шаблон редиректа, куда будет вставляться урл редиректа и время (это там время указывается), если же хотите через HTTP заголовки, то используйте ее правильно
print $query->redirect(\'http://somewhere.else/in/movie/land\');
Sometimes you don\'t want to produce a document yourself, but simply redirect the browser elsewhere, perhaps choosing a URL based on the time of day or the identity of the user.
The redirect() function redirects the browser to a different URL. If you use redirection like this, you should not print out a header as well.
You should always use full URLs (including the http: or ftp: part) in redirection requests. Relative URLs will not work correctly.
- т.е. указываем полный урл (c http://)
- не выдаем HTTP заголовки до вызова редиректа (они отправляются при:
print $query->redirect(\'http://somewhere.else/in/movie/land\');
-
DSA:
Вызов perl скрипта из другого perl скрипта
и редирект - это не вызов скрипта из другого скрипта, это перенаправление с одного скрипта на другой. Если же вам нужно из скрипта1 вызвать другой скрипт2, чтоб он что-то сделал и результат отдал скрипту1 ,то это все делается иначе (помнится на форуме это подробно и не раз обсуждалось)
-
В очередной раз спасибо Вам за великолепный ответ, Зеленый Какаду :-)
Не подскажите где на форуме кнопочка добавления рейтинга?:)
Я ее почему-то не наблюдаю, хотя так хочется хоть и такой мелочью, но все же хоть как-то вас отблагодарить :-)
Насчет метода redirect() - мне кажеться весьма неудобная функция, т.к. невозможно использовать ее и в то же время послать пользователю кукис, поэтому я решил эту проблему таким способом:
print header(-cookie=>$cookie,-Refresh => "1; URL = test.pl");
Что практически индентично, но зато более функционально. :)
-
DSA:
print header(-cookie=>$cookie,-Refresh => "1; URL = test.pl");
вот только насчет того что "URL=test.pl"
You should always use full URLs (including the http: or ftp: part) in redirection requests. Relative URLs will not work correctly.
могут работать неправильно..