0% au considerat acest document util (0 voturi)
114 vizualizări3 pagini

Ce Este Cgi

Documentul prezintă o introducere în tehnologia CGI (Common Gateway Interface) și modul în care aceasta permite extinderea funcționalităților unui server web prin intermediul programelor. Sunt explicate principiile de bază ale comunicării dintre server și programele CGI, precum și limbajele de programare cele mai folosite pentru dezvoltarea de aplicații CGI.

Încărcat de

alynutzza90
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
114 vizualizări3 pagini

Ce Este Cgi

Documentul prezintă o introducere în tehnologia CGI (Common Gateway Interface) și modul în care aceasta permite extinderea funcționalităților unui server web prin intermediul programelor. Sunt explicate principiile de bază ale comunicării dintre server și programele CGI, precum și limbajele de programare cele mai folosite pentru dezvoltarea de aplicații CGI.

Încărcat de

alynutzza90
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 3

Conferina de Linux Bile Felix 2002

powered by www.lug.ro

Ce este CGI?
de Adrian Takacs
CGI - prescurtarea de la Common Gateway Interface, este o interfa a serverului
web care-i extinde funcionalitile. Utiliznd CGI se poate comunica cu utilizatorii care
v acceseaz site-ul dvs. Teoretic, CGI v d posibilitatea s extindei capacitatea
serverului de a interpreta informaiile introduse n browser i s afieze n browser
rezultatul acestei prelucrri. n practic, CGI permite programatorului s scrie programe
care comunic cu uurin cu serverul.
n mod normal, dac doreai s extinzi capabilitile serverului trebuia s modifici
nsui serverul. Este o soluie destul de neplcut deoarece necesit cunotinte avansate
de programare TCP/IP i cunotinte ale protocoalelor web. Necesita n plus schimbri n
codul serverului de web sau scrierea unui server de web dedicat pentru fiecare operaie.
De exemplu, dorii s facei un portal web-spre-email adic ceea ce scrie un utilizator n
pagina web s fie trimis la alt utilizator prin email. Atunci ar trebui modificat serverul ca
s prelucreze cererea utilizatorului, s trimit mail-ul i s trimit napoi un rspuns la
browser.
Aceasta presupune s avem access la codul serverului de web ceea ce nu este
ntotdeauna posibil. Mai presupune cunotine tehnice avansate. n al treila rnd, se
poate aplica pentru un singur server. Dac se dorete mutarea pe alt platform trebuie
facut din nou totul.
De ce CGI?
CGI ne d o soluie portabil i simpl la aceste probleme. Protocolul CGI
definete o metod standard pentru ca programele s interacioneze cu serverul. Fr
cunotine de specialitate, se pot scrie programe n orice limbaj de programare dorit care
comunic cu serverul web. i acel program va lucra pe orice server care nelege
protocolul CGI. Comunicaia n CGI este rezolvat prin intrarea i ieirea standard, ceea
ce nseamn c daca tu tii cum s scrii i s citeti date n limbajul de programare
preferat se poate scrie o aplicaie web. n afara interpretrii intrarilor i ieirilor
programarea aplicaiilor CGI este echivalent cu scrierea oricrei alte aplicatii. De
exemplu, daca vrei s facei un program care afieaz "Hello world!" vei utiliza funciile
de tiparire din limbajul preferat i formatul definit pentru programele CGI pentru a afia
mesajul potrivit.
Ce limbaj folosesc?
Deoarece CGI este o interfa comun nu este restricionat utilizarea unui
anumit limbaj. Pentru a fi siguri c limbajul este potrivit pentru CGI el trebuie s poat
face urmtoarele:
9 Tiprire la ieirea standard
9 Citire de la intrarea standard
9 Citire din variabilele de mediu
Aproape toate limbajele de programare i multe din limbajele de scripting pot face
aceasta aa c putei utiliza oricare din ele.
Limbajele pot fi interpretate sau compilate. Un limbaj compilat cum ar fi C sau
C++ tinde s fie mai mic i mai rapid, pe cnd limbajele interpretate cum ar fi perl sau
python trebuie s ncarce un interpretor, care poate fi destul de mare, la nceput. La
limbajele compilate se pot distribui executabile fr codul surs. Iar la limbajele
interpretate distribuirea scriptului este echivalent cu distribuirea codului surs.

Conferina de Linux Bile Felix 2002

powered by www.lug.ro

nainte de a alege limbajul trebuie s considerai prioritile. Trebuie s gasii un


echilibru ntre ctigurile de vitez i eficien programnd ntr-un limbaj sau altul. Dac
vrei s nvatai un nou limbaj n loc s utilizai cel pe care-l tii deja trebuie s cntrii
cu grij avantajele i dezavantajele fiecruia.
Unele dintre cele mai utilizate limbaje pentru CGI sunt C, Perl, Php. Fiecare din
ele are avantajele i dezavantajele lui. Perl este un limbaj de nivel nalt, fiind foarte bun
pentru prelucrarea informaiilor sub forma de text. Dei este foarte uor de utilizat,
flexibil, l face atractiv pentru programarea CGI, mrimea relativ mare i viteza scazut l
face neutilizabil n anumite aplicaii. Programele C sunt mai mici, mai eficiente, ofer mai
multe posibiliti de control al sistemului la nivel scazut, dar mult mai dificil de
programat, nu are rutine uor de folosit pentru lucru cu irurile i e mult mai greu de
depanat. Php este o mixtur care ia ce-i bun de la fiecare i este optimizat pentru web
dar se poate folosi numai cu un server de web, el nu are un interpretor de sine stttor.
Care limbaj este mai bun pentru programare CGI? Care v este mai la ndemn.
Fiecare este eficient la programarea web cu librriile potrivite, care au aceleai
capabiliti.
Nite observaii.
Au aprut deja multe alternative la aplicaiile CGI. Multe servere deja au definite
interfee de programare care fac mai uoar scrierea de extensii fr a fi nevoie de
aplicaii CGI independente. Programele fcute astfel tind s fie mai eficiente dect
programele CGI. Se implementeaz chiar sisteme standard cum ar fi serverele de aplicaii
care lucreaza cu ASP, JSP, sevlet-uri, sau java entreprise. ntrebarea este cu toate
schimbrile astea va fi nevoie s nvm altceva? Aici apare mai mult problema modului
n care vom dezvolta software-ul pt web. n general interfeele de programare (API-uri) au
problema portabilitii reduse, cele standard n schimb sunt mai lente i mnnc
resurse. n general sunt folosite n aplicaii mari care sunt utilizate intern de
intreprinderi, corporaii i nu pentru site-uri publice.
Cu aceste observaii putem vedea c CGI-ul datorit raspndirii lui i faptului c
se poate scrie n orice limbaj este util mai ales acelora care doresc s dezvolte rapid fr
s prseasc limbajele cunoscute.
Cum pot i eu face asta?
Instalare.
Pentru instalarea ct mai facil luai distribuia Linux preferat i s fiti ateni s
instalai urmatoarele:
Serverul de web apache, perl (n cazul lucrului n perl) un editor de text i gata. Acum
daca ai ales apache-ul, trebuie s mai facei nite mici configurri mai ales dac dorii
s fie mai multe site-uri pe acelai server fiecare cu directoarele de scripturi
independente. Dar esena este ca directorul n care se afl scripturile (de obicei cgi-bin)
s fie notat ntr-o opiune ScriptAlias (directorul implicit cgi-bin cu care vine apache are
aceast setare).
-Comunicaie server web -> browser web
Am tot pomenit de ieire standard intrare standard dar aici voi preciza cteva din
lucrurile de baz ca o pagina s fie corect afiat. Dac vrem s trimitem o pagin la
browser este obligatoriu n primul rnd s i spunem la nceput ce i trimitem cci un
browser interpreteaz altfel un text simplu sau o pagin html. Pentru aceasta i se trimite
tipul paginii ntr-un mod standard (MIME) unde este precizat tipul i subtipul
documentului, de exemplu: text/plain, text/html, image/jpeg .a.m.d.

Conferina de Linux Bile Felix 2002

powered by www.lug.ro

Un exemplu de mic program care afieaza un hello world! este dat mai jos:
#!/usr/bin/perl
print "Content-Type: text/html\n\n";
print "<html><body><h1>Hello World!</h1></body></html>";
-Comunicaie server web <- browser web
Comunicaia invers se poate face prin doua metode: GET, POST fiecare din ele trimind
date de la utilizator la server dar fiecare cu particularitile lui. S luam prile comune:
fiecare informaie dintr-un formular este codificat astfel:
Se fac perechi de informaie=valoare, separate ntre ele prin & spaiile se nlocuiesc cu +
i orice alt caracter "ciudat" se nlocuiete cu % i codul hexa de dou cifre.
Am folosit mai sus cteva noiuni pe care nu le-am definit bine. Formular= pagin web n
care se afl un <form> </form> n care se pot introduce date prin intermediul
marcatorilor <input>, <select> s.a. Fiecare formular are un script care se ocup cu
prelucrarea datelor de intrare codificate cum s-a precizat mai sus.
Acum diferenele: n cazul metodei GET informaiile codificate vor aprea n URL-ul
scriptului care prelucreaz informaia, totodat va fi pus n variabila de mediu
QUERY_STRING. Dar aceasta are dezavantajul unei posibiliti de trimitere limitat de
informaie (max 1k) i n plus utilizatorul va vedea datele introduse, ceea ce nu e bine, de
exemplu s vad un url cu parola sau cu seria crii de credit. La POST n schimb datele
se pun la intrarea standard de unde le poate lua programul. Dar de ce dou metode?
deoarece GET are un mare avantaj nu este necesar un formular pentru a-l folosi, se
poate face un link n pagina care cuprinde informaiile dorite i gata.
Baze de date: Ce s aleg?
Da, acum e acum, fiecare are avantaje i dezavantaje dar cel mai important este
c majoritatea respect un standard numit SQL92 care precizeaz modul cum
interacionm cu serverul de baze de date. n perl este un proiect numit DBI (database
interface) care vrea s fie o metod universal de a accesa baza de date alegnd driverul
potrivit. Chiar se poate s lucrm simultan cu mai multe siteme de baze de date.
Exemple de sisteme de baze de date: mysql, postgresql, firebird (acestea sunt free),
Oracle, DB2, MSSQL (pe bani) .a.m.d.. Diferenele constau n performane, necesiti
hardware, funcionalitti, optimizarea anumitor operaii .a.m.d..
-Cum fac s comunice o baz de date cu pagina de web?
Pi prin intermediul scripturilor CGI. Practic se face astfel, se iau datele de la
utilizator se prelucreaz, se salveaz n baza de date iar cnd informaia este cerut
pentru afiare se caut n baza de date i se afieaz.
-Cum s lucrez la o aplicaie mai mare?
Pentru aplicaii mari trebuie atenie mare. Este foarte bine s se impun nite module
care s comunice ntre ele standardizat i fiecare s aib un lucru de fcut pe care
numai el s-l fac: de exemplu un modul care se ocup de autentificare, unul de afiarea
informaiilor altul de legatura cu baza de date .a.m.d..

S-ar putea să vă placă și