Aplicatie Web Privind Eficientizarea Muncii Depuse de Catre Personalul Medical In Gestiunea Activitatilor de Programare a Utilizatorilor

Cuprins

Cuprins

Introducere

Internet. Fundamente teoretice

Scurt istoric

Arhitectura Internet

Protocolul Internet

Protocolul TCP

Tehnologii s i aplica¸tii folosite

World Wide Web

URL

Protocolul HTTP

Documente Web statice. HTML

Documente Web dinamice

PHP

Baze de date

Fundamente teoretice

MySQL

Analiza s i proiectarea aplica¸tiei

Problematica abordata

Analiza

Proiectare s i implementare

Baza de date

PHP

Utilizarea aplica¸tiei

Instalare ssi lansare

Utilizare

Modulul Vizitator

Modulul Administrator

Concluzii

Bibliografie

Capitolul 1

Introducere

Lucrarea de fata isi propune sa prezinte o aplicatie Web care faciliteaza programarea la o clinica medicala pentru analize, aplicatie realizata in limbajul HTML si limbajul PHP: Hypertext Processor (unul dintre cele mai utilizate servere de aplicatii Web in prezent – atat pe plan mondial, cat si pe cel local), functiontand in conjunctie cu Apache (cel mai popular server Web).

Aceste aplicatii pot fi considerate ”complete” din punctul de vedere al etapelor de analiza, proiectare, implementare si mentinere a unui produs software.

In zilele noastre continutul informational din intreaga lume este convertit la o forma digitala, facand astfel informatiile disponibile oricui, oriunde si oricand. In ultimele decenii, Internetul a devenit o componenta esentiala in vietile noastre, fiind folosit in cele mai diverse domenii de activitate. Prin intermediul Internetului, a serviciilor oferite de acesta, multe dintre activitatile pe care omul le intreprinde pot fi usurate si evident eficientizate. O astfel de activitate, care poate fi imbunatatita prin folosirea serviciilor oferite de Internet, este si obtinerea unui serviciu medical.

O aplicatie Web este solutia ideala care poate duce la eficientizarea si usurarea obtinerii unei programari pentru un serviciu medical, evitand deplasarea pentru o programare. O astfel de aplicatie Web trebuie sa include si sa ofere urmatoarele functionalitati :

• siguranta si confidentialitate;

• posibilitatea de accesare da catre vizitatorii de pe Internet a unei parti de prezentare cu scopul de informare cat mai dataliata despre aceste serviciile oferite;

• posibilitatea de a stoca si de a modifica date personale referitoare la utilizatori;

• posibilitatea de a adauga ¸ modifica, si sterge servicii medicale

Lucrarea este structurata in patru capitole, fiecare avand mai multe subcapitole, si o lista de referinte bibliografice.

Capitolul 2 contine un scurt istoric despre Internet si prezentarea structurii acestuia, dupa care trateaza fundamentele teoretice care stau la baza protocoalelor Internet si TCP.

Capitolul 3 se refera la tehnologiile si aplicatiile folosite in cadrul paginii Web care face obiectul acestei lucrari si anume: World Wide Web; URL; protocolul HTTP; documentele Web statice si dinamice; limbajele HTML, PHP si fundamente teoretice despre baze de date si MySQL.

Capitolul 4 trateaza analiza si proiectarea aplicatiei. Sunt prezentate in amanunt toate elementele care stau la baza aplicatiei si anume: problematica abordata, baza de date si fisierele programului.

Capitolul 5 prezinta instalarea si utilizarea aplicatiei.

Capitolul 6 prezinta concluziile trase in urma utilizarii aplicatiei.

Capitolul 2

Internet. Fundamente teoretice

Numit si reteua retelelor, Internetul isi are originea in ARPANET si in NSFNET. Internetul este mai mult decat o suma de conecsiuni, desigur nimeni nu a prevazut cum aceasta trecere de la o retea militara la una publica si comerciala ne va afecta felul in care gandim despre informatie si comunicare.

2.1 Scurt istoric

In anul 1945, Vannevar Bush scrie un articol [4] in Monthly despre un dispozitiv foto-electro-mecanic imaginar, numit Memex, care poate realiza legaturi intre documente.

In anul 1957 este infiintata Agentia de cercetare ARPA (Advanced Research Projects Agency) , ca raspuns la lansarea primului satelit artificial al Pamantului de catre URSS. Aceasta agentie avea ca scop realizarea de cercetari in domeniul spatial.

In anul 1960, Douglas Engelbart [5] propune un prototip pentru OnLine System (NLS), care utiliza legaturile pentru parcurgerea documentelor. In anul 1962, J.C.R. Licklider [10] si W. Clark de (Massachusetts Institute for Technology) introduc conceptul unei asa-numite retele galactice (Galactic Network), in care calculatoarele sunt interconectate astfel incat oricine poate avea acces la date si programe din orice loc. Tehnologia fundamentala care sta la baza functionarii Internetului este comutarea de pachete (packet switching).

Aparitia acestei tehnologii este legata de numele unor cercetatori ca Leonard Kleinrock [9], Paul Baran, Donald Davies si Roger Scantlebury – ultimii doi de (National Physical Laboratory, Middlesex, Marea Britanie). In anul 1965, Ted Nelson propune – la a XX-a Conferinta nationala a ”Association for Computing Machinery” cuvantul hipertext (”A File Structure for the Complex, the Changing, and the Indeterminate”). In anul 1967, NPL experimenteaza, sub conducerea lui Donald Davies, o retea (NPL Data Network) cu comutare de pachete la 768 kbps. Tot in 1967, ARPA a inceput dezvoltarea unui proiect de cercetare care avea drept scop realizarea unei retele de comanda care trebuia sa supravietuiasca unui posibil razboi nuclear.

O parte din fondurile agentiei au fost dirijate catre centrele de cercetare universitare si industriale.

Datorita eforturilor facute in domeniul cercetarii de factorii implicati in proiectul supervizat de ARPA si achizitionarii unor calculatoare IMP (Interface Message Processor), la sfarsitul anului inceput sa functioneze reteaua ARPANET, precursoarea Internetului, avand patru noduri: University of California din Los Angeles (UCLA), Standford Research Institute (SRI), University of California din Santa Barbara (UCSB) si University of Utah din Salt Lake City. In acelasi an, pe 7 aprilie, Steve Crocker de scrie primul RFC, intitulat Host Software. In 1971, reteaua ARPANET avea deja 15 noduri si 23 de gazde. In octombrie 1972, Robert Kahn realizeaza prima prezentare publica a retelei ARPANET.

In anul 1973 au fost conectate la reteaua ARPANET, pentru prima oara, noduri din afara continentului american. In acelasi an, Vinton Cerf si Robert Kahn prezinta ideile care vor sta la baza Internetului. Tot in anul 1973, Vinton Cerf defineste arhitectura gateway, iar Bob Metcalf dezvolta tehnologia Ethernet pentru interconectarea fizica a calculatoarelor. Drept consecinta, creste numarul calculatoarelor care pot fi conectate intr-o retea si, respectiv, numarul retelelor. In 1974, Vinton Cerf si Robert Kahn publica ”A Protocol for Packet Network Interconnection”, in care prezinta in detaliu protocolul TCP (Transmission Control Protocol), devenit ulterior standard.

In anul 1980, ARPANET asigura conexiuni intre aproximativ 400 de calculatoare raspandite in universitati, centre guvernamentale si militare. La aceste calculatoare aveau acces peste 10 000 de persoane. In anul 1983, protocoalele NCP (Network Control Protocol), utilizate pentru comunicatii in reteaua ARPANET, au fost inlocuite cu de protocoale TCP/IP. Tot in anul 1983, reteaua a fost impartita in doua componente. Una dintre ele a fost denumita in continuare ARPANET, si interconecta centrele universitare si academice, iar cealalta, denumita MILNET (care exista si astazi), va fi utilizata in scopuri militare in S.U.A. In anii 80 au fost conectate un numar foarte mare de retele. Aceasta situatie a determinat in 1984 crearea de catre de Paul Mockapetris a sistemului DNS (Domain

Name System), prin intermediul caruia calculatoarele erau organizate in domenii,

punandu-se in corespondenta adresele IP cu numele gazdelor.

In anul 1988 ia nastere IANA (Internet Assigned Numbers Authority) sub conducerea lui Jon Postel. In acelasi an, Jarkko Oikarinen dezvolta IRC (Internet Relay Chat). In anul 1989, numarul gazdelor depaseste 100 000. Intre anii 1989 si 1991, Tim Berners-Lee si altii de de Cercetari Nucleare pun bazele serviciului World Wide Web si protocolului HTTP. Totodata, se scriu prima versiune a limbajului HTML, primul navigator si primul server Web.

In anul 1990, reteaua ARPANET a fost inchisa. In schimb, retelele care s-au nascut dupa aparitia acesteia, asa cum sunt NSFNET (National Science Foundation Network) si succesorul sau, NREN (National Research and Educational Network) au continuat sa existe. Interconectandu-se, aceste retele au dat nastere Internetului, asa cum il cunoastem astazi. In anul 1991, sub suspiciile lui Vinton Cerf si Robert Kahn, ia nastere ISOC (Internet Society). In 1992 numarul gazdelor depaseste un milion. La inceputul anului 1993 apare prima versiune a navigatorului grafic Mosaic (precursor al navigatorului Netscape Navigator), realizat de Marc Anderseen de for Supercomputing Applications.

In acel moment erau in functiune circa 50 de servere Web. La 23 februarie 1993, primeste terminatia .ro din partea organizatiei IANA. In octombrie 1993 erau in functiune peste 200 de servere Web. In perioada 25-27 mai 1994 are loc prima conferinta internationala privind World Wide Web. In luna iunie a aceluiasi an erau in functiune circa 1500 de servere Web.

La 1 octombrie 1994 ia nastere World Wide Web Consortium (W3C). In anii urmatorii, majoritatea statelor lumii isi inregistreaza domenii Internet. Sunt puse la punct motoarele de cautare (search engines) si sunt dezvoltate noi tehnologii, limbaje si platforme de programare. In ziua de astazi, Internetul este sustinut si intretinut de o multime de firme comerciale. Se bazeaza pe specificatii tehnice foarte detaliate, asanumitele protocoale de comunicatie, care descriu toate regulile de transmitere a datelor in retea si vor fi prezentate in continuare.

2.2 Arhitectura Internet

In aceasta sectiune am sa prezint structura Internet-ului de astazi. Din cauza multor fuziuni intre companiile de telefoane si companiile ISP (Internet Service Provider), apele au devenit tulburi si este de cele mai multe ori dificil de precizat care sunt atributiile fiecaruia. In consecinta aceasta descriere va fi simplificata in raport cu realitatea efectiva. Imaginea de ansamblu este prezentata in figura 2.1.

Figura 2.1: Arhitectura Internet

Un bun punct de pornire este sistemul propriu al clientului. Sa presupunem ca acest client suna sau printr-o linie telefonica, asa cum se vede in figura 2.1. Modemul este o placa din calculatorul clientului care converteste semnalele digitale pe care le produce calculatorul in semnale analogice care pot circula fara probleme prin sistemul telefonic. Aceste semnale sunt transferate la punctul de livrare (POP) al ISP-ului, unde sunt preluate din sistemul telefonic si injectate in reteaua regionala a ISP. De aici inainte sistemul este in intregime digital si foloseste comutarea de pachete.

Reteaua regionala a ISP este formata prin interconectarea ruterelor din diverse orase pe care le deserveste compania.

Daca pachetul este destinat unei gazde deservite direct de catre reteaua ISP, pachetul va fi livrat direct gazdei. Altfel, el este livratin continuare operatorului care furnizeaza companiei ISP servicii de comunicare prin coloana vertebrala (backbone) a retelei.

In partea superioara a acestei ierarhii sunt operatorii principali de la nivelul de coloana vertebrala a retelei, companii precum AT&T sau Sprint. Acestia opereaza coloane vertebrale mari si firmele care ofera servicii de gazduire (hosting), utilizeaza ferme de servere (masini care pot servi mii de paginiWeb pe secunda) sunt conectate adeseori direct la nivelul coloanei vertebrale.

Daca un pachet trimis in coloana vertebrala este destinat unui ISP sau unei companii deservite de aceeasi coloana, el este transmis celui mai apropiat ruter. Oricum exista multe astfel de coloane vertebrale in intreaga lume, astfel incat un pachet poate sa treaca intr-o coloana concurenta. Pentru a permite pachetelor sa treaca dintr-oprecum AT&T sau Sprint. Acestia opereaza coloane vertebrale mari si firmele care ofera servicii de gazduire (hosting), utilizeaza ferme de servere (masini care pot servi mii de paginiWeb pe secunda) sunt conectate adeseori direct la nivelul coloanei vertebrale.

Daca un pachet trimis in coloana vertebrala este destinat unui ISP sau unei companii deservite de aceeasi coloana, el este transmis celui mai apropiat ruter. Oricum exista multe astfel de coloane vertebrale in intreaga lume, astfel incat un pachet poate sa treaca intr-o coloana concurenta. Pentru a permite pachetelor sa treaca dintr-o coloana in alta, toate aceste coloane principale sunt conectate in NAP-uri (Network Access Point), adica in puncte de acces in retea.

In principiu un NAP este o camera plina cu rutere, cel putin unul pentru fiecare coloana vertebrala conectata. O retea locala a camerei conecteaza toate aceste rutere, astfel incat pachetele sa poata fi retransmise din orice coloana in orice alta coloana. In afara de interconectarea in NAP-uri, coloanele vertebrale de dimensiuni mari au numeroase conexiuni directe intre ruterele lor, tehnica denumita conectare privata (private peering). Merita de asemenea mentionat ca anumite companii si-au interconectat toate retelele interne existente, folosind de multe ori aceleasi tehnologii ca si Internet-ul.

Aceste intranet-uri sunt accesibile de cele mai multe ori numai din interiorul companiei.

2.3 Protocolul Internet

Liantul care tine Internet-ul la un loc este protocolul de nivel retea dupa modelul de referinta OSI (Modelul de referinta OSI se bazeaza pe o propunere dezvoltata de catre Organizatia Internationala de Standardizare si se ocupa de conectarea sistemelor deschise comunicarii cu alte sisteme. Modelul OSI cuprinde sapte niveluri: nivelul fizic, legatura de date, retea, transport, sesiune, prezentare si aplicatie.

Nivelul retea se ocupa de controlul functionarii subretelei.), numit IP (Internet Protocol). Spre deosebire de protocoalele mai vechi de nivel retea, acesta a fost proiectat de la inceput avand in vedere interconectarea retelelor. Sarcina lui este de a oferi cel mai bun mod posibil, adica negarantat, de a transporta datagrame de la sursa la destinatie, fara a tine seama daca aceste masini sunt sau nu in aceeasi retea sau daca intre ele exista sau nu alte retele.

Comunicatia in Internet functioneaza dupa cum urmeaza. Nivelul transport preia siruri de date si le sparge in datagrame. In teorie datagramele pot avea fiecare pana la 64KB, dar in practica ele nu depasesc 1 500 octeti. Fiecare datagrama este transmisa prin Internet, fiind eventual fragmentata in unitati mai mici pe drum. Cand toate bucatile ajung in sfarsit la masina destinatie, ele sunt reasamblate de nivelul retea in datagrama originala. Datagrama este apoi pasata nivelului transport, care o insereaza in sirul de intrare al procesului receptor.

Acest protocol este prezentat in mod detaliat in RFC (Request for Comments – RFC-urile s-au dovedit a fi un vehicol foarte eficient pentru documentarea si distributia rezultatelor cercetarii efectuate de creatorii Internet-ului si au devenitintre timp un ghid oficial al deciziilor de proiectare, arhitectura si al standardelor tehnice in ceea ce priveste aceasta retea. Desi au ramas intitulate ”Request for Comments”, includ de fapt detalii tehnice foarte detaliate.)

In continuare am sa prezint parti semnificative din acest document. Protocolul IP este apelat de protocoalele ”host-to-host” intr-un mediu Internet. Protocolul apeleaza la randul sau la protocoalele de retea locale pentru a transporta datagramele pana la urmatoarea poarta (gateway) sau pana la destinatie. Protocolul IP implementeaza doua functii de baza: adresarea si fragmentarea. Modulele Internet folosesc adresa din antetul Internet pentru a transmite datagramele catre destinatie. Selectarea unei cai pentru transmitere se numeste rutare.

Modulele Internet folosesc campuri din antetul Internet pentru a fragmenta si reasambla datagramele cand acest lucru este necesar, la trasmiterea prin retele ”small packet”.

Exista un modul Internet implementat de fiecare gazda ce participa la comunicare si de fiecare poarta ce interconecteaza retele. Aceste module au reguli comune pentru interpretarea campurilor de adrese si pentru fragmentarea si asamblarea datagramelor. In plus, aceste module (mai ales in cazul portilor), contin proceduri ce permit luarea unor decizii de rutare si alte facilitati. Protoculul IP trateaza fiecare datagrama ca o entitate independenta, fara legaturi cu alte datagrame. Nu exista legaturi sau circuite logice (virtuale sau de alta natura).

Protoculul IP foloseste patru mecanisme cheie: Type of Service (tipul serviciului),

Time to Live (timpul de viata), Options (optiuni) si Header Checksum (verificarea antetului).

Type of Service este folosit pentru a indica ce calitate are serviciul dorit si reprezinta de fapt o multime abstracta sau generalizata de parametri ce caracterizeaza optiunile oferite de retelele care formeaza Internetul. Acest mod de a indica tipul serviciului trebuie folosit de porti pentru a selecta parametrii actuali ai transmisiei pentru o retea anume, atunci cand are loc rutarea unei datagrame. Time to Live reprezinta o limita superioara pentru timpul de viata al unei datagrame. Este setat de gazda care trimite datagrama si decrementat in fiecare punct al rutei. Daca ajunge la valoarea zero inainte ca datagrama sa ajunga la destinatie, datagrama este distrusa. Timpul de viata poate fi considerat un timp limita de autodistrugere. Options ofera functii de control necesare sau folositoare in unele situatii, dar care nu sunt folosite la comunicatiile uzuale. Aceste optiuni includ informatii despre timp, securitate si rutare speciala. Header Checksum ofera facilitatea de a verifica daca informatiile folosite la procesarea unei datagrame au fost transmise corect. Datele pot contine erori.

Daca verificarea esueaza, datagrama este ignorata de entitatea care detecteaz a eroarea. Protocolul IP nu ofera o facilitate de comunicare sigura. Nu se face controlul erorilor pentru date, ci doar pentru antet.

Nu exista retransmiteri. Nu se face controlul fluxului. Erorile detectate pot fi anuntate prin protocolul ICMP (Internet Control Message Protocols) care este implementat in modulul IP.

2.4 Protocolul TCP

Transmission Control Protocol (TCP) este protocolul folosit de Internet la nivelul transport dupa modelul de referinta OSI si este prezentat in RFC-ul 793. Acesta este un protocol gazda catre gazda (host to host) de incredere intre gazde (hosts) in comunicarea prin schimbul de pachete intre calculatoarele in retea si in sistemele interconectate de tip retea. Sistemele de comunicare intre calculatoare joaca un rol din ce in ce mai important in domeniile militar, guvern, civil. RFC-ul 793 isi concentreaza in mod special atentia pe cerintele de comunicare intre calculatoare in domeniul militar, robustete in prezenta unor comunicatii pe care nu te poti baza, disponibilitatea in cazul congestiei, dar multe dintre aceste probleme se regasesc si in sectorul guvernului sau in cel civil. Privite ca o modalitate de comunicare strategica si tactica intre calculatoare, retelele sunt dezvoltate si plasate fiind esentiala procurarea de mijloace de a le interconecta si de a produce protocoale standard de comunicare intre procese care sa poata suporta o banda larga de aplicatii. TCP este un protocol de incredere orientat pe conexiuni, capat-la-capat realizat pentru o ierarhiein crestere de protocoale care suporta aplicatii multi-retea.

TCP este folosit pentru comunicarea de incredere intre perechi de procese apartinand calculatoarelor gazda care la randul lor apartin unor retele distincte, interconectate. Foarte putine presupuneri au fost facute in privinta increderii in protocolul de comunicare sub stratul TCP.

TCP isi propune sa obtina un serviciu simplu de transmitere de datagrame, posibil inconsistent (lipsit de incredere) pentru nivelul inferior de protocoale. In principiu, TCP ar trebui sa fie in stare sa opereze pe un spectru larg de sisteme de comunicatie de la conexiunile prin fir pana la retelele cu trimitere de pachete sau de circuite. TCP se potriveste intr-o arhitectura stratificata pe protocol imediat superioara unui Protocol de Internet care da posibilitatea TCP-ului sa trimita si sa primeasca segmente de informatii de lungime variabila inscrise in datagrame Internet numite si ”plicuri”. Datagrama Internet ofera mijlocul de adresare a TCP-urilor sursa si destinatie in diferite retele.

Protocolul Internet are de asemenea grija de orice fragmentare sau asamblare a segmentelor TCP necesare transportului si livrarii prin retele multiple si porti interconectate. Protocolul Internet transporta informatii cu privire la precedenta, securitatea si compartimentarea segmentelor TCP, asa incat aceasta informatie poate fi comunicata de la capat-la-capat prin mai multe retele. Interfetele TCP sunt pe de o parte catre utilizator sau procese de aplicatii si pe de alta parte catre nivele inferioare de protocoale cum ar fi Protocolul Internet. TCP este realizata pentru a functiona intr-un mediu foarte general de interfete.

TCP este in stare sa transfere un flux de octetI in fiecare directie intre utilizatori impachetand un numar de octeti in segmente pentru transmiterea prin Internet. In general, TCP-urile decid cand blocheaza si cand transmit date. Uneori utilizatorii trebuie sa fe sigur ca datele trimise de ei catre TCP au fost transmise in intregime. Pentru aceasta se defineste o functie Push pentru a se asigura ca datele trimise TCP-ului au fost transmise in intregime expeditorul indica impingerea catre destinatar. Un asemenea impingere (”push”) determina TCP-ul sa trimita prompt datele pana la punctul destinatarului. Punctul exact din care 10 se face impingerea nu este vizibil destinatarului si functia push nu ofera nici o inregistrare.

TCP trebuie sa revina la o stare sigura de dinaintea coruperii, pierderii, duplicarii sau transmiterii haotice de sistemul de comunicatie prin Internet a unor date. Acest lucru se atinge asignand o secventa ordonata de numere fiecarui octet transmis, iar destinatar se face o recunoastere (ACK – acknowledgement) a datelor primite. Daca ACK nu este primita intr-un anumit interval de timp, datele sunt retransmise. La destinatar, secventa de numere este folosita pentru a ordona in ordine corecta segmentele care ar fi putut fi primate intr-o ordine aleatoare si pentru a elimina duplicatele.

Coruperea datelor e preintampinata prin adaugarea unei sume de control la fiecare segment transmis, verificandu-se suma la destinatar si eliminand segmentele corupte. Atata timp cat TCP continua sa functioneze corespunzator si sistemul de Internet nu devine complet partitionat, nici o eroare nu va afecta transmiterea corecta a datelor. TCP isi revine din erorile provenite din sistemul de comunicatie prin Internet.

Capitolul 3

Tehnologii si aplicatii folosite

3.1 World Wide Web

Web-ul este un context arhitectural pentru accesul la documente, raspandite pe mii de masini din Internet, intre care exista legaturi. in 10 ani a evoluat de la o aplicatie pentru transmiterea de date utile pentru fizica energiilor inalte la o aplicatie despre care milioane de oameni cred ca este Internetul. Popularitatea sa enorma se datoreaza faptului ca are o interfata grafica plina de culoare, usor de utilizat de catre incepatori si in acelasi timp ofera o cantitate imensa de informatie. Web-ul, cunoscut ca si WWW (World Wide Web) din punctul de vedere al utilizatorului, consta dintr-o colectie imensa de documente sau pagini de Web (Web pages).

Fiecare pagina poate sa contina legaturi (indicatori) la alte pagini, aflate oriunde in lume. Utilizatorii pot sa aleaga o legatura prin executia unui clic care ii va aduce la pagina indicata de legatura. Acest proces se poate repeta la nesfarsit. Ideea ca o pagina sa contina legaturi catre altele a fost inventata in 1945, cu mult inainte de a se fi inventat Internet-ul, de catre Vannevar Bush, un profesor vizionar de la departamentul de inginerie electrica al M.I.T.

Paginile pot sa fie vazute cu ajutorul unui program de navigare (browser). Internet

Explorer, Mozilla Firefox si Opera sunt cele mai cunoscute programe de navigare.

Programul de navigare aduce pagina ceruta, interpreteaza textul si comenzile de formatare continute in text si afiseaza pagina, formatata corespunzator pe ecran. S¸irurile de caractere care reprezinta legaturi la alte pagini, se numesc hiper-legaturi, sunt afisate in mod diferit, fiind subliniate si/sau colorate cu o culoare speciala. Pentru a selecta o legatura, utilizatorul va plasa cursorul pe zona respectiva, ceea ce va determina schimbarea formei cursorului si va executa un clic. Astfel se ve afisa o noua pagina, care se poate afla pe aceeasi masina ca si prima sau pe o masina aflata undeva pe glob la polul opus. Utilizatorul nu va sti. Aducerea paginilor este realizata de catre programul de navigare, fara nici un ajutor din partea utilizatorului. Daca utilizatorul se va intoarce la prima pagina, legaturile care au fost deja utilizate vor fi afisate altfel decat celelalte pentru a fi deosebite de cele care nu au fost inca selectate.

Modelul de baza al functionarii Web-ului este aratat in figura 3.1. Aici un program de navigare afiseaza o pagina de Web pe masina clientului. Atunci cand pagina soseste,

Figura 3.1: World Wide Web

ea este afisata. Daca aceasta pagina contine o hiper-legatura catre o pagina de pe serverul xyz.com pe care utilizatorul face clic, programul de navigare trimite o cerere masinii respective pentru acea pagina, si asa mai departe la nesfarsit.

3.2 URL

Am spus de mai multe ori ca o pagina de Web poate sa contina referinte la alte pagini. inca de la crearea Web-ului, a fost clar ca pentru a avea o pagina care sa indice spre alta pagina este necesar un mecanism care sa permita numirea si regasirea paginilor. in particular, sunt trei intrebari la care trebuie sa se raspunda inainte de a se putea afisa o pagina:

• 1. Cum se numeste pagina?

• 2. Cum este localizata pagina?

• 3. Cum se face accesul la pagina?

Solutia aleasa identifica paginile intr-un mod care rezolva toate trei problemele in acelasi timp. Fiecare pagina are un URL (Uniform Resource Locator), o adresa uniforma pentru localizarea resurselor, care functioneaza ca nume al paginii general valabil. Un URL are trei componente: protocolul, cunoscut si sub numele de schema, numele DNS al masinii pe care este memorat fisierul si un nume local, care indica in mod unic pagina, de obicei numele fisierului care contine pagina.

Structura formala a unei adrese de acest tip este urmatoarea:

[schema : //]nume gazda[: port][/cale][?date].

in continuare am sa prezint partile componente ale unui URL, oferind explicatii succinte pentru fiecare componenta in parte.

• schema este un identificator de serviciu si reprezinta protocolul utilizat de un anumit serviciu Internet. Iata cateva exemple de protocoale utilizate de serviciile Internet:

– http (Hypertext Transfer Protocol) este protocolul utilizat de serviciul WWW.

Acest serviciu este cea mai cunoscuta aplicatie a Internetului si a protocoalelor TCP/IP.

– ftp (File Transfer Protocol) este protocolul utilizat de serviciul FTP. Acest serviciu este folosit pentru transferul fisierelor.

– mailto este schema utilizata pentru trimiterea mesajelor de posta electronica.

Pentru platforma Windows, browserul Web lanseaza un client local de posta electronica, asa cum este programul Outlook Express, sau o componenta plug-in a browser-ului.

• nume gazda reprezinta numele serverului (calculatorului gazda) pe care se afla localizat a resursa sau, in cazul serviciului de posta electronica, cutia postala identificata de nume utilizator@nume domeniu.

• port reprezinta numarul portului utilizat de programul server care ofera serviciul respectiv. Deoarece majoritatea programelor server utilizeaza porturi implicite, aceasta componenta este optionala. De exemplu, serverul Web (numit si server HTTP), care asigura functionarea serviciului WWW pe masina server, foloseste ca port implicit (sau oficial) pe cel cu numarul 80, nefiind necesara precizarea acestei valori.

• cale precizeaza calea pana la fisierul in care se afla localizata resursa (pe masina gazda), precum arata si numele acestuia. Daca aceasta componenta este vida sau nu contine numele unui fisier, serverul stie sa trimita clientului un anumit document, de exemplu: index.html, index.htm, sau index.php, in functie de modul in care administratorul a configurat serverul Web.

• date este o componenta utilizata impreuna cu protocolul http precizeaza anumite date, in perechi de forma nume data=valoare data, separate prin caracterul &. Datele sunt transmise unor scripturi (executate pe server) si utilizate de acestea in diverse scopuri, de exemplu, pot fi folosit drept cuvinte-cheie pentru cautarea in bazele de date pe server.

in tabelul 3.2 sunt indicate cateva servicii Internet, impreuna cu protocoalele utilizate de acestea si exemple de URL-uri.

Figura 3.2: Servicii Internet (exemple)

3.3 Protocolul HTTP

Comunicatia dintre clientul Web si serverul Web poate fi descrisa, pe scurt in felul urmator: procesul server Web ”asculta” portul 80 TCP al masinii gazde pentru a raspunde eventualelor cereri de conexiune venite de la clienti.

Dupa stabilirea conexiunii TCP, clientul care a initiat conexiunea trimite o cerere (pentru un document HTML de exemplu), la care serverul trimite un raspuns (acesta poate fi documentul cerut sau un mesaj de eroare). De obicei (in cazul HTTP/1.0), dupa trimiterea raspunsului urmeaza inchiderea conexiunii dintre client si server. Pentru a intelege mai bine functionarea acestui protocol urmariti figura 3.3.

Figura 3.3: Protocolul HTTP descrie cererile clientului si raspunsurile serverului

Cererile clientului si raspunsurile serverului Web sunt descrise de protocolul HTTP, creat ca protocol generic pentru transferul hipermedia. HTTP este un protocol de tip cererer aspuns (ca si alte protocolae utilizate in Internet) care functioneaza la nivelul aplicatie al modelului TCP/IP. Ca si alte protocoale care fac parte din TCP/IP, HTTP este un protocol de tip client-server. Protocolul HTTP asigura transmiterea datelor ca un flux de octeti, permitand in felul acesta transmiterea sigura a tuturor formatelor de date, incluzand documente HTML, imagini, secvente video, sunete, etc.

Succesiunea completa a etapelor parcurse pentru obtinerea unui document HTML, incepand cu stabilirea URL-ului documentului (prin introducerea acestuia in caseta de adrese a browser-ului sau prin efectuarea unui clic pe o legatura din pagina curenta) si terminand cu afisarea lui de catre browser-ul Web, este urmatoarea (prezentarea etapelor se face pe un exemplu in care se utilizeaza un URL fictiv):

• 1. browser-ul determina URL-ul paginii care se doreste a fi afisata, presupunem ca acesta este http://www.uav.ro/lista.html ;

• 2. browser-ul cere serverului local DNS adresa IP a masinii pe care se afla pagina al carei URL a fost ales de utilizator;

• 3. serverul DNS comunica browser-ului adresa IP ceruta;

• 4. browser-ul stabileste o conexiune TCP cu portul 80 al serverului a carui adresa IP a fost obtinuta in etapa anterioara;

• 5. utilizand conexiunea TCP deschisa in etapa anterioara, browser-ul trimite serverului Web care se executa pe calculatorul a carui adresa IP a fost obtinuta in etapa cu numarul 3 un mesaj (numit si cerere) HTTP, transparent pentru utilizator. Daca se utilizeaza versiunea protocolului HTTP, mesajul incepe cu comanda urmatoare: GET /lista.html HTTP/1.0;

• 6. serverul Web de pe masina www.uav.ro raspunde acestei cereri, trimitand clientului (browser-ului) continutul fisierului lista.html ;

• 7. serverul Web inchide conexiunea TCP stabilita in etapa 4;

• 8. browser-ul afiseaza textul din pagina lista.html, interpretand marcajele HTML continute in aceasta pagina;

• 9. browser-ul cere si afiseaza celelalte elemente necesare de pagina (asa cum sunt, de exemplu, imaginile). Pentru aceasta, este necesar ca browser-ul sa stabileasca, succesiv, pentru fiecare element in parte, cate o conexiune TCP cu masina server, sa trimita o comanda GET serverului HTTP si sa primeasca un raspuns de la acesta (se repeta etapele 4-7 de cate ori este necesar). Acesta este mecanismul implicit utilizat de protocolul HTTP 1.0.

Interactiunea dintre clientul si serverul Web, prin intermediul protocolului HTTP, consta dintr-o cerere ASCII a clientului si un raspuns MIME (un standard ce va fi prezentat in continuare) al serverului. Cererea implica o metoda aplicata asupra unei resurse aflate pe calculatorul server.

Iata cateva metode HTTP: GET (clientul cere serverului sa trimita pagina specificata), HEAD (clientul cere numai antetul paginii specificate), DELETE (metoda solicita stergerea paginii specificate), PUT (metoda inlocuieste continutul paginii specificate cu datele trimise de client), TRACE (metoda permite clientului sa vada cum sunt prelucrate mesajele). GET este cea mai utilizata metoda. Mesajul sau cerearea (request) trimis de browser serveruluiWeb in etapa cu numarul 5 poate fi mai complex, ca in exemplul urmator:

GET /lista.html HTTP/1.0

Accept: image/gif, image/x-xbitmap, image/jpeg

Accept-Language: en-us

Accept-Encoding: gzip, deflate

User-Agent: Mozilla/4.0(compatible; MSIE 6.0; Windows NT 5.1)

Host: uav.ro

Connection: Keep-Alive

Standardul MIME (Multipurpose Internet Mail Extensions) este inclus in protocolul HTTP. Acest standard (RFC 1049) defineste un camp (numit Content-Type) a antetului HTTP al raspunsului serverului, camp care descrie natura si formatul datelor continute in acest raspuns. Utilizarea standardului MIME permite transmiterea, pe langa textul simplu (plain text), si a altor informatii (audio, video, imagini, etc.). Datele MIME apartin unui tip si unui subtip.

In general, tipul este utilizat pentru a declara natura datei, iar subtipul specifica un format pentru tipul de date utilizat. Tipul continutului poate fi: application, audio, image, text, video, message si multipart (primele cinci sunt tipuri discrete, iar ultimele doua sunt tipuri compuse). Fiecare tip contine mai multe subtipuri. De exemplu, tipul text contine subtipurile plain si html.

Un subtip poate fi insotit de parametric (fiecare parametru este precizat ca nume parametru=valoare parametru). Numele tipurilor, subtipurilor si parametrilor nu sunt case sensitive1, iar valorile parametrilor sunt sau nu sunt case sensitive, de la un caz la altul. Precizarea unui tip, a unui subtip si a unui parametru MIME se realizeaza punand caracterul slash(/) intre numele tipului si cel al subtipului si caracterul punct si virgula (;) intre numele subtipului si cel al parametrului, ca in exemplele urmatoare:

Content-type: text/plain; charset=us-ascii

Content-type: image/gif

Content-type: application/msword

3.4 Documente Web statice. HTML

Fundamentul Web-ului este transferul de pagini de Web de la server la client. in forma cea mai simpla, paginile de Web sunt statice, adica doar fisiere existente pe un server, ce asteapta sa fie cerute. in aceasta sectiune vom privi paginile de Web statice in detaliu. in sectiunea urmatoare vom examina continutul dinamic.

HTML, sau HyperText Markup Language, a fost proiectat sã poatã opera cu functionalitãtile multimedia ale WWW.

Limbajul de marcare permite transformarea oricãrui text Intr-un hipertext prin introducerea unor marcaje, care vor indica modul cum se efectueaza legãturile documentului, cum vor apãrea paginile documentului etc. Un document HTML poate fi fãcut public dacã este pe un calculator care are acces document fãcut public poate fi vãzut din orice punct al Internet-ului. Desi nu este optiunea cea mai fericitã, vom utiliza cuvantul tag pentru marcaj.

SGML, Standard Generalized Markup Language, pãrintele HTML-ului, a devenit, In 1986, standard ISO. Fiecare document SGML are asociat o definire a tipului de document (DTD) care defineste regulile pentru continutul documentului. Fiecare versiune de HTML a fost definitã Intr-un DTD.

HTML 1.0 si HTML+ au apãrut In 1990, respectiv 1993. 
HTML 2.0, apãrut In fost prima versiune standardizatã. Ea contine 49 de taguri.
HTML 3.0 a apãrut In 1995. Versiunea cuprindea extensii importante, cum ar fi marcaje pentru notatii matematice, bannere etc. In prezent nu mai este utilizat.
HTML 3.2, introdus In 1996, este considerat ca succesorul versiunii 2.0, incorporand o serie de taguri din HTML 3.0 ca si extensii Netscape.

Pe langa versiunea standardizatã, o serie de firme producãtoare de browsere (programele care permit vizualizarea documentelor) au creat propriile extensii. Sunt cunoscute extensiile Netscape si Microsoft, cele doua mari firme care-si disputã piata, extensii dintre care se vor alege cu sigurantã extensiile pentru versiunile ulterioare de HTML.

Prin hipertext se Intelege un document (evident In sensul utilizat In informatica: fisier creat printr-un editor, procesor etc) care contine, pe langa text (continutul clasic al unui document), graficã, imagini, animatie, Inregistrãri audio, legãturi cãtre alte documente. Un hipertext poate fi gandit Intr-un spatiu cu mai multe dimensiuni, fiecare axã reprezentand un alt mijloc de comunicare: text, audio, video etc.

Conceptul de hypertext a apãrut In iulie 1945 cand Vannevar Bush a imaginat, In articolul As we may think, scris pentru Atlantic Monthly, o masina care putea opera cu texte si grafice on-line.

In 1960, Th.H. Nelson (Computer Lib/Dream Machines) a unit termenul de hipertext cu cel de hipermedia, lucrarea lui influentand introducerea Web. In anii 1970, Nelson a initiat proiectul XANADU, orientat cãtre biblioteci digitale si sisteme hipertext, proiect nefinalizat Insã.

Dupã anii 1980, aparitia sistemelor de help In produsele Apple si Microsoft, sisteme care permit utilizatorilor sã navigheze prin selectãri de butoane sau termeni, au fãcut ca notiunea de hipertext sã devinã una obisnuitã, desi hipertextele respective nu aveau o complexitate foarte mare.

Hipertextul permite pãrãsirea modului traditional de citire a unui document: linie dupã linie, paginã dupã paginã etc. Legãturile activate produc o desfãsurare a documentului dupã nevoile utilizatorului plus posibilitatea de pãstrare a atentiei cititorului prin utilizarea legãturilor grafice, audio etc.

Paginile de Web sunt in prezent scrise intr-un limbaj numit HTML (HyperText Markup Language). HTML permite utilizatorilor sa produca pagini de Web care contin text, imagini si referinte la alte pagini de Web. HTML este un limbaj de marcare, un limbaj care descrie cum trebuie sa fie formatate textele. Limbajele de marcare contin comenzi explicite pentru formatare. Avantajul utilizarii unui limbaj de marcare fata de unul in care nu se utilizeaza marcarea explicita consta din faptul ca este simplu de scris un program de navigare care sa interpreteze comenzile de marcare. Prin standardizarea si includerea comenzilor de marcaj in fiecare fisier HTML, devine posibil ca orice program de navigare sa poata sa citeasca si sa formateze orice pagina Web.

O pagina Web corect formata contine o zona de cap si o zona de corp cuprinse intre marcajele (tag-urile) <html> si </html>, dar majoritatea programelor de navigare ignora absenta acestor marcaje. Capul este cuprins intre marcajele <head> si </head>, iar corpul intre marcajele <body> si </body>. Comenzile cuprinse intre aceste marcaje se numesc directive. Majoritatea marcajelor HTML au acest format, adica <marcaj> pentru a indica inceputul marcajului si </marcaj> pentru a marca sfarsitul. Majoritatea programelor de navigare au o optiune View Source (afisarea sursei). Selectarea acestei optiuni afiseaza pagina curenta in format HTML in loc de forma interpretata. Tabela 3.4 prezinta o selectie de marcaje uzuale HTML.

Figura 3.4: O selectie de marcaje uzuale HTML

HTML evolueaza continuu. in versiunile HTML 1.0 si 2.0 nu existau tabele, dar au fost adaugate in HTML 3.0. S¸i in HTML 4.0 au fost adaugate noi elemente. Acestea include elemente ce fac paginile mai accesibile utilizatorilor cu handicap, inglobarea obiectelor, suport pentru limbaje cu scripturi si multe altele.

3.5 Documente Web dinamice

Pana acum am vorbit despre modelul in care clientul transmite numele fisierului catre server, care apoi intoarce fisierul. La inceputul Web-ului, tot continutul era de fapt static in acest mod (doar fisiere). Totusi in ultimii ani, din ce in ce mai mult continutul a devenit dinamic, adica generat la cerere si nu doar stocat pe disc. Generarea de continut poate avea loc fie la server, fie la client. Sa examinam acum pe rand fiecare din aceste cazuri.

3.5.1 PHP

Generarea dinamica de pagini Web la server este necesara atunci cand un utilizator completeaza un formular cu diferite date pe Internet si apasa butonul Submit (Trimitere), se transmite un mesaj catre server, mesaj ce arata ca are in interior continutul unui formular, impreuna cu acele campuri completate de utilizator. Acest mesaj nu este numele unui fisier ce trebuie intors. in schimb, acest mesaj trebuie sa fie oferit unui program, sau script, pentru a fi procesat. De obicei, procesarea implica folosirea informatiilor oferite de utilizator pentru cautarea unei inregistrari intr-o baza de date de pe discul serverului si generarea unei pagini HTML personalizate pentru a fi trimisa inapoi clientului. De exemplu, intr-o aplicatie de comert electronic, atunci cand utilizatorul face un clic pe Mergi la casa, programul de navigare intoarce cookie-ul (Variabila cookie reprezinta una dintre solutiile implementate in limbaje de programare pentru pastrarea starii sesiunii.

Prin sesiune se intelege succesiunea de accesari ale unor pagini componente ale unui sit Web de catre un utilizator, in aceeasi fereastra a navigatorului. O sesiune se incheie in situatia in care utilizatorul inchide browser-ul Web.) ce contine produsele din cosul de cumparaturi, dar la server trebuie apelat un program, sau script, care proceseaza acest cookie si genereaza o pagina HTML ca raspuns.

Pagina HTML ar putea afisa un formular ce contine lista de produse din cos si ultima adresa de expediere cunoscuta a utilizatorului, impreuna cu o cerere de verificare a informatiilor si de specificare a modalitatii de plata. Etapele necesare pentru procesarea informatiei dintr-un formular HTML sunt ilustrate in figura 3.5.

Etapele reprezentate prin numerotare au urmatoarele semnificatii:

1. utilizatorul completeaza formularul,

2. formularul este transmis,

3. este trimis PHP-ului,

4. PHP-ul interogheaza baza de date,

5. inregistrarea este gasita,

6. PHP-ul construieste pagina,

7. pagina este intoarsa clientului,

8. pagina este afisata.

Figura 3.5: Etapele de procesare a informatiei dintr-un formular HTML

O modalitate des intalnita este de a ingloba mici scripturi in paginile HTML si a lasa serverul sa le execute pentru a genera pagina. Un limbaj popular pentru scrierea acestor scripturi este PHP (Hypertext PreProcessor).

PHP succede un produs mai vechi, numit PHP/FI. PHP/FI a fost creat de catre Rasmus Lerdorf In 1995, initial doar ca un simplu set de scripturi Perl pentru a urmari accesele la rezumatul sau online. El a denumit acest set de scripturi 'Personal Home Page Tools — Instrumente pentru paginile personale'. Deoarece era necesara mai multa functionalitate, Rasmus a scris o implementare mult mai larga In C, care era In stare sa comunice cu baze de date si dadea posibilitate utilizatorilor sa dezvolte simple aplicatii Web dinamice.

Rasmus a hotarat sa lanseze codurile – sursa ale PHP/FI pentru ca oricine sa le poata vedea, utiliza, sa poata corecta erorile din ele si sa Imbunatateasca codul-sursa.

PHP/FI, care se descifra ca Personal Home Page / Forms Interpreter — Interpretor al paginilor personale / al formularelor, includea unele functionalitati de baza ale PHP pe care Il cunoastem astazi. El poseda variabile asemanatoare cu cele din Perl, interpretare automata a variabilelor din formulare si sintaxa inclusa In HTML. Insasi sintaxa era similara cu cea din Perl, cu toate ca era mult mai limitata, simpla si Intr-un anumit fel inconsistenta.

In 1997, PHP/FI 2.0, a doua re-scriere a implementarii In C, avea un cult din cativa mii de utilizatori din lume (estimat), cu aproximativ 50,000 domenii, care raportau ca Il au instalat, ceea ce reprezenta aproximativ 1% din toate domeniile din Internet. Cu toate ca erau cateva persoane, care contribuiau portiuni de coduri-sursa In acest proiect, el era totusi In mare masura un proiect al unui singur om.

PHP/FI fost oficial lansat doar In noiembrie 1997, dupa ce si-a petrecut o buna parte a vietii In versiuni beta. In scurt timp el a fost Inlocuit de versiunile alfa ale PHP 3.0.

PHP fost prima versiune care se aseamana mult cu PHP, asa cum Il cunoastem astazi. El a fost creat de catre Andi Gutmans si Zeev Suraski In 1997 ca o re-scriere completa, dupa ce ei au descoperit ca PHP/FI 2.0 avea o capacitate foarte redusa pentru a dezvolta o aplicatie de comert electronic, asupra carei ei lucrau Intr-un proiect al Universitatii. Intr-un efort de a coopera si a continua dezvoltarea PHP/FI cu baza existenta de utilizatori, Andi, Rasmus si Zeev au decis sa coopereze si au anuntat PHP 3.0 In calitate de succesor oficial al PHP/FI 2.0, iar dezvoltarea PHP/FI fost In mare masura stopata.

Unul din cele mai mari avantaje ale PHP 3.0 erau facilitatile sale largi de extindere. In afara de faptul ca oferea utilizatorilor finali o infrastructura solida pentru o multitudine de baze de date, protocoale si interfete API, facilitatile de extindere ale PHP 3.0 au impulsionat zeci de programatori sa se alature si sa Inainteze noi module de extindere. Discutabil, aceasta a fost cheia succesului enorm al PHP 3.0. Alte facilitati de baza introduse In PHP 3.0 au fost sustinerea sintaxei orientate pe obiecte si o sintaxa a limbajului mult mai puternica si consistenta.

Noul limbaj a fost lansat sub un nou nume, care excludea implicarea unei utilizari personale limitate, pe care o avea numele PHP/FI 2.0. El a fost numit pur si simplu 'PHP', sensul fiind un acronim recursiv – PHP: Hypertext Preprocessor — Preprocesor al Hipertextului.

Spre sfIrsitul anului 1998, PHP a atins un numar de zeci de mii de utilizatori (estimat) si sute de mii de site-uri Web raportau ca Il au instalat. In punctul sau de varf, PHP fost instalat aproximativ pe 10% din toate serverele Web din Internet.

PHP fost lansat oficial In iunie 1998, dupa ce a petrecut aproximativ 9 luni In faza de testare publica.

PHP 4

Catre iarna anului 1998, la scurt timp dupa ce PHP fost lansat oficial, Andi Gutmans si Zeev Suraski au Inceput lucrul asupra rescrierii nucleului PHP. Scopurile reproiectarii erau de a Imbunatati performanta aplicatiilor complexe si de a Imbunatati modularitatea bazei de coduri-sursa ale PHP. Astfel de aplicatii puteau fi realizate datorita noilor facilitati din PHP 3.0, precum si a sustinerii unei game largi de baze de date si interfete API ale tertilor producatori, Insa PHP 3.0 nu fusese proiectat sa lucreze cu astfel de aplicatii complexe In mod eficient.

Noul nucleu, denumit 'Zend Engine' (compus din numele autorilor, Zeev si Andi), a facut fata cerintelor de proiect cu succes, si a fost prezentat pentru prima data la mijlocul anului 1999. PHP 4.0, bazat pe acest nucleu si In cuplu cu o gama larga de facilitati noi a fost lansat oficial In mai 2000, aproape doi ani dupa predecesorul sau, PHP 3.0. Suplimentar la performanta Imbunatatita substantial In aceasta versiune, PHP inclus alte facilitati de baza, cum ar fi sustinerea mult mai multor servere Web, sesiunilor HTTP, buferizarea iesirii, metode mai securizate de gestionare a datelor introduse de utilizatori si cateva constructii noi ale limbajului.

Astazi PHP este utilizat de sute de mii de programatori (estimat) si cateva milioane de site-uri raporteaza ca Il au instalat, ceea ce alcatuieste peste 20% din toate domeniile din Internet.

Echipa de dezvoltare a PHP include zeci de programatori, precum si alte zeci de persoane ce lucreaza asupra proiectelor asociate cu PHP, cum ar fi PEAR si proiectul de documentare.

PHP 5

PHP fost lansat In iulie 2004 dupa o lunga perioada de dezvoltare si cateva lansari preliminare. El este condus de nucleul sau, Zend Engine 2.0 cu un nou model de obiecte si o duzina de alte noi facilitati.

Aceasta se bazeaza pe veriunea motorului Zend si asigura imbunatatiri deosebite in ceea ce priveste implementarea POO (programare orientata pe obiect).

Astazi, in Web-ul public sunt mai mult de 14 milioane de domenii, respectiv 1,3 milioane de adrese IP care utilizeaza PHP. Siturile unor corporatii de prima marime folosesc acest limbaj. Interpretorul PHP poate fi utilizat impreuna cu majoritatea serverelor Web folosite astazi, cum ar fi: Apache, IIS (Internet Information Server) de etc.

Limbajul PHP este orientat in special catre programarea pentru server, adica interpretorul PHP poate realiza urmatoarele operatii: poate primi, analiza si folosi datele colectate de la utilizatori, poate transmite interogari SQL unui server de baze de date (asa cum este MySQL) prin intermediul unor functii dedicate si apoi analiza rezultatele obtinute, poate genera pagini Web pe baza rezultatelor interogarilor etc. in concluzie, PHP este cel mai potrivit pentru a fi utilizat ca platforma de programare Web pentru server, deoarece:

• apartine categoriei de software open source;

• poate fi utilizat pe mai multe platforme software;

• se poate conecta la diverse tipuri de baze de date;

• include numeroase extensii.

Desi PHP este usor de utilizat, este de fapt un limbaj de programare puternic, orientat pe interfatarea dintre Web si o baza de date a serverului. PHP este un program public (open source) si disponibil gratuit. A fost conceput special sa lucreze bine cu Apache (Apache este cel mai popular si unul dintre cele mai rapide, eficiente si functionale servere Web.

Acest server este dezvoltat de Apache Software Foundation. Serverul Web Apache a fost dezvoltat initial pentru platforme UNIX si Linux. Ulterior, a fost portat si pe platforma Windows), care este de asemenea gratuit si care este cel mai larg utilizat server de Web din lume.

3.6 Baze de date

3.6.1 Fundamente teoretice

O baza de date este o colectie de obiecte folosite pentru culegerea, memorarea, organizarea, regasirea, prelucrarea si administrarea unui volum mare de date. Aplicatiile de baze de date se caracterizeaza in primul rand prin faptul ca majoritatea prelucrarilor care se fac sunt cele de memorare si regasire a datelor, efectuate asupra unor volume mari de date. in general, operatiile de prelucrare sunt destul de simple, spre deosebire de alte domenii ale informaticii.

De exemplu, in domeniul tehnic predomina operatiile de calcul cu o complexitate destul de ridicata. Cea mai frecventa operatie care apare intr-o aplicatie de baze de date este aceea de consultare a datelor: intr-adevar, pentru ce cream o baza de date, daca nu o folosim? Alte operatii care apar pe langa cea de consultare sunt: introducerea unor noi date, modificarea unor date existente si stergerea unor date perimate.

Prin organizarea datelor in baze de date se asigura centralizarea acestora, fapt care

conduce la o serie de avantaje:

• 1. Reducerea redondantei datelor: daca fiecare aplicatie lucreaza cu fisiere proprii este posibil ca aceleasi date sa apara de mai multe ori in fisiere diferite. in cazul centralizarii datelor, administratorul bazei de date poate organiza datele, astfel incat toate aplicatiile sa foloseasca aceleasi fisiere. Astfel, se obtine o economie importanta de spatiu de memorie, si nu doar atat.

• 2. Evitarea inconsistentei datelor: duplicarea datelor in fisiere diferite poate crea probleme la actualizare: este posibil ca prin actualizari partiale (din omisiune sau datorita unor accidente neprevazute) sa avem valori diferite pentru una si aceeasi entitate (de exemplu, un client poate avea mai multe nume si nu mai stim care este cel real).

• 3. Posibilitatea partajarii datelor: se refera la posibilitatea utilizarii datelor in comun de catre mai multi utilizatori si la posibilitatea dezvoltarii de noi aplicatii, folosind datele deja existente.

• 4. incurajarea utilizarii unor standarde: administratorul bazei de date poate impune alinierea la anumite standarde, fapt care permite ulterior un transfer rapid al datelor de pe o platforma (hardware sau software) pe alta.

• 5. Posibilitatea protejarii datelor: administratorul bazei de date, avand un control centralizat al datelor, poate introduce restrictii diferite de acces la date pentru fiecare categorie de utilizatori.

• 6. Mentinerea integritatii datelor: baza de date trebuie sa contina in permanenta date corecte. Aceasta presupune date coerente si plauzibile, fapt care poate fi garantat de procedurile de validare utilizate.

• 7. Independenta datelor: intr-o aplicatie scrisa intr-un limbaj clasic de programare, cunostintele despre structura datelor si tehnicile de accesare a acestora sunt ”zidite” in programe. Orice schimbare in modul de reprezentare sau accesare face imposibil a utilizarea aplicatiei: trebuie rescrise toate programele care refera aceste date.

Independenta datelor, garantata de utilizarea bazelor de date, presupune independenta aplicatiei de modul de reprezentare a datelor si de tehnicile de acces utilizate.

In continuare am sa prezint arhitectura unei baze de date cu ajutorul figurii 3.7.

Figura 3.7: Arhitectura unei baze de date

Modelul extern este cel mai apropiat de utilizator si cuprinde descrierea structurii logice a datelor referitoare la aplicatiile fiecarui utilizator. Observam ca fiecare utilizator vede altfel baza de date, desi ea este unica si este memorata intr-un mod ascuns tuturor.

Modelul conceptual cuprinde descrierea structurii datelor si a legaturilor dintre acestea pentru intreaga baza de date. Modelul conceptual este independent de modul de memorare a datelor, fapt care garanteaza independenta datelor. Modelul intern defineste modul de memorare a datelor si tehnicile de accesare a acestora. La acest nivel se defineste, pentru fiecare camp, modul de reprezentare interna (daca este sir de caractere, intreg binar, zecimal extern, boolean etc.). Baza de date apare ca o colectie de fisiere avand diferite moduri de

organizare (liste inlantuite, arbori etc.), fisierele continand datele care formeaza baza de date. Acest nivel este cel mai apropiat de sistemul de operare. Scopurile urmarite in alegerea modelului intern sunt minimizarea spatiului utilizat si a timpilor de acces la date.

Modelul conceptual cel mai des folosit de sistemele de gestiune a bazelor de date (SGBD) pentru stocarea datelor este modelul relational. Modelul relational a fost dezvoltat de catre E.F. Codd de anii 70. Sistemul software care permite gestionarea bazelor de date relationale se numeste sistem de gestiune a bazelor de date relationale (SGBDR) sau, in limba engleza, Relational DataBase Management System (RDBMS).

O baza de date relationala este alcatuita, in principiu, din mai multe tabele (tables) intre care se pot stabilli relatii. Un tabel contine inregistrari (records), numite si randuri (rows). Oinregistrare este alcatuita din mai multe campuri (fields), numite si coloane (columns) sau atribute.

Pentru exploatarea bazelor de date relationale este utilizat SQL (Structured Query Language), adica limbajul de interogare structurat. SQL este cel mai utilizat limbaj standardizat pentru accesul la bazele de date, permitand stocarea, regasirea si modificarea datelor din bazele de date relationale.

Mai exact, limbajul SQL permite efectuarea urmatoarelor operatii:

• crearea bazelor de date si a tabelelor;

• modificarea structurii tabelelor;

• indexarea tabelelor;

• stabilirea unor relatii intre tabelele componente ale unei baze de date;

• actualizarea continutului tabelelor componente ale bazelor de date;

• interogarea tabelelor componente ale bazelor de date;

• controlul (adaugarea sau revocarea) drepturilor de acces pentru utilizatori asupra bazelor de date, asupra unor tabele sau asupra unor campuri ale acestor tabele aflate in componenta bazelor de date;

• configurarea unor elemente legate de securitatea sistemului.

Limbajul SQL a fost conceput in laboratoarele IBM la inceputul anilor 70, sub numele seequel (sau ess-que-ell). in anul primit numele SQL, care este acronimul pentru numele sau complet (Structured Query Language). in anul devenit standard ANSI (American National Standards Institute), iar in anul devenit standard ISO (International

Organization for Standardization). ANSI realizeaza imbunatatirea permanenta a limbajului.

Exista destul de multe sisteme de gestiune a bazelor de date relationale. in ceea ce priveste provenienta si costurile, acestea sunt de doua tipuri:

• sisteme comerciale (proprietare): Oracle, Microsoft SQL Server, DB2 etc.

• sisteme cu sursa deschisa (open source): MySQL, PostgreSQL etc.

3.6.2 MySQL

Cel mai popular SGBDR cu sursa deschisa este MySQL. Acest sistem de gestiune a bazelor de date este scris in C si C++, fiind testat cu numeroase compilatoare, pe numeroase platforme. Are implementat suportul pentru urmatoarele tipuri de date: numeric, data si timp, sir de caractere. MySQL este un server de baze de date SQL rapid, robust, multi-fir (multi-threaded), adica utilizeaza fire de excutie concurente si multi-utilizator (multi-user), adica poate deservi simultan mai multe conexiuni cu utilizatorii, fiind recomandat, datorita acestor caracteristici, sa furnizeze un back-end in aplicatiile Web dinamice.

Exista numeroase interfete de acces la bazele de date MySQL din diverse limbaje si medii de programare.

intre acestea amintim PHP-ul si aplicatia phpMyAdmin, care poate fi descarcata de la adresa http://www.phpmyadmin.net/home page/index.php.

Putem utiliza cu mare eficienta si usurinta aceasta aplicatie, pentru gestionarea bazelor de date, a tabelelor si a drepturilor de acces, dar si pentru executia instructiunilor SQL. Programatorul isi poate crea propriile interfete de acces la bazele de date MySQL, deoarece PHP dispune de functii puternice dedicate interactiunii directe cu sistemul MySQL.

Figura 3.8: MySQL utilizeaza arhitectura client-server

Figura 3.8: MySQL utilizeaza arhitectura client-server

MySQL utilizeaza ca si alte SGBD-uri arhitectura client-server (figura 3.8). O masina care doreste sa proceseze interogari asupra bazelor de date MySQL trebuie sa ruleze un server MySQL (acesta este, in general, mysqld) care este responsabil cu traficul de tip incoming/outging in bazele de date. Serverul MySQL ”asculta” posibilele cereri de conexiune ale clientilor pe portul implicit 3306. Prin client MySQL se intelege orice aplicatie capabila sa trimita interogari serverului MySQL (incepand cu un banal script scris in PHP, continuand cu clientul in linie de comanda mysql, care este instalat o data cu distributia MySQL, si ajungand la aplicatii complexe, asa cum este clientul cu interfata grafica MySQLGUI).

MySQL este unul dintre cele mai stabile sisteme de gestiune a bazelor de date de pe piata, astfel incat numeroase corporatii il utilizeaza ca parte a srategiei lor de dezvoltare a aplicatiilor mission-critical business. Un alt motiv pentru care MySQL poate fi folosit cu succes in acest tip de aplicatii este acela ca in tabelele utilizate de acest sistem, incepand cu versiunea 3.23 (tabele in format MyISAM), pot fi stocate pana la 8 milioane de Terabytes de date.

In concluzie, putem enumera urmatoarele avantaje ale utilizarii sistemului MySQL:

• viteza mare de acces la date;

• gratuitate;

• securitate ridicata;

• portabilitate.

Desi este folosit foarte des Impreuna cu limbajul de programare PHP, cu MySQL se pot construi aplicatii In orice limbaj major. Exista multe scheme API disponibile pentru MySQL ce permit scrierea aplicatiilor In numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Java, Perl, PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip spefic API. O interfata de tip ODBC denumita MyODBC permite altor limbaje de programare ce folosesc aceasta interfata, sa interactioneze cu bazele de date MySQL cum ar fi ASP sau Visual Basic. In sprijinul acestor limbaje de programare, unele companii produc componente de tip COM/COM+ sau .NET (pentru Windows) prin intermediul carora respetivele limbaje sa poata folosi acest SGBD mult mai usor decat prin intermediul sistemului ODBC. Aceste componente pot fi gratuite (ca de exemplu MyVBQL) sau comerciale.

Licenta GNU GPL nu permite Incorporarea MySQL In softuri comerciale; cei care doresc sa faca acest lucru pot achizitiona, contra cost, o licenta comerciala de la compania producatoare, MySQL AB.

MySQL este componenta integrata a platformelor LAMP sau WAMP (Linux/Windows-Apache-MySQL-PHP/Perl/Python). Popularitatea sa ca aplicatie web este strans legata de cea a PHP-ului care este adesea combinat cu MySQL si denumit Duo-ul Dinamic. In multe carti de specialitate este precizat faptul ca MySQL este mult mai usor de invatat si folosit decat multe din aplicatiile de gestiune a bazelor de date, ca exemplu comanda de iesire fiind una simpla si evidenta: „exit” sau „quit”.

Pentru a administra bazele de date MySQL se poate folosi modul linie de comanda sau, prin descarcare de pe internet, o interfata grafica: MySQL Administrator si MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicatia gratuita, scrisa In PHP, phpMyAdmin.

MySQL poate fi rulat pe multe dintre platformele software existente: AIX, FreeBSD, GNU/Linux, Mac OS X, NetBSD, Solaris, SunOS, Windows 9x/NT/2000/XP/Vista.

Capitolul 4

Analiza si proiectarea aplicatiei

Exista o multime structurata de activitati necesare pentru a dezvolta o aplicatie, si anume: analiza, proiectarea si implementarea, verificarea, validarea si evolutia.

Analiza este procesul de stabilire a serviciilor necesare si a constrangerilor asupra dezvoltarii si operarii aplicatiei. Proiectarea si implementarea aplicatiei este procesul de a converti specificatiile sistemului intr-un sistem executabil.

Proiectarea inseamna realizarea unei structuri de aplicatie care sa rezolve specificatiile, pe cand implementarea este translatarea acestei structuri intr-un program executabil.

Activitatile de proiectare si implementare sunt strans legate si deseori se suprapun. Aceste doua etape vor fi prezentate pe larg in capitolele urmatoare.

Verificarea si validarea trebuie sa arate daca o aplicatie este conform cu specificatiile si daca respecta cerintele clientului. Implica procese de verificare, revizuire si testare a sistemului.

Testarea sistemului presupune executia sistemului intr-un caz de utilizare cu

date reale. Ultima activitate de dezvoltare este evolutia, care arein vedere faptul ca aplicatia este flexibila si se poate schimba. Pe masura ce se schimba cerintele , sistemul software trebuie si el sa evolueze si sa se modifice. Chiar

daca a existat o separare intre dezvoltare si evolutie aceasta este tot mai slaba, deoarece tot mai putine aplicatii sunt complet noi.

4.1 Problematica abordata

Aplicatia prezentata in aceasta lucrare este o aplicatie Web care poate eficientiza si usura munca depusa de catre personalul medical in gestiunea activitatiilor de programare a utilizatorilor. Mai mult, prin intermediul aplicatiei persoanele care au nevoie de analize medicale au oricand acces la informatiile privind tipul analizei dorite cat si pretul acesteia. Aceste elemente sunt necesare daca vorbim de o aplicatie web care trebuie sa fie cat mai eficienta. Iata, care sunt cele mai importante functionalitati pe care aplicatia le pune la dispozitia utilizatorilor:

• accesarea paginii Web este posibila si de catre simplii vizitatori ai site-ului, care pot gasi o descriere detaliata a analizelor medicale desfasurate de aceasta clinica;

• accesarea paginii web poate fi facuta de catre utilizator si de catre administrator in acelasi timp;

• exista cont de administrare accesibil prin nume de utilizator cat si parola (contul administrator);

• posibilitatea de stocare a informatiilor despre utilizatori;

• posibilitatea de accesare in timp real a programarilor facute de catre utilizatori;

• administratorul aplicatiei poate avea acces la urmatoarele optiuni: adaugarea, modificare si stergerea de datelor personale si de utilizator, cat si analizelor puse la dispozitie, date referitoare la acestea cat si pretul acestora;

4.2 Analiza

in acest subcapitol am sa descriu cerintele care au stat la baza aplicatiei care face

obiectul acestei lucrari. O cerinta poate varia de la o fraza abstracta care descrie un serviciu sau o constrangere de sistem, pana la o specificare matematica detaliata. Cerintele sunt de doua tipuri, si anume:

• cerinte utilizator: sunt fraze in limbaj natural si diagrame ale serviciilor pe care le ofera aplicatia;

• cerinte de sistem: sunt structurateintr-un document cu descrieri detaliate ale functiilor aplicatiei, servicii si constrangeri de operare. Definesc ceea ce va fi implementat.

Aceste cerinte pot fi descrise cu ajutorul unor sabloane de specificatii (descrierea detaliata a etapelor pe care un utilizator le parcurge pentru realizarea unei activitati), diagrame de secventa (arata secventa evenimentelor care apar in timpul unei interactiuni a utilizatorului cu sistemul) sau use-case-uri (diagrame care reprezinta cazurile de utilizare a aplicatiei pentru un anumit utilizator).

Ultimele doua sunt reprezentari grafice prin care putem usura modelarea si intelegerea activitatilor utilizatorilor si a cerintelor. Astfel in continuare am sa folosesc aceste doua reprezentari.

Cerintele de sistem in cazul aplicatiei prezentate sunt de doua feluri. Cerintele de sistem ale server-ului si ale calculatorului client dupa cum am prezentat si in figura 4.2.1.

Cerintele de sistem pentru server sunt impuse de programele folosite. Pe servertrebuie instalate una dintre versiunile aplicatiei Apache HTTP Server, serviciul MySQL si PHP-ul. Cerinta de sistem a calculatorului client este una singura: trebuie sa existe o conexiune Internet prin care se poate accesa pagina Web.

Din nou putem deduce concluzia: folosirea setului de progame Apache, MySQL, PHP si generarea dinamica a paginii Web pe partea de server aduce un avantaj deosebit clientului: nu are nevoie decat de o conexiune la Internet si de adresa site-ului pentru a folosi aplicatia. Programele si baza de date din spatele aplicatiei sunt furnizate de server.

Figura 4.2.1: Cerinte de sistem

In continuare am sa prezint cerintele de utilizator care stau la baza aplicatiei.

Pentru a intelege cat mai bine functionarea aplicatiei, aceste cerinte vor fi grupate in patru categorii:

• cerinte privind activitatea administratorului aplicatiei;

• cerintele legate de activitatea profesorului si a studentului;

• erori posibile in aplicatie;

• cerintele pentru vizitatorii site-ului.

Similar Posts