Народ, может кто слышал о такой ситуации - при выполнении скрипта на Perl под Апачем, нехотят передаваться параметры методом POST.
Проверка переменной $CGI::POST_MAX и LimitRequestBody в httpd.conf результатов не дала. Все ОК.
При этом значение $ENV{'CONTENT_LENGTH'} не нулевое.
Если у кого есть идеи и предложения, буду благодарен
>Народ, может кто слышал о такой ситуации - при выполнении скрипта на
>Perl под Апачем, нехотят передаваться параметры методом POST.
>Проверка переменной $CGI::POST_MAX и LimitRequestBody в httpd.conf результатов не дала. Все ОК.
>
>При этом значение $ENV{'CONTENT_LENGTH'} не нулевое.
>Если у кого есть идеи и предложения, буду благодаренread(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
@pairs = split(/&/, $buffer);
foreach $pair (@pairs)
{
($name, $value) = split(/=/, $pair);
$value =~ tr/+/ /;
$value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
$FORM{$name} = $value;
}Потом получаешь доступ так $cladd=$FORM{'имя_параметра'};
Изящно скажи же =))) Ищется в google на ура
Может я чего незнаю или не понял, но в perl имеется такая полезная функция, как "param(ключ)". Как раз для CGI сделана. У меня прекрасно работает и с POST и с GET :)
>>Народ, может кто слышал о такой ситуации - при выполнении скрипта на
>>Perl под Апачем, нехотят передаваться параметры методом POST.
>>Проверка переменной $CGI::POST_MAX и LimitRequestBody в httpd.conf результатов не дала. Все ОК.
>>
>>При этом значение $ENV{'CONTENT_LENGTH'} не нулевое.
>>Если у кого есть идеи и предложения, буду благодарен
>
>read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
>@pairs = split(/&/, $buffer);
>foreach $pair (@pairs)
> {
> ($name, $value) = split(/=/,
>$pair);
> $value =~ tr/+/ /;
>
> $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
>
> $FORM{$name} = $value;
> }
>
>Потом получаешь доступ так $cladd=$FORM{'имя_параметра'};
>
>Изящно скажи же =))) Ищется в google на ура
>>Народ, может кто слышал о такой ситуации - при выполнении скрипта на
>>Perl под Апачем, нехотят передаваться параметры методом POST.
>>Проверка переменной $CGI::POST_MAX и LimitRequestBody в httpd.conf результатов не дала. Все ОК.
>>
>>При этом значение $ENV{'CONTENT_LENGTH'} не нулевое.
>>Если у кого есть идеи и предложения, буду благодарен
>
>read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
>@pairs = split(/&/, $buffer);
>foreach $pair (@pairs)
> {
> ($name, $value) = split(/=/,
>$pair);
> $value =~ tr/+/ /;
>
> $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
>
> $FORM{$name} = $value;
> }
>
>Потом получаешь доступ так $cladd=$FORM{'имя_параметра'};
>
>Изящно скажи же =))) Ищется в google на ураИзвиняюсь случайно нажал отправить.
Изящно, спору нет.
Но это я уже пробывал.
При передаче параметров функция param() не работает (для моего второго собеседника). А чтение из потока STDIN дает те же результаты.
У меня код приблизительно такой же:
use CGI;
if ($ENV{'REQUEST_METHOD'}=='POST')
{
read(STDIN, $in, $ENV{'CONTENT_LENGTH'});
my @pairs=split(/&/,$in);
print start_html();
foreach (@pairs)
{
my ($var1, $var2)=split(/=/, $in, 2);
print "$var1 $var2";
}
print end_html();
}
else {}
Так вот если это делать через perl *.pl, то все рулит. А через веб интерфейс неа . Может что с Апачем не то, непойму. Еще идеи :-)
Кстати третий день уже пытаюсь. :)
Есть, конечно, вариант... В настройках апача с помощью директивы <Limit> можно многое запретить, в том числе и GET с POST-ом. Что-то типа:...
<Limit GET POST>
Order Deny, Allow
Deny from all
</Limit>
...Ты случайно этого не сделал ?
>Есть, конечно, вариант... В настройках апача с помощью директивы <Limit> можно многое запретить, в том числе и GET с POST-ом. Что-то типа:
>
>...
><Limit GET POST>
> Order Deny, Allow
> Deny from all
></Limit>
>...
>
>Ты случайно этого не сделал ?Да нет, вроде все ОК. Могу httpd.conf выслать, может ты что увидишь.
Давай. И скрипт заодно.
Адрес: _xman_@mail.ru
>>>Народ, может кто слышал о такой ситуации - при выполнении скрипта на
>>>Perl под Апачем, нехотят передаваться параметры методом POST.
>>>Проверка переменной $CGI::POST_MAX и LimitRequestBody в httpd.conf результатов не дала. Все ОК.
>>>
>>>При этом значение $ENV{'CONTENT_LENGTH'} не нулевое.
>>>Если у кого есть идеи и предложения, буду благодарен
>>
>>read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'});
>>@pairs = split(/&/, $buffer);
>>foreach $pair (@pairs)
>> {
>> ($name, $value) = split(/=/,
>>$pair);
>> $value =~ tr/+/ /;
>>
>> $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
>>
>> $FORM{$name} = $value;
>> }
>>
>>Потом получаешь доступ так $cladd=$FORM{'имя_параметра'};
>>
>>Изящно скажи же =))) Ищется в google на ура
>
>Извиняюсь случайно нажал отправить.
>Изящно, спору нет.
>Но это я уже пробывал.
>При передаче параметров функция param() не работает (для моего второго собеседника). А
>чтение из потока STDIN дает те же результаты.
>
>У меня код приблизительно такой же:
>use CGI;
>if ($ENV{'REQUEST_METHOD'}=='POST')
if ($ENV{'REQUEST_METHOD'} eq 'POST')>{
>read(STDIN, $in, $ENV{'CONTENT_LENGTH'});
>my @pairs=split(/&/,$in);
>print start_html();
>foreach (@pairs)
>{
>my ($var1, $var2)=split(/=/, $in, 2);
>print "$var1 $var2";
>}
>print end_html();
>}
>else {}
>
>Так вот если это делать через perl *.pl, то все рулит. А
>через веб интерфейс неа . Может что с Апачем не то,
>непойму. Еще идеи :-)
>Кстати третий день уже пытаюсь. :)