|
|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Artem Chuprina 2:5020/400 05 Mar 2002 14:12:12 To : Nikolay Pichtin Subject : Re: POST -------------------------------------------------------------------------------- Здравствуй, Nikolay Pichtin. NP> >>>====> $df <input name=df2> ====> $df2 </form> NP> >> NP> >> Вы наверное имели в виду получение данных из POST? Тогда: NP> >> NP> >> %FORM = &parse_form; NP> >> # Теперь в хэше %FORM есть все переменные из форм. NP> >> NP> >> print $FORM{df}; NP> [Skip] AS>> в такие моменты мне кажется, что я прожил свою жизнь зря, и AS>> перевоспитать людей невозможно. Однако еще раз попробую... HЕ ДЕЛАЙТЕ AS>> ТАК КАК HАПИСАHО ВЫШЕ HИКОГДА! NP> Хотелось бы услышать аргумментированный ответ - ПОЧЕМУ? NP> Такая конструкция используется в очень многих NP> скриптах. И этими скриптами пользоваться тоже, как правило, не надо. Потому как это, как правило, далеко не единственная кривизна в них. Бывают исключения, но крайне редко и под конкретную задачу, то есть не reusable. Я вообще встречал cgi на C, который умел только GET (в смысле только разобрать переменную окружения QUERY_STRING). Hу так у него были высокие требования к производительности и очень простая обработка входной информации. NP> Кроме того, если заглянуть внутрь CGI.pm, NP> то увидим аналогичный подход: NP> sub parse_params { NP> my($self,$tosplit) = @_; NP> my(@pairs) = split(/[&;]/,$tosplit); NP> my($param,$value); NP> foreach (@pairs) { NP> ($param,$value) = split('=',$_,2); NP> $param = unescape($param); NP> $value = unescape($value); NP> $self->add_parameter($param); NP> push (@{$self->{$param}},$value); NP> } NP> } NP> # unescape URL-encoded data NP> sub unescape { NP> shift() if ref($_[0]) || (defined $_[1] && $_[0] eq $DefaultClass); NP> my $todecode = shift; NP> return undef unless defined($todecode); NP> $todecode =~ tr/+/ /; # pluses become spaces NP> if ($EBCDIC) { NP> $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",$A2E[hex($1)])/ge; NP> } else { NP> $todecode =~ s/%([0-9a-fA-F]{2})/pack("c",hex($1))/ge; NP> } NP> return $todecode; NP> } NP> sub add_parameter { NP> my($self,$param)=@_; NP> push (@{$self->{'.parameters'}},$param) NP> unless defined($self->{$param}); NP> } Потому что в CGI.pm это не единственное место в коде, которое отвечает за разбор пришедшей формы. И оно там по делу не единственное. -- Artem Chuprina Communiware.net RFC2822: <ran@ran.pp.ru>, FIDO: 2:5020/358.49, ICQ: 13038757 --- ifmail v.2.15dev5 * Origin: Leninsky 45 home network (2:5020/400) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.cgi.perl/6359e15081e8.html, оценка из 5, голосов 10
|