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¶metr2=wtwew¶metr3=...
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