Forum Webscript.Ru

Программирование => Perl => Тема начата: alex007 от 04 Июня 2002, 18:35:58

Название: Wizard
Отправлено: alex007 от 04 Июня 2002, 18:35:58
Помогите пожалуйста написать форму типа Wizard-a, которая собирала бы информацию постепенно (по шагам), типа на первой странице - имя, на второй странице - эл.адрес, на третьей странице - сообщение и т.д.  А на последней странице- показала бы информацию, которую собрала и при нажатии кнопки "ОК" - вся информация бы отсылалась на мыло. Киньте желательно примерчик. :confused:  Спасибо заранее.
Название: Wizard
Отправлено: ЖеньКа от 04 Июня 2002, 21:08:22
А вот глянь вот тут же в Перл Скриптах УНИВЕРСАЛЬНАЯ ФОРМА /или письмо не помню :)/ это похоже на то что тебе надо.
Название: Wizard
Отправлено: alex007 от 04 Июня 2002, 21:33:55
да я уже смотрел етот скрипт это совсем не то что мне надо. А этот скрипт "УНИВЕРСАЛЬНАЯ ФОРМА" не отсылает на мыло, а записывает в файл все данные.
Название: Wizard
Отправлено: Britva от 05 Июня 2002, 01:20:09
Принцип следующий, делал для php, но без разницы

напр-р есть три формы, в каждой по 5 переменных
в первой форме записываются 1ые, остальные 10 - как хидден
во второй - 5 хидден, 5 визибл, 5 хидден
ну и т.д.
и в каждой форме по типу Back, Next, можно и финиш еще прикрутить

а в скрипте уже проверять все переменные после каждого сабмита и отправлять куда надо, т.е. back или next.
Название: Wizard
Отправлено: glebushka от 05 Июня 2002, 09:06:02
Цитировать
проверять все переменные после каждого сабмита

Ключевое слово здесь ВСЕ, а главное НЕ ЗАБЫТЬ проверить после последнего, даже если у тебя там только выпадающий список или галочки проставить - а то некоторые придурки возьмут да и поравят твой файлик вместе с скрытыми полями, и передадут тебе всякую фигню.
Название: Wizard
Отправлено: от 05 Июня 2002, 13:37:22
Можешь создать сесию для пользователя и просто на сервере хранить все его изменения в базе например. А передавать в хиден поле просто номер сесии. Советую посмотреть
perldoc Apache::Session
Название: Wizard
Отправлено: от 05 Июня 2002, 13:40:20
http://search.cpan.org/doc/JBAKER/Apache-Session-1.54/Session.pm

Так будет правильнее чем perldoc, так как его сначала установить надо :)
Название: Wizard
Отправлено: alex007 от 05 Июня 2002, 23:48:47
спасибо большое за ответы, но мне надо не в сессиях, а желательно в 3 и можно более формах (нужно в perl/cgi, но не в php)  и чтоб между ними информация сохранялась в куки (cookie)
Название: Wizard
Отправлено: от 06 Июня 2002, 12:14:07
Еще раз объясняю слово сессия не должно пугать. От каждой формы(3 и более) ты получаешь какую-либо информацию, которую сохраняешь на сервере, а не держишь в куки большое количество информации. В куки ты можешь держать только уникальный ID(номер сессии) или же передавать его через хиден-поля. Так намного удобнее. А в финальной стадии по этому ID ты из БД(может текстовой как удобнее) на сервере получишь всю информацию, которую передал тебе пользователь. Почитай повнимательнее описание Apache::Session. Там все нормально описано.
Название: Wizard
Отправлено: NeoNox от 06 Июня 2002, 13:14:23
Цитировать
и чтоб между ними информация сохранялась в куки (cookie)

В cookie есть ограничение на размер. И с другой стороны, никакой гарантии что они включены на стороне клиента. Поэтому этот вариант не совсем (или совсем) неудачный. Как вариант наиболее простой: юзай hidden в формах. Ежели хочешь спрятать от взгляда юзверя - передавай в шифрованом виде.
Название: Wizard
Отправлено: glebushka от 07 Июня 2002, 01:01:14
Цитировать
Ежели хочешь спрятать от взгляда юзверя - передавай в шифрованом виде.

ГЫ. Юзверя совсем за параноика держат, он же только что их ввёл:-)
А зачем куки, зачем сессии?
Britva нормально тебе описал всё, что тебе нужно для счастья:-), в этой теме уже написано больше строк, и потрачено больше времени чем ты потратишь на код/затратишь время на его написание...
Название: Wizard
Отправлено: NeoNox от 07 Июня 2002, 15:46:19
Цитировать
Юзверя совсем за параноика держат, он же только что их ввёл:-)

Лучше за параноика, чем потом эти данные из кеша любой хацкер вынул. Я же не знаю что alex007 соберается получать. Ну это так, к слову... Если нет необходимости, то, конечно, можно эту процедуру опустить.