|
ru.cgi.perl- RU.CGI.PERL ------------------------------------------------------------------ From : Alexander V. Gaiduk 2:5020/400 16 Aug 2004 17:01:37 To : Alexey Gradovtsev Subject : Hа: модуль CGI -------------------------------------------------------------------------------- > AVG> с каких это щей параметры GET при GET+POST вдруг потеряются? > > Это вопрос или утверждение? > > А что у тебя выдает броузер после нажатия кнопки? выдает, что половина потеряна... но инстинкты моих предков подсказали мне - никогда не пользоваться CGI.pm - наверное по этому я никогда с таким аморальным поведением CGI.pm и не сталкивался. :) и наверное, к счастью, т.к. ни в одном проекте CGI.pm не использую. и я с самого начала писал нечто такое: (тока реально еще кой-какие проверки вставляю) ----------------------------- #!/usr/bin/perl use strict; print "Content-type: text/html\n\n"; my %in = get_param($ENV{'QUERY_STRING'}); if (($ENV{'REQUEST_METHOD'} eq 'POST') && ($ENV{'CONTENT_LENGTH'} > 0) ) { my $buf; read(STDIN, $buf, $ENV{'CONTENT_LENGTH'}); my %data = get_param($buf); foreach my $i (keys %data) { if (!defined($in{$i})) { $in{$i} = $data{$i}; } } } foreach my $i (keys %in) { print "$i = $in{$i}<br>\n"; } print "<hr>\n"; print <<END; <form method="post" action="/cgi-bin/z.pl?var1=val1&var2=val2"> <input type="hidden" name="var3" value="val3"> <input type="hidden" name="var4" value="val4"> <input type="submit"> </form> END ######################################## sub get_param { my %qs; foreach my $li (split(/&/, $_[0])) { my ($name, $val) = split(/=/, $li, 2); $name = lc($name); $name =~ s/\s+//gi; $val =~ tr/+/ /; $val =~ s/%(..)/pack("c", hex($1))/ge; if (!defined($qs{$name})) { $qs{$name} = $val; } } return %qs; } ----------------------------- зы. формы с enctype="multipart/form-data" обрабатываю отдельной функцией, здесь не показанной. ззы. только не надо тыкать пальцем, что одноименные параметры потеряются. да потеряются, но у меня не бывает одноименных параметров. -- С уважением, вебмастер мэрии Архангельска :: :: $_='q=6I2?56CPw2:5F<Pl82Gp2C94:EJ^CFn';tr#P-~\x20-O#\x20-~#;print; --- ifmail v.2.15dev5.3 * Origin: Internet-Arkhangelsk Company (2:5020/400) Вернуться к списку тем, сортированных по:
Архивное /ru.cgi.perl/89263ee20414.html, оценка из 5, голосов 10
|