Jak rozbalit promene poslane metodou get

. rainman na volny.cz
Středa Květen 17 00:10:06 MEST 2000


> Zdravim vsechny. Nevite jak dostat vsechny promene poslane metodou post do
> promenych. Jednoduse posle to dokument.cgi?promena=test a ja potrebuju,
aby
> se mi v dokumentu nadefinovalo $promena=test . Takze bych kod mel vypadat
> takto:
>
> funkce;
> echo $promena;
>
> A ja bych potreboval tu funkci :-)
>
> --
>
> Martin
> __________________________________
> Martin Konicek < Martin.Konicek na atlas.cz >
> -->>Muzete psat cesky ISO 8859-2 nebo Windows <<--
> -->> www.martin.zde.cz <<--
> ---[ ICQ ]-------[ 62610883 ]-----------
>

Já teda v perlu moc neumim, ale myslím, že zrovna tohle není žádný velký
problém a přitom taková funkce může obsluhovat jak GET tak POST, protože je
to prakticky totéž:

1) Pomocí $ENV{'REQUEST_METHOD'} zjistit get/post, podle toho uložit někam
buď $ENV{'QUERY_STRING'} nebo <STDIN>

2) Pomocí split() rozdělit vstup na jména a hodnoty. (Nejlépe asociativní
pole)

3) "Prohnat" to filtrem, který nahradí '+' mezerou a %XX příslušným znakem

4) Pomocí eval('\$$jmeno = \'$hodnota\';') vyrobit ty promenne (Je treba
predtim osetrit citlive znaky jak pro "jmeno" (viz pravidla pro jmena
promennych) tak pro "hodnota" (backslash před apostrofy).

A je to!
Upřímně řečeno si však myslím, že tento způsob byť velmi pohodlný není
zrovna nejbezpečnější. Lépe řečeno větší "security hole" snad ve skriptu
udělat ani nejde... Asociativní pole %CGI_VAR považuji za mnohem lepší
nápad.

Máte-li skutečně zájem o takovéto řešení problému (ať už s proměnnými nebo
asoc. polem, můžu se podívat, někde mám starý skript, který přesně toto
dělá...).

M. Krejci




Další informace o konferenci Perl