Январь 20, 2006
Взаимодействие нескольких форм (Часть 2)
Приведу пример скрипта, который генерирует форму, вставляя в нее все полученные параметры в ввиде скрытых полей:
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
local($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",
hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",
hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$FORM_DATA{$name} = $value;
}
print '<form name="newtext" action="newtext.pl"
method="post">',"\n";
foreach $key (keys %FORM_DATA) {
$value = $FORM_DATA{$key};
print "<input type=hidden name=\"$name\"
value=\"$value\">\n";
}
print <<END;
Можете добавить мысль:<br>
<textarea name="text" rows=5 cols=50></textarea><br>
<input type="submit" name="post" value="Добавить">
<input type="reset" name="escape" value="Очистить">
</form>
END
Того же результата можно достичь несколько другим способом. При этом нет необходимости генерировать все документы, содержащие форму, динамически. Достаточно создать один сценарий, который будет пропускать сквозь себя документ, вставляя в него соответствующие скрытые поля. В этом случае первая форма будет выглядеть так:
<form action="/cgi-bin/shopping.pl/firstspep.html"
method="post">
Введите Ваше имя: <input type="text" name="realname">
<br>
Введите Ваш адрес: <input type="text" name="email">
<br>
<input type="submit" name="Send"
value="Следующий шаг">
<input type="reset" name="Reset" value="Очистить">
</form>
Обратите внимание на то, что в этом примере скрипту передается параметр PATH_INFO, содержащий имя следующего отображаемого документа с формой. Этот документ должен содержать форму, в которую сценарием shopping.pl будут добавлены все скрытые поля. Вот примерный текст такого сценария:
#!/usr/local/bin/perl
print "Content-type: text/html\n\n";
read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs) {
local($name, $value) = split(/=/, $pair);
$name =~ tr/+/ /;
$name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",
hex($1))/eg;
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C",
hex($1))/eg;
$value =~ s/<!--(.|\n)*-->//g;
$FORM_DATA{$name} = $value;
}
$form_file = $ENV{'PATH_INFO'};
$full_path = "/usr/local/etc/httpd/htdocs" .
$form_file;
open(FILE, "<" . $full_path);
while (<FILE>) {
if (/<\s*form\s*.*>/i) {
print;
foreach $key (keys %FORM_DATA) {
$value = $FORM_DATA{$key};
print "<input type=hidden name=\"$name\"
value=\"$value\">\n";
}
} else {
print;
}
}
close(FILE);
Использование скрытых полей является наболее простым и интуитивно понятным механизмом сохранения контекста. Он опирается на общепринятые стандарты и требует минимум затрат при реализации.
продолжение следует...
Часть 1 |
Часть 3 |
Разместил:
Источник: CodeNet
Комментарии
- 1. 04.12.06 18:28 От: Илья
-
Отличная инфа.Так деражть.Респект.Вот еще сайты на эту темуЖ
Приворот
Любовный приворот
сильный приворот
О привороте - 2. 04.12.06 18:29 От:
-
Отличная инфа.Так деражть.Респект.Вот еще сайты на эту темуЖ
http://loveprivorot.pochta.ru/privorot.html
http://webnotes.boom.ru/lubovnie_privoroti.html