Interneto puslapių kūrimas/Informacija pagrindinė apie CGI: Skirtumas tarp puslapio versijų

Iš Wikibooks.
Ištrintas turinys Pridėtas turinys
Naujas puslapis: '''CGI''' iš anglų kalbos ''Common Gateway Interface '' tai metodas kuriuo naršyklė gali pasiekti ir valdyti programą serverio pusėje. <br> Šiandien tokie dalykai kaip laikro...
 
S →‎Pavyzdys: - teks atsisakyt pre skripte
24 eilutė: 24 eilutė:
print "<HEAD><TITLE>Apie serverį</TITLE></HEAD>", "\n";
print "<HEAD><TITLE>Apie serverį</TITLE></HEAD>", "\n";
print "<BODY><H1>Apie serverį</H1>", "\n";
print "<BODY><H1>Apie serverį</H1>", "\n";
print "<HR><PRE>";
print "<HR>";
#Taip pradėjome mųsų virtualų HTML dokumentą kuris bus generuotas
#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
#Tai tas pats HTML tik "papuoštas su Perlo ''print'' funkcija ir naujų eilučių simboliais
37 eilutė: 37 eilutė:
#Taip aš dar kartą noriu pabrėžti, kad kiekvienam lankytojui padaromas vis naujas puslapis
#Taip aš dar kartą noriu pabrėžti, kad kiekvienam lankytojui padaromas vis naujas puslapis


print "<HR></PRE>", "\n";
print "<HR>", "\n";
print "</BODY></HTML>", "\n";
print "</BODY></HTML>", "\n";
exit (0);
exit (0);

00:20, 15 rugpjūčio 2007 versija

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ėle naują mintį. Mintį kuri vėliau apvers intenetą aukštyn kojomis. Mintį kurią aš gal kiek perdėtai, bet visvien laikau interneto išpopuliarėjimo priežastimi. Jų idėja buvo paprasta, bet genialumas ir slypi paprastume. Jie iškėle 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?

Skiptą 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. Butent su ja ir tikriausiai yra parašyta didžioji dalis visų CGI skriptų. Paprastai visi cgi skriptai dedamį į jų specialią direktoriją cgi-bin tik ten jie gali būti vygdomi saugumo sumetimais.


Pavyzdys

#!/usr/local/bin/perl
# Tai klasikinis CGI skripto pavyzdys jis išviečia
# %ENV tam kad pasiektų aplinkos kintamuosius ir juos pateikia kaip puslapį
# Pasistengsiu viską detaliai pakuomentuoti, taip, kad ne 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.
#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 veiksme atrodys maždaug taip:
http://www.comp.leeds.ac.uk/cgi-bin/Perl/environment-example
Nors mano atvirkštinė inžinėrija nėra ideali, tai bus kiek kitaip, o be to aš norėjau, kad ir patys išmegintumėte tai paleisti ką parašiau.