Interneto puslapių kūrimas/Informacija pagrindinė apie CGI
CGI iš anglų kalbos Common Gateway Interface tai metodas kuriuo naršyklė gali pasiekti ir valdyti programą serverio pusėje.
Šiandien tokie dalykai kaip laikrodis puslapyje jau tapo norma. Bet apie 1990 metus kai jau buvo paplitę HTTP, bet dar nebuvo CGI vienintelis būdas turėti tokias į HTML rėmus netelpančias funkcijas buvo rašyti HTTP serverio modulius. Tai buvo ilgas ir varginantis darbas reikalaujantis nemažų žinių. Be to nebuvo jokio vieningo standarto kaip tai reikia daryti, todėl nebuvo jokių garantijų, kad tas darbas duos bent minimalius vaisius.
Bet 1993 metais Rob McCool, John Franks, Ari Luotonen, George Phillips ir Tony Sanders pokalbių kambaryje internetu per diskusiją iškėlė naują mintį. Mintį kuri vėliau apvers internetą aukštyn kojomis. Mintį kurią aš gal kiek perdėtai, bet vis vien laikau interneto išpopuliarėjimo priežastimi.
Jų idėja buvo paprasta, bet genialumas ir slypi paprastume. Jie iškėlė mintį, kad reikia programos kuri kiekvienam lankytojui asmeniškai sugeneruotų HTML puslapį. Negana to lankytojai gali perduoti įvairius parametrus serveriui per dar labiau išplėstą URL. O visa tai apdoroja ne http serverio demonas, o atskiras procesas. Taigi tartum įvedamas "trečias žaidėjas" tokiu principu:
naršyklė <-> serveris <-> skriptas
.
Kaip ir su kuo rašomas tas skriptas?
[keisti]Skriptą, skirtą CGI, galima parašyti su bet kuria programavimo kalba. Tačiau ne su kiekviena kalba vienodai produktyviai. Labiausiai CGI skriptų rašymui tinka kalba kuri turi išbaigtas, paprastas ir lanksčias funkcijas teksto valdymui, tuo pat metu yra galinga ir nesunkiai panaudojama bet kokioje platformoje. Tokį apibūdinimą daugelio manymu labiausiai atitinka "Perl" kalba. Būtent su ja ir tikriausiai yra parašyta didžioji dalis visų CGI skriptų. Paprastai visi cgi skriptai dedami į jų specialią direktoriją cgi-bin tik ten jie gali būti vykdomi saugumo sumetimais.
Pavyzdys
[keisti]#!/usr/local/bin/perl # Tai klasikinis CGI skripto pavyzdys jis iškviečia # %ENV tam, kad pasiektų aplinkos kintamuosius ir juos pateikia kaip puslapį # Pasistengsiu viską detaliai pakuomentuoti, taip, kad net būtų galima suprasti be Perl žinių print "Content-type: text/html", "\n\n"; #Tai labai svarbi eilutė mes deklaruojame kokio tipo duomenys yra generuojami ir su #"\n\n" uždedame sekančią tušią eilutę taip pradėdami HTML srovę. print "<HTML>", "\n"; print "<HEAD><TITLE>Apie serverį</TITLE></HEAD>", "\n"; print "<BODY><H1>Apie serverį</H1>", "\n"; print "<HR>"; #Taip pradėjome mųsų virtualų HTML dokumentą kuris bus generuotas #Tai tas pats HTML tik "papuoštas su Perlo ''print'' funkcija ir naujų eilučių simboliais print "Serverio vardas: ", $ENV{'SERVER_NAME'}, "<BR>", "\n"; print "Paleista ant porto: ", $ENV{'SERVER_PORT'}, "<BR>", "\n"; print "Serverio programinė yranga: ", $ENV{'SERVER_SOFTWARE'}, "<BR>", "\n"; print "Serverio protokolas: ", $ENV{'SERVER_PROTOCOL'}, "<BR>", "\n"; #Čia jau įdomiau Tie didžiųjų raidžių rėžimu parašyti tai aplinkos kintamieji. #Skiptas ispauzdins realius duomenis to serverio tą akimirką. print "Tavo IP nustatytas: ", $ENV{'REMOTE_ADDR'}, "<BR>", "\n"; #Čia linksmiausia dalis. Serveris parašys lankytojo IP adresą. #Taip aš dar kartą noriu pabrėžti, kad kiekvienam lankytojui padaromas vis naujas puslapis print "<HR>", "\n"; print "</BODY></HTML>", "\n"; exit (0); #Tai pergalingas finalas.
Vis tai veiks maždaug taip:
http://www.comp.leeds.ac.uk/cgi-bin/Perl/environment-example
Nors mano atvirkštinė inžinerija nėra ideali, tai bus kiek kitaip, o be to aš norėjau, kad ir patys išmegintumėte tai paleisti ką parašiau.