Apache & CGI

Tomas Kucera tom.kucera na sh.cvut.cz
Pondělí Červenec 12 00:31:45 CEST 1999


> mam takovyto jednoduchy skript :
>     #!/usr/bin/perl
>     print "Content-type: text/html\n\n";
>     while (($key, $val) = each %ENV) {
>      print "$key = $val\n";
>     }
> ktery ma vypsat nektere parametry (uz. jmeno, atd...)
> 
> ale kdyz ho dam pod /home/httpd/cgi-bin jako soubor test.cgi a kouknu se na
> ten soubor http://192.168.0.2/cgi-bin/test.cgi
> tak dostanu chybovou hlasku :  "The server encountered an internal error or
> misconfiguration and was unable to complete your request."
> 
> a nedokazu s tim nic udelat, soubor ma povolene spousteni a cteni kymkoliv
> (musel jsem v nem ale nastavit novou cestu k perlu : (bylo tam
> /usr/local/bin/perl), tam ale perl nemam, tak jsem tam dal /usr/bin/perl -
> tam je...
> 
> ale zkousel jsem jeste neco : spustit "/usr/bin/perl test.cgi" a to
> funguje - vypise vsechny parametry
> 
> ale proc to neposle i browseru ?

Nevim jestli jsi si to uvedomil, ale pokud posilas http pozadavek tak nemuzes
za nazev skriptu napsat jen tak naky parametry......
tvuj pozadavek bude vypadat napr. takto:
../test.cgi?parametr1=fadfsdf&parametr2=wtwew&parametr3=...
parametry jsou oddelene & a v dotazu se nesmi samozrejme vyskytovat mezery.

V tvem skriptu budes mit pak parametry ulozeny v promenne prostredi
"QUERY_STRING"  (pri pouziti metody "GET")
Takze misto toho tveho whilu asi takto:
$dotaz = $ENV{'QUERY_STRING'};.
@pary = split (/&/, $dotaz);
foreach $par (@pary) {
 ($klic, $hodnota) = split (/=/, $par);
 print "$klic = $hodnota \n";
}

--------------------------------------------------------------------------
(o>    Tomas Kucera (kuca) student 4.rocniku FEL CVUT   
//  \    tom.kucera na sh.cvut.cz, tomas na globe.cz       
V_/_   ICQ: 33297193                                   
--------------------------------------------------------------------------


Další informace o konferenci Linux