Forum Webscript.Ru

Программирование => Perl => Тема начата: metton от 20 Августа 2003, 22:15:05

Название: Методы parse_params и ReadParse в модуле CGI
Отправлено: metton от 20 Августа 2003, 22:15:05
Я не уверен, но, просмотрев на устройство методов (комментариев к первому, к сожалению, в исходнике не
оказалось), мне показалось, что метод parse_params - это тот же ReadParse из cgi-lib.pl (на всякий случай -
я знаю, что он есть и в CGI).
Это так?
Если не так, прокомментируйте различия в выполняемых ими функциях и другие различия.


И ещё. Я пытался использовать ReadParse. Но у меня так и не получилось - хэш, ссылку на который я ему передавал,
так и не был заселён элементами, да ещё плюс к этому после использования метода не работал param.
С чем этио связано? ReadParse как-то перекрывает param?


И последнее: почему, точнее, зачем модуль хранит параметры формы так: @{$cgi_obj->{\'param\'}}? Или
предполагается, что может быть несколько параметров с одним именем?

Спасибо.
Название: Методы parse_params и ReadParse в модуле CGI
Отправлено: mike от 21 Августа 2003, 14:24:01
Цитировать
metton:
И последнее: почему, точнее, зачем модуль хранит параметры формы так: @{$cgi_obj->{\'param\'}}? Или
предполагается, что может быть несколько параметров с одним именем?

Именно так и предполагается. Живой пример: куча чекбоксов одной категории/наименования и т.д.
Название: Методы parse_params и ReadParse в модуле CGI
Отправлено: metton от 21 Августа 2003, 23:31:28
2mike
Что значит одной категории/наименования?
Зачем чекбоксам одинаковые имена - они же перекроют друг друга! Может ты путаешь с radio?

А как остальные вопросы?
Название: Методы parse_params и ReadParse в модуле CGI
Отправлено: mike от 22 Августа 2003, 12:15:06
Цитировать
metton:
Зачем чекбоксам одинаковые имена - они же перекроют друг друга! Может ты путаешь с radio?

Не путаю. Например:

Товар1
Товар2
Товар3

Отметь пару пунктов и отправь форму своему скрипту. А потом посмотри, что будет значением параметра goods.

Цитировать
metton:
Я пытался использовать ReadParse.

Вот такой код (на скорую руку) у меня работает:

use CGI qw/:standard/;
use strict;
use vars qw(%_my);

print header;

CGI::ReadParse(*_my);

print start_html;
print "$_ = $_my{$_}
" foreach keys %_my;
print end_html;