на этом можно закончить это
Ну вот , на этом можно закончить это краткое введение в
HTMLые формы.
Итак,У нас на входе скрипта данные формы,закодированые методом urlencode
Положеные в Переменную
QUERY_STRING или подаваемые на
STDIN.Мы должны вопервых их получить.
if($ENV{'REQUEST_METHOD'} eq 'GET'){#Анализируем метод,GET или POST $query=$ENV{'QUERY_STRING'}; } elsif($ENV{'REQUEST_METHOD'} eq 'POST'){ sysread STDIN,$query,$ENV{'CONTENT_LENGTH'}; }
Вот,мы уже считали наш запрос в переменную
$query.Теперь пришло самое время ее обработать. Мы знаем что поля разделены символом
'&' значит используем его в качестве разделителя функции
split:
@formfields=split /&/,$query;
Вот разделили,а теперь организуем цикл
foreach по полученым полям
@formfields
foreach(@formfields){ if(/^Name=(.*)/){$name=urldecode($1);} if(/^Age=(.*)/){$age=urldecode($1);} }
Сдесь выражение в регулярном выражении в круглых скобках (.*) после знака
'=',запоминается в скалярную переменную
$1 ,которая затем и декодируется нашей старой и знакомой функцией
urldecode (я предупреждал,что она будет почти в каждой вашей
CGI-программе)
sub urldecode{ #очень полезная функция декодирования local($val)=@_; #запроса,будет почти в каждой вашей CGI-программе $val=~s/\+/ /g; $val=~s/%([0-9A-H]{2})/pack('C',hex($1))/ge; return $val; }
Так мы проходим по всем полям,которые нам переданы.Это стандартный подход,он годится в качестве
шаблона.У вас может возникнуть вопрос,а что делать если вам переданы данные от списка у которого задана возможность выбора
нескольких элементов и данные поступают в таком виде:
Sel=opt1&Sel=opt2&Sel=opt9. Тут тоже нет никаких проблем,просто запихиваем эти поступающие значения в массив.
foreach(@formfields){ ..... if(/^Sel=(.*)/){push @Sel,urldecode($1);} ..... }
И потом спокойно оперируем с Полученым Массивом
@Sel.
На этом можно так сказать заканчивается шаблонная часть скрипта и начинается содержательная, которая зависит только от вашей фантазии.....
Вы можете сколько угодно анализировать полученые значения,обращатся при этом к различным файлам .Если вы к этому приложите фантазию,то кто знает что получится....
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий