FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT IOAN SLAVICI TIMIȘOARA [305553]

FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT „IOAN SLAVICI” TIMIȘOARA

UNIVERSITATEA „IOAN SLAVICI” [anonimizat].univ.dr.ing. Gabriela -Victoria MNERIE

ABSOLVENT: [anonimizat]

2017

FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT „IOAN SLAVICI” TIMIȘOARA

UNIVERSITATEA „IOAN SLAVICI” [anonimizat].univ.dr.ing. Gabriela -Victoria MNERIE

ABSOLVENT: [anonimizat]

2017

UNIVERSITATEA DIN ORADEA

FACULTATEA de Inginerie Electrică și Tehnologia Informației

DEPARTAMENTUL Calculatoare și tehnologia informației

TEMA

Proiectul de Finalizare a studiilor a student: [anonimizat]

1). Tema proiectului de finalizare a studiilor:

ÎMBINAREA BAZELOR DE DATE CU TEHNOLOGIILE ONLINE

2). Termenul pentru predarea proiectului de diplomă 15 iunie 2017

3). Elemente inițiale pentru elaborarea proiectului de finalizare a studiilor

planul lucrării;

materialele bibliografice;

aplicația.

4). Conținutul proiectului de finalizare a studiilor :

Capitolul I – [anonimizat] – [anonimizat] V – AVANTAJELE R

[anonimizat]

5). Material grafic:

scheme;

grafice,

poze.

6). Locul de documentare pentru elaborarea proiectului de diplomă:

[anonimizat]

7). Data emiterii temei: noiembrie 2016

Coordonator științific

Conf.univ.dr.ing. Gabriela -Victoria MNERIE

REFERAT

PRIVIND PROIECTUL DE DIPLOMĂ

A

ABSOLVENT: [anonimizat] / ABSOLVENT: [anonimizat] : [anonimizat] 2017

Titlul proiectului

ÎMBINAREA BAZELOR DE DATE CU TEHNOLOGIILE ONLINE

Structura proiectului

Capitolul I – [anonimizat] – [anonimizat] V – [anonimizat] (finalizare a studiilor), [anonimizat], actualitate, [anonimizat] a fi atinse. [anonimizat] “Ioan Slavici” Timișoara. Într-un domeniu în continuă evoluție, s-a [anonimizat], menține actual dezideratul de a [anonimizat] o reală importanță.

Aprecieri asupra proiectului (se va menționa: [anonimizat], calitatea și diversitatea surselor consultate; modul în care absolvent: [anonimizat], în număr de 19, s-a asigurat o calitate și o [anonimizat].

[anonimizat]tru a evidenția principalele surse și titluri bibliografice folosite în lucrare

(se va menționa: opțional locul de documentare și modul în care absolventul a realizat cercetarea menționându-se contribuția autorului)

Documentarea s-a făcut la biblioteca universității, în laboratorul de calculatoare a Universității Ioan Slavici din Timișoara precum și în cadrul locului de muncă.

Concluzii (coordonatorul proiectului trebuie să aprecieze valoarea proiectului întocmit, relevanța studiului întreprins, competențele absolventului, rigurozitatea pe parcursul elaborării proiectului, consecvența și seriozitatea de care a dat dovadă absolventul pe parcurs)

………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………

………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..

Redactarea proiectului respectă ………………………………………………….cerințele academice de redactare (părți, capitole, subcapitole, note de subsol și bibliografie).

Consider că proiectul îndeplinește/ nu îndeplinește condițiile pentru susținere în sesiunea de Examen de LICENȚĂ (finalizare a studiilor) din IULIE 2017 și propun acordarea notei ………………

Oradea,

Data Coordonator științific

Conf.univ.dr.ing. Gabriela -Victoria MNERIE

CUPRINS

Introducere……………………………………………………………….6

Capitolul 1. Internet. Fundamente teoretice………………………………..8

Scurt istoric…………………………………………………………….8

Arhitectura Internet…………………………………………………….11

Protocolul Internet…………………………………………………….13

Protocolul TCP…………………………………………………………15

Capitolul 2. Tehnologii si aplicatii folosite…………………………………..18

World Wide Web……….……………………………………..……….…..18

URL………………………………………………………………………19

Protocolul HTTP…………………………………………………………21

Documente Web statice. HTML………………………………………….25

Documente Web dinamice…………………………………………………28

PHP……………………………………………………………….28

Baze de date……………………………………………………………….32

Fundamente teoretice……………………………………….………32

MySQL……………………………………………………………36

Capitolul 3 – Analiza si proiectarea a plica¸tiei…………………………..……42

Problematica abordata……………………………………………….……..44

Analiza…………………………………………………………….………..45

Proiectare si implementare………………………………………..…………48

Baza de date…………………………………………….…………..50

PHP…………………………………………………..……………..52

Capitolul 4 – Utilizarea aplica¸tiei……………………………..………………53

Instalare si lansare…………………………………………….……………….54

Utilizare………………………………………………………………………..56

Modulul Vizitator…………………………………………………….57

Modulul Administrator……………………………………………….59

Concluzii, Bibleografie………………………………….……..……………………60

INTRODUCERE

Aceasta lucrare isi propune sa prezinte o aplicatie Web care sa faciliteze programarea analizelor unei clinici medicale, aplicatie realizata in limbajul HTML si limbajul PHP:

Hypertext Processor, acesta fiind unul dintre cele mai utilizate servere de aplicatii Web in prezent, pe plan mondial cat si local. El functioneaza in conjunctie cu cel mai popular server de Web: Apache.

Aceste aplicatii trebuie sa fie considerate “complete” din punctul de vedere al etapelor de analiza, proiectare, implementare si mentinere a unui produs software.

In prezent, continutul informational din intreaga lume este convertit la o forma digitala, facand astfel informatiile disponibile oricui, oriunde si oricand. In vremurile contemporane, Internetul devine incet o componenta esentiala in vietile noastre, fiind folosit in cele mai vaste domenii de activitate. Prin intermediul Internetului, a serviciilor oferite de acesta, multe dintre activitatile pe care noi le intreprindem pot fi usurate si evident eficientizate. O activitate similara, care poate fi imbunatatita / modificata prin folosirea serviciilor oferite de Internet, este si obtinerea unui serviciu medical respectiv al unui rezultat on line.

Aplicatia Web este solutia ideala care poate duce la eficientizarea, grabirea si usurarea obtinerii unei programari pentru un serviciu medical si a unor rezultate evitand deplasarea pentru o programare. Aceasta aplicatie Web trebuie sa includa si sa ofere urmatoarele functionalitati; [1]

• 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

siguranta si confidentialitate;

Aceasta lucrare este structurata in patru capitole, fiecare din ele avand mai multe subcapitole, si o lista de referinte bibliografice la sfarsit.

Capitolul 1 va contine un scurt istoric despre Internet si prezentarea structurii acestuia, dupa care trateaza fundamentele teoretice care stau la baza protocoalelor Internet si TCP.[3]

Capitolul 2 se refera la tehnologiile si aplicatiile folosite in cadrul paginii Web care face in mod evident 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 3 explica analiza si proiectarea aplicatiei. Sunt prezentate amanuntit toate elementele care stau la baza aplicatiei si anume: problematica abordata, baza de date si fisierele programului.

Capitolul 4 va prezenta instalarea si utilizarea aplicatiei.

CAPITOLUL 1

INTERNETUL. FUNDAMENTE ISTORICE

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

1.1. Scurt istoric

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

In anul 1957 se va infiinta Agentia de cercetare ARPA (Advanced Research Projects Agency) la Departamentul Apararii, ca un raspuns la lansarea primului satelit artificial al Pamantului de catre URSS. Aceasta agentie avea ca scop realizarea de cercetari in domeniul spatial. [5]

In anul 1960, Douglas Engelbart [5] va propune un prototip pentru OnLine System (NLS), care va utiliza legaturile pentru parcurgerea documentelor. In anul 1962, J.C.R. Licklider [10] si W. Clark de la MIT (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 se leaga de numele unor cercetatori ca Leonard Kleinrock [9], Paul Baran, Donald Davies si Roger Scantlebury – ultimii doi de la NPL (National Physical Laboratory, Middlesex, UK). 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 incepe 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 niste centre de cercetare universitare si industriale.

Datorita acestor eforturi facute in domeniul cercetarii si de factorii implicati in proiectul supervizat de ARPA si achizitionarii unor calculatoare IMP (Interface Message Processor), la sfarsitul anului 1969 va incepe 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 la UCLA va 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 sunt 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.[6]

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 suita 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 la ARPANET 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.[12]

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 la Centrul European 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 la National Center for Supercomputing Applications.

In acel moment erau in functiune circa 50 de servere Web. La 23 februarie 1993, Romania 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 la Geneva 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.[10]

1.2 Arhitectura Internet

In aceasta sectiune am sa va prezint structura Internet-ului de astazi. Din cauza multor fuziuni intre diversele companii de telefoane si companii ISP (Internet Service Provider), lucrurile s-au complicat si este de cele mai multe ori dificil de specificat care sunt atributiile fiecaruia. In concluzie aceasta descriere va fi simplificata in raport cu realitatea efectiva. Imaginea de ansamblu este prezentata in figura 1.1.

Sa incepem descrierea cu sistemul propriu al clientului. Sa presupunem ca acest client suna la ISP-ul 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.[13]

Daca pachetul e destinat unei gazde deservite direct de catre reteaua ISP, pachetul este livrat direct gazdei. In acest fel, el va fi livrat in 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 firme de servere (calculatoare care pot servi mii de paginiWeb pe secunda) sunt conectate adeseori direct la nivelul backbone-ului (coloanei vertebrale). Daca un pachet trimis in coloana vertebrala va fi destinat unui ISP sau unei companii deservite de aceeasi coloana, el va fi transmis celui mai apropiat ruter. In orice caz exista multe astfel de coloane vertebrale in intreaga lume, astfel incat exista sanse ca un pachet sa poata trece intr-o coloana concurenta. Pentru a oferi posibilitatea 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. [15]

Un “NAP” este o incapere plina cu rutere, cel putin unul destinat pentru fiecare coloana vertebrala conectata. O retea locala a incaperii conecteaza toate aceste rutere, astfel incat pachetele sa poata fi retransmise din orice coloana in orice alta coloana. In afara de interconectarea NAP- urilor, coloanele vertebrale de dimensiuni mari au o sumedenie de conexiuni directe intre ruterele lor, tehnica denumita “Conectare private” (private peering). De asemenea trebuie mentionat ca anumite companii si-au interconectat toate retelele interne existente, folosind de multe ori aceleasi tehnologii ca si “Intranet-ul”. Aceste “intranet”-uri sunt accesibile de cele mai multe ori doar din interiorul companiei.

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., denumit “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 de transport preia siruri de date si le divizeaza 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, urmand a fi eventual fragmentata in unitati mai mici pe drum. Cand toate bucatile ajung in final 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). Ele s- au dovedit a fi un mod foarte eficient pentru a documenta si distribuii rezultatele cercetarii efectuate de creatorii Internet-ului si au devenit, intre 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 va voi prezenta partile semnificative ale acestui 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) ori pana la destinatie. Protocolul IP va implementa 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. [8]

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 (in special in cazul portilor), contin anumite proceduri ce permit luarea unor decizii de rutare si alte facilitati. Protocolul IP trateaza fiecare datagrama ca o entitate independenta, fara legaturi cu alte datagrame. Nu exista legaturi sau circuite logice (virtuale sau de alta natura).[2]

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. El 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 correct pentru-ca datele pot contine erori.

Daca verificarea esueaza, datagrama este ignorata de entitatea care detecteaza eroarea. Protocolul IP nu ofera o facilitate de comunicare sigulara. Nu se face controlul erorilor pentru date, ci doar pentru antet. [10]

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.

Protocolul TCP

Transmission Control Protocol (TCP) este protocolul folosit de Internet la nivelul de 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 tot mai important in domeniile militare, guvern, civil. RFC-ul 793 se axeaza in mod special pe cerintele de comunicare intre calculatoare in domeniul militar, viguroase in prezenta unor comunicatii pe care nu te poti baza, disponibilitatea in cazul congestiei, dar multe dintre aceste probleme se regasesc si in sectorul guvernamental 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 ierarhie de protocoale in crestere 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. Au fost facute foarte putine presupuneri in privinta increderii protocolului de comunicare sub stratul TCP.

TCP isi propune sa obtina un serviciu simplu de transmitere de datagrame, posibil 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. El 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 se ocupa de orice fragmentare sau asamblare a segmentelor TCP necesare transportului si livrarii prin retele multiple si porti interconectate. Protocolul Internet va 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.[10]

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 fie absolut 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”.

O asemenea impingere (”Push”) determina TCP-ul sa trimita prompt datele pana la punctul destinatarului. Punctul exact din care 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. La aces lucru se ajunge asignand o secventa ordonata de numere fiecarui octet transmis, iar la TCP-ul 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 aranja in ordine corecta segmentele care ar fi putut fi primate intr-o ordine aleatoare si pentru a elimina duplicatele. [11]

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

– 13 –

CAPITOLUL 2

TEHNOLOGII ȘI APLICATII FOLOSITE

World Wide Web

Web-ul este un context arhitectural pentru accesul la documente, raspandite pe mii de masini si calculatoare din Internet, intre care exista legaturi. In nu mai mult de 10 ani, el 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 bogata si plina de culoare, usor de utilizat de catre incepatori si in acelasi timp ofera o vasta cantitate de informatie. Web-ul, cunoscut ca si WWW (World Wide Web) din punctul de vedere al utilizatorului, consta dintr-o colectie mareata de documente sau pagini de Web (Web pages).[9]

Fiecare pagina poate contine legaturi (indicatori) la alte pagini, aflate oriunde pe mapamond. Utilizatorii pot alege o legatura prin executia unui click care ii va aduce la pagina indicata de legatura. Procesul 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 fi vazute cu ajutorul unui program de navigare (browser). Internet Explorer, Mozilla Firefox, Chrome si Opera sunt printre cele mai cunoscute programe de navigare.

Programul de navigare va aduce pagina ceruta, interpreteaza / calculeaza textul si comenzile de formatare continute in text si afiseaza pagina, formatata corespunzator pe ecran. Sirurile de caractere care reprezinta legaturi la alte pagini, se numesc hiper-legaturi, sunt afisate in mod diferit, fiind subliniate, si / sau colorate cu o anume culoare speciala. Pentru a selecta o legatura, utilizatorul va plasa cursorul mouse-ului pe zona respectiva, ceea ce va determina schimbarea formei cursorului si va executa un clic. Astfel va fi afisata o noua pagina, care se poate afla pe acelasi masina ca si prima sau pe o masina aflata undeva pe glob la polul opus. Utilizatorul nu va sti. Aducerea paginilor se realizeaza 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 2.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.

URL

Am mai precizat de o sumedenie de ori mai devreme 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 catre o alta pagina este necesar un mecanism care sa permita numirea si regasirea paginilor. Indeaproape, 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 va identifica paginile intr-un anumit mod care rezolva toate trei problemele in acelasi timp. Fiecare pagina are un URL (Uniform Resource Locator), o adresa uniforma pentru localizarea resurselor, care va functiona 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 cele mai multe ori, 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 va prezint partile componente ale unui URL, oferindu-va explicatii succinte pentru fiecare componenta in parte.

Schema este un identificator de serviciu ce 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. El 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 localizata resursa sau, in cazul serviciului de posta electronica, adresa cutiei postale, 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. [11]

cale precizeaza calea, pana la fisierul in care se afla localizata resursa (tot pe masina gazda), precum arata si numele acestuia. Daca componenta este vida sau nu contine numele unui fisier, serverul va sti 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 si va preciza anumite date, in perechi de forma nume data=valoare data, separate prin caracterul &.[18]

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 2.2 sunt indicate cateva servicii Internet, impreuna cu protocoalele utilizate de acestea si exemple de URL-uri.

Figura 2.2: Servicii Internet (exemple)

Protocolul HTTP

Comunicatia efectuata intre clientul Web respectiv serverul de Web poate fi descrisa, sumar, in felul urmator: procesul server Web ”asculta” portul 80 TCP al masinii gazde pentru a raspunde eventualelor cereri de conexiune venite de la clienti. [4]

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

Figura 2.3: Protocolul HTTP descrie cererile clientului si raspunsurile serverului

Toate cererile clientului cat si raspunsurile serverului Web sunt descrise de protocolul HTTP, creat ca protocol generic pentru transferul hipermedia. HTTP este un protocol de tip “cerere-raspuns” (la fel ca si alte protocolae utilizate in Internet) care functioneaza la nivelul aplicatie al modelului TCP/IP. Ca si alte protocoale care fac parte din categoria TCP/IP, HTTP este un protocol de tip client-server. Protocolul HTTP va 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.[14]

Succesiunea completa a etapelor parcurse pentru obtinerea unui document HTML, incepand cu stabilirea URL-ului documentului (aceasta se face prin introducerea acestuia in caseta de adrese a browser-ului ori 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):

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

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

1.0 a 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 al serverului ce va fi prezentat in continuare. 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 serverului Web in etapa cu numarul 5 poate fi mai complex, ca in urmatorul exemplu:

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 va permite transmiterea, pe langa textul simplu (plain text), si a altor informatii (audio, video, imagini, etc.). Datele MIME apartin unui tip si unui subtip. [17]

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. Spre 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

Documente Web statice. HTML

Fundamentul Web-ului reprezinta 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 sa poata opera cu functionalitatile 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 la Internet. Un 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.[18]

SGML, Standard Generalized Markup Language, pãrintele HTML-ului devine 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 1994, a 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ã, mai multe 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 la fel ca un 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.[20]

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 ne 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.[22]

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. [19]

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 2.4 prezinta o selectie de marcaje uzuale HTML. [21]

Figura 2.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.

Documente Web dinamice

Am vorbit pana acum 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). Cu toate astea, 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.

2.5.1 PHP

Aceasta generare 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, inscriere), 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. Spre 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:

utilizatorul completeaza formularul,

formularul este transmis,

este trimis PHP-ului,

PHP-ul interogheaza baza de date,

inregistrarea este gasita,

PHP-ul construieste pagina,

pagina este intoarsa clientului,

pagina este afisata.

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

O alta 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 2.0 a fost official lansat doar in noiembrie 1997 dupa ce si-a petrecut o mare parte a vietii doar in versiuni beta. La scurt timp el a fost inlocuit de versiunile alfa ale PHP 3.0. a

PHP 3.0 a 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 2.0 a 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 3.0 a fost instalat aproximativ pe 10% din toate serverele Web din Internet.

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

PHP 4

In iarna anului 1998, la scurt timp dupa ce PHP 3.0 a 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. In plus la performanta imbunatatita substantial In aceasta versiune, PHP 4.0 a 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 respectiv proiectul de documentare.

PHP 5

PHP 5 a 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 2 a motorului Zend si asigura imbunatatiri deosebite in ceea ce priveste implementarea POO (programare orientata pe obiect).

Actualmente in Web-ul public sunt peste 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 la Microsoft 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 el 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.

Baze de date

Fundamente teoretice

O baza de date reprezinta 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.

Spre 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.[22]

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.[21]

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 care este 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 va prezint arhitectura unei baze de date cu ajutorul figurii 2.7.

Figura 2.7: Arhitectura unei baze de date

Modelul extern reprezinta 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. [24]

Modelul conceptual cuprinde descrierea structurii datelor si a legaturilor dintre acestea pentru intreaga baza de date. Modelul conceptual ramane 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.[8]

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 la IBMin 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 1980 a primit numele SQL, care este acronimul pentru numele sau complet (Structured Query Language). in anul 1986 a devenit standard ANSI (American National Standards Institute), iar in anul 1987 a 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.

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.[11]

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 2.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.[9]

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”.[26]

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.[24]

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 3

ANALIZA ȘI PROIECTAREA APLICA IEI

Exista o multime structurata de activitati necesare pentru a dezvolta o aplicatie, si anume:

analiza, proiectarea si implementarea, verificarea, validarea si evolutia.

Analiza reprezinta 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 acelei 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.

3.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;[25]

3.2 Analiza

În 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.[23]

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.

Iarasi 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 3.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.

Administratorul, dupa autentificarea cu nume de utilizator si parola, poate efectua urmatoarele activitati in cadrul aplicatiei: introducerea, stergerea, modificarea datelor si afisarea lor. Administratorul are acces nelimitat la toate datele stocate in baza de date, si anume: datele legate de utilizatori, datele legate de comenzi (data, ora, analizele pentru care s-a facut programarea sau programarile). Deasemenea, ca orice utilizator el poate vizualiza pagina de prezentare a clinicii.

Activitatea de logare incepe (ca orice interactiune cu sistemul) cu autentificarea utilizatorului. Administratorul introduce numele lui de utilizator si parola, dupa care acestea sunt verificate daca exista in baza de date. [27]

in caz de succes, administratorul va fi redirectionat la pagina principala alocata administratorului. Daca se va introduce gresit numele de utilizator si parola se va afisa o eroare.

Dupa logare, administratorul poate adauga, sterge, modifica datele stocate in baza de date.

In continuare am sa prezint erorile care pot aparea pe parcursul executarii activit atilor prezentate si

modalitatile prin care ele sunt tratate in aplicatie. Tipurile de erori sunt reprezentate in figura 3.2

Figura 3.2: Tipuri de erori

Primul tip de eroare prezentata in figura 4.2.2 este eroarea de conectare la server.

Aceasta eroare apare de obicei in cazul in care serverul nu functioneaza si este reprezentata de diagrama de secventa 3.3

Figura 3.3: Eroare de conectare

Urmatoarea eroare este cea de selectare a bazei de date. Aceasta eroare apare cand baza de date specificata in program nu poate fi accesata sau nu exista. Descrierea ei detaliata apare in figura

3.4.

Figura 3.4: Eroare de selectare a bazei de date

Ultima eroare care poate apare pe parcursul executarii aplicatiei este eroarea accesului neautorizat. Aceasta apare in cazul in care utilizatorul incearca sa acceseze prin numele lui de utilizator o parte a aplicatiei la care nu este autorizat sau daca introduce nume de utilizator si/sau parola gresita. [25] Aceasta eroare este prezentata in figura 3.5

Figura 3.5: Eroare acces neautorizat

Ultimul tip de cerinta de utilizator care trebuie prezentata este cerinta de utilizator pentru vizitatori de pe Internet. Vizitatorul simplu are posibilitatea de a accesa pagina de prezentare a clinicii (asemanator tuturor utilizatorilor prezentati in prealabil) pentru a descarca sau pentru a vizualiza diferite date despre aceasta. Aceasta activitate este ilustrata in figura 3.6.

Figura 3.6: Cerinte de utilizator pentru vizitatori

3.3 Proiectare si implementare

In acest capitol va voi prezenta faza de proiectare si implementare a aplicatiei. El are in vedere activitatea de convertire a specificatiilor si cerintelor sistemului intr-un system executabil. Proiectarea unei aplicatii si implementarea aplicatiei sunt strans legate si deseori se suprapun.[26]

Pentru realizarea unei aplicatii care corespunde cerintelor prezentate in subcapitolul anterior am folosit sistemul de gestiune al bazelor de date MySQL si limbajele PHP si HTML. in continuare am sa prezint baza de date cu tabelele acesteia si fisierele PHP care realizeaza legatura intre baza de date si interfata cu utilizatorul.

3.3.1 Baza de date

In aceasta sectiune este prezentata structura bazei de date, tabelele si continutul lor. tructura se observa in figura 3.7

Figura 3.7: Structura Baza de date

Baza de date este compusa din:

• Tabelul admin care contine campurile admin_nume si admin_parola, campuri care tin memorate username-ul si parola administratorului;

• Tabelul categorii care contine campurile id_cat si nume_cat, campuri dupa care sunt stocate categoriile de servicii medicale, id categorie si numele categoriei;

• Tabelul clienti care contine campurile id_client, nume_client, adr_client, adresa_email

campuri stocate dupa lansarea comenzii cu datele complete ale utilizatorului.

• Tabelul programari care contine campurile id_programare, data_com, id_client, id_serviciu, nr_programare, prog_reusita campuri care salveaza programarile facute.

• Tabelul serviciu_medical care contine campurile id_cat, id_serviciu, nume-serviciu, detalii_serviciu, pret campuri care salveaza serviciile medicale, detaliile si pretul acestora.

3.3.2 PHP

In aceasta sectiune sunt prezentate structura si continutul fisierelor PHP, care stau la baza aplicatiei. Prima imagine prezinta fisierele care afiseaza partea vauta de utilizator

A doua imagine prezinta fisierele de administrare (admin) cu ajutorul carora de adauga, modifica sau sterge serviciile medicale cat si programari sau date legate de utilizatori.

Pentru formatarea tuturor elementelor care apar in cadrul acestei pagini Web am folosit un fisier extern de stiluri, un fisier CSS (Cascading Style Sheets – este o modalitate de prezentare a documentelor hipertext, este o posibilitate de a separa stilul de afisare a informatiilor de informatiile in sine).

Fisierul CSS contine elementele pentru formatarea tabelelor si textului in cadrul paginii

Web. Imagine urmatoare prezinta o portiune din fisierul css:

CAPITOLUL 4

UTILIZAREA APLICATIEI

4.1 Instalare si lansare

Activitatea de instalare a aplicatiei are in vedere doar instalarea programelor necesare pentru functionarea bazei de date, serverului Apache si serviciului PHP pe server.

Utilizatorul aplicatiei are nevoie doar de un browser de Internet si adresa paginii Web, dupa cum am prezentat si in subcapitolul Analiza al acestei lucrari.[22]

Acest set de aplicatii se pot instala automat cu ajutorul unor pachete de programe,

de exemplu: XAMPP sau WAMP. insa exista si posibilitatea de a instala individual fiecare program. Evident instalarea separata a fiecarui programin parte ofera o varietate mai mare in cadrul setarilor.[27]

Instalarea serverului Apache este simpla daca avem pachetul de instalare.

Acesta se poate descarca de pe pagina http://httpd.apache.org/ sau de pe unul dintre siturile oglinda, asa cum este, in Romania http://apache.iasi.roedu.net/. Procesul de instalare este desfasurat in mod automat de programul de instalare (acesta utilizeaza Microsoft Installer).

În timpul instalarii, atunci cand vi se cer informatii despre server, procedati dupa cum vedeti si in figura 4.1, in campul Network Domain si Server Name introduceti localhost.

La adresa de e-mail a administratorului se poate introduce orice adresa.

Figura 4.1: Setarea informatiilor server

Alegand prima optiune: pentru toti utilizatorii, port 80, ca si serviciu, Apache va porni deodata cu Windows-ul. Dupa alegerea tipului instalarii (Typical) se cere directorul de instalare pentru Apache (implicit C:/Program Files/Apache Software Foundation/Apache2.2/) si dupa cateva secunde se va incheia instalarea. [26]

Pentru a verifica daca instalarea a fost facuta cu succes, lansati o fereastra de browser (Internet Explorer, Mozilla Firefox, etc.) si tastati in bara de adrese http://localhost/. in functie de versiunea instalata veti vedea confirmarea instalarii corecte dupa cum se observa si in figura 5.2.

Figura 4.2: Confirmarea instalarii

Directorul radacina este implicit htdocs (C:/Program Files/Apache Software Foundation/Apache2.2/htdocs). Pentru a testa pe server fisierele dumneavoastra, trebuie sa le copiati in acest director. Pentru a schimba directorul, de exemplu C:/www, mergetI la C:/Program Files/Apache SoftwareFoundation/Apache2.2/conf si modificati in fisierul httpd.conf linia DocumentRoot ”C:/Program Files/Apache Software Foundation/Apache2.2/htdocs” cu DocumentRoot C:/www”. De acum incolo fisierele vor fi copiate in acest director pentru testarea lor cu serverul Apache. Daca ati modificat DocumentRoot, e necesar sa modificati si calea de la Directory (cu aproximativ o pagina mai jos), identic cu cea de la DocumentRoot. Dupa aceasta modificare este necesara o restartare a serverului Apache.

Instalarea PHP-ului incepe cu dezarhivarea fisierului php5.2-Win32.zip (numele fisierului depinde de versiunea PHP-ului) pe C:/php. Copiati fisierul php.ini-dist in directorul C:/Windows si redenumiti-l php.ini. Acesta este fisierul de configurare al PHP. E necesar sa faceti modificari in cadrul acestui fisier dupa cum urmeaza:

• Cautati linia doc root= si completati-o cu calea spre directorul in care copiati fisierele PHP pentru a fi executate pe server (de exemplu: doc root=”C:/Program Files/Apache Software Foundation/Apache2.2 /htdocs” sau doc root=”C:/www”);

• Cautati linia extension dir=”./” si inlocuiti-o cu extension dir=”C:/php/ext”;

• Cautati display errors=Off si setati On;

• Cautati ;session.save path=/tmp si schimbati cu session.save path=C:/php/sesiuni;

• Cautati ;extension=php gd2.dll si decomentati linia;

• Deasemenea decomentati si liniile extension=php mcrypt.dll si extension=php mysql.dll.

Copiati php5ts.dll din directorul C:/php in C:/Windows/system. in acest moment server-ul Apache ”nu stie” ca ati instalat PHP. De aceea deschideti fisierul httpd.conf aflat in directorul C:/Program Files/Apache Software Foundation/Apache2.2 /conf si adaugatI urmatoarele linii:

LoadModule php5 module C:/php/php5apache2 2.dll

AddType application/x-httpd-php .php

AddType application/x-httpd-php-source .phps

Prima linie spune serverului unde sa incarce dll-ul necesar pentru a executa PHP. Cea de a doua linie spune serverului ca orice fisier care se termina cu extensia .php trebuie procesat ca si fisier PHP. Ultima linie permite afisarea sursei PHP in fereastra browser-ului. Pentru ca toate aceste modificari sa aiba efect se restarteaza serverul Apache.

Pentru a instala serviciului MySQL, dezarhivati pachetul mysql-4.0.27.zip pe C:/ si enumiti directorul mysql. Pentru a finaliza instalarea, lansati o fereastra de DOS (cmd.exe) si pozitionati-va pe C:/mysql/bin si dati comanda mysqld-nt –console. Dupa aceasta, deschideti o noua fereastra DOS si mergeti la C:/mysql/bin/mysql. Daca instalarea s-a efectuat cu succes atunci veti vedea textul:

Welcome to the MySQL monitor…

Pentru a parasi clientul MySQL tastati exit. Pentru a instala MySQL ca si serviciu trebuie sa urmam pasii:

• Inchiderea serverului: C:/mysql/bin/mysqladmin -u root shutdown;

• Instalarea serviciului: C:/mysql/bin/mysqld-nt –install;

• Pornirea serviciului mysql: C:/mysql/bin/net start mysql;

• Pornirea serverului mysql: C:/mysql/bin/mysql.

In urma instalarii acestor aplicatii, se va crea baza de date dupa structura prezentata in subcapitolul Proiectare si implementare, figura 4.20 si se vor copia fisierele PHP in directorul C:/www pentru a fi executate pe server.

4.2 Utilizare aplicatie

4.2.1 Modul Vizitator

Dupa instalarea tuturor programelor necesare, utilizatorul are nevoie doar de o adresa prin care poate accesa aplicatia si datele stocate pe server. Aceasta adresa se introduce in bara de adresa a oricarui browser de Internet. Daca lansarea aplicatiei se realizeaza local, adica pe server, trebuie sa introducem adresa: //localhost/Clinica Medicala/index.php. Dupa aceasta actiune vom vedea pagina principala a site-ului asa cum se vede in figura urmatoare:

Bara de meniu din partea de sus a aplicatiei contine urmatoatele sub-pagini:

• Butonul Home – face intoarcerea la prima pagina a aplicatiei,

• Butonul Programare – functie de “cos de cumparaturi” serviciul medical ramanad active la reintrarea in aplicatie daca acesta nu a fost confirmat,

• Butonul Medici – deschide o pagina cu lista de medici ai clinicii medicale si domeniul acestora de experiza,

• Butonul Tarife – contine lista cu preturi pentru toate serviciile medicale oferite de clinica aranjate pe categorii,

• Butonul contact deschide o pagina cu un form php pentru contact in care utilizatorul selecteaza dintr-un select form serviciul despre care este interesat, campurile pentru competarea numelui si a datelor personale cat si adresa de mail la care poate fi contactat de catre administratorul site-ului.

• Butonul de Admin – aflat in partea dreapta sus a aplicatiei, odata apasat acesta deschide pagina de logare a administratorului.

Din modul vizitator, utilizatorul poate accesa categoriile afisate pe site, serviciile medicale oferite, poate vedea atat detaliile fiecarui serviciu medical cat si pretul acestora.

Daca utilizatorul se hotaraste ca doreste sa faca programare pentru un aumite serviciu medical, il cauta in lista de Servicii Medicale (categorii) afisata in partea stanga a ecranului, acceseaza serviciul dorit.

In exemplul de fata accesam prima categorie, Alergologie unde vedem ca sunt disponibile urmatoarele analize sau servicii medicale : Control, Teste Epicutanate si Consultatie Initiala.

Dorim sa facem programare pentru Control, apasam pe linkul serviciului medical si accesam pagina serviciului unde avem detaliile despre acest serviciu.

sam butonul “Progra

Urmatoarea pagina care se deschide contine un camp cu serviciul medical selectat sau serviciile medicale selectate in cazul in care sunt mai multe, totalul de plata per serviciu si totalul de plata general, campurile in care se vor completa datele personale ale utilizatorului.

In cazul in care datele sunt completate gresit sau au ramas campuri necompletate, aplicatia va afisa o eroare referitoare la campul lasat necompletat sau completat gresit.

Dupla completarea datelor se va apasa butonul “Confirma Datele” in urma caruia va apareao confirmare scrisa cum ca datele au fost corect introduce si programarea s-a realizat cu success.

4.2.2 Modul Administrator

Pentru a accesa pagina de administrare se va introduce username-ul si parola, in cazul in care unul din aceste doua variabile sunt introduce gresit, un mesaj de eroare va aparea si va specifica variabila gresita.

La introducerea variabilelor, serverul verifica daca acesta corespund cu cele salvate in baza de date in prealabil, deschizand partea de administrare a aplicatiei.

Bara de meniu din partea de sus a aplicatiei contine urmatoatele sub-pagini:

• Butonul Categorie – pagina in care se adauga sau se modifica sau sterge datele unei categorii sau categoria insasi,

• Butonul Servicii – pagina in care se adauga, modifica sau sterge datele unui serviciu medical sau serviciul medical insusi,

• Butonul Programari – deschide o pagina in care pot fi vizualizate, confirmate sau sterse programiarile facute de catre utilizator cu ajutorul aplicatiei web,

• Butonul Sign Out – butonul care inchide sesiunea in siguranta si ne intoarce la pagina principala a aplicatiei, o reintoarcere la pagina de administrare poate fi posibila doar cu ajutorul numelui de utilizator si a parolei.

Pagina de adaugare categorie permite administatorului adaugarea de noi categorii, stergerea sau modificarea categoriilor existente.

In cazul in care o categorie se va introduce de 2 ori un mesaj de eroare va anunta administratorul de existenta unei categorii cu acelasi nume .

Pagina de adaugare serviciu medical, permite administratorului adaugarea, modificarea sau stergerea unui serviciu medical cat si modificarea datelor referitoare la un serviciu medical anume.

Pagina programari permite administratorului sa vizualizeze, sa comfirme sau sa stearga programarile active facute de catre utilizatori prin interfata utilizator.

CONCLUZII

Se stie ca in zilele noastre accesul la servicile medicale se realizeaza foarte greu datorita timpul pierdut la cozile interminabile cat si deplasarea de acasa pana la clinica medicala. Acest lucru ingreuneaza accesul la informatii. Consider ca, prin intermediul aplicatiei mele, am reusit sa rezolv aceasta problema. Singurul impediment ramane accesul la Internet. Daca acest aspect nu reprezinta o problema, utilizatorul are acces la toate informatiile care il intereseaza (analize medicale, informatii, preturi, etc.).

Orice clinica medicala poate utilize acest sistem pentru imbunatatirea relatiei clinicii cu persoanele care doresc sa faca un set de analize medicale.

Aplicatia este disponibila pentru orice utilizator care are conexiune la Internet. Am folosit formularea ”orice” utilizator, pentru ca cei care au acces la site pot fi impartiti in doua mari categorii, si anume:

• utilizatori care nu sunt familiarizati cu institutia careia ii este dedicata aplicatia;

• utilizatori care au mai folosit serviciile oferite de aceasta institurie prin intermediul aplicatiei.

Pentru atingerea obiectivelor propuse si prezentate in Introducere, am folosit tehnologiile

Apache, PHP si MySQL. Motivele pentru care am ales aceste trei tehnologii sunt:

• Aplicatia a avut nevoie de un server pe care sa ruleze, iar Apache a rezolvat aceasta problema.

• Volumul mare de date care sta la baza aplicatiei, necesita un sistem de gestionare a bazelor de date. Acest aspect a fost acoperit de serviciul MySQL.

• Pentru a prelucra aceste date (adaugare, modificare, stergere) am utilizat script-uri PHP.

• Compatibilitatea perfecta intre cele trei componente.

• Sunt independente de platforma pe care ruleaza.

• Fac parte din categoria aplicatiilor freeware.

Consider ca am oferit o solutie care duce la usurarea si eficientizarea muncii depuse in activitatea de programare a analizelor medicale.

BIBLIOGRAFIE

[1] Anghel, Traian, Dezvoltarea aplicatiilor WEB folosind XHTML, PHP si MySQL, Editura

Polirom, Iasi, 2005.

[2] Blaga, A. Paul & Pop, F. Horia, LATEX 2", Editura Tehnica, Bucuresti, 1999.

[3] Buraga, Sabin, Aplicatii Web la cheie, Studii de caz implementate in PHP, Editura Polirom, Iasi,

2003.

[4] Bush, Vannevar, As We May Think, http://www.theatlantic.com/unbound/flashbks/computer/bush.htm.

[5] Fotache, M., SQL Dialecte DB2, Oracle, Visual FoxPro, Editura Polirom, Iasi, 2001. [6] Greenspan, Jay & Bulger, Brad, MySQL/PHP Applications, M&T Books, 2001.

[7] Ivas¸cu, Valentin, Initiere in PHP & MySQL, 1 iunie 2005.

[8] Kleinrock, Leonard, Information Flow in Large Communication Nets, MIT, 31 mai 1961, http://www.lk.cs.ucla.edu/LK/Bib/REPORT/PhD/.

[9] Licklider, J.C.R., http://www.ibiblio.org/pioneers/licklider.html.

[10] Meloni, C. Julie, invata singur PHP, MySQL si Apache, Editura Teora, Bucuresti, 2005. [11] Mittelbach, Frank & Goossens, Michel, The LATEX Companion,

Second Edition, Addison-Wesley, Boston, San Francisco, New York, 2004.

[12] Nagy, Mariana, Baze de date – Exemple si aplicatii in gestiunea economica, Editura Mirton, Timisoara, 2002.

[13] Tanenbaum, S. Andrew, Retele de calculatoare, Prentice Hall, New Jersey, Editia a IV-a, 2003. [14] Welling, Luke & Thomson, Laura, Dezvoltarea aplicatiilor Web cu PHP si MySQL, Editura Teora, Bucuresti, 2005.

[15] Chis¸, Violeta, Tehnologii Web, Note de curs, 2005.

[16] Cira, Octavian, Editoare de texte stiintifice, Note de curs, 2006. [17] Coroban, Laurentiu, Retele de calculatoare, Note de curs, 2005.

[18] Gavrila, Cristian, Proiectarea sistemelor informatice, Note de curs, 2006.

[19] Nagy, Mariana & Ghazal, Claudia, Baze de date distribuite, Note de curs, 2007. [20] *** http://www.apache.org/

[21] *** http://httpd.apache.org/

[22] *** http://apache.iasi.roedu.net/

[23] *** http://www.etutoriale.ro/ [24] *** http://www.mysql.com/ [25] *** http://www.php.net/

[26] *** http://www.phpmyadmin.net/home page/index.php

[27] *** http://www.php-mysql-tutorial.com/install-apache-php-mysql.php

DECLARA IE DE AUTENTICITATE A

LUCRĂRII DE FINALIZARE A STUDIILOR

Titlul lucrării: TEHNOLOGII ONLINE PENTRU UN MANAGEMENT MAI BUN AL UNEI CLINICI MEDICALE

Autorul lucrării: BRANZAN MANUEL – OLIVIAN

Lucrarea de finalizare a studiilor este elaborată în vederea sus inerii examenului de finalizare a studiilor organizat de către Facultatea de Inginerie Electrică și Tehnologia Informa iei din cadrul Universită ii din Oradea, sesiunea IULIE a anului universitar 2014.

Prin prezenta, subsemnatul BRANZAN MANUEL OLIVIAN, CNP: 1840614350098

declar pe proprie răspundere că această lucrare a fost scrisă de către mine, fără nici un ajutor neautorizat și că nici o parte a lucrării nu con ine aplica ii sau studii de caz publicate de al i autori.

Declar, de asemenea, că în lucrare nu există idei, tabele, grafice, hăr i sau alte surse folosite fără respectarea legii române și a conven iilor interna ionale privind drepturile de autor.

Similar Posts