[Perl] (CGI?) Как сделать редирект?
#!/usr/bin/perl
print "Location: нужный_урл\n\n";
так только на страничке напишется "Location: нужный_урл" и все.
а может, ты сначала попробуешь?
мне кажется, что мы разные вещи имеем в виду
print "Content-type: text/html\n\n";
HTTP 302 Redirect
Фишка: у меня есть один большущий скрипт, который генерит страницу, реагирует на нажатия по ссылкам, содержит всякие формы итп итд (реализовано через модуль CGI). И вот я хочу сделать реакцию (редирект на эту же страницу с другими параметрами) не по submit'у, а при проверке некоторого условия.
HTTP 302 RedirectА можно поподробнее? )
#!/usr/bin/perl
if ($color == "red" || $color == "")
{
print "Content-type: text/html\n\n";
print "<h3>The color is ".$color."</h3>\n\n";
}
else print "Location: blue.html\n\n";
То есть, получится, что сервер начинает отдавать страницу с 200 ОК, после чего встречает ЧТО-ТО и быстренько редиректится на другую.
Чисто втупую это можно сделать выводом <script>window.location = ...</script> из контента, но ИМХО бред.
Так что +1, остальное - обман и подделка.
Просто по некоторому submit'u нужно занести что-то в бд и при неуспешном выполнении этой операции переслать человека на что-то типа script.pl?action=error без использования ссылки или формы. Неужели это "обман и подделка"? И никак иначе не обойтись, чем проверять в самом начале скрипта значения какого-нибудь флага?
А почему redirect перловский не пашет?
помедитируй над постом федечки. постарайся провести параллели между проверкой цвета и проверкой результата твоего sql-запроса
А почему редирект не работает, не знаю. Сделал так:
print redirect(-url=>'http://<path>/script.pl?action=error', -nph=>1);
все равно не работает...
Пора взять в руки книжку
А почему редирект не работает, не знаю.
скрипт (пишу условно):
%form = &get_input;
if( $form{ 'submit' } ) {
&save_database;
print "Location: script.pl?id=1\n\n";
} else {
&print_database;
}
Да, и еще: CGI.pm - зло.
Ты бы почитал, как оно на самом деле работает...
подмена Location в ответ на HTTP 200 OK — полнейшая ересь и долбоебизм!
Никто не спорит.
Пора взять в руки книжкуУгу, спасибо Вчитался в ман, оказывается этот редирект генерит только необходимый заголовок... shame on my head
Да, и еще: CGI.pm - злоДа блин, я не спец в протоколах разных итп... А что посоветуешь на будущее? HTML::Template?
Просто возможностей HTML::Template через некоторое время перестанет хватать.
Закончу сейчас писать "вебморду" (интересное, кстати, слово обязательно заботаю шаблонизатор.
а у нас главная страница всю жисть "мордой" называется
Да ему скорее-всего JavaScript-ом нужно редиректнуться по клику какому-нибудь. Или AJAX какой-нибудь намутить.
Оставить комментарий
Geddi-S
Хотелось бы сделать редирект на страницу (а точней, на этот же pl, только с другими параметрами но без использования формы и submit.Стандартный redirect из модуля CGI не работает
Подскажите, плз, ламеру, как это осуществить