INTERNET si arhitectura de baza aplicatii WEB
1.Internet si Web
La inceput, Web insemna un system hypertext bazat pe text. Limitarea era data de faptul ca acele calculatoare care accesau Web-ul nu dispuneau de modalitati bune de afisare a elementelor grafice. Etapa urmatoare a Web-ului a inceput in 1993 o data cu lansarea primului browser Web grafic numit NCSA Mosaic.
Acest browser exploata in mod direct forta Internet-ului si simplifica navigarea; astfel, mediile grafice au devenit din ce in ce mai populare. Aparitia unui browser grafic a fost un element decisiv. Indoar citeva luni, companiile si comparatiile au inceput sa ofere continut si servicii Web.
In aceasta faza Web-ul in sine era static, continutul sau constind din texte/doumente grafice. Unele pagini contineau si cite un fisier audio sau video, dar de obicei acesta trebuia rulat si descarcat folosindu-se o aplicatie externa. In general, paginile Web erau create folosindu-se un editor de text HTML, dupa care erau plasate pe un server Web.
Dupa plasarea pe server, cele mai multe pagini ramineau statice, daca nu erau modificate de autor. Paginile statice reprezentau (si reprezinta inca) solutii satisfacatoare pentru anumite utilizari de Web, dar nu pentru toate. Ca sa satisfaca nevoia de documente HTML generate dinamic, programatorii de Web au inceput sa foloseasca pe serverul de Web scripturi CGI (Common Gateway Interface) pentru a genera « din mers« documente HTML. Cu aceasta imbunatatire Web-ul a devenit plaforma pentru documente hipertext, dar a slujit si ca mediu distinct pentru aplicatii.
Etapa actuala a Web-ului a inceput lent, in 1995, o data cu folosirea modulelor plug-in in Netscape Navigator si a capatat importanta prin acceptarea limbajului Java. Tinta principala a acestei etape a fost in primul rind utilizarea cit mai eficienta a puterii de procesare existenta la client, fara a se mai atit de mult pe server, fie pentru a rula aplicatia, fie pentru a prelucra informatia introdusa de utilizator.
Interesul deosebit stirnit de limbajul Java se datoreaza in primul rind faptuluica Web-ul nu mai este pur si simplu o colectie de documente HTML, ci un adevarat mediu client/server in care clientul are o anumita independenta fata de server. Impreuna cu Javascript, Java, ActiveX precum si alte extensii pe parte e client, browser-ul poate deveni un mediu de operare foarte puternic, in care sa ruleze aplicatii Web.
In ultimii ani, Web-ul a evoluat pornind de la o maniera statica de publicare a documentelor, si ajungand la un mecanism fiabil de dezvoltare a aplicatiilor distribuite. Astfel, in lumea publicatiilor Web accentul se pune pe crearea documentelor de larga utilizare, eficiente din puntul de utilizare al retelei. In multe cazuri, HTML-ul (Hypertext Markup Language) cerut este generat pornind de la continutul paginii cu ajutorul unui procesor de cuvinte, dupa care este incarcat pe Web si facut disponibil intregii lumi.
HTML-ul poate fi generat in maniera creativa cu ajutorul unor editoare HTML. Pe de alta parte, dezvoltarea aplicatiilor Web se face in mod diferit. Din acest punct de vedere Web-ul este vazut dintr-o perspectiva de dezvoltare a sistemelor in cadrul careia cele mai importante elemente sunt ustensilele de proiectare traditionala a sistemelor, respectiv cele de programare de genul: analiza, proiectarea bazelor de date, proiectarea interfetelor utilizator, programarea si testarea.
Dezvoltarea aplicatiilor Web este revolutionata de modul in care se dezvolta si livreaza aplicatiile software, avand potentialul de reducere al costurilor si timpului de livrare, respectiv de cresterea a calitatii.
Initial, abordarea dominanta de dezvoltare a unor aplicatii a fost includerea tuturor datelor, a procesarilor si a elementelor de interfata utilizator intr-un calculator mare partajat de toata lumea. Aceasta abordare a fost numita si abordare centralizata, ea fiind tipica calculatoarelor de tip mainframe cu arhitecturi proprii (abordare viabila si azi pentru multe dintre companiile mari).
Odata cu dezvoltarea PC-urilor, interfetele utilizator au devenit mai evoluate, mai consistente, mai prietenoase. S-a nascut astfel o noua abordare, prin care datele si procesarile raman pe un calculator central (mainframe) dar interfata utilizator este descarcata pe calculatoarul utilizatorului: abordarea client/server. Acesta a reprezentat si reprezinta inca o modalitate foarte utilizata de dezvoltare a aplicatiilor comerciale. Utilizarea modelului client/server este motivata de faptul ca multi operatori au acces la un calculator desktop relativ puternic care poate prelua sarcinile unei interfete utilizator.
O parte importanta a procesului de dezvoltare a software-ului client/server este decizia asupra dimensiunii software-ului ce sa rezide pe server, respectiv la client. Pentru aceasta este indicat sa se divida software-ul de aplicatie in 3 parti majore:
date: - memorate in fisiere sau baze de date
proces - partea care realizeaza transformarea datelor in informatii utile pentru utilizatori si invers
interfata - partea pe care o vede si manipuleaza utilizatorul (prin care vizualizeaza si acceseaza datele)
Primele proiecte client/server au pus software-ul ce controleaza interfata utilizator la nivelul clientului, iar software-ul ce controleaza datele si procesarile acestora la nivelul sistemului server gazda
Internet-ul a fost dezvoltat avind la baza arhitectura client-server mult imbunatatita. Intr-o tehnologie client/server, serverele petrec majoritatea timpului lor in asteptarea cererilor de la clientii aflati la distanta. Intr-o aplicatie Web, o cerere poate sa fie pentru o pagina Web, pentru o inregistrare dintr-o baza de date, sau pentru un set de noi mesaje de mail.
Natura cererii depinde de aplicatie. Odata ajunsa la server o cerere client, acesta incearca sa-i raspunda. Presupunand ca cererea este suportata de catre server, acesta demareaza actiunea de a raspunde cererii. Dupa finalizarea actiunii, el trimite un raspuns inapoi clientului. De obicei clientul opereaza niste procesari asupra raspunsului printre care si informarea utilizatorul asupra rezultatelor.
Proiectari mai recente, au mutat la nivelul clientului anumite parti aditionale ale aplicatiei software; de exemplu, anumite aplicatii au localizat atat partea de interfata utilizator cat si o parte sau chiar intreaga aplicatie la nivelul clientului. Alte proiectari au mers si mai departe si au pus o parte sau chiar toate datele la nivelul clientului.
Avantajul mutarii la client a unei parti cat mai mari din aplicatie consta in reducerea traficului de retea, reducerea incarcarii serverului, maximizarea utilizarii ciclurilor procesor la nivelul clientului care altfel ar fi in stari de asteptare. Dezavantajul acestei situatii inseamna cresterea complexitatii software-ului, cresterea increderii care li se confera sistemelor client si cresterea potentiala a costurilor suportului.
3. Internet-ul - mediu deschis
Sistemele deschise au fost un vis al proiectantilor de sisteme timp de multi ani. Ideea acestor sisteme este ca se poate cumpara hardware si software de la diferite firme fara probleme din punctul de vedere a functionarii impreuna al acestor componente.
Intr-un mediu deschis producatorii proiecteaza si produc componente hardware si software in acord cu standarde publice, respectiv specificatii cu raspandire larga. Aceasta duce la o piata a tehnologiei informatiei ce asigura selectia de la diferiti producatori a componentelor interschimbabile.
Astfel, s-a format un mediu cu competitivitate inalta in care pretul, facilitatile, suportul si serviciile sunt primordiale pentru supravietuirea vanzatorilor, in timp ce beneficiarii au asigurarea ca toate sistemele vor lucra eficient impreuna.
Din punct de vedere al caracteristicilor acestora, sistemele deschise asigura portabilitate, scalabilitate, interoperabilitate si integrare.
Portabilitatea - abilitatea de mutare a software-ului de la un furnizor si sistem de operare (OS) la altul. Aceasta este important intrucat la multe organizatii este necesara rularea aceleasi aplicatii pe o mare varietate de calculatoare, chiar daca sistemele sunt furnizate de firme diferite.
Scalabilitatea - abilitatea de rulare a aceleasi aplicatii pe sisteme de calcul foarte diferite ca si dimensiune ce pot suporta diferite numere de utilizatori si diferite cantitati de date. Fiecare dintre acestea pot necesita o infrastructura IT de dimensiune diferita.
Interoperabilitatea - toate sistemele de calculatoare pot schimba informatii intre ele. Aceasta este foarte important pentru orice retea ce include calculatoare gazda cu tipuri si versiuni de sisteme de operare diferite.
Integrarea - definita ca cerinta critica de asigurare pentru diferite sisteme a unei interfete om-computer consistente. Aceasta este vitala pentru reducerea curbei de invatare pentru diferiti utilizatori finali.
Popularitatea comerciala a Internet-ului este datorata in parte faptului ca este fondat pe standarde de sisteme deschise. Aplicatiile Web sunt portabile pentru ca pot rula pe diferite platforme hardware si software. Serverele Web sunt scalabile intrucat ele pot rula pe PC-uri low-end relativ ieftine ( 1000$) si suporta putine conexiuni, sau pot rula pe servere high-end, ce costa in jur de 1000000$ sau mai mult si suporta milioane de conexiuni.
Clientii Web si serverele sunt interoperabile intrucat la conectarea la un anumit site nu conteaza daca el ruleaza UNIX, NT sau alt sistem de operare. Browser-ele Web asigura o interfata om-calculator integrata ce permite vizualizarea a tot felul de date.
In ultimii 25 de ani, Internetul a evoluat pornind de la serviciile lente bazate pe text de genul Telnet-ului sau NetNews-ului pana la serviciile multimedia de genul Web. Aceasta evolutie a fost posibila doar datorita standardelor larg publicate si acceptate. Sute de standarde diferite sunt necesare pentru a asigura functionalitatea ca si sistem deschis al Internet-ului.
Citeva dintre cele mai cunoscute impreuna cu organizatiile care le-au elaborat:
TCP/IP- Transmission Control Protocol si Internet Protocol - IETF
NNTP - Network News Transport Protocol pentru a trimite si citi stiri usenet -IETF
HTML - Hypertext Markup Language utilizat pt. marcarea documentelor hypermedia W3C
HTTP - Hypertext Transfer Protocol - cheia protocolului de transport pentru documentele
hypermedia de pe Web - W3C
URL - Universal Resource Locator - standardul pentru adresarea informatiei pe Web - W3C
FTP - File Transfer Protocol pentru schimb de informatie - IETF
MIME - Standardul Multipart Internet Messaging Email, (S-MIME) - IETF
SMTP - Simple Mail Transport pentru email ASCII - IETF
Diferitele corporatii contribuie din greu la diferitele sarcini de intocmire a standardelor, fara a le controla insa. Astfel:
Internet Engineering Task Force (IETF) controleaza inima protocoalelor Internet de genul - TCP/IP, SMTP, MIME, and SSL.
World Wide Web Consortium (W3C) dezvolta si promoveaza standarde pentru Web ca si: URL, HTTP, si HTML.
Pe langa acestea mai sunt implicate multe alte standarde si organizatii de standarde. Standardele relevante (TCP/IP, HTTP, HTML, etc.) sunt in primul rand deschise, cei mai multi furnizori livreaza componente ce lucreaza in cadrul arhitecturilor Web.
Se poate crea un site web cu echipamente ieftine si cu software free. De asemenea, se pot rula pe calculatoare modeste aplicatii web sofisticate. In prezent, interesul producatorilor proprietari reprezinta un obstacol pentru sistemele deschise. In speranta castigarii competitiei, unii producatori adauga facilitati suplimentare produselor lor blocand beneficiarii in adoptarea acestor solutii proprietare.
4. Arhitectura Web de baza
Arhitectura Web standard a fost proiectata astfel incat un calculator client poate interactiona cu un calculator server printr-o conectare printr-o retea TCP/IP.
Browser-ul si serverul comunica utilizand protocolul Hypertext Transport Protocol (HTTP). TCP/IP manevreaza detaliile de transport, asigurandu-se ca pachetele ajung la destinatie corect. HTTP structureaza comunicatia legata de fisierele ce se primesc si cum se interpreteaza ele. Aceasta permite software-ului Web sa fie focalizat asupra a ceea ce face mai bine: accesarea si afisarea continutului. Ca majoritatea proiectelor client/server, Web-ul utilizeaza o metoda cerere-raspuns, ceea ce inseamna ca serverul asteapta si asculta cererile clientului inainte de a raspunde la ele.
Browser-ul Web cere o anumita pagina web (URL - Uniform Resource Locator) de la server. Nu conteaza daca acel URL a fost introdus de utilizator, sau a fost asociat cu un hiperlink, un bookmark, sau cu un buton al browser-ului numit Home. Important este ca serverul de Web raspunde la cereri, de obicei trimise de un browser web sub controlul utilizatorului.
Software-ul serverului Web este instalat pe un calculator gazda potrivit. In functie de volumul cererilor pe care trebuie sa le manipuleze serverul se alege sistemul de operare si platforma harware pentru server. Odata instalate si configurate, majoritatea serverelor web doar asteapta si asculta daca exista cereri de la browser-ele web.
O data receptionata cererea, serverul intra in actiune. Serverul localizeaza URL-ul cerut si il copiaza pe conexiunea retea, unde TCP/IP il transporta la browser. Odata ce browser-ul primeste fisierul cerut (pagina web) de la server, browser-ul interpreteaza HTML-ul (si alte coduri incluse) si afiseaza fisierul (pagina web) corect (cu maximum capacitatilor sale) pe calculatorul client.
In general, web-ul a fost descris ca si cross-platforma dinamica, sistem informatic hipermedia distribuit ce ruleaza pe Internet. De fapt Web-ul este prima generatie a unei noi clase de sisteme distribuite ce continua sa evolueze rapid. Aceste sisteme au marea capacitate sa integreze sistemele informationale si bazele de date deja construite cu cele ce urmeaza sa fie construite.
Web-ul este usor de utilizat, iar HTML-ul este usor de scris. Totusi, Web-ul ca si platforma de dezvoltare sistem, este plin de provocari; aceasta intrucat dezvoltarea sistemelor presupune adesea sarcina dificila de integrare a oamenilor, a datelor, a proceselor, a retelelor cu tehnologii potrivite in vederea rezolvarii problemelor si crearii oportunitatilor. Dezvoltarea efectiva a aplicatiilor Web este creativa si implica o multime alti de factori pe linga cei legati de tehnologie.
Utilizarea Web-ului ca mediu de dezvoltare este relativ recenta ; datorita mediului de dezvoltare, o aplicatie Web este in general formata din mai multe parti si sa foloseasca multe tehnologii. Cadrul de lucru pentru dezvoltarea Web constituie un exemplu de combinatie fericita intre o multime de tehnologii, fiecare limitata in domeniul sau de actiune. In ciuda acestor limitari, combinatia acestor tehnologii in aplicatii furnizeaza o modalitate extrem de eficienta pentru dezvoltarea de solutii pentru Internet si intranet.
TEHNOLOGII PE PARTE DE CLIENT
Partea de client a cadrului de lucru al aplicatiilorWeb consta din patru elemente fundamentale : browsere, HTML, extensii pe parte de client (miniaplicatii Java, controale ActiveX si module plug-in Netscape), limbaje de scriptare (JavaScript, VBScript).
1. Browsere
Componenta cea mai importanta a unei aplicatii Web este chiar browser-ul, care serveste ca interfata cu utilizatorul a aplicatiei. Tehnologia browser-ului este simpla - ea implica citirea codului HTML si afisarea corespunzatoare a acestuia pe ecran. Aparitia insa a unor imbunatatiri non-standard precum straturile Netscape face uneori ca alegerea tipului de browser sa fie esentiala atunci cind se alege o platforma de dezvoltare pentru Web.
Astfel, daca se doreste dezvoltarea unei aplicatii intranet, si este cunoscut faptul ca toti utilizatorii potentiali folosesc browsere Web standard, se porneste aplicatia de la aceste ipoteze initiale. Daca insa se doreste dezvoltarea unei aplicatii Internet care sa fie utilizata de o gama foarte larga si variata de utilizatori utilizind diferite browsere, deciziile privind designul acesteia devin mult mai complexe, fiind necesara realizarea unui compromis intre caracteristici oferite si compatibilitate.
O comparatie intre cele mai cunoscute browsere vizavi de recunoasterea tehnologiilor actuale pe partea de client este prezentata mai jos:
Netscape Navigator |
Microsoft Internet Explorer |
|
Recunoaste JavaScript/JScript | ||
Recunoaste VBScript |
Nu | |
Recunoaste Java |
(3.0+ pentru Mac) | |
Recunoaste ActiveX |
3.0+ (modul plug-in) | |
Module plug-in Netscape |
Cele mai folosite browsere la ora actuala sunt: Microsoft Internet Explorer, Netscape, Mozzila, Opera, Lynx.
2. HTML
HTML este una dintre principalele tehologii pe baza careia este construit sistemul Web. HTML este un limbaj de marcare folosit pentru a asigura structura si formatarea unui fisier de text simplu. Ca tehnologie este relativ banal, dar tocmai banalitatea si implicit simplitatea confera forta limbajului.
Desi browser-ul asigura fereastra prin care se afiseaza utilizatorului continutul bazat pe Web, continutul in sine este sub forma de text HTML. Nu conteaza daca documentul este static sau este generat dinamic utilizind de exemplu JavaScript. Indiferent de maniera in care se obtin datele ce trebuie afisate, in final acestea sunt transformate in etichete HTML pentru prezentare.
In momentul in care browserul arata mesajul "Document done" in bara de stare inseamna ca pagina solicitata a fost in intregime interpretata (parsed), iar codul HTML, imaginile precum si toate celelalte elemente inline au fost afisate. De asemenea, conexiunea TCP a fost inchisa.
Scenariul tipic HTML care se desfasoara in acest caz este urmatorul:
se realizeaza conexiunea catre serverul DNS (Domain Name Server) pentru a realiza conversia numelui in adrese de IP
se stabileste conexiunea TCP/IP cu calculatorul server
se imparte mesajul in pachete si se ruteaza pachetele prin retea
se emite o comanda HTTP GET (de obicei, cea mai frecventa comanda)
se obtine un raspuns HTTP
la nivelul TCP/IP se realizeaza verificari ale fluxului de control si erorilor de transmisie
se realizeaza transformarea paginii la rezolutia specifica browserului in care se realizeaza afisarea
se transmit cereri HTTP GET aditionale (daca este cazul)
se receptioneaza raspunsuri HTTP aditionale
Este important de retinut faptul ca HTTP este un protocol fara stare. Acesta inseamna ca nici o informatie nu este retinuta intre doua cereri. Natura fara stare a protocolului HTTP face ca sarcina serverului de web sa fie relativ usoara deoarece acesta se poate ocupa de o singura cerere la un moment dat, uitind de aceasta imediat ce cererea este servita. Acesta este si motivul pentru care Web-ul este scalabil pentru volume foarte mari de cereri. Simplitatea HTTP-ului il face ideal pentru pulicarea paginilor web statice, atita timp cit acestea nu contin multe imagini si elemente multimedia. Aceasta a fost de altfel si ideea care a stat la baza proiectarii sale.
Pe de alta parte, natura statica a HTTP-ului incetineste furnizarea unui document format din mai multe parti. Acesta este motivul pentru care de exemplu o pagina web cu 20 de imagini necesita 21 de cereri diferite si 21 de raspunsuri diferite (1 pentru pagina si 20 pentru imagini). Fiecare cerere-raspuns necesita o noua conexiune TCP/IP, fapt care creste mult traficul din retea si incetineste furnizarea documentului. In plus, natura statica a HTTP-ului face ca dezvoltarea aplicatiilor care depind de serii de cereri/raspuns sa fie relativ dificil de realizat.
3. Extensii pe partea de client
Pe masura ce a crescut cerinta de pagini Web active, a aparut necesitatea realizarii unor extensii care sa completeze software-ul din browser pentru a-l face mai puternic. In acelasi timp a aparut necesitatea de a lucra cu continut executabil in interiorul browser-ului: deci browser-ul trebuia sa recunoasca tehnologia dar aceasta nu trebuia sa fie legata de browser ca sa ruleze. In prezent exista trei extensii distincte pe parte de client: miniaplicatii Java, controale ActiveX si module plug-in Netscape.
Limbajul Java este un limbaj de programare independent de platforma, dezvoltat de Sun Microsystems. Motivul pentru care Java a stirnit un mare interes a fost in primul rind portabilitatea codului generat: capacitatea sa de a crea continut care poate fi executat pe o multime de platforme. Utilizeaza o procedura in doi pasi prin care codul sursa este compilat intr-un format binar intermediar ce este independent de eventuala platforma pe care ruleaza. O componenta software numita masina Java virtuala translateaza acest cod binar intr-un cod executabil pentru sistemul de operare pe care se face executia. In acest fel, se poate utiliza acelasi cod sursa si sa se creeze un singur fisier binar ce poate fi executat pe urma pe orice platforma.
In mediul browserului, programele Java sunt numite miniaplicatii. O miniaplicatie este legata prin intermediul unei etichete <applet> in documentul HTML si poate fi descarcata pe calculatorul client. Miniaplicatia Java ajunge la browser sub forma de cod de biti; daca browserul recunoaste Java, el interpreteaza acest cod si-l executa pe calculatorul client. In general referirea la miniaplicatiile Java este ignorata in browserele care nu recunosc Java.
Limbajul de programare Java este flexibil pentru ca el este pretabil pentru executie atat la nivelul clientului cat si la nivelul serverului. Programele Java ce ruleaza la nivelul clientului sub controlul web browserului sunt numite applet-uri. Afisarea si executia applet-urilor se desfasoara chiar in fereastra browserului.
In general, pe partea de client, Java este tehnologia cea mai apropiata de limbajul JavaScript. Totusi, este foarte importanta intelegerea diferentelor fundamentale care exista intre cele doua limbaje, diferente care sunt sintetizate in tabelul de mai jos:
JavaScript |
Java |
Limbaj de scriptare, cu obiecte: accepta o ierarhie a instantelor; fara posibilitate de creare de obiecte derivate, polimorfism |
Limbaj de programare orientat pe obiecte: permite derivarea claselor prin mostenire. polimorfism |
Flexibilitate in verificarea tipurilor variabilelor |
Strictete in verificarea tipurilor variabilelor |
Codul sursa este interpretat |
Codul sursa este compilat |
Fara verificarea tabloului |
Verificarea stricta a accesului la tablou |
Ierarhie a instantelor |
Ierarhie a obietelor |
Obiecte JavaScript |
Clase Java |
Controalele ActiveX constituie raspunsul companiei Microsoft la miniaplicatiile Java. Le sunt similare acestora, deoarece pot fi utilizate ca o modalitate de adaugare a unui continut executabil intr-o pagina Web. Spre deosebire insa de miniaplicatiile Java, sunt limitate la sistemul de operare Microsoft Windows.
Controalele ActiveX utilizeaza o metoda complet diferita de cea a tehnologiei Java; dar ele indeplinesc roluri similare in dezvoltarea aplicatiilor web: practic Microsoft a dezvoltat ActiveX pentru a distribui continutul executabilelor intr-o retea. Ca si tehnologia Java, controalele ActiveX se pot utiliza atat la nivelul serverului cat si la nivelul clientului. Spre deosebire de Java insa, ActiveX nu este un limbaj de programare. Este un cadru interactiv ce permite programelor scrise in alte limbaje sa fie impachetate (sau fragmentate) pentru executie pe platformele Windows. ActiveX ruleaza pe Macintosh si pe SolarisTM, ce este versiunea Sun a lui UNIX.
Se poate crea un control ActiveX utilizand chiar limbajul de programare Java, cu toate ca acesta restrictioneaza aplicarea la Windows si cateva alte sisteme de operare. Totusi, controalele ActiveX nu sunt insa limitate numai la aplicatii pentru Web: acelasi control ActiveX poate fi folosit si intr-o aplicatie Web care accepta ActiveX cit si cu un alt instrument de programare Windows, cum ar fi Delphi sau Visual Basic.
Modulele plug-in reprezinta o tehnologie putin diferita fata de cele doua descrise anterior; in esenta acestea extind capacitatile normale ale brower-ului Netscape Navigator, oferind suport pentru alte tipuri de date suplimentare si pentru alte carateristici (de exemplu, de tip MIME Multipurpose Internet Mail Extension). Deci, atunci cind se intilneste un fisier de tip MIME, Netscape-ul cauta, instaleaza si apeleaza un modul plug-in corespunzator. O data instalate, modulele plug-in devin module adaugate de browser si nu mai necesita interactiune din partea utilizatorului pentru ale porni. Ele se dovedesc utile mai ales pentru date multimedia (sunete, imagini video, grafica) .
Chiar daca MIME a fost initial dezvoltat pentru email, acesta s-a dovedit util si pentru alte protocoale Internet, inclusiv HTTP. Practic MIME specifica o metoda standard de codificare si distribuire a unui continut binar. Pentru HTTP, acesta suporta maparea intre extensia fisierului si formatul specific al fisierului, specificind astfel browserului ce tip de document este inclus in raspunsul HTTP. MIME utilizeaza de asemenea partea din header-ul HTTP care precizeaza tipul de continut (content-type) pentru a informa browserul astfel incit acesta sa stie cum sa trateze informatia pe care o primeste in cadrul unui raspuns. Posibilitati in acest sens sunt:
text/html text ASCII cu marcaje HTML
text/plain text ASCII
text/sgml text ASCII cu marcaje SGML
image/jpeg o imagine in format JPEG
video/mpeg un clip video in format MPEG
Pentru email, MIME furnizeaza un set de tipuri de date standardizate pentru trimiterea de fisiere atasate prin email.
Modulele plug-in pe care Netscape l-a introdus pentru prima data in versiunea 2.0 a browserului Navigator si pe care Internet Explorer le-a implementat in versiunea 3.0 au marit pratic numarul tipurilor fisierelor recunoscute de browser. In principiu, daca browserele nu recunosc nativ tipul de fisier respectiv, acestea cauta un modul plug-in care sa trateze fisierul;daca acesta este gasit, il incarca si acesta ruleaza fisierul in browser (de exemplu, player audio).
4. Limbajele de scriptare JavaScript si VBScript
Ultimul element din cadrul partii de client a cadrului de lucru il constituie limbajul de scriptare al clientului. Javascript este principalul limbaj de scriptare actual, insa Microsoft promoveaza VBScript ca alternativa din ce in ce mai populara. Cele doua limbaje de scriptare sunt relativ asemanatoate ca si conceptie, chiar daca sintaxa lor difera; ele folosesc aceeasi ierarhie fundamentala a obiectelor, desi versiuni diferite ale fiecaruia pot dezvalui diferente minore.
De asemenea, nu numai modelul obiectului este identic, ci si modalitatea in care acestea lucreaza cu obiecte HTML este identica. Atit limbajele JavaScript si VBScript sunt limbaje bazate pe evenimente, astfel, codul memorat sau functiile pot fi executate pe baza evenimentelor utilizator de genul unui click al mouse-ului, sau a evenimentelor browserului de genul incarcarii unei pagini noi (URL).
Limbajele de scriptare JavaScript si VBScript sunt deseori utilizate pentru a face o pagina web HTML mai usor de utilizat, mai dinamica. Ele pot fi utilizate pentru a da viata imaginilor, pentru a verifica validitatea datelor form-urilor si pentru a calcula rezultate. Pentru obtinerea unui raspuns rapid, este un avantaj cert faptul ca mare parte a procesarilor au loc la nivelul clientului.
Tehnologiile la nivel de client joaca rolul important de utilizare a investitiilor existente pentru calculatoarele desktop. Ele elibereaza serverul deplasand procesarile la nivelul clientului. Ele imbunatatesc fiabilitatea ansamblului software. Reduc traficul in retea. De asemenea imbunatatesc interfata utilizator, raspunsul la actiunile utilizator obtinandu-se imediat.
Dezvantajele tehnologiilor la nivel de client
Tehnologiile la nivel de client au si anumite dezavantaje. La proiectarea pentru Internet, proiectantul pierde controlul asupra platformei pe care se va rula aplicatia. Aceasta nu ridica probleme pentru aplicatiile simple ce ruleaza la fel de bine pe calculatoare modeste sau pe calculatoare sofisticate. In cazul aplicatiilor complexe pot sa apara probleme. O alta problema este utilizarea variantelor de browsere care nu suporta versiunile curente ale limbajelor la nivel de client.
TEHNOLOGII PE PARTE DE SERVER
Serverele web si HTTP joaca un rol esential pentru a face Web-ul popular pentru publicarea informatiei si pentru dezvoltarea aplicatiilor web. Un server web nu este altceva decat un pachet software instalat pe un calculator capabil sa comunice prin TCP/IP.
Unii considera ca web serverul consta dintr-o platforma hardware scumpa si puternica inchisa intr-o suprafata securizata a unei organizatii. Uneori serverele web folosesc intr-adevar astfel de platforme. Alteori insa, serverele web ruleaza pe calculatoare avand puterea unui calculator personal. De exemplu, multe servere ruleaza pe Solaris, Win 95 si Macintosh. Ele nu necesita neaparat o putere mare pentru procesor, putand rula si pe un Pentium obisnuit.
Rolul serverului web este relativ simplu: acesta ruleaza pe un calculator gazda situat la distanta, iterand intr-o bucla infinita de asteptare si ascultand traficul care vine pe portul 80. Un port este un software ce realizeaza conectarea la o retea. Portul 80 este un port bine cunoscut pentru comunicatie cu serviciile web. Serverele web pot fi configurate sa ruleze pe orice port, dar portul 80 este portul standard implicit.
Daca nu vine nici o cerere, nu se intampla nimic. Dar odata ce a sosit o cerere la portul 80, serverul intra in actiune. Se vor petrece lucruri diferite, in functie de platforma si de configuratie. De exemplu, pe Unix, serverul va crea un nou proces (prin copierea sa) pentru manevrarea cererii. In felul acesta serverul poate reincepe ascultarea cererilor aditionale la portul 80. In mediile multiproces, mai multe cereri diferite pot fi aparea la acelasi moment.
Odata receptionata o cerere, se localizeaza fisierul cerut pe baza URL-ului si acesta este copiat conexiunii de retea prin TCP/IP; si cu asta s-a incheiat sarcina web serverului. In anumite cazuri, serverul nu poate localiza fisierul cerut pe baza URL-ului sau, astfel incat el trimite inapoi un mesaj de eroare '404 File Not Found'.
In alte situatii serverul nu are permisiunea sa trimita acest fisier, astfel el trimite un mesaj de eroare de tip '403 Forbidden'. De cele mai multe ori insa serverul gaseste ceea ce cauta, astfel incat el va trimite impreuna cu copia documentului cerut un mesaj '200 OK'. Acest mesaj nu se vede niciodata pentru ca in loc de a-l afisa, web browserul afiseaza pagina web ceruta.
In concluzie, un server web este un program care ruleaza pe un calculator, asteapta la un port o conexiune TCP venita de la un client si serveste acestuia pagini web folosind in general protocolul HTTP. Server-ul web este un program de sine statator, un executabil cu o functie bine stabilita : aceea de a servi la cerere pagini Internet. Acest software poate fi : Apache HTTP Server, Microsoft Internet Information Server (IIS), iPlanet Web Server, Roxen WebSever, Zes WebServer.
Dupa cum se poate vedea din enumerarea anterioara, exista numeroase implementari de web servere, primele doua fiind la ora actuala cele mai utilizate. Unele servere de web sunt mai simple, altele ofera o functionalitate mult mai extinsa : de exemplu, in jurul acestora pot opera mai multe tehnologii externe ca de exemplu codurile pentru generarea de pagini Php, JSP sau ASP, administrarea sesiunilor utilizator catre un server de aplicatii care foloseste EJB-uri (Enterprise Java Bean), componente COM+ (Component Object Model), extensii pentru Microsoft FrontPage, interogari LDAP (Lightweight Directory Access Protocol) sau Microsoft Active Directory. Practic fiecare web server dispune de un set caracteristic de astfel de tehnologii, care, alaturi de capacitate si scalabilitate sa il evidentiaza printre celelalte produse. In plus, alte criterii de diferentiere ar fi gradul de complexitate necesar instalarii si configurarii precum si a administrarii generale a procesului de web-serving. Acestea sunt considerentele pentru care Apache este lider actual pe piata serverelor web.
In general, platformele pe care ruleaza serverele web sunt calculatoare de cele mai multe ori dedicate, conectate permanent intr-o retea (Intranet sau Internet). Pentru alegerea tipului de hardware exista de asemenea o mare varietate de sisteme, insa un criteriu important il reprezinta compatibilitatea cu softul ales pentru web server. Asta deoarece serverele web sunt dependente de arhitectura pe care vor rula si mai ales de sistemul de operare instalat pe acea arhitectura.
De exemplu IIS ruleaza numai sub Windows, Zeus necesita Unix, Roxen si iPlanet ruleaza fie sub Unix fie pe Windows, Apache se gaseste open-source si poate fi compilat fie pentru diverse versiuni de Unix/Linux dar se gaseste si in versiuni precompilate pentru Windows sau Mac OS X. Capacitatea de a rula pe mai multe sisteme ofera serverului Apache o raspindire mai larga, cu toate ca performantele sunt superioare in cazul rularii Unix.
Functionarea serverelor web
Ca si principiu de functionare, orice aplicatie server va asculta un port. Acest port este standard portul 80, acesta fiind folosit implicit la introducerea unei adrese normale de web. Daca serverul web a fost configurat pe alt port, de exemplu 8080, atunci adresa va trebui sa contina numarul portului la care trebuie sa se faca conexiunea (exemplu : https://www.doinazmaranda.tk :8080/). Folosirea unui alt port decit 80 se datoreaza de obicei rularii simultane pe aceeasi masina a mai multor servere web : de exemplu Apache poate fi instalat pe portul 8080 in timp ce portul 80 sa fie folosit de IIS.
Odata stabilit portul si pornit serverul, un client se poate conecta la serverul web folosind adrea masinii in cauza. Aceasta adresa se numeste URL (Uniform Resource Locator) si este folosita exclusiv pentru a localiza si determina masina gazda, protocolul folosit precum si fisierul dorit. De exemplu o adresa din spatiul romanesc are forma generala urmatoare :
[http[s]://subdomeniu.domeniu.ro [ :n][/localizare fisier]
De asemenea, se poate folosi adresa IP a masinii gazda in mod direct sau utilizindu-se alias-ul localhost daca conexiunea se face direct de pe masina gazda.
Exemple :
https://www.doinazmaranda.tk/
https://www.doinazmaranda.tk/index.htm - adresarea fisierului index.htm apartinind domeniului doinazmaranda
https://localhost:8080/test/test1.htm/ - accesul fisierului test1.htm din directorul test de pe masina locala prin intermediul serverului care asculta pe portul 80880
https://80.97.33.1/test.php - adresarea securizata a fisierului test.php folosind IP-ul masinii gazda
Datorita folosirii protocolului TCP-IP, protocol orientat pe conexiuni, in care o conexiune creaza o cerere si se inchide de indata ce nu mai este nevoie de ea, conexiunea catre client si serverul web se va termina de indata ce fisierul a fost trimis catre web-server. Starea conexiunii, in cazul fisierelor mai mari decit un pachet TCP, se pastreaza activata atit catre client cit si catre server.
TCP/IP se mai ocupa cum ar fi impartirea unui mesaj in pachete de dimensiune potrivita, rutarea pachetelor catre destinatie, asigurarea faptului ca acestea au fost receptionate corect precum si reasanblarea pachetelor la destinatie pentru a reface masajul complet. HTTP necesita deci existenta unei conexiuni fiabile intre client si server iar TCP/IP furnizeaza de fapt o astfel de conexiune.
Clientul folosit pentru accesarea serverului web este cel mai probabil un browser web, dar poate fi si un alt program capabil sa se conecteze la un port TCP (de exemplu telnet). Introducerea unei adrese de web in browser genereaza urmatorul lant de conexiuni :
browserul deterimna protocolul pe care il va folosi in dialogul cu serverul web (de exemplu https:// - HTTP HyperTest Transfer protocol)
browserul determina adresa de web a serverului
browserul determina ce anume trabuie sa ceara de la serverul web (de exemplu, un fisier index.htm)
pe baza adresei web, browserul determina adresa IP a masinii pe care ruleaza serverul web prin interogari DNS (Domain Name Service)
pe baza adresei IP determinata anterior, browserul instaureaza o conexiune TCP pe portul specificat in URL sau implicit pe portul 80
browserul trimite o cerere GET catre server specificind fisierul dorit : GET /index.htm
serverul web raspunde trimitind fisierul dorit sau o eroare corespunzatoare in cazul in care trimiterea nu este posibila (lipsa fisierului, drepturi de acces insuficiente, etc.)
browserul analizeaza fisierul primit si il afiseaza corespunzator
In pricipal rolul dedicat al serverului web este acela de a servi fisiere in format HTML dar nu numai. Mai pot exista si fisere de tip imagine, sunete, animatii, etc. Fisierele care sunt la dispozitia navigatorului se afla stocate intr-un director vazut ca radacina de catre web server (de exemplu c:Inetpubwwwroot pentru IIS sau /var/www/html pentru Apache). Acest director se specifica in configuratia serverului si in el se stocheaza fisierele impreuna cu structura de subdirectoare pe care le va folosi serverul web in cautarea unui fisier cerut de catre client. Servirea unui fisier se efectueaza daca fisierul specificat exista, daca este accesibil de catre serverul web sau daca drepturile de acces nu interzic acest lucru.
De multe ori fisierele pe care serverul trebuie sa le serveasca depind de alte programe externe de generare de cod : de exemplu fisiere .php, .asp., jsp. Fisierele care necesita astfel de prelucrari vor fi generate de un program extern, a carui rezultat va fi tot un fisier HTML. Acest fisier va fi transferat serverului web iar acesta il va servi catre browser. Acest proces sta la baza generarii dinamice a paginilor web. In principal, necesitatea utilizarii unor pagini dinamice apare atunci cind continutul acesteia se doreste a fi modificat in functie de anumite criterii.
Servere web si protocolul HTTP
Dialogul intre client si server se efectueaza prin protocolul HTTP, care este un protocol la nivel de aplicatie. Transportul comunicatiei dintre client si server se face utilizind protocolul TCP, protocol la nivel de retea. Protocolul HTTP defineste modul in care se inteleg clientul si serverul ; clientul va trimite o cerere (o comanda HTTP in mod text simplu, de exemplu GET, POST, HEAD sau PUT) prin care informeaza serverul despre actiunea pe care urmeaza sa o intreprinda.
Daca, de exemplu, serverul va primi o cerere GET / index.htm, el va raspunde cu un cod de stare prin care va informa browserul despre succesul cererii sau eventualele erori aparute (de exemplu, codul 404 indica faptul ca fisierul indicat in URL nu exista, iar codul 200 indica succesul cererii). In caz de succes, serverul trimite un antet (header) catre browser cu informatii ca : tipul si versiunea protocolului folosit, limba continutului, daca este necesara salvarea in cahe-ul browser-ului sau nu, tipul continutului transmis (MIME type), data serverului, numele serverului, etc. Dupa antet, va fi trimis si continutul fisierului cerut, mai putin in cazul unei cereri HEAD.
Datorita faptului ca serverul web are acces direct la fisiere din sistemul pe care ruleaza, securitatea este un punct de maxim interes si a necesitat multe versiuni ale serverelor web pentru a ajunge la un anumit nivel de siguranta. O alta problema a serverelor web o reprezinta viteza si multimea de cereri simultane pe care le poate prelucra serverul.
2. Extensii pe parte de server
In esenta, serverele web ofera clientului pagini HTML statice, atunci cind este solicitat. Exista insa numeroase tehnologii care joaca un rol important pe partea de server a modelului client/server. Ele utilizeaza spatiul de disc al serverului, ciclurile de procesare ale serverului si ruleaza sub sistemul de operare al serverului. Web serverele, prin definitie rezida pe partea de server a modelului. Aceste extensii ale serverelor asigura capacitati pe care serverul in sine nu le recunoaste, printre care CGI, API pentru servere, Javascript si Java, conectivitate catre bazele de date.
CGI - Commom Gateway Interface este actuala modalitate standard de stabilire a interfetei intre programme externe si servere Web. CGI este o modalitate standard de trecere a datelor din form-urile HTML de la web browser la serverul web. Cu toate ca standardul CGI specifica modalitatea in care atat web serverul cat si web browserul manevreaza datele form-urilor, majoritatea procesarilor se realizeaza la nivelul serverului. Cu toate ca se utilizeaza termenul de programare CGI, CGI nu este un limbaj de programare. CGI trebuie cuplat cu un limbaj de programare ce este executat pe aceeasi platforma ca si web serverul. Se poate utiliza aproape orice limbaj, dar datorita facilitatilor de manipulare a sirurilor de caractere pe care le ofera, Perl este limbajul cel mai larg folosit pe web. Perl este folositor si pentru multe alte task-uri de dezvoltare.
CGI si procesarile la nivel de server corelate lui sunt utilizate pentru multe tipuri de aplicatii web. Pagina home a librariei virtuale www.amazon.com este generata prin procesare la nivelul serverului. De exemplu, vechii utilizatori reintorsi sunt deseori salutati pe nume printr-o pagina home customizata ce este generata in zbor.
Folosind CGI, este posibila executia pe server a unor programe sau scripturi CGI pentru a genera continut creat dinamic care sa fie afisat utilizatorului. Un exemplu in acest sens este generarea unei cereri de formular HTML, care, dupa aceea este expediata serverului. Cererea ruleaza programul sau scriptul CGI, care se afla intr-un director special pe server. CGI proceseaza cererea, apoi intoarce un document HTML care contine rezultatul. Este posibila scrierea unui program CGI utilizind folosind orice limbaj de programare - Java, C++, Visual Basic sau Php - atita timp cit acesta poate fi executat pe serverul web. Sub Unix, scripturile CGI sunt scrise de regula in limbaje ca Perl sau intr-un program de tip shell Unix.
Avantajul utilizarii interfetelor API pentru servere il constituie obtinerea unei eficiente mai mari decit in cazul programelor CGI. CGI necesita ca o instanta separata a programului sa fie executata pentru fiecare cerere a clientului, ceea ce este mai costisitor si in acelasi timp limiteaza volumul datelor ce pot fi partajate.
Dezavantajul folosirii unei API particular pentru server este ca un anumit fisier DLL creat de exemplu pentru ISAPI nu va functiona cu un server Netscape.
La nivelul
serverului, programele Java pot lua diferite forme. O forma cere rularea
codului sub controlul unui alt proces al serverului. Aceste procese se numesc
servlet-uri. Ele pot fi utilizate pentru a extinde functionalitatea
serverului web pentru procesari de securitate, conectari la baze de
date, procesari de credit carduri, etc. Tehnologia Java este de asemenea
utilizata la nivelul serverului ca si program de sine
statator. In aceasta situatie, programul ruleaza sub
controlul direct al sistemului de operare. De exemplu, un proces CGI poate fi
scris in limbajul de programare Java. Tehnologia Java nu este limitata la
proiectele client-server. Poate fi utilizata si in aplicatii de
calcul distribuit ce implica orice numar de calculatoare.
In ultima perioada, Java pe partea de server a cistigat teren prin intermediul tenologiei JSP (Java Server Pages).
Conectivitate prin baze de date conectivitate prin baze de date este o alta importanta tehnologie ce lucreaza in special la nivelul serverului. Conectivitatea prin baze de date nu este o tehnologie ci o serie de tehnologii corelate pentru conectarea aplicatiilor web cu bazele de date (de exemplu ODBC, JDBC). Ideea este sa se stocheze unele sau toate informatiile necesare unei aplicatii intr-o structura de date manevrabila de genul unui sistem modern de manevrare a bazelor de date (DBMS). Un DBMS asigura o infrastructura pentru memorarea randurilor cu date necesare unei aplicatii software. Aceste date pot reprezenta informatii despre beneficiari, un ordin de la un client, cea mai recenta vizita a lor la un site web, etc.
Un DBMS tipic ofera servicii de genul blocarii accesului la date utilizatorilor neautorizati, asigurand ca toate datele memorate sa respecte anumite reguli de integritate si asigurand totodata un limbaj de nivel inalt pentru interogarea si actualizarea datelor. DBMS-urile au fost dezvoltate cu mult timp in urma si reprezinta tehnologii mature. Mai degraba decat sa reinventeze aceasta parte a sistemului, aplicatiile web in mod uzual combina baze de date existente cu baze de date nou definite pentru memorarea informatiilor cerute. Conectivitatea prin baze de date este utilizata in multe aplicatii web comerciale.
In cazul acesta, procesarea la nivel de server ofera cateva avantaje. Se concentreaza procesari importante pe un anumit calculator sub controlul celui ce dezvolta aplicatia. Calculatorul serverului poate fi dimensionat in mod potrivit si manevrat in mod eficient pentru a furniza un nivel ridicat al serviciilor. Sistemul de operare al serverului poate fi si el ales astfel incat sa se indeplineasca anumite cerinte ale aplicatiei. Software-ul de aplicatie poate fi tinut la zi prin actualizari periodice. Acestea sunt usor de realizat pentru ca ele necesita sa fie executate pe un calculator central (sau eventual un mic numar de calculatoare).
Procesarea la nivel de server are si anumite dezavantaje. Concentreaza incarcarea pe o singura masina. Aceasta poate ridica probleme daca nu s-a facut o alegere potrivita a sistemului de operare, respectiv daca platforma hardware este nepotrivita. De asemenea, daca serverul cade nici un serviciu nu mai este disponibil. Prin proiectarea rularii tuturor aspectelor ale unei aplicatii pe un server duce la un trafic marit intre client si server. Fiecare sarcina ce trebuie realizata presupune realizarea unui dialog printr-o cerere si un raspuns. Aceasta are implicatii asupra vitezei de reactie a interfetei utilizator.
Tehnologii combinate
Toate proiectele bazate pe web cer un set minim de servicii atat din partea clientului cat si din partea serverului. Aceasta include cererea din partea browser-ului a unei pagini web (URL) si raspunsul serverului cu pagina web asociata.
La implementarea aplicatiilor web nu exista restrictii de utilizare a unei tehnologii sau a alteia. O combinatie tipica de tehnologii este HTML, JavaScript, CGI cu Perl, si conectivitate prin baze de date. De exemplu: Form-urile HTML sunt utilizate pentru a colecta date de la utilizator. JavaScript este utilizat pentru a valida intrarile utilizatorului la client, inainte de a le trece serverului. Programarea CGI cu Perl este utilizata la nivelul serverului pentru a analiza si a valida mai departe datele.
O conexiune cu baze de date la server este utilizata pentru a accesa informatia de care este nevoie si pentru a memora datele relevante pentru procesari ulterioare. Programare CGI aditionala la nivelul serverului este utilizata pentru formarea unui raspuns potrivit utilizatorului. Se pot adauga si alte tehnologii web. Sunt foarte populare pe web proiectele hibride. In desen este un exemplu al unui site web comercial ce utilizeaza HTML, JavaScript si procesare la nivel de server (de exemplu in Php), inclusiv o baza de date pentru memorarea ordinelor clientilor (de exemplu MySQL).
Ca si proiectant, este nevoie sa se cunoasca bine aceste tehnologii. Daca sunt utilizate in mod potrivit se pot utiliza pentru a crea aplicatii eficiente ce echilibreaza incarcarea clientului si serverului.
ELEMENTE CONSTRUCTIVE PHP
Limbajul PHP (Personal Home Page) este un limbaj de scriptare pe partea de server care imbina caracteristici dintre cele mai complexe cu simplitate in utilizare
Ca si alte limbaje de scripting, PHP permite furnizarea unui continut web dinamic si spre deosebire de JavaScript, ruleaza pe serverul web si nu in browserul web. In consecinta, PHP poate obtine accesul la fisiere, baze de date si alte resurse.
Caracteristicile esentiale ale limbajului sunt urmatoarele :
familiaritate
simplitate - codul unui script PHP apare intre marcatorii < ? respectiv ?>
eficienta - dispune de mecanisme eficiente de alocare a memoriei, suport pentru programarea obiectuala, managementul sesiunilor utilizator
securitate - PHP furnizeaza elemente de securitate la nivel de sistem si la nivel de aplicatie
flexibilitate - PHP este un limbaj « incorporat » poate fi integrat cu succes cu HTML sau JavaScript, XML, WML, nu contine cod specific unui anumit server, deci nnu este limitat la un anumit web server :Apache, IIS, Netscape Enterprise Server, Zeus, fiind in mare parte independent de platforma.
Limbajul furnizeaza un numar impresionant de functii predefinite:
creare si manipulare continut dinamic pagini
manipulare si creare elemente grafice
calcule matematice
conectivitate catre baze de date (MySQL, ODBC)
pastrarea starii
Integrarea limbajului PHP cu HTML se realizeaza prin includere instructiuni PHP intre marcatorii <?php si ?> , ceea ce indica serverului PHP ca textul cuprins intre cele doua linii este alcatuit din instructiuni PHP.
Fisierele PHP trebuie sa aiba extensia .php.
Sintaxa limbaj PHP e asemanatoare limbajului C existand citeva elemente distincte:
numele variabile - incep obligatoriu cu semnul $ ; regulile cunoscute pentru constructia identificatorilor raman valabile : caractere alfanumericesi _ sunt permise: $text= " Hello World "
variabilele globale - create in afara oricarei functii, utilizind cuvintul cheie global Variabilele unui formular sunt un tip important de variabile globale si nu sunt in mod prestabilit recunoscute in interiorul functiilor, daca doresc acest lucru, trebuie redeclarate ca globale si in interiorul acestora :
global $var1, $var2 ;
function cu_var_globala()
variabilele statice - declarate in interiorul unei functii isi pastreaza valoarea la iesirea din functie; se comporta ca niste variabile globale, si nu locale
constantele - se definesc utilizind functia predefinita define() ex. - define("PI", 3.14159). In expresii, numele constantelor nu este prefixat de caracterul $ ex. -$arie_cerc=PI * $raza * $raza
PHP - tipul variabilelor nu trebuie precizat fiind determinat pe baza ultimei valori atribuite variabilei, flexibilitate care nu permite mixarea tipurilor ininstructiuni de atribuire sau aritmetice. In anumite situatii sunt realizate conversii implicite de tip in alte cazuri trebuie realizate conversii explicite de tip (typecast)
tipurile de date utilizate de PHP - preponderent numerice sau siruri de caractere ; limbajul dispune de o paleta extrem de variata de functii pentru prelucrarea sirurilor de caractere precum si funtii pentru prelucrari matematice
similar ca in C, instructiunile conditionale - if, switch; instructiunile ciclice sunt for, while si do-while
functiile PHP similare celor din C si pot fi pot fi recursive, in mod implicit, argumentele sunt transmise prin valoare; daca se doreste tranmiterea lor prin referinta, acest lucru se poate realiza prin prefixarea parametrului cu & (se transmite de fapt, adresa parametrului ):
function trans_ref(&$i)
PHP permite lucrul cu fisiere existand functii specifice - deschidere/inchidere, citire/scriere, modificare proprietati si privilegii fisier sau grupuri de fisiere, modificare drepturi de proprietate asupra fisierelor
Serverul Web (Apache) si serverul de aplicatie PHP folosesc variabile de mediu pentru prezentare informatii de stare, variabile ce reflecta caracteristicile cererii HTTP care a solicitat executia PHP. Variabilele de mediu disponibile pot fi vizualizate folosind functia phpinfo().
Variabila de mediu |
Semnificatie |
Exemplu |
DOCUMENT_ROOT |
Calea care constituie radacina arborelui directorului cu documente al serverului Web |
c:inetpubwwwroot |
GATEWAY_INTERFACE |
Versiunea protocolului | |
HTTP_ACCEPT |
Continutul antetului HTTP Accept: |
image/gif, |
HTTP_CONNECTION |
Continutul antetului HTTP Connection:, care indica optiunile solicitate de client |
Keep-Alive |
HTTP_ |
Continutul antetului HTTP Host:, care indica numele de gazda folosit de client la prezentarea paginii |
classic. |
HTTP_USER_AGENT |
Continutul antetului HTTP User-Agent:, care indica browserul clientului si versiunea acestuia |
Mozilla/4.0 (compatible; |
REMOTE_ADDR |
Adresa IP a clientului | |
REMOTE_ |
Numele gazda a clientului | |
REQUEST_METHOD |
Motoda de cerere HTTP folosita: |
|
|
Numele de care absolut a scriptului curent |
W:WebTestPop |
SCRIPT_NAME |
Adresa URL a scriptului curent |
/pop/exemple |
SERVER_NAME |
Numele de gazda asociat serverului Web care prelucreaza cererea |
classic. domain.local |
SERVER_ |
Port folosit de serverul Web pentru comunicatii | |
SERVER_PROTOCOL |
Numele si versiunea protocolului prin care s-a executat cererea |
HTTP/1.1 |
SERVER_SOFTWARE |
Sirul care identifica programul server Web si versiunea acestuia |
Microsoft-IIS/5.0 |
PHP - limbaj de scripting pentru Web, faciliteaza accesul la variabilele transmise de catre formularele HTM, in momentul expedierii unui formular, numele si valorile variabilelor din cadrul acestuia sunt inserate in tabloul HTTP_POST_VARS.
A. Tablouri
Tablourile reprezinta o structura de date extrem de utilizata in PHP. Un tablou poate fi creat in principiu in urmatoarele moduri:
prin atribuirea de valori unei variabile
$var_tablou[]="Primul element"
$var_tablou[]="Al doilea element"
$var_tablou[]="Al treilea element"
Parantezele dupa numele variabilei indica faptul ca $var_tablou este o variabila de tip tablou, implicit, valorile tabloului sunt stocate incepind de la 0.
PHP nu impune utilizarea unor numere intregi pe post de chei in tablou. Astfel, se pot crea asa numitele tablouri asociative, sau tablou indexat cu siruri, in cadrul carora cheile sunt siruri de caractere:
$limbaje['client']="JavaScript"
$limbaje['general]="Java"
$limbaje['server']="PHP"
prin utilizarea functiei array:
$cursuri=array("Programare", "Microprocesoare", "Grafica");
Parcurgerea iterativa a unui tablou in PHP se realizeaza functie de tipul acestuia. Astfel, daca acesta este secvential, se pot utiliza bucle for pentru parcurgere, ca de exemplu:
$var_tablou[]='Primul
element';
$var_tablou[]='Al doilea element';
$var_tablou[]='Al treilea element';
$lim=count($var_tablou); //determina
numarul de elemente
//traversare tablou
for ($i=0; $i<$lim; $i++)
Daca tabloul nu este secvential, parcurgerea e mai complicata si PHP include o instructiune care simplifica operatiile de acest gen:
foreach ($limbaje as $cheie => $valoare)
Alte functii specifice pentru parcurgerea tablourilor sunt:
current() - returneaza valoarea asociata elementului curent
next(), prev() - returneaza valorile elementelor urmator respectiv anterior
key() - returneaza cheia elementului curent
each() - returneaza perechea cheie-valoare din tabloul specificat
$limbaje['client']='JavaScript';
$limbaje['general']='Java';
$limbaje['server']='PHP';
$limbaje = array('simplu' => 'PHP', 'complex'
=> 'Perl',
'nepopular' => 'Python');
$curent=current($limbaje);
echo 'curent='.$curent;
$cheie=key($limbaje);
echo '<br>cheie='.$cheie;
$urmator=next($limbaje);
echo '<br>urmator='.$urmator;
$anterior=prev($limbaje);
echo '<br>anterior='.$anterior;
$fiecare=each($limbaje); //un array
echo '<br>fiecare='.$fiecare[0];
echo '<br>fiecare='.$fiecare[1];
O functie utila in prelucrarea tablourilor este functia list() care este imparte un tablou in secvente de valori scalare:
list($cheie, $valoare) = each($limbaje);
//prima pereche de elemente cheie-valoare se depune
//in variabilele $cheie respectiv $valoare
echo "cheia este = $cheie corespunzaroare valorii $valoare";
$urmator=next($limbaje); //trecere la urmatorul element
Exista de asemenea alte functii specifice tablourilor in PHP: pentru sortare (sort()), determinarea numarului de elemente (count()), determinarea facilitarea cautarii (array_search()), lista completa se poate gasi la adresa www.php.net.
B. Fisiere & sistem de fisiere
Posibilitatile de lucru cu fisiere ale limbajului PHP nu se limiteaza numai la citirea/scrierea de fisiere, furnizind de asemenea si functii pentru :
verificarea existentei unui fisier
redirectarea iesirii unui fisier
executia unor programe externe
lucrul cu sistemul de fisiere
Modelul sistemului de fisiere folosit de PHP4 este cel folosit in UNIX, in consecinta unele functii nu se comporta corect in cazul utilizarii sistemului Windows.
C. PHP &
Abilitatea de a obtine si prelucra informatii provenite de la utilizatori se poate realiza cu ajutorul form-urilor HTML dar lJavaScript si PHP adauga mai multa interactivitate in scrierea formurilor HTML, motiv pentru care form-urile prezinta, pe langa partea de HTML, si portiuni de script JavaScript si/sau PHP.
Maniera in care PHP-ul manipuleaza informatia din cadrul
form-urilor nu este diferita de cea in care sunt tratate variabilele
transmise de exemplu prin intermediul
URL-ului. Formularele care utilizeaza transmiterea utilizand metoda POST nu a parametrii transmisi. Toate variabilele
trimise prin intermediul unui formular pot fi utilizate in scripturile PHP sub
forma de variabile identificate pe baza numelui lor din cadrul
formularului.
Exemplu formular cu date de contact, variabile formular transmise catre pagina rez_contact_info.php.
<html>
<head>
<title>Informatii de contact</title>
</head>
<body>
<h3>Informatii de contact<h3>
<form name='contact' action='rez_contact_info.php'
method='post'
onSubmit='return validare_cimpuri(document.contact)'>
<pre>
Numele: <input
type='text' name='nume'>
Prenumele: <input type='text' name='prenume'>
Adresa: <input
type='text' name='adresa'>
</pre>
Localitatea: <input type='text' name='localitate'
size=12>
Tara: <input
type='text' name='tara' size=12>
Cod postal: <input
type='text' name='cod' size=5>
<pre>
Telefon acasa: <input
type='text' name='tel_a' size=12>
Telefon serviciu <input type='text'
name='tel_se'size=12>
Email: <input
type='text' name='email'>
</pre>
<hr>
<input type='submit' name='submit'
value='Trimite'>
<input type='reset' value='Anuleaza'>
</form>
</body>
</html>
Pagina rez_contact_info.php preia variabilele transmise prin intermediul formularului, si le afiseaza. Se observa ca aceasta foloseste ca nume ale variabilelor in cadrul scriptului PHP, numele elementelor formularului. Practic, scriptul care citeste URL-ul creeaza automat variabilele si le atribuie valori pe baza perechilor nume/valoare transmise prin intermediul URL-ului:
<html>
<head>
<title>Informatii contact</title>
</head>
<body>
<h3>Va multumim pentru datele furnizate!</h3>
<h4>Acestea sunt informatiile de contact primite de la
dumneavoastra:</h4>
<?php
print('<pre><br>Nume: <b>$nume</b>n');
print('<br>Prenume: <b>$prenume</b>n');
print('<br>Adresa: <b>$adresa</b>n');
print('<br>Localitatea: <b>$localitate</b>n');
print('<br>Tara: <b>$tara</b>n');
if ($cod!='')
print('<br>Cod: <b>$cod</b>n');
if ($tel_a!='')
print('<br>Telefon acasa: <b>$tel_a</b>n');
if ($tel_se!='')
print('<br>Telefon
serviciu:<b>$tel_se</b>n');
print('<br>E-mail: <b>$email</b>n</pre>');
?>
</body>
</html>
O alta varianta de transmitere a variabilelor catre un scrip PHP o reprezinta utilizarea link-urilor. Astfel, se poate crea de exemplu un formular care contine o serie de informatii grupate pe categorii :
<html>
<head>
<title>Informatii de contact pe categorii</title>
</head>
<body>
<h3>Informatii de contact<h3>
<form name='contact' action='link_contact_info.php'
method='post'>
<table border='0'
cellpadding='0' cellspacing='10' summary=''>
<tr>
<td>
<h4>Informatii
generale</h4>
<pre>
Numele: <input
type='text' name='nume'>
Prenumele: <input type='text' name='prenume'>
Adresa: <input
type='text' name='adresa'>
Tara: <input
type='text' name='tara' size=12>
Telefon <input type='text'
name='telef' size=12>
Email: <input
type='text' name='email'>
</pre>
</td>
<td>
<h4>Informatii
profesionale</h4>
<pre>
Societatea: <input
type='text' name='soc'>
Telefon: <input
type='text' name='tel'>
Functia: <input type='text'
name='adrsoc'>
</pre>
<h4>Hobby-uri</h4>
<pre>
Sportul: <input
type='radio' name='hobby' >
Muzica: <input
type='radio' name='hobby' >
Lectura: <input
type='radio' name='hobby' >
</pre>
</td>
</tr>
</table>
<hr>
<input type='submit' name='submit' value='Trimite'>
<input type='reset' value='Anuleaza'>
</form>
</body>
</html>
Formularul transmite informatiile catre pagina link_contact_info.php care contine link-uri catre categoria de informatii solicitate :
<html>
<head>
<title>Informatii contact</title>
</head>
<body>
<h3>Va multumim pentru datele furnizate!</h3>
<h4>Acestea sunt informatiile de contact primite de la
dumneavoastra:</h4>
<?php
print('<pre><br><a
href='rez_link_contact.php?id=1&nume=$nume&prenume=$prenume&
adresa=$adresa&tara=$
print('Informatii generale</a>');
print('<br><a
href='rez_link_contact.php?id=2&soc=$soc&tel=$tel&
adrsoc=$adrsoc'>');
print('Informatii profesionale</a>');
print('<br><a href='rez_link_contact.php?id=3&hobby=$hobby'>');
print('Hobby-uri</a>');
print('</pre>');
?>
</body>
</html>
Fiecare link, la rindul sau transmite variabilele mai departe
catre pagina rez_link_contact.php,
dar utilizind sirul de interogare, transmiterea perechilor nume/valoare se
realizeaza utilizind metoda
Pagina rez_link_contact.php afiseaza informatiile primite, functie de categoria lor, categorie identificata cu ajutorul parametrului id, transmis de asemenea in cadrul sirului de interogare:
<html>
<head>
<title>Informatii contact</title>
</head>
<body>
<h3>Va multumim pentru datele furnizate!</h3>
<h4>Acestea sunt informatiile de contact
primite de la dumneavoastra:</h4>
<?php
if($id==1) //informatia de la primul link
if($id==2) //informatia de la al doilea link
if($id==3) //al treilea link
?>
</body>
</html>
Form-urile pot fi create si in mod dinamic, furnizand o mai mare flexibilitate in modificarea ulterioara a acestora. Astfel, un form simplu, care contine o lista de selectie generata dinamic:
<?
//defineste un URL in mod dinamic, pe baza
variabilei $site
if ($site != '') :
header('Location:
https://$site');
exit;
else :
?>
<html>
<head>
<title>Lista selectie dinamica</title>
</head>
<body bgcolor='#ffffff' text='#000000'
link='#cbda74'
vlink='#808040' alink='#808040'>
<?
//se definesc optiunile listei intr-un array
$favsites = array ('www.connex.ro',
'www.yahoo.com',
'www.google.com',
'www.bnr.ro',
'www.msn.com')
// se construieste form-ul care contine lista
?>
<form action = 'din_menu.php' method='post'>
<select name='site'>
<option value = ''>Alegeti un site:
<?
$x = 0
//se traverseaza array-ul afisindu-se pe rind optiunile
while ( $x < sizeof ($favsites) ) :
print '<option
value='$favsites[$x]'>$favsites[$x]';
$x++;
endwhile;
?>
</select>
<input type='submit' value='OK!'>
</form>
<?
endif;
?>
Se observa din cadrul exemplelor de mai sus ca maniera de
lucru obisnuita cu
form-urile presupune in general 3 pasi:
completarea cimpurilor form-ului
transmiterea datelor catre un script de pe server (de obicei utilizind un buton de tip submit)
prelucrarea acestora de catre scriptul respectiv si afisarea rezultatelor prelucrarii.
Aceasta secventa de pasi presupune existenta a cel putin doua fisiere unul care contine formularul si al doilea, care rezida pe server, care prelucreaza datele din formular si intoarce rezultatele.
O prelucrare frecventa o reprezinta stocarea datelor primite de la utilizator prin intermediul form-ului intr-un fisier. Chiar si cind se lucreaza cu cantitati relativ mari de informatie, utilizarea fisierelor text poate reprezenta o solutie. Este important insa in acest caz sa se stabileasca maniera de introducere a informatiilor in fisier (de obicei, un set de informatii pe o linie) precum si caracterul separator din cadrul unei linii. Caracterul separator nu este voie sa apara in datele introduse, acest lucru trebuie verificat inaintea scrierii datelor in fisier.
Politica de confidentialitate |
.com | Copyright ©
2024 - Toate drepturile rezervate. Toate documentele au caracter informativ cu scop educational. |
Personaje din literatura |
Baltagul – caracterizarea personajelor |
Caracterizare Alexandru Lapusneanul |
Caracterizarea lui Gavilescu |
Caracterizarea personajelor negative din basmul |
Tehnica si mecanica |
Cuplaje - definitii. notatii. exemple. repere istorice. |
Actionare macara |
Reprezentarea si cotarea filetelor |
Geografie |
Turismul pe terra |
Vulcanii Și mediul |
Padurile pe terra si industrializarea lemnului |
Termeni si conditii |
Contact |
Creeaza si tu |