Модераторы: korob2001, ginnie
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> редирект после отправки формы 
V
    Опции темы
fridy
Дата 15.1.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 10.1.2006

Репутация: нет
Всего: нет



Ситуация такая: Форма отправляется скрипту который записывает
данные в файл. Сам этот скрипт ничего в браузер не выдает и смотреть на пустой экран вряд ли кому то будет интересно.
Значит нужно сделать редирект обратно на страницу с формой
и по идее ещё перезагрузить эту страницу чтобы добавленная
запись сразу была видна. Но сейчас вопрос о редиректе.

Наверное эта тема уже обсуждалась, но я нашел только это
http://forum.vingrad.ru/index.php?showtopic=74732

Вариант который там предложен у меня не работает, поскольку не установлен модуль CGI(вообще уменя Денвер)
PM MAIL   Вверх
BlackLFL
Дата 15.1.2006, 22:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 15.9.2005
Где: Москва

Репутация: 3
Всего: 12



Для даначала, модуль CGI идет в стандартной поставке Perl, и в Денвере он тоже есть.

Далее, тут Perl в обще не причем, используйте специальный HTML тэг
Код

...
записываем информацию в фаил
...
print "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"0; URL=адрес_куда_делать_редирект\">";
...


PM WWW   Вверх
korob2001
Дата 16.1.2006, 16:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Код

#!/usr/bin/perl -w
use strict;

# тута обрабатываешь полученные данные

print "Location: http://yandex.ru\n\n";

\n\n в конце обязательны, ну и разумеется http://yandex.ru, меняй на свой адрес.
Цитата

Вариант который там предложен у меня не работает, поскольку не установлен модуль CGI(вообще уменя Денвер)

Так установи к своему денверу, нормальный дистрибутив с ActiveState.
1.) Жмёшь сюда и качаешь последнюю версию Perl под винду.
2.) Если твой денвер установлен на диске Z:/, то при установке Perl указываешь каталог Z:/usr/, далее на все вопросы жмёшь Yes, Да, Угу и тому подобное.
После того, как сделаешь всё это у тебя будет всё тот же Денвер, но только с полноценной, последней версией Perl.

Это сообщение отредактировал(а) korob2001 - 17.1.2006, 08:58


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
sugee
Дата 17.1.2006, 13:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 423
Регистрация: 12.6.2005

Репутация: нет
Всего: 4



У меня сработало то что предложил BlackLFL

korob2001, строка use strict; у мнея выдает ошибку,
то есть опять таки этот модуль не установлен.
Интересно узнать что это за модуль и для чего он?

Это сообщение отредактировал(а) sugee - 17.1.2006, 13:14
PM MAIL   Вверх
korob2001
Дата 17.1.2006, 14:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Цитата

korob2001, строка use strict; у мнея выдает ошибку,
то есть опять таки этот модуль не установлен.
Интересно узнать что это за модуль и для чего он?

Это не модуль, а директива компилятора, т.е. прагма. Она заставляет Perl ужесточить правила. Другими словами, после того как она вызвана, все переменные нужно объявлять явно с помощью my, local или our, все подпрограммы должны быть объявлены, запрещается использование символических ссылок. Её рекомендуется использовать всегда и везде.
Можешь показать ошибку?
Дело в том, что даже в урезанной версии Perl, которая поставляется с Денвером, она есть и должна быть. Скорее всего она тебе выдала сообщение об ошибке из-за того, что у тебя не объявлены переменные, либо вызывается подпрограма до её объявления, либо используется символическая ссылка.
Цитата

У меня сработало то что предложил BlackLFL

То, что написал BlackLFL, лучше всего использовать для обновления текущей страницы, например: при обновлении фрейма с сообщениями в чате или когда нужно вывести сообщение и через определённый интервал времени перенаправить пользователя.
Если загрузка страницы, вообще не нужна то используй пример с Location.
Отличие в том, что если пользоваться способом с META тегом, то сначала страница, с этим тегом должна загрузиться, затем срабатывает перенаправление. Вариант с Location, который я привёл выше, делает перенаправление как-только будет загружен заголовок, т.е. загрузки страницы, с которой делается перенаправление, не будет вообще. Работать этот вариант будет на порядок быстрее.

Это сообщение отредактировал(а) korob2001 - 17.1.2006, 14:17


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
BlackLFL
Дата 27.1.2006, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 15.9.2005
Где: Москва

Репутация: 3
Всего: 12



korob2001
а этот метод во всех браузерах отработает? где-то я слышал, что нет, но утверждать не могу ...
PM WWW   Вверх
sharq
Дата 27.1.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Perl Liker
**


Профиль
Группа: Участник
Сообщений: 841
Регистрация: 13.12.2004
Где: Ростов-на-Дону

Репутация: 2
Всего: 28



BlackLFL на такие вопросы ищем ответы в стандартах.

Вот например, тег
Код

<META HTTP-EQUIV = sInformation... >

поддерживает html 3.2 +, читаем здесь.

Поэтому
Цитата(BlackLFL @ 27.1.2006, 13:21 Найти цитируемый пост)

а этот метод во всех браузерах отработает?

Только в тех, которые поддерживают стандарт html 3.2 и выше.

smile


--------------------
[color=gray]There's More Than One Way To Do It[/color]
PM MAIL WWW ICQ Skype   Вверх
BlackLFL
Дата 27.1.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 15.9.2005
Где: Москва

Репутация: 3
Всего: 12



sharq я про Location говорил smile
PM WWW   Вверх
korob2001
Дата 27.1.2006, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: 13
Всего: 61



Цитата(BlackLFL @ 27.1.2006, 11:38 Найти цитируемый пост)

sharq я про Location говорил


Ну это вообще-то заголовок. Думаю любой браузер должен его распознать, ну разве что какой-нить самописный и не распознает. К тому же вариант с <META>, перенаправляет на уровне тела документа, т.е. для перенаправления браузер должен загрузить тело документа, а с Location, перенаправление происходит на уровне заголовка и соответственно тело документа грузить не нужно.
Просто зачем грузить тело если при его загрузке юзер будет сразу же перенаправлен?

Твой вариант отлично подошёл бы, если бы нужно было выдать сообщение об успешной отправке и через определённый интервал времени перенаправить его куда-нить, например: на главную страницу ресурса. Что бы юзер успел прочитать сообщение, перед тем, как будет перенаправлен.

Это сообщение отредактировал(а) korob2001 - 27.1.2006, 17:50


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
BlackLFL
Дата 27.1.2006, 20:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 263
Регистрация: 15.9.2005
Где: Москва

Репутация: 3
Всего: 12



korob2001 я это знаю, у меня был теоритический вопрос, надо покопать в интернете ... но думаю любой современный браузер точно понимает, скорей всего я "слышал звон, да не знаю где он" smile
PM WWW   Вверх
Rezzonans
Дата 7.2.2006, 23:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 145
Регистрация: 21.4.2005

Репутация: нет
Всего: нет



BlackLFL , в общем-то korob2001 прав. Использую переадрисацию с помощью location почти с первого дня, как начал на perle писать, случались конечно глюки непонятно из-за чего (кстати, может это как-то с кешем связано?), но в основном никогда эта директива не подводила.
--------------------
Первый детектор лжи был собран из ребра мужчины. Впрочем, до сих пор, никаких изменений не притерпел
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Perl: CGI программирование"
korob2001
sharq
  • В этом разделе обсуждаются вопросы относящиеся только к CGI программированию
  • Если ваш вопрос не относится к системному или CGI программированию, задавайте его в общем разделе
  • Если ваш вопрос относится к системному программированию, задавайте его здесь
  • Интерпретатор Perl можно скачать здесь ActiveState, O'REILLY, The source for Perl
  • Справочное руководство "Установка perl-модулей", качать здесь


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Perl: разработка для Web | Следующая тема »


 




[ Время генерации скрипта: 0.0489 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.