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 "
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 =
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.