Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Perl: разработка для Web > не обрабатывается запрос


Автор: DonPager 29.3.2003, 03:07
такая вот проблемка:
почему то не обрабатывавается запрос в этом коде :
Код

#!D:\Lang\Perl\bin\perl.exe
#chart.cgi
$datafile="d:/webserver/logs/topten.dat";
sub urldecode{
 local($val)=@_;
 $val=~s/\+/ /g;
 $val=~s/%([0-9a-hA-H]{2})/pack('C',hex($1))/eg;
 return $val;
 }
$cont_len=$ENV{'CONTENT_LENGTH'};  
if($ENV{'REQEST_METOD'} eq 'GET'){$query=$ENV{'QUERY_STRING'};}
else{sysread(STDIN,$query,$cont_len);}
if($query ne ''){
@fields=split(/&/,$query);
foreach(@fields){
 if(/^best(.*)/){$best=&urldecode($1);}
}
open(DATA,">>$datafile")||die "Немогу открыть $datafile\n";
print DATA $best;
close(DATA);
}
open(DATA,"$datafile")||die "Немогу открыть $datafile\n";
@AllData=<DATA>;
close(DATA);
$total=$#AllData+1;
foreach(@AllData){
#($best)=split(/\t/,$_);
$val1_cnt++ if($best eq 'val1');
$val2_cnt++ if($best eq 'val2');
$val3_cnt++ if($best eq 'val3');
$val4_cnt++ if($best eq 'val4');
$val5_cnt++ if($best eq 'val5');
$val6_cnt++ if($best eq 'val6');
$val7_cnt++ if($best eq 'val7');
$val8_cnt++ if($best eq 'val8');
$val9_cnt++ if($best eq 'val9');
$val0_cnt++ if($best eq 'val0');
}
print "Refresh: 0 url=\"http:\/\/zlodei\/\"\n";
print "Content-type: text/html; charset=windows-1251\n\n";
print "<script language=JavaScript>\n";
print "some=window.open(\"\",\"okno\",\"width=200,height=250\");\n";
print "some.document.open();\n";
print "some.document.write(\"<HTML><head><Title>Результаты голосования</title></head>\");\n";
print "some.document.write(\"<BODY bgcolor=\\"lightgrey\\">\");\n";
print "some.document.write(\"Всего проголосовало $total<hr>\");\n";
print "some.document.write(\"1-$query- \");\n";
print "some.document.write(\"2-$best- \");\n";
print "some.document.write(\"<\/BODY><\/HTML>\");\n";
print "some.document.close();\n";
print "</script>";

и в чём мои недаработки ?

Автор: acp 29.3.2003, 06:46
Насколько я могу судить - в части получения $query всё нормально. А что нельзя перед
Код
if($query ne '')

вставить
Код
print("Content-type: text/html\n\n");
print($query);

И посмотреть, что это даст.

Автор: DonPager 29.3.2003, 06:50
вставлял ...
смотрел ...
quey пустой.... причём даже пбовал вбивать запрос вручную -не помогает sad.gif

Автор: DonPager 29.3.2003, 06:51
...может я что настроил неправильно ?
(но гостевая с темже начальным кодом работает правда там метод POST)

Автор: acp 29.3.2003, 17:29
Не могу сказать в чём проблема... Может HTML код формы написан неправильно?

Автор: DonPager 29.3.2003, 20:12
незнаю почему, но с GET'ом рабртать отказывается :o ,
ставлю на форме POST и всё работает,
в чём дело даже не знаю...

Автор: acp 29.3.2003, 21:00
НУ И ЕРУНДА! (сначала хотел написать "посильнее") smile.gif

Код
if($ENV{'REQEST_METOD'} eq...


Опечатка. Надо

Код
REQUEST_METHOD

Автор: acp 29.3.2003, 21:06
Кстати. Я могу сказать в чём твоя проблема, и почему отлов ошибки занял так много времени. Проблема в "некрасивости" кода, буквы "сливаются" между собой. Например, лично я бы написал эту часть кода так
Код

...
$cont_len = $ENV{'CONTENT_LENGTH'};

if ($ENV{'REQUEST_METHOD'} eq 'GET')
{
 $query = $ENV{'QUERY_STRING'};
}
else
{
 sysread(STDIN, $query, $cont_len);
}

if ($query ne '')
{
...

Автор: DonPager 29.3.2003, 21:13
smile.gif да опечатки нашт враги .... бывает..
спасибо за помощь

Автор: NightGoblin 13.4.2003, 10:32
(void)

Сорри, на вопрос уже ответили...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)