![]() |
|
Модераторы: korob2001, ginnie |
![]()
|
|
| Lub |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 7.11.2007 Репутация: нет Всего: нет |
Народ, модуль CGI только начинаю осваивать, поэтому прошу сильно не пинать. Задача, как мне казалось, тривиальная, но вот решение найти не могу.
Суть: При заполнении формы по submit запускается скрипт work.pl с параметрами из формы. Он работает и на определенном шаге нужно: 1. Тормознуть выполнение скрипта до получения данных от клиента (вот тут самая большая проблема для меня.) Пока скрипт work.pl "тормозит": 2. вывести клиенту форму 2 для заполнения 3. получить данные из этой формы 4. передать эти данные скрипту work.pl //вторая загвоздка 5. продолжить работу work И еще ссылочек, что почитать по данному вопросу. |
|||
|
||||
| tolkien |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: нет Всего: 4 |
Да что там осваивать? функцию param?
Найдите в интернете книгу PERL:CGI программирование и почитайте ее сначала. |
|||
|
||||
| Lub |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 7.11.2007 Репутация: нет Всего: нет |
Сорри, я не задаю вопросов, как считать в скрипт параметры формы или как вывести новую форму.
Меня интересует, как прервать работу основного скрипта и вернуться к его выполнению РОВНО с той точки, на которой прервались, не выполняя его повторно. |
|||
|
||||
| tolkien |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: нет Всего: 4 |
Ну и задачка. Тут где то уже задавали вопросы про модули Continue. Наверное это то что вам нужно.
|
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
Уважаемый Lub, протокол CGI не позволяет работать так, как Вам нужно. Вам необходимо изменить логику работы приложения в соответствии с идеологией CGI и HTTP.
Например, можно сделать так: в форму 2 вывести скрытыми данные, заполненные в форме 1. После отправки формы 2 обрабатывать все данные вместе. -------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| KSURi |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 887 Регистрация: 8.6.2006 Где: Russia Репутация: 2 Всего: 27 |
-------------------- Died at Life.pl line 21 |
|||
|
||||
| Lub |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 7.11.2007 Репутация: нет Всего: нет |
Я тут пытаюсь пробраться скозь fork(), exec и wait (waitpid)... Напрасно?
|
|||
|
||||
| Itsys |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
Зачем городить огород ради простейшей вещи? Ну примерно так: script.pl
Это сообщение отредактировал(а) Itsys - 1.7.2008, 12:09 |
||||
|
|||||
| tolkien |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 277 Регистрация: 5.4.2008 Репутация: нет Всего: 4 |
А как fork и exec могут помочь сохранить скрит?
) то что fork делает копию процесса. Вовсе не означает что вы можете его сохранить в файл и после загрузить с помощью exec. Lub я угадал ход ваших мыслей? |
|||
|
||||
| Lub |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 7.11.2007 Репутация: нет Всего: нет |
<form action="script.pl">
запускает скрипт с самого начала, что меня категорически не устраивает. Или я что-то пропустила? Наверное, я не точно выразилась. При запуске из командной строки скрипт work.pl при наступлении определенного события выдает запрос пользователю, тривиальный: Изменить или оставить как есть? (yes-no). В зависимости от ответа две различные ветки. Пытаюсь приделать веб-морду ;-) к этому монстру. Т.е. мне тупо нужно передать ввод пользователя при запросе в середине скрипта. Это сообщение отредактировал(а) Lub - 1.7.2008, 13:03 |
|||
|
||||
| ginnie |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 6.1.2008 Где: Москва Репутация: 4 Всего: 49 |
Уважаемая Lub, чем Вас не устраивает использование ветвлений, предложенное Itsys?
-------------------- Написать код, понятный компьютеру, может каждый, но только хорошие программисты пишут код, понятный людям. (Мартин Фаулер. Рефакторинг) |
|||
|
||||
| Lub |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 7.11.2007 Репутация: нет Всего: нет |
Нет, сохронять процесс в файл мне в голову не пришло. При помощи exec запустить сторонний скрипт на исполнение для вывода формы и получения параметра, после чего waitpid будет свидетельствовать о том, что скрипт (дочерний процесс) успешно отработал (завершен) , т.е. получен параметр, после чего продолжить работу основного скрипта. P.S. "Я не волшебник, я только учусь..." ("Золушка") |
|||
|
||||
| Itsys |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1338 Регистрация: 21.1.2008 Где: г. Москва Репутация: нет Всего: 34 |
Lub, В CGI ветвеление идет на уровне алгоритма
т.к. весь процесс можно пердставить следущим образом: 1. Клиент (браузер) отсылает запрос серверу на получение определенной страницы (work.pl) 2. Скрипт определеяет, что во входных параметрах CGI отсутсвует параметр action, выполняет определенные действия и выводит форму для ввода данных, в которой есть скрытое поле (action) 3. Пользователь заполняет форму и нажимает кнопку отправить 4. Клиент (браузер) отсылает запрос серверу на получение определенной страницы (work.pl) с установленным параметром action=1 5. Скрипт определяет, что параметр action передан и переходит на выполнение следующей последовательности операторов и т.д. опеределение ветви происходит в операторе if:
|
|||
|
||||
| nitr |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2543 Регистрация: 10.2.2006 Где: Россия :) Репутация: 12 Всего: 84 |
Lub, он имел ввиду как пример:
И в самом скрипте или как вас устроит, сделать обработку этого "параметра" action. Мы говорим, что вы подошли с какой-то для нас непонятной стороны к разработке Достаточно прочесть книгу и! Разобрать все примеры! Тогда в голове сложится вся ситуация, весь алгоритм - это самый простой, как и ваша задача. P.S.: Или всё же вы не полностью передали вашу проблему, тут недавно (пару топико назад) уже было такое. Человек понял, что если бы он сразу описал более подробнее проблему - то получил сразу ответ |
|||
|
||||
| gcc |
|
|||
![]() Агент алкомафии ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2691 Регистрация: 25.4.2008 Где: %&й Репутация: 2 Всего: 17 |
маленький пример, если есть из param значение то что мы передали pageone (name="pageone"), то то выводится функция rerrel примерно так работало, но если файл передавать то нужно писать в форме в какой скрипт мы передает.... Это сообщение отредактировал(а) gcc - 2.7.2008, 11:52 |
|||
|
||||
![]()
|
| Правила форума "Perl: CGI программирование" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, korob2001, sharq. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: разработка для Web | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |