Cgi perl

Programozás PERL programmal

Jelenleg a PERL az Unix-alapú webszerverek egyik legjobb CGI programozási nyelvének egyike. Más platformokon ez a nyelv is megfelelő.

Bármely CGI parancsfájlnak létre kell hoznia egy válasz fejlécet. Hogyan történik ez a PERL-en? Nagyon egyszerű

Most néhány megjegyzés a szkriptek elhelyezéséről a kiszolgálón.
Általában a szkriptek a cgi-bin könyvtárba kerülnek. Bár ez nem mindig így van. A szkriptnek jogában kell lennie a rendszer futtatásához (ez a Unix-ról van szó). Ezt a chmod + x script.cgi paranccsal végezzük.

És most elkezdhetsz írni egy forgatókönyvet, és el kell kezdened üdvözléssel a világra.

Tehát a legegyszerűbb szkript:

#! / usr / bin / perl
print "Content-Type: text / html";
print "";

Az első sor a rendszer PERL-tolmácsának elérési útját jelzi (itt az az útvonal, ahol a PERL általában a Unix rendszeren található.
A második sorban megjelenik a cím.
De a harmadik sor elküldi a böngésző adatait, amelyeket a böngésző a fejlécben átadott típusnak megfelelően feldolgoz.

- HA. - mondja meg egy tisztelt látogató - nem könnyű egyszerűen beírni a HTML-fájlt anélkül, hogy parancsfájlok lennének?

Egyszerűbb! De ha az oldalnak dinamikusnak kell lennie, attól függően, hogy a felhasználó hogyan viselkedik, sajnos :)))) a szkriptnek meg kell írnia.
Ehhez a felhasználótól érkező paramétereket kell feldolgoznia.

A CGI parancsfájlban megadott paraméterek környezeti változókkal kerülnek átadásra.

A környezeti változók tanulmányozásához egy kis szkriptet írunk le

#! / usr / bin / perl
print "Content-Type: text / html";
nyomtat "környezet
nyomtat " „
print "A kérésed: $ ENV


print "Változók:

nyomtat "REQUEST_METHOD= $ ENV

nyomtat "QUERY_STRING= $ ENV

nyomtat "CONTENT_LENGTH= $ ENV

nyomtat "CONTENT_TYPE= $ ENV

nyomtat "GATEWAY_INTERFACE= $ ENV

nyomtat "REMOTE_ADDR= $ ENV

nyomtat "REMOTE_HOST= $ ENV

nyomtat "szkript= $ ENV

nyomtat "SCRIPT_FILENAME= $ ENV

nyomtat "SERVER_NAME= $ ENV

nyomtat "SERVER_PORT= $ ENV

nyomtat "SERVER_PROTOCOL= $ ENV

nyomtat "SERVER_SOFTWARE= $ ENV

nyomtat "HTTP_ACCEPT= $ ENV

nyomtat "HTTP_USER_AGENT= $ ENV

nyomtat " „

Az indításkor ez a parancsfájl megadja a környezeti változók értékeit.
Beírhatja ezt a szkriptet, és kísérelheti meg a lekérdezéseket, lásd, mi történik, itt láthatja

ha ($ ENV eq 'GET') # Ellenőrizze, hogy a GET kérési módszer
;> # majd $ lekérdezésben írjuk a lekérdezési karakterláncot
# (a lekérdezés "?" után)
elsif ($ ENV eq 'POST') # ha a POST kérés módja
);> # írjon $ lekérdezésbe
# adatok a kérés fejlécéből

@pairs = split (//, $ lekérdezés); # törje meg a párok key = value kérését
foreach $ pár (@pairs) ($ név, $ érték) = split (/ = /, $ pár); # kulcs változó $ név, érték
# a $ érték változóban
$ value =

tr / + / /; # cserélje ki az előnyöket szóközökkel
$ value =

s /% ([a-fA-F0-9] [a-fA-F0-9]) / csomag ("C", hex ()) / pl; # helyettesíti a nem szabványos
# karakter a C00 típusú kódolt értékekhez
$ value =

Miután ezt a kódot beillesztette a szkriptekbe, csak a $ bemeneti hash-ot kell használnia, jelezve a paraméter nevét göndör zárójelben. Például a $ bevitel értéke "1", a $ bemenet "val" lesz, stb.

A CGI modul használata, mint korábban említettük, előnyösebb, kényelmesebb és biztonságosabb.

A lekérdezési paraméterekhez való hozzáférést a param függvény biztosítja. Paraméterek nélkül ez a függvény egy olyan tömböt ad vissza, amely tartalmazza a paraméterkulcsok nevét. Ahhoz, hogy megkapja az értéket a kulcs segítségével, a param paraméterben át kell adnia a kulcs nevét argumentumként.

Az alábbi példa a fogadott lekérdezést a Kéz: Érték formátumban jeleníti meg

#! / usr / bin / perl
használja a CGI qw /: standard /; # csatlakoztassa a szabványos CGI modulkészletet
print header; # Megjeleníti a címet
# (a "Content-Type: text / html" szöveg helyett);
print start_html ('Példa'); # nyomtassa ki a html dokumentum címét
foreach $ kulcs (param) <# пробегаемся по всем параметрам запроса
# az értékkulcsokat a $ kulcs változóba helyezi
nyomtat "$ kulcs: "; # írja be a kulcs nevét
$ value = param ($ kulcs); # olvassa el a kulcs értékét
nyomtassa ki a $ értéket, "
"# és jelenítse meg a képernyőn
>
print end_html;

Kiderül, hogy az a = 1b = 2 lekérdezési sorozatot küldtük a szkriptnek. A szkript feldolgozta és elkészítette a fenti eredményt.

Kapcsolódó cikkek