Главная страница статей --> Советы по фотошопу, графике и хитрости в построении php кода

Пример универсального скрипта для обработки HTML-форм

Источник: realcoding.net

Задача: разработать скрипт для сохранения в файл значений, посланных HTML-формой. Каждое значение в файле должно иметь комментарий. Полученный файл должен выглядеть примерно так:

имя [name]: Хо Ши Мин
    электронная почта
[email]: ivan@mydom.ru
    домашняя страница
[www]: ivan.mydom.ru

Для этого случая HTML-форма должна выглядеть так:

<form action=anketa.pl>
имя: <input type=textname=name>
<
input type=hidden name=descr010_namevalue=имя><br>
электронная почта: <input type=textname=email>
<
input type=hiddenname=descr020_email value=имя><br>
домашняя страница: <input type=textname=www>
<
input type=hidden name=descr030_wwwvalue=имя><br>
<
input type=submit>
</
form>

Суть подхода заключается в добавлении элемента HIDDEN для каждого значения на форме. Этот дополнительный элемент содержит информацию о том, с каким комментарием должно сохраняться значение в файл и на каком месте в файле это значение располагать. Таким образом для каждого значения формы необходимо создать тег

<INPUT
    type
=hidden
   
name=descr[POSTION]_[NAME]
   
value=[COMMENT]
   
>

где

[POSTION] – позиция значения в результирующем файле
[NAME] – имя значения формы, которому соответствует это элемент
[COMMENT] – описание значения

Пример реализации скрипта на perl для обработки формы.

sub add_form
{
   
my @now = localtime();
   
my $msg = ;
   
$now[3] = ($now[3]<9)?0$now[3]:$now[3];
   
$now[4] ++; $now[4] = ($now[4]<9)?0$now[4]:$now[4];
   
my $anketa_file = $ENV{DOCUMENT_ROOT}/form_
   
. ($now[5] + 1900) . -$now[4]-$now[3]_$now[2]-$now[1]-$now[0].txt;

   
# получить имена описаний переменных
   
my @form_HTTP_vars_descriptions =
    
sort grep { m/^descr[0-9]*_/ } keys(%FORM);
    foreach
my $key_descr ( @form_HTTP_vars_descriptions ) {   
   
## обработать каждое описание
        ## получить имя переменной
       
$key_descr =~ m/^descr[0-9]*_(.*)$/;
       
my $key = $1;
       
## получить значение описания этой переменной
       
my $descr = $FORM{$key_descr};
       
## получить значение переменной
       
my $val = $FORM{$key};            
       
## заменить все символы перехода на новую строку       
       
$val =~ s/r?n/<BR>/gs;
       
## сформировать строку для добавления в выходной файл
       
$msg .= $descr [$key]: $valn;
    }

    if(
open(F, >$anketa_file)) {
        print
F $msg;
       
close(F);
    }
}

Теперь при создании новой формы в качестве обработчика можно использовать приведённую функцию с минимальными модификациями (имя файла для сохранения). Конечно, можно максимально унифицировать эту функцию так, что её вообще не нужно будет менять при появлении новых форм на нашем сайте. Пусть это будет вашим домашним заданием.



Похожие статьи:
- Stackless Python
- Формы в HTML документах
- Стратегия повышения ссылочной популярности для достижения высоких позиций в поисковых системах
- Скрипт управления деревом
- Как использовать Javascript файл из ресурсов
- Переменные среды CGI
- Keywords для начинающих
- Использование XML/XSL для публикации в Web
- Понятия, термины и основы Java-скриптования
- Получение заголовка удаленной страницы
- Комплексное продвижение сайтов. Этапы. Преимущества. Недостатки
- Еще о функциональном программировании на Python
- Серверные включения SSI (часть 1)


Оглавление | Обсудить на форуме | Главная страница сайта | Карта сайта |

Контакты
Редакция:
[0.002]