Limbajele Php Si Mysql Crearea de Site Uri Web Dinamice

UNIVERSITATEA DIN BUCUREȘTI

FACULTATEA DE MATEMATICĂ ȘI INFORMATICĂ

DOMENIUL DE LICENȚĂ: INFORMATICĂ

LUCRARE DE LICENȚĂ

COORDONATOR ȘTIINȚIFIC ABSOLVENT

Conf. Dr. Vlada Marin Ene Iulia Andreea

IUNIE 2016

UNIVERSITATEA DIN BUCUREȘTI

FACULTATEA DE MATEMATICĂ ȘI INFORMATICĂ

DOMENIUL DE LICENȚĂ: INFORMATICĂ

LUCRARE DE LICENȚĂ

Limbajele PHP și Mysql – crearea de site-uri web dinamice

IUNIE 2016

Cuprins

Introducere ……………………………………………………………………………….. 4

1. Aspecte ale proiectării unui site web

1.1 Introducere în proiectarea aplicațiilor web…………………….. 6

1.2 Etapele de realizare a unui site…………………………………….. 8

2.Tehnologii pentru dezvoltarea aplicațiilor web

2.1 Tehnologii pe partea de client………………………………………….13

2.1.1 HTML și CSS ……………………………………………………………………….. 13

2.1.2 Javascript…………………………………………………………………………… 20

2.1.3 jQuery………………………………………………………………………………. 29

2.1.4 DOM (Document Object Model)…………………………………………. 35

2.2 Tehnologii pe partea de server……………………………………….. 36

2.2.1 PHP și Apache …………………………………………………………………… 36

2.2.2 SQL si MYSQL ……………………………………………………… …………. 40

2.2.3 PHP și MYSQL………………………………………………………………….. 49

3. Aplicația „Web site de sănătate”

3.1 Scopul și descrierea aplicației……………………………………………………….. 58

3.2 Mod de concepere și implementare……………………………………………… 63

Bibliografie………………………………………………………………………….. 79

Introducere

Din punct de vedere al tehnologiei folosite, web site-urile se împart în două categorii:

Web site static ce conține informații care nu pot fi schimbate. Un web site static rămâne la fel pentru fiecare utilizator al sau.

Web site dinamic/interactiv ce conține informații care se pot schimba, depinzând de: momentul zilei,fusul orar, limba și alți factori.

Un web site dinamic poate conține: scripting pe partea de client și scripting pe partea de server. Aceste site-uri includ și programare HTML pentru structura de bază, Scriptingul pe partea de client. Pagini web care se modifică că răspuns unei acțiuni în cadrul acelei pagini, cum ar fi acțiunea unei tastaturii sau al unui mouse.Limbajele precum JavaScript permit paginii web să răspundă evenimentelor client-side. Scriptingulpe partea deserver. Pagini web care se schimbă când o pagină este încărcată sau vizitată folosesc partea de server scripting.

Conținutul server-side se generează când opagină este încărcată, de ex: forumurile, paginile de login, coșurile de cumpărături, formularele de prezentare, toate folosesc scripturi server side deoarece aceste pagini semodifică în funcție de ce le este trimis.Exemple de limbajele de scripting: PHP, JSP, ASP, ASP.net . Avantajele principale ale site-urilor dinamice sunt că prin conectarea acestora la bazele de date (MySQL) putem extrage informații într-un mod structurat și organizat. Această capacitate de a ne conecta la o baza de date înseamnă că putem crea un sistem de administrare a conținutului CMS (Content Management System) o interfață care permite clientului să introducă, să gestioneze date prin o serie depagini administrative web.

Lucrarea cuprinde proiectarea, dezvoltarea și realizarea site-urilor web. Tehnologiile folosite în crearea aplicației: JavaScript, PHP și MyQL. Scopul acesteia e de schimbare, reflectare și îmbunătățire a modului de a gândi, în direcția sănătății. Că și obiectiv principal

Lucrarea este structurată astfel:

Capitolul 1 “Aspecte ale proiectării unui site web” conține o introducere , clasificare a site-urilor web cat și etapele de realizare a acestora.

Capitolul 2 “Tehnologii pentru dezvoltarea aplicațiilor web” cuprinde toate tehnologiile folosite in crearea aplicațiilor web, in special PHP si MySQL

Capitolul 3 “Aplicația.Web site de sanatate” . Ce descrie toate etapele și validarile corespunzătoare privind gestionarea contului pentru postarea de comentarii. Acest ultim capitol se referă la proiectarea, scopul, intrumentele de utilizare , bazele de date și modalitatea de implementare și utilizare a aplicației. Se pune mare accent pe descrierea completă a bazelor de date, de la diagrama relatională pana la realizarea tabelelor și manipularea acestora, cat și pe descrierea functionalitații. In general se descriu toate etapele corespunzătoare urmatoarelor componente: Componenta utilizatori neînregistrați care pot trimite mesaj doar administratorului; Componenta utilizatori înregistrati; Componenta pentru administrator

Capitolul 1

Aspecte ale proiectării unui site web

1.1 Introducere în proiectarea aplicațiilor web

Aplicațiile web moderne sunt sisteme software complexe, iar dezvoltarea acestora necesită o abordare metodologică a proiectarii lor. Similar cu proiectarea aplicațiilor software, proiectarea web implică utilizarea unei abordari sistematice și cuantificabile pentru realizarea specificațiilor, implementării, operațiilor și întretinerii aplicatiilor web de calitate superioară. Din punct de vedere al istoricului dezvoltarii și complexitătii distingem anumite tipuri de aplicații web; aplicatiile web pot fi orientate pe documente, interactive, tranzacționale, pot dispune de caracteristici ubicue sau chiar de trasături ale web-ului semantic. Cerintele particulare ale proiectării aplicatiilor web rezultă din caracteristicile lor speciale din sfera produselor software, dezvoltarii și utilizarii acestora. Evoluția este o caracteristică care cuprinde cele trei sfere menționate.

World Wide Web are o influență enormă și permanentă asupra vieții noastre. Economia, industria, educatia, sanatatea, administrația publică și distracția reprezintă componente ale vieții noastre care nu au fost pătrunse de World Wide Web. Motivul acestei omniprezențe constă în special în natura web-ului, caracterizată prin disponibilitatea globală și permanentă dar și prin accesul omogen la informațiile distribuite la nivel global produse indivizi sub forma paginilor web .

Inițial, web-ul a fost proiectat ca un mediu pur informational, în prezent evoluând într-un mediu al aplicației. Aplicațiile web de astăzi sunt rapide și reprezintă sisteme software complexe care ofera servicii interactive și personabilizabile accesibile prin intermediul diferitelor dispozitive; ele ofera posibilitatea realizarii tranzacțiilor între utilizatori și de obicei stochează datele într-o baza de date. Elementul distinctiv al aplicațiilor web, comparativ cu aplicațiile software traditionale, este modul în care este utilizat web-ul: de exemplu tehnologiile și standardele sale sunt utilizate ca o platformă de dezvoltare și ca platformă utilizator în același timp. O aplicație web poate fi definită astfel:

O aplicație web este un sistem software bazat pe tehnologiile și standardele consortiului World Wide Web (W3C) care ofera resurse web specifice cum ar fi conținut și servicii prin intermediul unei interfete numita browser web.

Această definiție include în mod explicit tehnologiile dar și interactiunea utilizatorului. De aici putem deduce că tehnologiile în sinea lor, la fel ca și serviciile web, nu sunt aplicații web, dar pot fi o parte a acestora. În plus, această definiție implică ca siturile web lipsite de componente software, cum sunt paginile HTML statice, să nu fie considerate aplicații.

Proiectarea web nu este un eveniment imediat; este un proces realizat pe tot parcursul ciclului de viața a aplicației web, similar cu proiectarea software-ului. Este necesară o abordare disciplinară diferită pentru proiectarea web fată de proiectarea software-ului?

O disciplină poate fi definită ca un domeniu de studiu al știintei, mai mult sau mai putin independent care include cercetarea, învatarea și cunoasterea stiintifică sub forma publicațiilor. Numarul mare de publicații, cursuri, programe analitice, seminarii științifice și conferinte demonstrează că, în acord cu această definiție, proiectarea web poate fi considerată un domeniu independent a proiectarii software-ului. Proiectarea reprezintă în general o aplicație practică a știintei folosită în scopul plănuirii aplicațiilor într-un mod mai bun, mai rapid, mai ieftin si mai sigur. Proiectarea software este definită ca o aplicație a stiinței și matematicii prin care capacitățile unui sistem de calcul sunt făcute utile oamenilor prin intermediul programelor, procedurilor și documentației asociate.

Pe baza acestei definiții și a celei lui Despande , putem defini proiectarea web în două moduri:

proiectarea web reprezintă aplicarea unei abordari sistematice și cuantificabile (concepte, metode, tehnici și utilitare) în analiza, proiectarea, implementarea, testarea, operarea și întretinerea aplicațiilor web de calitatea superioara;

proiectarea web reprezintă o disciplină științifică implicată în studiul acestei abordari.

Termenii din literatură asociati sunt proiectarea siturilor web, proiectarea hipermedia, proiectarea documentelor, proiectarea conținutului și proiectarea software-lui Internet . Prin comparație, "proiectarea web" este un termen concis, desi dacă vorbim în mod strict nu are o acuratețe totală: nu web-ul este proiectat ci aplicațiile web sunt proiectate.

Din punct de vedere al proiectării software-ului, dezvoltarea aplicațiilor web este un nou domeniu al aplicațiilor. În ciuda anumitor similitudini cu aplicatiile traditionale, caracteristicile speciale ale aplicațiilor web necesită o adaptare a multiplelor abordări ale proiectarii software-lui sau chiar a dezvoltarii de abordari complet noi.

Principiile de baza ale proiectarii web pot fi descrise în mod similar cu cele ale proiectarii software:

obiective și cerinte clar definite;

dezvoltarea sistematica, în faze, a aplicațiilor web;

planificare foarte atenta a acestor faze;

auditul continuu al întregului proces de dezvoltare.

Proiectarea web face posibilă planificarea și repetarea proceselor de dezvoltare și în acest mod facilitează evoluția continuă a aplicațiilor web. Aceasta permite nu doar reducerea costurilor și minimizarea riscului pe parcursul dezvoltarii și întreținerii, ci și cresterea calității, precum și măsurarea calității rezultatelor fiecarei faze.

1.2 Etapele de realizare a unui site

Paginile HTML (Hypertext Markup Language) constituie în anumite condiții, cel mai ieftin mijloc de a publica informații în Internet. Pagina inițială reprezintă un document hipertext (HTML) care serveste ca punct de intrare inițial într-un Web.

Pagina inițială trebuie să conțină informații cu caracter general și introductiv precum și hiperlegături la resursele corelate. O pagină proiectată corespunzator conține butoane de navigare interne, care ajută utilizatorul să se deplaseze printre numeroasele documente la care are acces.

Practic, există patru tipuri de site-uri Web:

Site-uri cu pagini statice

Site-uri cu pagini dinamice

Site-uri dezvoltate pe baze de date

Magazine virtuale

Site-urile cu pagini statice se folosesc în special drept panouri publicitare. Se mai numesc și “ brochureware” , deoarece clientii doresc transpunerea în format HTML a principalelor broșuri (pliante) de prezentare. Un asemenea tip de site este relativ ușor și ieftin de construit.

Site-uri cu pagini dinamice.Aceste site-uri necesită o actualizare periodică (zilnica sau saptamânală) a elementelor specifice. La proiectarea unui astfel de site trebuie luate în considerare urmatoarele elemente:

Modul în care vor fi actualizate datele de pe site

Costurile operatiunilor de actualuzare periodică.

Comunicarea cu clienții (utilizatorii) care apelează un astfel de site, se poate realiza prin inserarea de formulare de e-mail, pe paginile site-ului. In aceste condiții se poate lua în considerare și folosirea unui autoreponder pus la dispoziție de către ISP.
În felul acesta se va transmite automat un mesaj de raspuns vizitatorului site-ului, înstiintandu-l astfel de primirea mesajului transmis si multumindu-i pentru vizită.

Site-uri dezvoltate pe baze de date. Aceste site-uri impun metode și tehnici speciale pentru realizare, necesitând actualizări frecvente ale elementelor componente. Aceste site-uri se administreaza extrem de greu, ele se bazeaza pe o baza de date (MySQL sau Oracle, de exemplu), care poate fi actualizată în mod regulat prin intermediul unui program prioritar.
Acest tip de site se recomandă pentru activitați cu volum important de informații ce trebuie actualizat la intervale regulate de timp.

Magazinul virtual. Acest tip de site este cel mai complicat si mai greu de utilizat, necesitand metode și tehnici speciale de proiectare și exploatare. Magazinele virtuale se bazează pe date stocate în baze de date și permit clienților să aleagă și apoi să achiziționeze în siguranță produse sau servicii on line, cu ajutorul cardurilor bancare sau a banilor virtuali (electronic cash). Procesarea cardurilor bancareeste partea cea mai dificilă în dezvoltarea unui astfel de site.

Etapele de realizare a unui site

Pentru crearea unui site performant sunt necesar de parcurs urmatoarele etape:

Proiectare (Design)

Promovare (Marketing)

Gazduirea (Hosting)

Administrare.

Proiectare (Design)

Proiectarea, nu înseamnă numai partea de concepție grafică a paginilor Web, ci și crearea oricaror programe necesare (de exemplu, pentru legarea la o baza de date) sau de formulare folosite pentru colectarea de informații de la utilizatorii (vizitatorii) site-ului.

La proiectarea unui site este foarte important alegerea platformei (sistem de operare) pentru site-ul Web. Aceasta decizie este importanta deoarece de ea depinde fiabilitatea solicitudinii (raspunsului) site-ului la cerințele clienților, precum și a volumului de munca ce trebuie investit pentru a-l menține în funcțiune.

Crearea paginilor Web se poate realiza în doua moduri, și anume:

Manual, scriind efectiv tagurile HTML.

Asistat, cu ajutorul unor programe speciale

Modul manual

Crearea manuală a paginilor Web se poate realiza numai de catre cei care cunosc limbajul HTML. Realizarea manuală presupune existenta urmatoarelor trei instrumente :

Browser de Web

Programe de grafica.

Programe de editare text

Browserul Web este necesar pentru testarea a ceea ce se obține, în fiecare moment și de scriere a tagurilor HTML.

Se recomandă ca testarea să se faca cu mai multe browsere.Este important ca site-ul să funcționeze sub toate browserele.

Cu ajutorul programelor de grafică, se crează/editează, imaginile de fundal, figurile, butoanele, desenele etc.

Programul de editare text este utilizat pentru scrierea efectivă a tagurilor HTML.

Principalul avantaj al metodei manuale constă în faptul, că pagina HTML este exact așa cum s-a dorit. Se poate introduce astfel, orice tag, cu orice atribut.

Dezavantajul metodei constă în principal, în faptul că proiectantul trebuie să cunoască bine limbajul HTML.

Modul Asistat

Proiectantul poate utiliza pentru realizarea site-ului unul din editoarele WYSIWYG, ce dispune de un ansamblu de instrumente de care avem nevoie pentru a construi un site profesional

La realizarea site-urilor profesionale de tip aplicatii on-line, se pot utiliza pachete de programe ce asigură o mulțime de optiuni și facilitați de programare.

Utilizarea acestor programe necesită cunoasterea tehnicii de programare orientata pe obiect.

În modul asistat sunt necesare urmatoarele categorii de programe:

Browsere de Web (Identic cu metoda manuala)

Programe de editare vizuală a paginilor HTML

Programe ce asigură facilitățti de programare

Programe de grafica.

Promovarea site-ului (Marketing)

Promovarea site-ului prin bannere publicitare și postă electronică, constituie o metoda eficientă în creșterea traficului de acces la site-ul respectiv.

Un prim pas în promovarea unui site este înregistrarea lui pe cele mai importante motoare de cautare : Google, Yahoo, Altavista, Excite, Infoseek, Lycos, WebCrawler, HotBot și Magellan, acestea fiind in general primele locuri catre care se îndreaptă utilizatorii când caută ceva pe Internet.

O tactică promotională actuală este schimbul de bannere, adica afișarea reclamei site-ului dumneavoastră pe un alt site, in schimbul includerii unui banner de reclamă pe propriul site. Prin prezența acestor bannere site-ul dumneavoastră poate arata mai profesional, putând atrage vizitatori, care altfel nu l-ar fi vizitat. În cadrul activitații de promovare, se pot utiliza instrumentele de urmarire a traficului obtinându-se informații deosebit de utile beneficiarului (proprietarul site-ului).

Găzduirea site-ului

Pentru găsirea unei gazde (host) a site-ului trebuie raspuns la doua întrebari :

Cât de complex este site-ul?

Care este traficul extimat?

Serviciul de hosting taxează în funcție de răspunsul la cele doua întrebări de mai sus. Răspunsul la cele doua întrebări are ca scop determinarea mărimii spațiului necesar pe hard disc și volumul transferului de date. Cea mai des utilizată solutie este plasarea întregului site pe serverul unui ISP.

Investiția pentru un server propriu, adică conexiune în conformitate cu traficul preconizat și personal specializat, este viabila pentru un site complex, care necesită actualizari frecvente și se apreciază a susține un trafic important.

Alegerea numelui site-ului are importantă pentru proprietar, atunci când se prezintă pe Web.

Administrare

Tipul de site ales, impune o anumita frecventă și anumite metode pentru actualizarile specifice.

Beneficiarul (proprietarul) site-ului poate să apeleze în acest sens la persoanele care au proiectat site-ul.

Acest lucru se recomandă a fi înscris în contract.

Este posibil, ca proiectantul site-ului să pună la dispoziția beneficiarului, un instrument de actualizare automata a paginilor Web, astfel încat să se poata actualiza site-ul fară să se cunoasca nimic despre HTML, FTP etc.

Capitolul 2

Tehnologii pentru dezvoltarea aplicațiilor web

2.1Tehnologii pe partea de client

2.1.1 HTML si CSS

HTML (HyperText Markup Language) este un limbaj de marcare folosit pentru a crea pagini web, capabile de a fi interpretate și afișate de browser. un Hypertext este un document ce conține atât text, cât și alte elemente: imagini, video, audio, animații. HTML nu este un limbaj de programare, ci mai degrabă se aseamănă cu un procesor de texte. Ceea ce îl deosebește însă este faptul că documentul HTML conține doar caractere ASCII. Pentru editarea unui document HTML se poate folosi cu ușurință Notepad, iar fișierul obținut se salvează cu extensia .html, apoi poate fi deschis din orice browser. De asemenea, există și editoare HTML, care au o interfață accesibilă, prin intermediul căruia utilizatorul poate crea mai ușor pagina web dorită. Funcționează pe principiul ”what you see is what you get” și sunt utile mai ales pentru persoanele care nu sunt familiarizate cu limbajul HTML. Astfel, utilizatorul trebuie doar să introducă obiectele și informațiile pe care le dorește, iar editorul generează automat documentul HTML. În acest scop, sunt folosite frecvent Macromedia Dreamweaver sau Microsoft FrontPage.

Un alt exemplu în care codul HTML este generat și nu scris direct este cazul în care se folosește un limbaj de programare la nivel de server (PHP sau ASP). Serverul rulează codul și generează documentul HTML care este apoi afișat de browser-ul clientului.

HTML face parte din standardul SGML (Standard Generalized Markup Language), aprobat în 1986 și fiind definit ca ISO-8879. HTML se preocupă în special de conținutul paginii și nu de modul în care sunt aranjate elementele în pagină. Deși există tag-ul ”<font>”, apărut în versiunile ulterioare, se recomandă ca formatarea documentului să se realizeze folosind CSS, tocmai pentru a separa conținutul de formă. Limbajul HTML este destul de simplu și este ușor de interpretat de către browser. Acesta caută tag-urile, pentru a putea afișa conținutul. HTML a rămas un limbaj de referință pentru editarea paginilor web mai ales prin simplitate și claritate, ceea ce duce și la o ușurință în a scrie browsere care să interpreteze textul HTML. Codul HTML al paginii poate fi văzut ușor din browser, prin intermediul opțiunii ”view” -> ”source”.

Un document HTML este o succesiune de elemente HTML care constau în tag-uri incluse între paranteze unghiulare (ca, de exemplu, <html>). În HTML majoritatea tag-urilor vin în perechi, ca de exemplu <h1> și </h1> (care marchează începutul, respectiv sfârșitul tag-ului respectiv), dar există și cazuri în care nu sunt în perechi, cum este cazul tag-urilor <img>, <br>.

Conținutul se află inclus între cele două taguri: <tagname>conținut</tagname>. Elementele HTML reprezintă tot ceea ce se află între tagul de început și cel de sfârșit.

Elementele HTML pot avea atribute, care furnizează înformații adiționale despre un anume element. Aceste atribute sunt specificate întotdeauna în tagul de start / început.Atributele sunt declarate în perechi de nume / valoare de forma: nume = ”valoare”.

<html></html> – acest tag specifică browser-ului că este un document HTML, definește rădăcina unui document HTML și este un container pentru toate elementele HTML, cu excepția tag-ului <!DOCTYPE ….>. Este suportat de Chrome, Internet Explorer, Mozilla, Safari și Opera. Atributul xmlns = ”http://www.w3.org/1999/xhtml” specifică namespace-ul în cazul în care conținutul trebuie să se conformeze limbajului XHTML.

<head></head> – este un container pentru toate elementele din head; poate conține titlul documentului, scripturi, linkuri, stilul documentului, mata informații ș.a. El definește informații despre document. Este suportat de Chrome, Internet Explorer, Mozilla, Safari și Opera.

<title></title> – definește titlul documentului; este cerut în toate documentele HTML. Acest element definește titlul în toolbar-ul browser-ului, furnizează un titlu pentru pagină atunci când aceasta este adaugată la ”pagini favorite” și permite afișarea titlului paginii în rezultatele afișate de către motoarele de căutare. Este suportat de Chrome, Internet Explorer, Mozilla, Safari și Opera.

<body></body> – definește corpul documentului. Acest element conține toate componentele dintr-un document HTML, cum ar fi text, hiperlink-uri, imagini, tabele, liste și alte elemente. Este suportat de Chrome, Internet Explorer, Mozilla, Safari și Opera.

<form></form> – definește o formă HTML pentru introducerea datelor utilizatorului / programatorului. Acest element poate conține mai multe elemente, tip buton, label, input, textarea, div, etc (și controale specifice ASP.NET, de exemplu <asp:button/>. Este suportat de Chrome, Internet Explorer, Mozilla, Safari și Opera.

<div></div> – definește o diviziune sau o secțiune dintr-un document; este utilizat pentru a grupa blocuri de elemente pentru a le putea formata cu CSS. De obicei, browser-ele întotdeauna adaugă o linie goală înainte și după elementul <div>; acest lucru poate fi modificat în CSS.

Alte tag-uri frecvent folosite sunt:

<table></table> – pentru tabel, poate conține una sau mai multe elemente <tr></tr> (pentru rânduri), <td></td> (pentru celule) sau <th></th> pentru header-ul tabelului.

<p></p> – pentru paragraf.

Istoric

Istoria HTML-ului începe în aceeași perioadă cu cea a WWW-ului, avându-l ca autor pe Tim Berners-Lee. Versiunea inițială de HTML cuprindea 18 tag-uri, dintre care 11 încă se mai regăseau și în versiunea HTML 4.0.

Născut în urma cu aproximativ 30 de ani, într-o tentativă de a rezolva unele probleme ivite la transportul documentelor între diferite computere, limbajul hypertext a evoluat încet. HTML din prima generație este înteles de primele navigatoare (modul text). Nivelul 1 este obligatoriu pentru toate navigatoarele si înseamnă posibilitatea de a interpreta (hyper)text plus imagini. HTML 2.0 a adus o contribuție deosebită la realizarea unei interactivități reale prin intermediul formularelor (forms). HTML 3.0 (cunoscut anterior ca HTML+) aduce în plus tabelele, formatarea paragrafelor (alinieri stânga, centru și dreapta), curgerea textului pe lânga imagini, tabele, formule matematice, taburi, note și o mulțime de alte trăsături în aparență de mai mică importanță, dar care fac munca cu HTML mult mai placută. Cele mai importante modificări și îmbunătățiri sunt aduse însă de HTML 4.0, versiune care dă un alt sens totodată și conceptelor de accesibilitate și structuralitate a limbajului de marcare. [2]

Standardizarea HTML intră în atribuțiile The World Wide Web Consortium, din care fac parte CERN, Universitatea MIT și mulți alți membri. Aceștia formează grupuri de lucru, în care dezbat fiecare standard nou propus și ajung la un consens privind acceptarea sau respingerea acestuia. În cazul favorabil, se publică sub forma unui nou standard W3C Recommendation.

HTML 2.0 a apărut în noiembrie 1995.

Propunerea HTML 3.0 nu a fost adoptată ca standard, deoarece conținea tag-uri și atribute insuficient specificate și prezenta probleme de compatibilitate între browsere. Versiunea s-a numit, din acest caz, cod Mozilla. Totuși, HTML 3.0 a adus unele îmbunătățiri, care apoi au fost preluate în alte versiuni.

Prima versiune dezvoltată și standardizată exclusiv de W3C a fost HTML 3.2, publicată sub formă de W3C Recommendation în ianuarie 1997. Inițial cunoscută sub numele de cod ”Wilbur”, versiunea 3.2 aparține standardului internațional ISO 8879. Oferea compatibilitate cu versiunea 2.0 și aducea în plus tabele, applet-uri, superscript, subscript ș.a.

Decembrie 1997 marchează apariția HTML 4.0, sub numele de cod ”Cougar”, tot o aplicație SGML, ca și ”fratele” său mai mic, 3.2. Se încadrează de asemenea standardului internațional ISO 8879, iar creatorii acestei versiuni recomandă ca browser-ere compatibile cu HTML 4.0 să fie în continuare compatibile și cu versiunile precedente, 2.0 și 3.2. Totuși, unele tag-uri din aceste versiuni se definesc a fi ”învechite” și se recomandă evitarea lor. HTML 4.0 oferea trei variații: strict, transitional și frameset. Prima variație interzicea folosirea tag-urilor ”deprecated”, în timp ce a doua, dimpotrivă, le accepta. În cele din urmă, varianta ”frameset” accepta frame-urile, devenind foarte utilizate în acea vreme.

HTML 4.0 permite posibilitatea separării structurii de conținut, folosind ”style sheets”. Alte îmbunătățiri semnificative aduse de 4.0 pot fi considerate și:

I. Tehnologia client-side scripting.

Permite realizarea de pagini dinamice, folosind script-uri care se execută pe computerul client. Astfel, utilizatorul are posibilitatea de a interacționa cu pagina web, care răspunde la comenzile primite, apelând anumite funcții programate anterior. Se poate specifica limbajul scriptului, se poate include un script extern sau se poate referi rezultatul executiei unui script.

II. Documentele compuse

HTML 4 lansează elementul object, cu ajutorul căruia se pot include imagini, clipuri audio sau diferite aplicații.

III. Internaționalizarea

Documentele HTML pot fi scrise în orice limbă, prin includerea standardului de caractere ISO/IEC 10646, ce permite folosirea tuturor caracterelor internaționale, schimbarea direcției textului sau alte particularități de limbă. Această facilitate este foarte utilă pentru scrierea de pagini web în limba română, astfel încât să nu existe probleme de comptibilitate.

IV. Accesibilitate

V. Tabele îmbunătățite

Versiunea 4.0 permite afișarea tabelelor incremental, în același timp cu încărcarea paginii și aduce beneficii și la nivelul structurii unui tabel, printr-o flexibilitate mai bună în definirea lui.

VI. Model îmbunătățit de împărțire a unui document în frame-uri

Includerea frame-urilor în HTML 4.0 oferă posibilitatea de a prezenta documente multiple într-o singură fereastră. Modelul este preluat din propunerea originală a firmei Netscape.

VII. Imprimare îmbunătățită a paginilor Web

Operația de imprimare a unui număr mai mare de pagini legate între ele poate fi simplificată prin descrierea relațiilor dintre ele utilizând elementul LINK sau limbajul specializat RDF (Resource Description Language) dezvoltat de W3C. [2]

Anii 2000 au adus în sfera de preocupare a W3C limbajul XHTML, apărut prin reformularea HTML 4.01, folosind XML 1.0. Astfel, au fost lansate două versiuni:

XHTML 1.0, în ianuarie 2000

XHTML 1.1, în mai 2001

XHTML 2.0 nu a mai ajuns să fie publicat ca standard, iar W3C a început dezvoltarea HTML 5.

HTML 5 aduce cu sine îmbunătățiri care sunt resimțite atât la nivelul utilizatorului, cât și al autorului paginii web. Era necesară apariția unui nou standard, pentru că cel anterior avea deja 10 ani de când fusese lansat, iar necesitățile utilizatorilor și cerințele aplicațiilor web erau deja altele.Daca la începuturile HTML-ului accentul se punea mai mult pe text, în ziua de astăzi predomină aplicațiile multimedia. Deși funcțiile HTML 5 nu sunt deocamdată complet suportate de toate browser-ele existente, acesta va deveni în curând un standard de referință în WWW.

HTML 5 nu mai este o parte a SGML, ci un limbaj de marcare de sine stătător. Este însă comptatibil și cu versiunile anterioare.

Se poate implementa foarte ușor, iar definirea este simplă și ușoară: un nou doctype și charset ( <!doctype html>, respectiv <meta charset=”UTF-8”>.

Unul dintre avantajele HTML 5 este faptul că nu mai necesită un plugin sau codec, ci se pot introduce direct tag-urile ”<audio>” sau ”<video>”. Utilitatea constă în faptul că nu mai este necesară instalarea și updatarea permanentă a plugin-urilor, care, în plus, consumau și multe resurse.

Prin funcția Canvas, se pot integra jocuri în browser fără a folosi Flash. Canvas este o zonă în care se poate desena folosind JavaScript.

La polul opus, avantajul plugin-urilor vs. HTML 5 se face simțit tot în cadrul jocurilor, din cauza lipsei accelerării hardware prin placa grafică.

O altă facilitate este stocarea offline, care permite crearea de documente Google Docs sau email-uri draft fără o conecțiune la Internet. Imediat dupa conectare, modificările realizate offline se vor sincroniza.

HTML 5 aduce beneficii și în ceea ce privește securitatea.

Pagina Web este privită altfel din punt de vedere structural și se creează o asemănare cu o carte sau cu alte documente XML. În acest scop, sunt introduse noi tag-uri care implementează aceste facilități: <section>, <header>, <footer>, <nav>, <article>, <aside>, <figure>.

De asemenea, au apărut noi elemente de inline: <mark>, <time>, <meter>, <progress>.

O altă facilitate este metoda „drag and drop” (implementată deja in Gmail), cu ajutorul evenimentelor: ondrag, ondragstart, ondragend, ondrop.

Întrucât scopul principal al HTML 5 a fost să vină în ajutorul dezvoltării aplicațiilor web, oferă un suport considerabil în această direcție, dispunând de noi trăsături ce ușurează crearea paginilor web dinamice: context menus, atributul de async, tag-urile <details>, <datagrid>, <menu>, <command>.

Apar și noi tipuri de formulare, pe lângă cele existente deja. Cele noi sunt: date, datetime, month, week, time, number, range, email, url – practic, oferă suport de autocomplete, folositor mai ales la terminalele mobile, pentru a micșora cantitatea de input din partea utilizatorului.

Există anumite elemente care existau în HTML 4, dar nu mai apar și în HTML5. Multe dintre ele sunt deja depreciate, așadar lipsa lor nu se va face observabilă. Aceste elemente sunt: acronym, applet, basefront, big, center, dir, font, frame, frameset, isindex, noframes, noscript, s,strike, tt, u.

CSS

Cascading Style Sheets (CSS) este un limbaj folosit pentru formatarea paginilor web. Se utilizează în principal pentru paginile scrise în HTML, dar are aplicații în orice document de tip XML. Ajută la îmbunătățirea paginii web sub aspectul prezentării: culori, font-uri, alinierea elementelor etc. Este independent de HTML și astfel oferă flexibilitate, accesibilitate și un control mai bun, poate permite mai multor pagini diferite să dețină același aspect fizic și poate reduce complexitatea și repetiția implementării elementelor de design de către programatori.

Ca și HTML, specificațiile CSS sunt tot în custodia World Wide Web Consortium.

Pentru a specifica asupra căror elemente se aplică formatarea din documentul CSS se folosesc selectorii: pot fi afectate toate elementele de un anumit tip (de exemplu <p> sau anumite elemente cu anumite atribute, de exemplu un element cu un anumit id sau elementele dintr-o anumită clasă.

Până la apariția CSS-ului, se foloseau atribute legate de prezentare chiar în tag-urile HTML, de exemplu <p color=”blue”>. Acestea au devenit învechite, iar W3C recomandă evitarea lor. Același efect ca tag-ul de mai devreme îl are formatarea folosind stilurile CSS: <p style=”color:blue”>. Codul CSS poate fi inclus în secțiunea <head>:<style type="text/css">. Însă de cele mai multe ori sursa codului CSS este un fișier separat care este referit de documentul HTML print-un link.

CSS a fost proiectat în primul rând pentru a face posibilă separarea conținutului documentului de prezentarea documentului, incluzând elemente precum layout (machetă), culori și font. Această separare a îmbunătățit accesibilitatea, furnizând o flexibilitate mai mare și un control mai bun în specificarea caracteristicilor prezentării, facând posibil ca mai multe pagini HTML să partajeze formatarea prin specificarea caracteristicilor CSS într-un fișier .css separat, și să reducă complexitatea și repetiția în conținutul paginii, cum ar fi tabelele fără semnificație care au fost în mod frecvent utilizate pentru formatarea paginilor înainte de a fi disponibile versiuni compatibile CSS în majoritatea browserelor.

Istoric

Ideea de a separa conținutul paginii web de forma de prezentare i-a aparținut lui Robert Cailliau. Prima versiune a fost aleasă din nouă propuneri adresate către W3C.

Astfel, CSS 1 a apărut în decembrie 1996. Primul browser care a avut suport aproape complet pentru acesta a fost Internet Explorer 5.0. Versiunea nu mai este standardizată de W3C la momentul actual. Facilitățile oferite de CSS1 includ: posibilitatea sublinierii fontului, schimbarea culorii acestuia, a fundalulului, spațierea dintre cuvinte sau caractere, alinierea imaginilor, tabelelor și a textului.

CSS 2 a fost publicat în mai 1998 și, asemănător și primei versiuni, a devenit un standard ce nu mai este recomandat de către W3C. Permite poziționări ale elementelor de tip absolut, fix sau relativ, concepte de tipuri media, suport pentru text bidirecțional și cu umbre, dispune de selectori mai puternici. Dar unele componente ale CSS 2 s-au dovedit a fi greu de implementat.

Propunerea de standardizare pentru CSS 2.1 a apărut înca din 2004, dar publicarea sa ca recomandare a survenit abia în anul 2011. Sunt corectate erorile primei versiuni, eliminate facilitățile care nu erau suportate și adăugate alte facilități noi.

Dezvoltarea versiunii CSS 3 a început încă din 1999, moment ce coincide cu publicarea CSS2. Versiunea 3 este compatibilă cu cea anterioară. Noutatea introdusă este reprezentată de împărțirea în documente separate, denumite module. Fiecare modul adaugă noi capabilități sau extinde facilități definite în CSS 2.Există peste 50 de module, dintre care o parte deja au devenit recomandare formală.

CSS 4 încă nu poate fi referit ca un standard de sine stătător, dar înglobează module de nivel 4, care au fost derivate din modulele CSS 3.

Descriere

Stilurile se pot atașa elementelor HTML prin intermediul unor fișiere externe sau în cadrul documentului, prin elementul <style> și/sau atributul style.CSS se poate utiliza și pentru formatarea elementelor XHTML, XML și SVGL.

CSS definește modul în care trebuie afișate elementele HTML; stilurile definite sunt stocate în fișiere externe cu extensia .css.

Sintaxa folosește un selector și un bloc de declarații; selectorul indică elementul HTML al cărui stil se dorește a fi definit, iar blocul de declarații conține una sau mai multe declarații separate prin caracterul ”;”. Fiecare declarație include un nume al proprietății și o valoare, separată printr-un caracter ”:”, ca, de exemplu: p {color:red;text-align:center;}.

Există trei moduri de a insera elemente CSS:

fișiere externe (External Style Sheet); în acest caz paginile trebuie să conțină o referință către fișierul extern în interiorul tag-ului <link>. Acest element trebuie adăugat în secțiunea <head></head>, ca în exemplul de mai jos:

<head>
<link rel="stylesheet" type="text/css" href="mystyle.css">
</head>

fișiere interne (Internal Style Sheet), care se poate utiliza atunci când o singură pagină are un stil unic. Stilurile interne sunt definite între tag-urile <style></style>, în secțiunea <head></head> a paginii (a se vedea exemplul de mai jos):

<head>
<style>
body {
   background-color:linen;
}

</style>

</head>

includere inline a codului, folosit pentru aplicarea unui stil unic pentru un singur element. Folosind această metodă, se pierd multe din avantajele unui style sheet, prin amestecarea conținutului cu prezentarea. Atributul pentru stil poate conține orice proprietate CSS. Un exemplu de includere inline a stilului pentru un heading este prezentat mai jos:

<h1 style="color:blue;margin-left:30px;">This is a heading.</h1>

Clasele de elemente in CSS pot fi stabilite pentru un singur tag HTML sau pentru orice alt tag care are la atributul class valoarea stabilita anterior. Clasa este marcată în fișierul .css prin caracterul ”.” înaintea numelui clasei:

.nume_clasa {nume_proprietate:”valoare”}

ca, de exemplu:

.center {text-align:center}

În mod identic se folosește Id, diferența constând în sintaxa folosită. Pentru definirea Id-ului se folosește ”#” în loc de ”.”.

Mai jos este prezentat un mod simplu de definire a Id-ului:

#center

{
text-align:center;
color:blue
font-family:"sans serif"
}

2.1.2 JavaScript

JavaScript este un limbaj de programare orientat pe obiecte care are drept scop introducerea de noi funcționalități în paginile web, codul fiind executat independent de către navigator.

Deși are un nume asemănător și elemente de sintaxă asemanătoare cu Java, cele două limbaje nu au nicio legătura. Ambele au o sintaxă similară cu C, dar JavaScript este mai degrabă apropiat de limbajul Self decât de Java.

Când a apărut JavaScript pentru prima dată în 1995, scopul său principal a fost să se ocupe de o parte din validarea input-urilor, care erau tratate înainte la nivel de server, de către limbaje cum ar fi Perl. Înainte de acel moment, era necesară o cerere către server pentru a determina dacă uncâmp obligatoriu a fost lăsat necompletat sau o valoare introdusă a fost invalidă. Netscape Navigator a încercat să schimbe acest lucru prin introducerea de JavaScript. Deoarece la acea vreme erau foarte răspândite conexiunile de internet prin intermediul modemurilor telefonice, vitezele erau destul de scăzute, așa că executarea validărilor de bază la nivel de client aducea un plus de eficacitate.

În timp, JavaScript s-a dezvoltat și a devenit o caracteristică importantă a fiecărui browser web important de pe piață. Pe lângă funcționalitatea inițială de validare a datelor, acum JavaScript interacționează cu aproape toate aspectele legate de fereastra browser-ului și conținutul său. Este recunoscut ca un limbaj de programare complet, capabil de calcule și interacțiuni complexe și este suportat chiar și de browserele telefoanelor mobile sau de cele special create pentru persoane cu dizabilități. Chiar și Microsoft, care are propriul limbaj de scripting la nivel de client (VBScript), include propria implementare JavaScript în Internet Explorer. Dezvoltarea JavaScript de la nivelul de validator de date până la ceea ce este în prezent a fost surprinzătoare, poate datorită simplității aparente a limbajului. Totuși, JavaScript este în același timp și simplu, dar și complicat.

Istoric

JavaScript a apărut prima oară ca necesitate de a efectua validări ale formularelor a nivel de client. Atunci când conexiunile la internet se făceau prin modem și erau lente, iar timpul de așteptare pentru răspunsul de la server putea ajunge și la 30 de secunde, era nevoie de o soluție pentru ca unele acțiuni să se facă la nivel de client. Așa a apărut JavaScript.

A fost dezvoltat de către Brendan Eich, care lucra pentru Netscape. Inițial a dorit să fie numit LiveScript și să apară o dată cu lansarea Netscape Navigator 2, în 1995, dar i-a fost schimbat numele în JavaScript chiar înainte de lansarea oficială, după ce Netscape a colaborat cu Sun Microsystems pentru a termina la timp implementarea limbajului. Schimbarea numelui a creat confuzie între JavaScript și Java, dar este foarte probabil că această confuzie a fost dorită chiar de către dezvoltatori, pentru a beneficia de publicitatea care se crea în jurul foarte popularului limbaj Java.

Pentru că JavaScript 1.0 a fost un astfel de succes, Netscape a lansat versiunea 1.1 în Netscape Navigator 3 . Popularitatea Web-ului crește fulminant, iar Netscape devine lider de piață în acest sector. În acest moment, Microsoft a decis să depună eforturi pentru a dezvolta un browser concurent, numit Internet Explorer. La scurt timp după ce Netscape Navigator 3 a fost lansat, Microsoft a introdus Internet Explorer 3 , cu o implementare JavaScript numită Jscript, pentru a evita orice probleme de licențiere posibile cu Netscape. Acest pas important pentru Microsoft în domeniul de browsere web în august 1996 a reprezentat un pas important înainte în dezvoltarea JavaScript ca limbaj.

Din cauză că Microsoft avea o implementare proprie pentru JavaScript, existau două versiuni diferite JavaScript: JavaScript în Netscape Navigator și JScript în Internet Explorer. Spre deosebire de C și multe alte limbaje de programare, JavaScript nu a avut standarde privind sintaxa sau caracteristicile sale, versiunile multiple existente fiind o problemă în acest sens. De aceea, s-a decis că limbajul trebuie să fie standardizat.

Propunerea pentru standardizare a fost trimisă de către Netscape în 1996 la Ecma International (European Computer Manufacturers Association). Această acțiune s-a soldat cu lansarea, un an mai târziu, a standardului ECMA-262, care definea un nou limbaj, numit ECMAScript. În 1998, International Organization for Standardization and International Electrotechnical Commission (ISO/IEC) a adoptat ECMAScript ca standard (ISO/IEC-16262) și s-a lansat a doua versiune. A treia ediție pentru ECMA-262 a fost publicată în 1999, a patra ediție a fost abandonată, iar a cincea ediție a apărut în decembrie 2009. Standardul actual ECMAScript este 5.1 și datează din iunie 2011.

Începând din momentul standardizătii, browserele au încercat, cu diferite rate de succes, să folosească ECMAScript ca bază pentru implementarea lor JavaScript.

Nu trebuie să punem semnul egalității între ECMAScript și JavaScript, deși par a fi sinonime. O implementare completă pentru JavaScript presupune trei nivele diferite: Core (ECMAScript), Document Object Model (DOM) și Browser Object Model (BOM).

Numerotarea originală a versiunilor de JavaScript a fost păstrată doar de browser-ul Mozilla Firefox, care este un descendent al lui Netscape. Alte browsere au propriul lor sistem de versiuni. De exemplu, Internet Explorer are alte versiuni pentru JScript.

JavaScript se folosește în prezent pentru a scrie funcții incluse în paginile HTML, care interacționează cu DOM. Se poate schimba conținutul paginii sau se pot trimite cereri AJAX către server fără a face refresh la pagină, lucru foarte util pentru reducerea traficului în rețea. De asemenea, JavaScript permite validarea formularelor la nivel de client înaintea trimiterii la server. Alte facilități includ numeroase opțiuni legate de grafică și animații. Folosind DOM, se pot schimba proprietățile obiectelor din pagină: culoarea unui text, vizibilitatea unui buton, textul unui label etc.

Descriere

JavaScript este un limbaj de programare structurat și suportă o mare parte din sintaxa C: instrucțiunile if, while, switch, for. Tipurile de date ale variabilelor sunt dinamice și nu este necesar să se declare tipul la creare unei variabile. Aceeași variabilă poate fi folosită, de exemplu, ca întreg, apoi caracter. De asemenea, este orientat pe obiecte și folosește prototipuri.

JavaScript (JS) reprezinta un limbaj de programare orientat obiect bazat pe conceptul prototipurilor. Folosit mai mult pentru introducerea unor funcționalități în paginile web, codul Javascript din aceste pagini fiind rulat de către browser.

Cunoscut sub numele de Mocha, apoi LiveScript, și denumit în final JavaScript, acesta a fost inițial dezvoltat de Brendan Eich de la de la Netscape Communications Corporation.

Folosit și pentru accesul la obiecte încastrate (embedded objects) în alte aplicații, limbajul este mai ales cunoscut pentru folosirea sa în construirea siturilor web,

Cea mai des întâlnită utilizare a JavaScript este în scriptarea paginilor web. Browserele rețin în memorie o reprezentare a unei pagini web sub forma unui arbore de obiecte și pun la dispoziție aceste obiecte script-urilor JavaScript, care le pot citi și manipula. Arborele de obiecte poartă numele de Document Object Model sau DOM. Există un standard W3C pentru DOM-ul pe care trebuie să îl pună la dispoziție un browser, ceea ce oferă premiza scrierii de script-uri portabile, care să funcționeze pe toate browserele.

Limbajul JavaScript poate fi modular și încapsulat.

Într-un document HTML, scripturile JavaScript pot fi plasate în antet (<head></head>) sau în secțiunea <body>.

Codul JavaScript trebuie inclus între tag-urile <script> și </script>, ca în exemplul următor:

<script>
document.getElementById("demo").innerHTML = "My First JavaScript";
</script>

Codul JavaScript mai poate fi inclus utilizând atributul type: <script type="text/javascript">

De asemenea, scripturile mai pot fi plasate în fișiere externe (care au extensia .js); acestea sunt utile atunci când același cod este utilizat în mai multe pagini web. Adăugarea scriptului din fișiere externe se face adăugând numele fișierului în atributul ”sursă” din tag-ul script, ca în exemplul următor:

<body>
<script src="Nume_fisier.js"></script>
</body>

Utilizarea codului JavaScript din fișiere externe are ca avantaje separarea codului JavaScript de HTML, permițând citirea și mentenanța mai ușoară a acestora; de asemenea, includerea JavaScript în fișiere externe poate crește viteza de încărcare a paginii web.

Tipuri de date în JavaScript:

Nedefinit

Valoarea de "undefined" este atribuită la toate variabilele neinițializate, și, de asemenea, într-un context boolean, valoarea undefined este considerat o valoare de fals.

Null

Spre deosebire de nedefinit, nul este de multe ori setat pentru a indica faptul că ceva a fost declarat, dar a fost definit pentru a fi gol. Într-un context boolean, valoarea nulă este considerată o valoare de fals în JavaScript.

String

Un string (sau șir) în Javascript este o secvență de caractere cuprinsă între ghilimele duble sau single. Un șir de caractere încadrat de ghilimele duble poate fi inclus într-un șir încadrat de ghilimele simple și vice versa.

Un șir de caractere este compus din litere, cifre, simboluri, caractere speciale și secvențe de ieșire. Conținutul unui șir de caractere este considerat tot timpul ca fiind text, chiar dacă el constă din cifre și simboluri numerice.

Boolean

JavaScript oferă un tip de date Boolean cu valorile true și false. Operatorul returnează șirul "boolean" pentru aceste tipuri de primitive.

Atunci când este utilizat într-un context logic, 0, -0, null, NaN , undefined , iar șir vid ( "" ) evaluează în false din cauza constrângerii automate.

Când conversia de tip este necesară, JavaScript convertește String, Number, Boolean, sau operanzilor obiect, după cum urmează:

Șir de caractere este convertit la o valoare număr. JavaScript încearcă să transforme literal șir de caractere numeric, la o valoare tip de număr. În primul rând, o valoare de matematică este derivat din literal șir de caractere numeric. Apoi, această valoare este rotunjită la cea mai apropiată valoare tip de număr.

Dacă unul dintre operanzi este un Boolean, operand Boolean este convertit la 1 dacă este true sau la 0, dacă este false .

Dacă un obiect este comparat cu un număr sau un șir de caractere, JavaScript încearcă să se întoarcă valoarea implicită pentru obiect. Un obiect este convertit la un șir de caractere sau o valoare numerică, folosind .valueOf() sau .toString() metode de obiect. Dacă acest lucru nu reușește, o eroare de execuție este generată.

Unii experți folosesc termenii "true" și "false" pentru a descrie modul în care valorile de diferite tipuri, se comportă atunci când a evaluat într-un context logic, în special în ceea ce privește cazurile de margine. Operatorii logici binare a returnat o valoare booleană în primele versiuni de JavaScript, dar acum se vor întoarce unul dintre operanzi loc.

Operandul stâng este returnat în cazul în care acesta poate fi evaluat ca: false , în cazul de asociere ( a && b ) , sau true , în cazul de disjuncției ( a || b ), în caz contrar dreptul de-operand este returnat.

O expresie poate fi în mod explicit exprimate la un primitiv de booleană: dublarea logic operatorul negație ( !! ) , folosind Boolean() funcția, sau folosind operatorul condițional ( c ?t :f).

Array

Un „Array” (sau „tablou”, „matrice”) este un obiect JavaScript proiectat pentru a stoca valori de date indexate de chei întregi.

Matricea, spre deosebire de tipul de obiect de bază, se patentează cu metode si proprietati pentru a ajuta programatorul în sarcini de rutină (de exemplu, join , slice , și push ).

Matricile au o proprietate length (sau “lungime”) care este întotdeauna mai mare decât indicele de cel mai mare index utilizat în matrice.

Elemente de matrice pot fi accesate folosind normale de acces obiect de proprietate notație:

myArray [ 1 ] ; // elementul 2 în myArray

myArray [ "1" ] // Cele două de mai sus sunt echivalente.

Date numerice

Limbajul JavaScript permite specificarea datelor numerice în patru formate diferite: întreg, virgulă flotană, ocal și hexazecimal.

Valorile speciale JavaScript 1

În limbajul JavaScript pot fi întâlnite de asemenea și anumite valori speciale, menționate în cele ce urmează: Infinity, NaN, null.

Infinity

Este o valoare numerică specială care se returnează dacă un număr în virgulă flotantă este superior valorii maxime autorizate sau este inferior valorii minime autorizate.

Infinity poate fi pozitiv sau negativ.

NaN

NaN (Not a Number, în limba engleză) este o valoare specială furnizată ca rezultat de câteva operații aritmetice.

null

null este o valoare specială care indică absența valorii.

null nu este egal nici cu zero și nici cu undefined; valoarea null se poate simula cu operatorul void: var null=void(0).

undefined

undefined este o valoare specială nedefinită.

undefined nu este egal nici cu null nici cu zero.

Valoarea undefined este returnată în cazul utilizării unei variabile care nu a fost definită sau în cazul unei variabile care a fost declarată dar fără conținut.

Valoarea undefined este des confundată cu null de către navigatoare.

Variabile JavaScript

Spre deosebire de alte limbaje de programare care impun declararea prealabilă a variabilelor, cu specificarea tipului de date pe care acestea le conțin (întregi, reale, caracter etc.) în JavaScript o variabilă este creată prin simpla afectare (atribuire) a unei valori, din acel moment ea devenind disponibilă.

În limbajul JavaScript nu trebuie specificat tipul variabilelor. Atunci când este creată o variabilă, valoarea atribuită determină tipul variabilei.

Fiecare variabilă are un nume. Regulile după care se formează numele variabilelor sunt următoarele:

numele variabilelor pot conține toate literele alfabetului (majuscule sau minuscule), cifre (0 la 9) și caracterul de subliniere (_);

numele variabilelor nu trebuie să conțină spații și semne de punctuație;

numele variabilelor sunt sensibile la majuscule și litere mici;

primul caracter al numelui unei variabile trebuie să fie o literă sau un caracter de subliniere;

nu este o limită teoretică pentru numărul de caractere al numelui unei variabile.

Variabilele sunt declarate cu prefixul ”var”, de exemplu var nume_variabila=0;

Există două tipuri de variabile:

variabile globale – sunt definite în exteriorul oricărei funcții JavaScript (funcțiile sunt întotdeauna globale);

variabile locale – sunt definite în interiorul unei funcții. Este indicat să se utilizeze cuvântul cheie ”var” pentru a evita confuzia între o variabilă locală și o variabilă globală cu același nume (omonimă).

Conversia tipurilor de date

Ori de câte ori este posibil JavaScript convertește în mod automat tipul de date întâlnit.

Pentru conversia tipurilor de date, JavaScript propune următoarele două funcții:

parseInt() – convertește un șir de caractere într-un număr întreg.

parseFloat() – convertește un șir de caractere într-un număr în virgulă mobilă.

Funcții JavaScript

O funcție este un grup de instrucțiuni tratate ca o singură entitate; pentru a putea utiliza o funcție ea trebuie întâi definită.

Fiecare funcție în Javascript este o instanta a obiectului Function. O instanță a unei funcții are proprietăți și metode.

Sintaxa este următoarea:

function nume_funcție()

{

// tot codul se scrie aici

}

Primul element este cuvântul cheie function, care indică faptul că blocul de cod care urmează trebuie să fie tratat ca o funcție și numai după aceea el este apelat în mod explicit. Al doilea element este numele funcției; se aplică aceleași reguli de formare a numelui funcției ca și în cazul numelui variabilelor.

Al treilea element este setul de paranteze care conține lista parametrilor (argumentelor) funcției, dacă este cazul (”()”). Corpul funcției se află între cele două acolade, care marchează debutul, respectiv încheierea corpului funcției.

Argumentele funcției sunt variabile care sunt utilizate de către funcție ori de câte ori aceasta este apelată.

Evenimente

Un eveniment reprezintă o acțiune care se produce în raport cu un element (fereastră, document, buton etc.). El poate fi detectat și prelucrat de către un script care va declanșa o acțiune. Script-ul este executat dacă evenimentul se produce pe obiectul căruia îi este asociat. Acțiunile utilizatorilor sunt elementele cele mai frecvente, dar nu sunt unicele evenimente generate de JavaScript.

Evenimentul load, declanșat automat de către navigator, se produce atunci când este încheiată încărcarea unui document (X)HTML într-un browser.

Același eveniment se poate aplica mai multor obiecte.

Prelucrarea evenimentului reprezintă reacția la un eveniment.

Exemple de evenimente:

onclick – utilizatorul execută clic pe un obiect;

onmouseout – mouse-ul se deplasează în afara elementului;

onmouseover – mouse-ul se deplasează pe deasupra elementului;

reset – datele introduse într-un formular sunt șterse;

select – utilizatorul selectează un câmp într-un formular;

2.1.3 jQuery

jQuery este o bibliotecă JavaScript rapidă, mică, flexibilă și cu multe opțiuni. Aceasta facilitează parcurgerea și manipularea documentelor HTML, tratarea evenimentelor, animația, cu ajutorul unui API (Application Programming Interface = interfață de programare a aplicațiilor), care funcționează pe o multitudine de browsere. Această librarie a fost creată de către John Resig.

Biblioteca jQuery e centrată pe lucrul și manipularea elementelor HTML și CSS în paginile web. Are, de asemenea, utilități Ajax (Asynchronous JavaScript and XML) pentru transmitere de date la server, funcții pentru lucru cu obiecte, array (tablouri) și evenimente. Aproape toate scripturile făcute cu jQuery funcționeaza la fel în principalele navigatoare web.

Ajax, o tehnică de programare pentru crearea de aplicații web interactive, reprezintă arta schimbării de date cu un server, și update – ul unor părți dintr-o pagină web, fără a reîncărca întreaga pagină.

Intenția este să facă paginile web să devină mai rapide și deci mai acceptate, prin schimbul în fundal al unor cantități mici de date cu serverul, astfel încât să nu fie nevoie ca pagina să fie reîncărcată la fiecare acțiune a utilizatorului, pentru a crește interactivitatea, viteza și ușurința în utilizare a aplicațiilor web.

Ajax nu este o tehnologie în sine. Termenul este folosit pentru definirea aplicațiilor web ce folosesc un ansamblu de tehnologii:

HTML sau XHTML pentru structura semantică a informațiilor;

CSS pentru prezentarea informațiilor;

Javascript pentru interactivitate, pentru procesarea informațiilor prezentate;

Obiectul XMLHttpRequest pentru schimbul și manipularea informațiilor într-o manieră asincronă cu server-ul web;

Metodele de includere ale librăriei de funcții jQuery în pagina HTML sunt următoarele:

introducerea acesteia ca orice fișier cu cod JavaScript, în interiorul secțiunii <head></head>, ca în exemplul următor:

<script type="text/javascript" src="jquery_file.js"></script>

Librăria jQuery este un singur fișier JavaScript.

în loc de a avea fișierul cu jQuery pe serverul propriu, includerea librăriei jQuery se poate realiza prin Google, ca în exemplul următor:

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js">

</script>,

Pentru a putea interacționa cu elementele HTML în pagină, instrucțiunile script-ului trebuie executate după încărcarea paginii, astfel că tot codul jQuery se scrie în interiorul unei functii speciale "document ready", aceasta executa codul din ea după încărcarea paginii. Există de asemenea o metodă mai scurtă pentru evenimentul ”document.ready”, și anume:

$(function(){
   // metoda jQuery este dată aici
});

Sintaxa este următoarea:

<script type="text/javascript" src="jquery_file.js"></script>

$(document).ready(function() {

// tot codul jQuery se scrie aici

});

Aproape toate comenzile și funcțiile jQuery se adaugă în acest "document-ready". În interiorul funcției "ready()" se poate adăuga orice cod JavaScript, precum variabile noi, obiecte, instrucțiuni if(), for(), etc.

Se poate inlocui $() cu jQuery(); acesta lucru este util pentru evitarea conflictelor cu alte aplicații JavaScript care folosesc "$()". Exemplu:

<script type="text/javascript"><!–

jQuery(document).ready(function() {

alert('Mesaj de test');

});

–></script>

Sintaxa jQuery este concepută pentru a permite selectarea elementelor HTML și executarea unor acțiuni asupra acestor elemente. Sintaxa de bază este următoarea:

$(selector).action()

semnul $ este utilizat pentru a asigura accesul la jQuery;

un selector este necesar pentru a ”interoga (sau găsi)” elementele HTML;

o acțiune jQuery, ”action()” care va fi executată asupra elementului selectat / elementelor selectate.

De exemplu:

$(this).hide() – are ca efect ascunderea elementului curent,

$(".test").hide() – ascunde toate elementele cu class = ”test”,

$("#test").hide()– ascunde elementul cu id="test".

Elementele (X)HTML se selectează cu jQuery prin adăugarea lor în $("") (dar și prin jQuery(""); pot fi utilizate ghilimele duble sau simple. De exemplu, dacă se urmărește selectarea tuturor elementelor <h3>, se folosește: $('h3') (sau jQuery('h3') ).

Dacă se dorește selectarea tag-ului cu id="unid" , se scrie $('#unid').

Atunci când este adăugat un selector jQuery în $(), acesta returnează un obiect jQuery care conține o mulțime cu elementele selectate, potrivite cu acel selector.

Funcția html() este o metoda jQuery care returnează conținutul HTML din elementul la care e aplicată.

Selectorii jQuery sunt foarte asemănători cu selectorii CSS, mai jos sunt prezentate câteva example:

$('*') – selectează toate elementele.

$('div') – selectează toate tag-urile <div>.

$('#un_id') – selectează un tag HTML cu id="un_id".

$('.a_class') – selectează toate tag-urile HTML cu class="a_class".

$('p#un_id') – selectează tagul <p> cu id="un_id".

$('li.a_class') – selectează toate tag-urile <li> cu class="a_class".

$('li a') – selectează toate tag-urile <a> din elementele <li>.

$('div a.a_class') – selectează tag-urile <a> cu class="a_class", care sunt adăugate în DIV-uri.

$('div.a_class p span') – selectează toate tag-urile <span> din <p>-uri care sunt adăugate în <div>-uri cu class="a_class".

jQuery suportă folosirea tuturor selectorilor CSS, inclusiv cei din CSS3, ultimul standard CSS. Mai jos sunt enumerate câteva example:

$('p>a') – selectează toate tag-urile <a> care sunt incluse direct în paragrafe (<p>).

$('a:first') – selectează primul tag <a>.

$('h3:last') – selectează ultimul <h3> din pagină.

$('input[type=text]') – selectează elementele input care au tipul (type) specificat la text.

$('p:odd') – selectează toate paragrafele cu număr de ordine impar.

$('li:first-child') – selectează primul <li> din fiecare listă cu tag-uri <li>.

jQuery are și câțiva selectori proprii:

$(':button') – selectează elementele de tip buton (input sau button).

$(':radio') – selectează butoanele tip radio.

$(':checkbox') – selectează checkbox.

$(':checked') – selectează elementele checkbox sau radio care sunt selectate / bifate.

$(':header') – selectează elementele de tip header (h1, h2, h3, etc.).

$(':contains("String")') – selectează elementele care conțin textul specificat la "String".

jQuery poate selecta mai mulți selectori într-o singură declarație, separați prin virgulă, într-un singur șir.

Metode pentru evenimente în jQuery

Evenimentele sunt acțiuni pe care utilizatorul le efectuează în pagina web, cum ar fi click, mișcarea mouse-ului, deschiderea unei ferestre de browser, derularea paginii, apăsarea unui buton la tastatura, ș.a.

Se poate specifica executarea unor instrucțiuni când un eveniment este declanșat, folosind urmatoarea sintaxa:

$('selector').tip_eveniment(function() {

// instructiuni care sa fie executate

// cand actiunea specificata la "tip_eveniment"

// este efectuata la elementele reprezentate de "selector"

});

Alte cateva tipuri de evenimente ce pot fi utilizate in jQuery sunt:

blur – e declanșat când un element pierde "atenția" (cursorul nu mai e pe el)

focus – e declanșat când se intră într-un element.

hover – execută instrucțiunile când mouse-ul este în cadrul obiectului.

mouseover – declanșat când mouse-ul intră în cadrul obiectului.

mousemove – declanșat când mouse-ul se miscă în cadrul elementului.

keydown – acționat când utilizatorul apasă un buton pe tastatură.

load – acționat când un element și toate sub-elementele lui au fost încărcate în pagină.

resize – trimis la obiectul window când dimensiunea ferestrei browser-ului e modificată.

scroll – declanșat când este derulată pagina (sau un anume obiect).

submit – acționat când utilizatorul încearcă trimiterea datelor dintr-un formular.

select – declanșat când utilizatorul selectează un text adăugat într-o casetă <input type="text">, sau <textarea>.

Metode pentru atribute

Aceste metode primesc și fixează atributele DOM (Document Object Model) ale elementelor.

.addClass() – adaugă clasa specificată / clasele specificate fiecărui element în mulțimea elementelor potrivite cu acel selector. Această metodă nu înlocuiește o clasă, ci doar o atașează unui element căruia i se poate atașa una. Pot fi atașate mai multe clase în același timp, separate prin spațiu:

$( "p" ).addClass( "myClass yourClass" );

Această metodă se utilizează frecvent împreună cu metoda .removeClass() pentru a schimba elemente din clase diferite, ca în exemplul de mai jos:

$( "p" ).removeClass( "myClass noClass" ).addClass( "yourClass" );

Argumentul acestei metode poate primi și funcții.

.attr() – primește valoarea unui atribut pentru primul element din mulțimea elementelor potrivite cu acel selector sau fixează unul sau mai multe atribute pentru fiecare element corespunzător.

Sintaxa este: .attr(NumeAtribut), unde NumeAtribut are tipul String. Această metodă primește valoarea atributului doar pentru primul element din mulțimea elementelor potrivite. Pentru a primi valoarea pentru fiecare element individual, se poate utiliza o construcție looping cum sunt, de exemplu, metodele .each() și .map().

.hasClass() – determină dacă vreunul din elemente poate fi atribuit unei clase date.

.html() – primește conținutul HTML al primului element din mulțimea elementelor potrivite cu acel selector sau fixează conținutul HTML pentru fiecare element potrivit.

Metode pentru date

Aceste metode permit asocierea datelor arbitrare cu elemente DOM specifice.

.data() – Stochează date arbitrare asociate cu elementele potrivite sau returnează datele stocate cu anumite nume pentru primul element din mulțimea elementelor potrivite cu acel selector.

.data(cheie, valoare) unde ”cheie” denumește datele care trebuie fixate

.data(obiect)

.data(cheie)

.data()

Metode pentru efecte

Librăria jQuery furnizează câteva tehnici pentru a adăuga animație în pagină. Aceasta include animație simplă, standard, care este utilizată în mod frecvent, precum și posibilitatea de a crea efecte sofisticate, particularizate pentru fiecare caz.

.animate() – execută o animație particularizată pentru o mulțime de proprietăți CSS.

.animate( properties [, duration ] [, easing ] [, complete ] ) – unde:

– properties reprezintă proprietăți CSS ale unui obiect și valoarea pe care animația o va lua

– duration reprezintă un șir sau un număr care determină cât timp va rula animația

– easing este un string care reprezintă funcția care ușurează tranziția va fi folosită,

– complete este o funcție care este invocată odată ce animația a luat sfârșit.

.finish() – oprește animația care rulează, elimină toate animațiile care nu au apucat să ruleze (queued animations), și finalizează toate animațiile pentru elementele potrivite cu acel selector.

Metode pentru manipulare

O parte din metode schimbă un atribut al unui element (prezentate la ”Metode pentru atribute”), altele fixează proprietățile de stil ale unui element (”CSS”), dar există și alte metode care modifică în întregime elementele (sau grupurile de elemente) – prin inserare, copiere, ștergere, etc.

La aceste metode se face referire cu termenul de ”fixatori” (setters), deoarece schimbă valoarea proprietăților. O parte din aceste metode, cum sunt .attr(), .html(), .val(), sunt și fixatoare, primind / recuperând informația de la DOM.

Dintre aceste metode sunt menționate:

.after() – inserează conținut, specificat de un parametru, la sfârșitul fiecărui element din mulțimea elementelor potrivite cu acel selector.

.before() – inserează conținut, specificat de un parametru, înaintea fiecărui element din mulțimea elementelor potrivite cu acel selector.

.clone() – creează o copie fidelă a mulțimii elementelor potrivite cu acel selector.

2.1.5 DOM

Document Object Model (DOM) nu este o tehnologie sau un limbaj de programare, însă este indispensabil unei aplicații web. Este o interfață care oferă o reprezentare structurată a documentului, sub forma unui arbore. Această structură se caracterizează prin obiecte și noduri legate între ele, având ca rădăcină însuși documentul. Părintele documentului este window, fereastra în care el este afișat.

DOM face coținutul paginii web accesibil din script-uri sau limbaje de programare. Astfel, se pot modifica diferite caracteristici ale obiectelor respective, de obicei folosind JavaScript. Fără DOM, JavaScript nu ar putea realiza modificări asupra conținutului elementelor paginii. În plus, obiectelor li se pot atribui proprietăți și metode. Documentul în sine, tabelele, textul din paragrafe, butoanele etc sunt o parte componentă din DOM și pot fi modifcate. Acestea sunt accesate identic din orice limbaj care operează asupra lor: JavaScript, VBScript ș.a.

Istoric

Primul standard, DOM 1, a apărut în 1998. Specificațiile lui sunt divizate în două părți: core și HTML. Prima categorie oferă interfețe de bază pentru a reprezenta documente structurate și cateva în special pentru documentele XML.HTML level 1 oferă interfețe de nivel mai înalt, utilizate în documentele HTML. Principalele interfețe din DOM 1 sunt: Document, Node, Attr, Element și Text. Toate conțin atribute și metode care sunt folosite pentru a interacționa cu documente XML și HTML; astfel se pot schimba porțiuni din document.

DOM 2 a fost publicat în anul 2000 și conține 6 specificații diferite: DOM2 Core, Views, Events, Style, Traversal și Range, precum și DOM2 HTML. Iată câteva modificări importante aduse de fiecare specificație în parte:

Core: extinde funcționalitățile din DOM 1 și este introdusă metoda ”getElementById”

View: introduce interfețele AbstractView și DocumentView

Events: introduce metodele addEventListener și handleEvent, precum și interfețele EventTarget, EventListener, Event, DocumentEvent, MouseEvent, MutationEvent ș.a. Încă nu era inclusă o interfață pentru evenimentele specifice tastaturii.

Style: oferă interfețe pentru Style Sheets, Cascading Style Sheets, CSSRule, CSSStyleDeclaration, ComputedStyle

Traversal și Range: permit traversarea elementelor arborelui, prin intermediul interfețelor NodeIterator și TreeWalker

DOM 2 HTML extinde interfețele versiunii anterioare și folosește DOM 2 Core. Apare proprietatea contentDocument, folosită pentru a accesa documentul conținut într-un frame. [4]

DOM 3 datează din aprilie 2004 și are 5 specificații: DOM3 Core, Load and Save, Validation, Events și Xpath.

Core: extinde funcționalitățile din DOM 1 și 2 și include adoptNode() și textContent

Load and Save: realizează o interacțiune mai ușoară între un document XML și un document DOM, permițând încărcarea conținutului din XML în DOM și serializarea DOM în XML

Validation: se asigură că documentul devine valid și rămâne valid pe parcursul modificărilor

Events: extinde specificația din DOM 2, tratând evenimentele de la tastatură

Xpath: permite folosirea Xpath 1.0 pentru a accesa arborele DOM.

2.2 Tehnologii pe partea de server

2.2.1 PHP si Serverul Web APACHE

PHP este un limbaj de programare. Numele PHP este un acronim recursiv : Php: Hypertext Preprocessor. A fost folosit inițial pentru a produce pagini web dinamice. Acum este folosit pe scară largă în dezvoltarea paginilor și aplicațiilor web. Se folosește în principal înglobat în codul HTML, dar începând cu versiunea 4.3.0 se poate folosi și în mod „linie de comandă” (CLI), permițând crearea de aplicații independente. Este unul din cele mai importante limbaje de programare web open-source și server-side, existând versiuni disponibile pentru majoritatea web serverelor și pentru toate sistemele de operare.

Istoria PHP-ului începe la sfârșitul anului 1994, când Rasmus Lerdorf dezvoltă prima versiune, ca proiect personal. PHP-ul este făcut public în anul 1995 sub denumirea de Personal Home Page Tools, fiind considerat un analizor simplist care interpreta câteva macrouri ce puteau fi incluse în cadrul documentelor HTML, permițând contorizarea accesului la paginile Web sau accesarea unei carți de oaspeți (guestbook). Analizorul a fost rescris la mijlocul aceluiași an și denumit PHP/FI 0, unde FI era o alta aplicație scrisă de Rasmus Lenford, un interpreter de formulare HTML. A fost adăugat și suportul pentru bazele de date mSQL și astfel PHP/FI a început să aibă succes, fiind disponibil gratuit pe Web. Se estimează că la sfârșitul lui 1996 cel puțin 15 mii de site-uri Web utilizau PHP/FI, iar în anul 1997 numărul acestora era de 50 de mii.

Programatorii Zeev Suraski și Andi Gutmans rescriu analizorul PHP și noua aplicație formează nucleul versiunii PHP 3.0 care include o parte din vechile surse PHP/FI 0. Relativ recent, la începutul anului 2000, a fost facută publică versiunea PHP 4.0, utilizând puternicul motor de scriptare Zend și oferind suport nu numai pentru servrul Apache ci și pentru alte servere Web. De asemeni, PHP 4.0 oferă posibilitatea accesării documentelor XML via DOM.

PHP este simplu de utilizat, fiind un limbaj de programare structurat, ca și C-ul, Perl-ul sau începând de la versiunea 5 chiar Java, sintaxa limbajului fiind o combinație a celor trei. Datorită modularității sale poate fi folosit și pentru a dezvolta aplicații de sine stătătorare, de exemplu în combinație cu PHP-GTK sau poate fi folosit ca Perl sau Python în linia de comandă. Una din cele mai importante facilități ale limbajului este conlucrarea cu majoritatea bazelor de date relaționale, de la MySQL și până la Oracle, trecând prin MS Sql Server, PostgreSQL, sau DB

PHP poate rula pe majoritatea sistemelor de operare, de la UNIX, Linux, Windows, sau Mac OS X și poate interacționa cu majoritatea serverelor web. Codul PHP este interpretat de serverul WEB și generează un cod HTML care va fi văzut de utilizator (clientului -browserului- fiindu-i transmis numai cod HTML).

Tipuri de date interne

Boolean – valori logice tip adevărat sau false, similare cu cele din C++ sau Perl.

Integer – numere întregi (în baza 10, 2 sau 16). Valoarea maximă depinde de sistem și de tipul de integer. Tipul poate fi "signed" sau "unsigned", adica dependent de semnul + sau – sau independent de acestea. Valorile pentru integer unsigned sunt mai mari decât cele pentru signed. Sistemele pe 32 bits pot crea numere întregi între -2147483648 și 2147483647( 2^31-1 ). Maximul pentru sisteme pe 64 bits este 9223372036854775807.

Float – cunoscute ca numere reale. Valorile maxime sunt de asemenea dependete de platform, in general cu un maxim de ~1.8e308 cu o precizie de 14 zecimale dupa virgula (formatul 64 bits IEEE).

String – șiruri de caractere. Înainte de PHP6, un caracter era echivalent cu un byte. Nu există limitări pentru lungimea unui șir, în afara memoriei alocate PHP.

Array – în PHP un array este un tip de data care conține un grup de elemente. Fiecare element are un indice intern în group, iar fiecărui indice îi corespunde o valoare – elementul în sine. Un astfel de grup poate fi folosit ca o simulare pentru diverse situații matematice precum vectori, serii, dicționare de elemente, liste ordonate, matrici sau matrici de matrici. Indicii și valorile unui grup pot fi orice tip de data interna PHP (cu excepții: obiectele, resursele și null nu pot fi indici).

Obiecte – O clasa este o colecție de proprietăți și funcții având o logică comună. Obiectele sunt instanțe ale unei clase, în care proprietățile obiectului primesc valori specifice. Vezi POO – programarea orientată pe obiecte.

Resurse – aceastea sunt variabile speciale care conțin legături cu resurse externe PHP. De exemplu, conexiunea cu o bază de date este o resursa deschisă și menținută cu ajutorul unor funcții special definite pentru aceasta muncă.

NULL – este un tip special de dată, care semnifică că variabila respectivă nu a fost definită și că nu are valoare sau valoarea e necunoscută.

Sintaxă

Clasicul program hello-world în PHP:

<?php

echo "Salut lume!";

?>

Sintaxa de mai sus este simplificată de programatorii avansați astfel:

<?="Salut lume!"?>

Codul PHP este inclus între tag-urile speciale de început și de sfârșit care permit utilizatorului să treacă din "modul HTML" în "modul PHP".

Față de alte limbaje script, precum Javascript, la PHP codul se execută pe serverul Web, nu in navigator(client Web). In consecinta, PHP poate obtine accesul la fisiere , baze de date si alte resurse inaccesibile programului JavaScript. Acestea contin bogate surse de continut dinamic care atrag vizitatorii.

Dacă pe serverul Web se află un script similar, clientul nu va primi deciât rezultatul execuției scriptului, fără a avea nici o posibilitate de acces la codul care a produs rezultatul. Vă puteți configura serverul de Web să prelucreze (analizeze) toate fișierele HTML ca fișiere PHP. Astfel nu există nici un mijloc de a distinge paginile care sunt produse dinamic de paginile statice.

Limbajul PHP posedă aceleași funcții ca alte limbaje permițâind să se scrie scripturi CGI, să colecteze date și să genereze dinamic pagini web sau să trimită și să primească cookies.

Marea calitate și cel mai mare avantaj al limbajului PHP este suportul cu un număr mare de baze de date. A realiza o pagină web dinamic cu o baza de date este extrem de simplu. Următoarele baze de date sunt suportate de către PHP:

Serverul Web APACHE

Apache este un server HTTP de tip open source. Apache a jucat și joacă un rol important în dezvoltarea webului, fiind folosit în prezent în circa 50 % din paginile web.

Apache este un server web cu o contribuție notabilă la dezvoltatea Internetului (world wide web). Apache a reprezentat prima alternativă viabilă la Netscape Communications Corporation, și a evoluat rapid în funcționalitate și performanță ca un rival competitiv pentru alte servere web bazate pe Unix.

Apache este dezvoltat de o comunitate deschisă de programatori sub emblema Apache Software Foundation. Aplicația este disponibilă pentru o mare varietate de sisteme de operare incluzând Unix, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows si OS/

Serverul Apache este caracterizat ca fiind un software gratuit și open source, acesta făcând ca, începând din aprile 1996, el să fie cel mai popular server HTTP. Cu toate că în noiembrie 2005 a început să piardă din cota de piață, în aprilie 2008 Apache stătea încă la baza a peste 50 % din siturile web.

Prima versiune a serverului a fost creată de Robert McCool, care la vremea aceea era implicat în proiectul National Center for Supercomputing Applications, cunoscut pe scurt ca NCSA HTTPd. A doua versiune a serverului a fost o rescriere substanțială, de data aceasta punându-se accentul pe crearea unui layer prioritar (Apache Portable Runtime) și a suportului de module.

Apache suportă o mare varietate de module care îi extind funcționalitatea, acestea variază de la server side programming și până la scheme de autentificare. Câteva limbaje suportate sunt: mod_perl, mod_python, Tcl si PHP. Ca alte module putem enumera : SSL si TLS support (mod_ssl), un modul proxyun, modul de rescriere URL (cunoscut ca un motor de rescriere mod_rewrite), custom log files (mod_log_config) și suport de filtrare (mod_include și mod_ext_filter). O altă calitate a serverului Apache este virtual hosting (găzduirea virtuală), care constă în posibilitatea de a găzdui mai multe situri simultan pe același server.

Principalul competitor al serverului Apache este Microsoft Internet Information Services (IIS), urmat de Sun Java System Web Server al companiei Sun Microsystems și multe altele, cum ar fi Zeus Web Server.

Apache este folosit de unele din cele mai mari situri din lume. Astfel, motorul de căutare folosit de Google folosește o versiune modificată de Apache numită Google Web Server (GWS).

2.2.2 SQL si MYSQL

Un prototip al bazei de date relaționale a fost gândit de echipa IBM, numit System R, împreuna cu un limbaj dedicat, pentru creare si operare cu baze de date relaționale. Acesta purta numele de SEQUEL (Structured English QUERYLanguage ). Expresiile din acest limbaj sunt structurate si seamănă foarte mult cu propozițiile din limba engleza. In paralel firma IBM produce si comercializează pe piața produse ce au baze de date relaționale , plecând de la System R, dar cu un limbaj Putin diferit de SEQUEL pe care l-au botezat SQL (Structured Query Language – Limbaj Structurat de Interogare), astfel sunt eliminate vocale si se trece la pronunția „es-qu-el”. SQL-ul nu are nici o legătura cuprogramarea structurata, asemenea C++ sau Pascal.

Corporația Oracle implementează si introduce in varianta comerciala o varianta a SQL in anul 1979.In scurt timp SQL devin un standard industrial pentru bazele de date relaționale. Încă din anul 1986 Institutul National American de Standarde ( ANSI ) l-a adoptat ca limbaj standard pentru gestiunea bazelor de date (RDBMS). De asemenea si Organizația Internațională de Standarde (ISO) a adoptat SQL ca standard pentru RDBMS. Toate bazele de date suport anumite forme de SQL iar toți programatorii încearcă sa se alinieze la standardele ANSI si ISO, însa vor exista anumite diferențe in implementarea limbajului SQL.

SQL denumit inițial SEQUEL ca limbaj de interogare structurala, este limbajul standardizat de ANSI si ISO, utilizat de majoritatea sistemelor ce manevrează baze de date relaționale.

SQL este un limbaj de programare specific pentru manipularea datelor în sistemele de manipulare a bazelor de date relaționale (RDBMS), iar la origine este un limbaj bazat pe algebra relațională. Acesta are ca scop inserarea datelor, interogații, actualizare și ștergere, modificarea și crearea schemelor, precum și controlul accesului la date. A devenit un standard în domeniu (standardizat ANSI-ISO), fiind cel mai popular limbaj utilizat pentru creearea, modificarea, regăsirea și manipularea datelor de către SGBD-urile (Sistemele de Gestiune a Bazelor de Date) relaționale. Pe lângă versiunile standardizate ale limbajului, există o mulțime de dialecte și variante, unele proprietare, fiind specifice anumitor SGBD-uri și de asemenea conținând extensii pentru a suporta SBD-urile (Sistemele de Baze de Date) obiectuale (obiectual-relaționale).

SQL permite atât accesul la conținutul bazelor de date, cât și la structura acestora.

Limbajul SQL este divizat în următoarele elemente:

Clauze, care sunt componente ale instrucțiunilor și interogărilor.

Expresii, al căror efect este producerea de valori scalare sau tabele.

Predicate, pot specifica condiții care sunt evaluate de SQL conform logicii ternare sau logicii booleene, în scopul limitării efectelor instrucțiunilor, sau pentru a influența cursul programului.

Interogările, au ca scop regăsirea datelor după criterii specifice.

Instrucțiunile, pot avea un efect persistent asupra datelor sau structurii datelor, sau pot controla tranzacțiile, conexiunile sau cursul programului. În general, instrucțiunile SQL se termină cu caracterul punct-virgulă (";"), deși acest lucru nu este obligatoriu în toate platformele SQL. Spațiile albe suplimentare sunt ignorate, dar ele pot fi folosite pentru lizibilitatea codului SQL.

Elemente specifice limbajului SQL

Limbajul SQL ca si majoritatea limbajelor de programare folosește sintaxa asemănătoare cu propozițiile din limba engleza, dar sunt mult mai structurate,

SQL permite mai mulți utilizatori fiecare cu alte drepturi asupra bazei de date plecand de la personalul de management pana la administratorii bazei da date,

SQL este un limbaj neprocedural ; nu se cere sa fie specificata metoda ce acces la date ci doar informațiile dorite,

Execuția comenzilor SQL asupra înregistraților se face doar secvențial, doar asupra unei singure înregistrări. Setul de înregistrări fiind văzut ca un set de linii ale unui table

SQL include o varietate de comenzi, cum ar fii :

Selecția datelor

Verificarea – garantarea securității si consistentei bazei da date

Crearea, modificarea si ștergerea de obiectelor de tip baze de date

Inserarea, ștergere, extragerea rândurilor din tabel

Accesul la baza de date.

SQL este primul limbaj ce a unificat toate aceste sarcini, inițial sistemele de management a bazelor de date au utilizat un limbaj separat pentru fiecare operație.

Comenzile limbajului SQL sunt împărțite in trei componente :

Controlul datelor ( Data Control Language )-DCL

Manipulare a datelor ( Data Manipulation Language )- DML

Definirea datelor ( Data Definition Language)- DDL

Prima componenta oferă posibilitatea de partajare , securizare a datelor ; cea de-a doua pentru a adăuga date in tabel si pentru a le manipula. A treia componenta oferă posibilitatea de a crea baza de date.

Comenzile in SQL

Pentru definirea datelor (DDL) se folosesc comenzi dinamice pentru creare, utilizare si ștergerea structurilor de date din tabele : CREATE, ALTER , DROP .

Manipularea datelor (DDL) permite introducerea noilor rânduri, pentru a schimba ceva la rândurile existente sau pentru ștergerea acestora : INSERT, UPDATE, DELETE și SELECT

Comenzile de control (DCL) GRANT si REVOKE pun la dispoziția administratorului drepturile de acces.

Sintaxa SQL

Comenzile in SQL pentru a fii ușor de citi si editat trebuie sa avem in vedere următoarele cerințe :

• Blocul comenzilor se poate scrie pe una sau mai multe linii,

• Se poate folosii o structura tabelara

• Se scriu pe o singura linie cuvintele de comanda

• SQL nu este casesenzitive

•O singură declarație poate fi considerată curentă, cât timp ea este într-un buffer și poate fi rulată într-un anumit număr de moduri :

o plasând un punct și virgulă(;) la sfârșitul ultimei clauze.

o plasând un punct și virgulă urmat de semnul / ( slash) pe ultima linie în buffer.

o plasând un slash(/) la prompterul SQL.

o scriind comanda SQLR [UN] la prompterul SQL.

Interogare de bază

Declarația select este cea mai utilizata in SQL ea putând fii înglobata cu alți operatori ai algebrei relaționale. Cea mai simpla forma a declarației cuprinde :

Clauza SELECT, care listează coloanele

Cea de-a doua clauza FROM ce indica tabelul de unde este extrasa informația

Pentru a lista toate numerele departamentelor, numele angajaților și numărul șefilor (managerilor) introduceți în tabela EMP următoarele:

De remarcat că numele coloanelor sunt separate prin spațiu.Este posibil să selectăm toate coloanele din tabelă prin specificarea unui asterix ( * ) dupăcuvântul SELECT .

Elemente specifice clauzei SELECT

Este posibil să se includă și alte elemente în clauza SELECT.

Expresii aritmetice

Alias-uri de coloane

Coloane concatenate

Litere sau șiruri de caractere

Toate aceste opțiuni ajută utilizatorul să ceară date și să le manipuleze în funcție de scopurile interogării; de exemplu, execuția calculelor, legarea coloanelor împreună, sau afișareașirurilor de litere din text.

Expresii aritmetice

O expresie este o combinație de una sau mai multe valori, operatori și funcții, care se evaluează la o valoare.Expresiile aritmetice pot conține nume de coloane, valori numerice constante și operatoriaritmetici:

Daca expresia aritmetică conține mai mult decât un operator, atunci prioritățile sunt *, /, la început, apoi +, – (de la stânga la dreapta pentru operatorii cu aceeași prioritate).In următorul exemplu, înmulțirea (25*10) este evaluată prima; apoi valoarea produsului esteadunată la rezultatul multiplicării(3000). Astfel pentru rândul lui SMITH avem :800+3000=3800.

Alias-uri de coloană

Când se afișează rezultatul unei interogări, în mod normal se utilizează numele coloanelor selectate ca titlu. In multe cazuri acest nume poate fi criptic sau fără înțeles.Putem schimba un titlu de coloană utilizând un 'ALIAS'

Un alias de coloană dă unei coloane un nume de titlu alternativ la ieșire. Specificați aliasul după coloană, în lista selectată. Din oficiu, titlurile de tip alias vor fi scrise  forțat  cu litere mari și nu pot conține spații (blankuri), numai dacă aliasul este inclus întreghilimele(" ").Pentru a afișa titlul de coloană VALOARE.

Operatorul de concatenare (||) permite coloanelor să fie legate cu alte coloane, iarexpresiilor aritmetice sau valorilor constante să creeze o expresie de caractere.Coloanele din cealaltă parte a operatorului sunt combinate pentru a obține o singuracoloana.Pentru a combina PRODUS și PRET și să se dea aliasul COD expresiei,introduceți:

Literali

Un literal este orice caracter, expresie, număr inclus în lista lui SELECT care nu este unnume de coloana sau un alias de coloana.Un literal în lista lui SELECT este reprezentat de fiecare rând returnat la ieșire. Șirurilede literali dintr-un text cu un format oarecare pot fi incluse in rezultatul interogării șisunt tratate ca o coloana lista selectata.Literalii de tip dată calendaristica și caracter pot fi închiși între ghilimelesimple(');literlalii de tip număr nu au nevoie de ghilimele simple(').Următoarea declarație conține literali selectați prin concatenare și printr-un alias decoloana:

Operatori SQL

Sunt patru operatori SQL care operează pe toate tipuri de date:

Operatorul BETWEEN

Realizează teste pentru valori între, si inclusiv, o valoare minima și o valoare maxima.

Operatorul IN

Testează valorile dintr-o lista specificata.

Operatorul LIKE

Uneori nu se cunosc valorile exacte pe care le căutam. Utilizând operatorul LIKE esteposibil să selectam rândurile care se potrivesc cu un model specificat de caractere.Operația de petter-matching a caracterelor poate fi asemănată cu o căutare 'wild-card'.Doi simboli se pot utiliza la construirea șirului de căutare.

Operatorul IS NULL

Operatorul IS NULL face teste specifice pentru valorile care sunt NULL.

MySQL

Un sistem de gestiune a bazelor de date (SGBD – Data Base Management System) este un produs software care asigură interacțiunea cu o bază de date, permițând definirea, consultarea și actualizarea datelor din baza de date. Toate cererile de acces la baza de date sunt tratate și controlate de către SGBD.

MySQL este un sistem de gestionare a bazelor de date relaționale. Numele său provine de la fiica unuia dintre fondatori, pe care o chema My. SQL reprezintă acronimul pentru Structured Query Language. Codul sursă este disponibil sub licența GNU și este dezvoltat de Oracle.

MySQL este o componentă esențială în dezvoltarea aplicațiilor web și face parte din suita WAMP (Windows Apache-MySQL-PHP) și altele asemănătoare: LAMP, XAMPP.

Sistemul are o arhitectură client-server, care este centrată în jurul serverului. Clientul nu poate manipula baza de date în mod direct, ci doar serverul poate să facă acest lucru. Deci, clientul interacționează în mod indirect, prin intermediul serverului, pe care se află baza de date care este accesată prin rețea.

Interacțiunea cu baza de date se realizează prin intermediul cererilor SQL, pe care serverul le efectuează și transmite rezultatul obținut. Serverul poate stoca o cantitate foarte mare de informații, organizate astfel încât să fie accesibile prin intermediul limbajelor de programare, precum PHP. Bazele de date relaționale stochează informația în tabele, care au mai multe coloane de un anumit tip. Între aceste tabele există legături prin intermediul cheilor străine, iar fiecare tabel are de obicei o cheie primară, care este unică și identifică înregistrările pe care le conține.

Istoric

MySQL a fost creat de compania suedeză MySQL AB, înființată de David Axmark, Allan Larsson și Michael "Monty" Widenius. Prima versiune a apărut în mai 1995. Au urmat apoi versiunile: 3.19 (sfârșitul lui 1996), 3.20 (ianuarie 1997), versiunea pentru Windows (8 ianuarie 1998), 3.21 (1998), 3.22 (1998), 3.23 (ianuarie 2001), 4.0 (martie 2003), 4.01 (august 2003), 4.1 (iunie 2004), 5.0 (octombrie 2005), 5.1 (noiembrie 2008), 5.5 (decembrie 2010).

MySQL 5.1 și 5.5 includ numeroase facilități: proceduri stocate, triggeri, cursoare, view-uri care pot fi updatate, modul strict (care împiedică modificarea datelor, atunci când ele nu corespund tipului), motoare de stocare multiple și independente, suport SSL, indexare și căutare full-text, suport Unicode,

Dezvoltat de firma suedeza MySQL AB, MySQL este un server de baze de date disponibil gratuit, cu sursă deschisă(open-source) care oferă fiabilitate și avantaje reale.

O calitate importantă a serverului MySQL este simplitatea sa fundamentală. Administrarea bazei de date se face folosind peste o duzina de utilitare în linia de comandă, cel mai important fiind mysql, un shell interactiv pentru controlul și interogarea bazei de date. Utilitarele rulează cel mai bine pe sistemul Linux, platforma pe care MySQL a fost dezvoltat inițial. Alte doua utilitare cu sursă deschisă, oferite pe platforma Windows, care ofera un set de comenzi de administrare sunt MySqlManager, un utilitar de interogare în mod grafic similar cu mysql și WinMySQL admin, o consolă pentru administrarea detaliilor configurarii lui MySQL.

MySQL realizează cu usurință importarea diverselor baze de date și exportarea sub forma fișierelor sql. Tranzacțiile nu sunt parte a tabelelor implicite(ISAM) ale lui MySQL, dar sunt incluse doua tipuri noi de tabele . Berkley DB(BDB) si InnoDB . care au fost dezvoltate de alte firme.

Administratorii de firme și dezvoltatorii de baze de date au ajuns la concluzia că MySQL are o dezvoltare energica și loială, ca să nu mai mentionam reputația cistigată cu trudă, de baza de date sigură.

MySQL operează în baza unui model client/server. Orice masina care dorește să proceseze interogări asupra unei baze de date MySQL trebuie să ruleze MySQL server(mysqld), care este responsabil de tot traficul de tip intrari/ieșiri(incoming/outgoing) cu baza de date. Ca orice server, mysqld "ascultă" pe un port particular (3306) eventualele cereri de conexiune ale unui "client" – orice aplicație care trimite cereri către o baza de date via mysqld. Acest client poate fi un simplu script PHP care poate trimite o cerere către baza de date prin intermediul serverului MySQL sau chiar clientului mysql. Clientul mysql este o interfață interactivă pentru transmiterea de comenzi catre server.

Modelul de securitate folosit de MySQL se bazează pe nume de utilizator, parola, nume server(hostname) sau adresa de IP și privilegii, fiind similar celui generic folosit de sistemele Unix. Prin privilegii se inteleg în cazul MySQL operațiunile ce vor fi permise asupra bazei/bazelor de date, tabelelor sau indecsilor, cum sunt de exemplu SELECT, INSERT, UPDATE, DELETE, CREATE, DROP.

Datele sunt obiectul celor mai multe operații de prelucrare, iar sistemele de gestiune a bazelor de date furnizeaza cele mai complexe și puternice facilitati pentru lucrul cu datele. PHP include o bibliotecă de funcții care furnizează o interfată cu sistemul MySQL de gestiune a bazelor de date. Folosind aceste functii, un program PHP poate obtine accesul la datele rezidente într-o baza de date MySQL și le poate modifica.

MySQL este unul dintre cele mai folosite sisteme de gestiune a bazelor de date client-server, fiind utilizat deseori în combinație cu scripturi PHP. Spre deosebire de lucrul cu alte baze de date, care presupune utilizarea unor biblioteci suplimentare (.dll),operarea cu baze de date MySQL este implicit “inclusă funcțional” în motorul interpretorului PHP (built-in).Operatiile care se desfasoara cel mai adesea într-un sistem de gestiune a bazelor de date sunt:

conectarea la server;

afișarea bazelor de date existente;

selectarea unei baze de date cu care trebuie să se lucreze;

afișarea tabelelor conținute intr-o bază de date;

crearea unei baze de date;

crearea tabelelor din interiorul unei baze de date și precizarea câmpurilor conținute în acele tabele;

popularea tabelelor cu date;

inserarea, regăsirea, modificarea sau ștergerea datelor din tabele;

efectuarea unor interogări asupra datelor cuprinse în tabele;

Verificarea și actualizarea datelor din baza de date;

Controlarea tuturor cerințelor de acces a bazei de date;

Utilizarea simultană a bazei de date de mai mulți utilizatori;

Sincronizarea bazei de date în cazul în care sunt mai mulți utilizatori care acceseaza și modifică baza de date simultan;

Asigurarea securitătii bazei de date prin accese diferite pentru fiecare tip de utilizator.

deconectarea de la serverul de baze de date.

MySQL este utilizat în principal împreună cu limbajul de programare PHP pentru a susține baza de date a site-urilor web. Cu toate acestea,un utilizator poate scrie programe care să asigure utilizarea unei baze de date și prin intermediul altor limbaje de programare, precum Java, FreeBasic sau C++. Programul estedistribuit în mod gratuit, însă acest lucru nu este valabil și pentru încorporarea programului în softuri comerciale. Accest tip de licență de utilizare se numește Licență Publică GNU, fiind cea mai folosită licență pentru programele gratuite și o licență pentru uz general. O licență permisivă care dă dreptul utilizatoruluisă instaleze și să folosească programul licențiat gratuit.

Pentru funcționarea împreună cu PHP, deși softul nu este încorporat, utilizarea este gratuită. În utilizarea alături de PHP administrarea bazei de date este asigurată de o altă aplicație gratuită numită phpMyAdmin sau prin intermediul interfeței liniei de comandă (CLI). Datorită strânsei legături dintre PHP și MySQL acest sistem relațional rulează pe aproape orice sistem de operare, cum ar fi: Windows, Linux, SunOS, Solaris, FreeBSD, Mac OS X.

Printre site-urile web cunoscute, care utilizează bazele de date MySQL se pot enumera: www.facebook.com, www.twitter.com, www.google.com, www.wikipedia.com sau popularul site video www.youtube.com.

Avantaje MySQL:

Gratuit pentru majoritatea utilizărilor interne;

Rapid, fiind decris de programatorii drept cel mai rapid sistem pentru gestiunea bazelor de date;

Simplu, comparativ cu alte sisteme similare, acest sistem este mult mai simplu de utilizat și administrat, repezentând în același timp o performanța ridicată;

Versatil, întelege limbajul structurat de interogare (SQL), acesta fiind preferat de toate sistemele de baze de date;

Facil, permite conectarea mai multor clienți la un server; acești utilizatori pot accesa mai multe baze de date simultan;

Portabil, acest sistem rulează pe aproape orice sistem de operare;

Structurabil, acest sistem prezintă nivele separate de acces; astfel, un utilizator obișnuit care accesează o pagină web nu are acces la baza de date cu utilizatori, de exemplu;

Accesibil, această bază de date poate fi accesată de oriunde prin intermediul internetului.

Dezavantaje MySQL:

MySQL nu suportă o bază de date de dimensiuni mari atât de eficient cum suportă o bază de date cu dimensiuni reduse sau medii;

Nu suportă proceduri de tip ROLE, COMMIT sau Stored până la versiunea 5.0.

Sistemul de gestiune al bazelor de date MySQL prezintă diferite tipuri de baze de date versiunea comericială, cum ar fi: MyISAM și InnoDB. MyISAM este o versiune mai evoluată a bazei de date de tip ISAM (Indexed Sequential Access Method). Acest tip de bază de date este foarte rapid, ea fiind utilizată mai ales pentru operațiunile de citire, dar având posibilitatea de a fi optimizată pentru stocarea datelor sau utilizarea resurselor. MyISAM este optimizat pentru scrieri și citiri simultane ale bazei de date; pe langă acestea, acest tip de bază de date vine și cu un set de extensii folosit pentru repararea unei baze de date. Consumul scăzut de resurse și viteza foarte rapidă pentru citirea datelor au făcut ca acest tip de bază de date să ajungă cel mai utilizat mod pentru paginile web.

InnoDB vine în completarea bazelor de date MyISAM, care nu sunt flexibile. Cu toate că acest mod este mult mai versatil decât MyISAM, viteza de operare este mult mai scăzută. Baza de date InnoDB este folosită pentru suportul cheilor externe și pentru modul tranzițional, care va fi descris în paragrafele următoare.

În momentul configurării unui server MySQL utilizatorul trebuie să aleagă tipul bazei de date pe care dorește să o folosească. Astfel, utilizatorul trebuie să selecteze una dintre următoarele opțiuni:

Bază de date multifuncțională (Multifunctional Database);

Bază de date strict tranzițională (Transactional Database Only);

Bază de date strict netranzițională (Non-Transactional Database Only).

Opțiunea bază de date multifuncțională este opțiunea care permite configurarea bazei de date pentru o pagină web generală. Această opțiune structurează serverul pentru ambele tipuri de baze de date, InnoDB și MyISAM, permițând utilizarea amândurora.

Opțiunea bază de date strict tranzițională configurează serverul pentru o bază de date de tip InnoDB. Deși această structurare permite utilizarea modului MySAM, serverul nu este optimizat pentru el.

Baza de date netranzițională este folosită strict pentru aplicații web de monitorizare sau logare a activității. Acest mod folosește numai modul MySAM.

După instalarea MySQL utilizatorul este prezentat cu două opțiuni cu privire la administrarea baza de date. Asftel, structurarea bazelor de date se poate realiza prin intermediul Command Promt (CMD) acesta fiind o interfață linie de comanda(Command Line Interface – CLI) sau prin intermediul unui program gratuit numit PhPMyAdmin.

Acest program rulează în navigator și este scris în PHP. Prin intermediul PhpMyAdmin utilizatorul poate creea, modifica și șterge baze de date, tabele, rânduri sau date existente în baza sa de date. De asemenea, utilizatorul poate scrie și rula comenzi SQL, cum ar fi: crearea unei baze de date, crearea unui tabel și modificarea acestuia, introducerea datelor în tabel și selectarea acestora, dar și rulea comenzilor SQL.

Pentru ca un utilizator să creeze o bază de date numită exemplul, este necesar ca acesta să folosească sintaxa: CREATE database exemplul.

În baza de date creată utilizatorul poate insera un tabel utilizând procedeul descris în exemplul care urmează iar tabelul creat de utilizator poate conține două tipuri de date:numar, care este definit ca INT(Integer) și poate conține 4 cifre și text care poate conține până la 100 de caractere.

Exemplu de creare tabel nou:

CREATE table exemplul1 (numar INT(4),text VARCHAR(100));

Pentru a avea o coloană care își modifică singură valoarea, utilizatorul trebuie să adauge textul AUTO_INCREMENT după tipul de date, această metodă este folosită pentru id-ul utilizatorului sau al departamentului. Prin intermediul setării AUTO_INCREMENT ne asigură că nu există două valori identice în același tabel, valoarea fiind automat incrementată de baza de date.

Dacă utilizatorul dorește să modifice un tabel prin adăugarea sau ștergerea unei tabele, este necesar ca acesta să utilizeze comanda alter table, iar pentru a adăuga o coloană numită ’e-mail’ tabelului exemplul1, utilizatorul trebuie să folosească comanda ADD și pentru a o șterge comanda DROP:

ALTER TABLE exemplul1 ADD column email varchar(20);

ALTER TABLE exemplul1 DROP column email;

Pentru a adăuga o cheie primară sintaxa este următoarea:

ALTER TABLE exemplul1 add primary key (id);

O cheie primară reprezintă o coloană care nu poate avea valori identice, acest lucru este similar cu unique (unic). Diferența dintre cele două este faptul că o bază de date poate conține o singură cheie primară, dar numărul cheilor unice este nelimitat.

Pentru a introduce valori în mai multe coloane, utilizatorul trebuie să enumere coloanele respective în paranteză, și apoi să adăuge valorile aferente fiecărei coloane. Pentru a introduce valorile dorite este imperativ ca textul să fie scris între ghilimele sau apostrof. Modificarea datelor ce au fost deja introduse se face conform exemplului următor și necesită utilizarea funcției UPDATE:

INSERT INTO exemplul1 (id,text) VALUES (0001,'texttexttext');

Paginile web folosesc bazele de date mai ales pentru citirea informațiilor. Odată ce datele au fost introduse, acestea pot fi selectate pentru afișare prin intermediul funcției SELECT. Acest exemplu prezintă trei tipuri diferite de a selecta datele. Pentru a selecta toate coloanele dintr-o tabelă este necesar ca utilizatorul să folosească simbolul asterix (*) urmat de numele tabelului din care selectează datele.

Pentru a selecta doar o coloană utilizatorul trebuie să înlocuiască asterix-ul cu numele coloanei respective. În multe cazuri utilizatorul poate avea o coloană cu același nume în mai multe tabele, pentru a selecta coloana din tabelul dorit acesta trebuie să descrie calea spre tabelul respectiv. În exemplul prezentat, baza de date se numește exemplu și tabela este denumită exemplul1.

SELECT * FROM exemplul1;

SELECT text FROM exemplul1;

SELECT id FROM exemplu.exemplul1;

Tipul de funcție SELECT este utilizat doar în situațiile în care datele sunt selectate din același tabel. În situația în care un utilizator trebuie să selecteze date din două tabele diferite, alegerea datelor se realizează tot cu funcția SELECT, dar prin intermedul unirii cu un alt tabel, fapt ce se realizează prin intermediul funcției JOIN (unește).

De exemplu, dacă un utilizator dorește să caute în baza de date alți utilizatori după nume și departament, acesta poate prin intermediul aceleiași funcții să selecteze mai intâi utilizatorii, iar apoi folosind funcția JOIN să creeze o legătură cu tabelul departament.

MySQL poate salva în baza de date inclusiv imagini, pentru a face acest lucru este nevoie de un alt tip de date, diferit de cele utilizate mai sus. Stocarea se face prin intermediul tipului de date blob, un obiect binar care poate stoca o variabilă de date. La fel ca și coloanele de tip text coloanele blob nu pot avea o valoare implicită (default).

Pentru a creea o coloană în care utilizatorul poate stoca poze există mai multe opțiuni în funcție de dimensiunea pe care utilizatorul dorește să o stocheze, opțiunile fiind identice cu cele text: tinyblob, blob,mediumblob și longblob. Mai jos se foloseștemediumblob, acesta poate stoca imagini cu o dimensiune maximă de 16 megabytes.

CREATE TABLE `exemplu_imagine` ( `id` int(4) NOT NULL AUTO_INCREMENT,

`titlu` varchar(32) character SET utf8 NOT NULL, `poza` mediumblob NOT NULL,

PRIMARY KEY (`id`) );

Acest ultim exemplu prezintă o tabelă nou adăugată numită exemplu_imagine destinată imaginilor. Fiecare coloană din baza de date beneficiează de unid unic, un titlu și nu în ultimul rând de o poză. Nici un element nu are voie să lipsească la introducerea datelor, elementul id fiind introdus automat, el fiind incrementat la fiecare adăugare nouă. Prin intermediul id-ului este preluată pentru fiecare utilizator.

Aplicația oferă și posibilitatea afișării unei poze pentru fiecare utilizator.Poza poate fi încărcată din pagina de modificare a profilului fiecărui utilizator. La afișare, aplicația va testa printr-o secvență de tip IF câmpul pozei de profil a utilizatorului autentificat. Dacă acesta este gol, va afișa o imagine standard; în celălalt caz, se va apela un fișier care va extrage datele pozei de profil din baza de date și va afișa imaginea.

2.2.3 PHP și MySQL

Una dintre funcționalitățile importante din PHP este dată de faptul că acesta poate comunica cu un motor de baze de date. PHP5 are inclus suport nativ pentru SQLite, MySQL sau alte motoare de baze de date pot fi adăugate prin intermediul extensiilor. În cazul de față ne vom opri asupra MySQL-ului. Accesul l la o bază de date este o chestiune vitală pentru o pagină de web modernă care în general oferă servicii personalizate utilizatorilor. În primul rând pentru a activa suportul de MySQL în PHP trebuie să ne asigurăm că am instalat extensia php-mysql. Pentru a face acest lucru, dacă suntem pe un sistem linux derivat din RedHAT, putem rula următoarea comandă:

[root@localhost httpd]# yum install php-mysql

În cele ce urmează vom încerca să ne conectăm la o bază de date MySQL și să obținem înregistrările din tabela utilizatori:

<?php

$servername = "localhost";

$username = "holblu49_user";

$password = "qwe123!";

$dbname = "licenta";

// Creare conexiune

$conn = new mysqli($servername, $username, $password, $dbname);

// Verificareconexiune

if ($conn->connect_error) {

die("Connection failed: " . $conn->connect_error);

}

$sql = "SELECT id, nume, prenume FROM utilizatori";

$result = $conn->query($sql);

if ($result->num_rows > 0) {

while($row = $result->fetch_assoc()) // output data of each row {

echo "id: " . $row["id"]. " – Nume: " . $row["nume"]. " " . $row["prenume"]. "<br>";

}

} else {

echo "0 results";

}

$conn->close();

?>

Rezultatul afișat va fi:

id: 1 – Nume: Utilizator Test2

id: 2 – Nume: Utilizator Test

id: 3 – Nume: EneIulia

O altă funcție importantă oferită de php este aceea că oferă suport pentru a implanta în aplicația web un sistem de autentificare pentru utilizatori, funcționalitate care este foarte importantă pentru noua generație de aplicații web.

În PHP autentificarea se poate face folosind cookie-uri sau sesiunile de PHP.Vom începe cu cookie-urile.

HTML Cookie-urile sunt date trimise de aplicația web pentru a fi stocate pe mașina utilizatorului atâta timp cat utilizatorul navighează pe site. Acestea au apărut ca urmare a nevoii de a păstra anumite informații cum ar fi coșurile de cumpărături sau informații cu privire la ce pagini au fost vizitate de către utilizator. Existăși alte tipuri de cookie-uri în tehnologia web modernă, cum ar fi cookie-urile de autentificare care oferă posibilitatea de a păstra informații despre faptul ca un utilizator este sau nu logat pe un site. În general probleme de securitate sunt legate de cum implementează aplicația folosirea lor sau cum sunt folosite de către browser.

În PHP pentru a face un sistem de login bazat pe cookie-uri trebuie respectați următorii pași:

Căutarea utilizatorului și paroleiîn baza de date

Verificarea că parola introdusă de utilizator este aceeași cu cea din baza de date

Dacă parola corespunde, setarea pe mașina utilizatorului a unui cookie care să indice că utilizatorul este autentificat.

În exemplu de mai jos se prezintă implantarea pașilor descriși:

<?php

functionAuthenticateUser ( $email, $parola ) {

$utilizator = FormatMySqlQueryResult ("SELECT * FROM `utilizatori` WHERE `email` = '". EscapeString( $email ) ."'", 'single');

if(! $utilizator )

eroare_generala("Utilizator necunoscut!");

if( $utilizator['parola'] != GetHashPassword ( $parola ) )

eroare_generala('Parola incorecta.');

setcookie('id', $utilizator['id'], ( time() + 24 * 60 * 60 ), '/');

setcookie('parola', md5( $utilizator['parola'] ), ( time() + 24 * 60 * 60 ), '/');

header("Location: /index.php?modul=utilizator&actiune=profilul-meu");

}?>

În exemplul de mai sus am exemplificat cum se face logarea într-o pagină de web folosind o bază de date MySQL și funcția setcookie. După cum se observă, prima dată se verifică dacă există utilizatorul în baza de date, dacă există se întoarce parola aferentă contului. Aceasta se verifică iar dacă utilizatorul a introdus aceeași parola, se folosește setcookie pentru a salva pe mașina utilizatorului un cookie care conține utilizatorul și parola. Ultima linie din functie

header("Location: /index.php?modul=utilizator&actiune=profilul-meu");

trimite browser-ului un header de HTTP prin care ii forțează sa încarce URL trimis ca parametru.

A doua metodă de autentificare pe o pagină de web se implementează folosind sesiuni din PHP. La accesarea pagini de web se generează un identificator unic, numit identificator de sesiune.

O sesiune poate porni automat dacăîn configurările PHP-ul există setarea:

session.auto_star = 1

Dacă această valoare nu este setată sau este setată cu zero, atunci programatorul trebuie să cheme în scriptul sau session_start(); această funcție va genera sesiunea și îi va atribui acel identificator unic. În interiorul unei sesiuni programatorul poate salva date folosind variabila super globală $_SESSION[‚nume_variablia’].

<?php

session_start();

function AuthenticateUser ( $email, $parola ) {

$utilizator = FormatMySqlQueryResult ("SELECT * FROM `utilizatori` WHERE `email` = '". EscapeString( $email ) ."'", 'single');

if(! $utilizator )

eroare_generala("Utilizator necunoscut!");

if( $utilizator['parola'] != GetHashPassword ( $parola ) )

eroare_generala('Parola incorecta.');

$_SESSION['utilizator'] = $email;

header("Location: /index.php?modul=utilizator&actiune=profilul-meu");

}?>

În exemplul de mai sus verificăm dacă credențialele introduse de utilizator se regăsesc în baza de date, iar dacă sunt, vom seta variabila de sesiune $_SESSION[‚utilizator’]. În toate paginile în care se dorește verificarea faptului că utilizatorul este logat trebuie să se verifice dacă variabila $_SESSION[‚utilizator’] este setată.

O a treia metodă de a realiza autentificareaeste cu ajutorul certificatelor digitale. Acest lucru se realizează prin intermediul serverului Apache și al unui certificat de client instalat în browser sau pe un alt dispozitiv de genul smart card sau token.

Pentru implementarea acestui sistem avem nevoie de următoarele:

Server Apache configurat cu SSL ( certificatul instalat pe server poate fi unul emis de CACert.org;

Certificatul clientului care să fie emis de aceeași autoritate ca și certificatul serverului;

Script PHP.

Pentru configurarea serverului, așa cum spuneam, avem nevoie de un certificat digital. Pentru a-l obține putem apela la CACert.org, o autoritate de certificare comunity based. Pentru obținerea certificatului de server de la CACert, trebuie rulate pe server următoarele comenzi:

openssl genrsa -out <nume_domeniu.key > 4096

openssl req -new -key <nume_domeniu.key> -out <nume_domeniu.csr>

Aceste comenzi vor genera cheia privatăși cererea de semnare. În continuare mergem la carcet.org și în contul noustru putem sa cerem un certificat de server în baza cererii de semnare, CACert urmând să genereze certificatul ce va fi configurat în apache. Pentru configurarea apache-ului trebuie modificat fișierul /etc/httpd/conf.d/ssl.conf în care trebuie adăugate sau modificate următoarele linii:

SSLEngineOn

SSLCertificateFile /etc/ssl/private/nume_domeniu.pem

SSLCertificateKeyFile /etc/ssl/private/ nume_domeniu.key

SSLCACertificateFile /etc/ssl/private/cacert-chain.crt

Următorul pas este să se genereze un certificat de client. Acest certificat se obține tot de pe site-ul cacert.org de la secțiunea „Client Certificate”. După instalarea certificatului se poate încerca logarea. Browserul trebuie săvă întrebe ce certificat doriți să utilizați pentru logare:

Fig. 1 Fereasta Windows Security

Funcții PHP folosite:

mysql_connect: inițializează conexiunea către serverul MySQL, folosindu-se numele hostului și, acolo unde este cazul, IP-ul serverului MySQL, portul, utilizatorul și parola;

mysql_select_db: selectarea bazei de date din MySQL (serverul MySQL poate avea n baze de date, nu doar cea a paginii web);

mysql_real_escape_string: convertește caracterele speciale dintr-un șir de caractere (string) în secvențe escape astfel încat intergoarea sa poata fi executată;

mysql_query: trimite o interogare către baza de date;

mysql_fetch_assoc: funcție folosită în extragerea rezultatelor sub forma de tablou (array) dintr-o bază de date, folosind ca argument o variabila de tip resursa, precum rezultatul returnat de funcția mysql_query();

trigger_error: folosit pentru a genera mesajele de eroare de tip utilizator, dacă ele apar;

preg_match: verifică daca o expresie conține caracterele definite (de exemplu caracterele acceptate într-o adresa de e-mail);

include: evaluează și introduce în pagină o altă pagină;

file_exists: verifică dacă un fișier sau un director există.

Comenzi exprimate prin cuvinte rezervate:

function: definirea unei funcții, pe care mai târziu o apelăm, raspunsul funcției fiind afișat (pentru funcția autentificare raspunsul este cookie-ul);

if: la fel ca și în alte limbaje de programare, funcția if reprezintă executarea condiționată a unor fragmente de cod;

return: încheie rularea funcției (cum ar fi if ) și returnează valoarea acesteia;

while: execută o secvență de cod până în momentul în care aceasta ajunge la o valoare care nu mai este acceptată;

foreach: rularea unei matrici cu date (de exemplu, introducerea datelor de la căutarea utilizatorulor în tabelul de afișare);

isset: verifică dacă o variabilă este stabilită;

switch: funcție similară cu funcția if, ea este folosită pentru a compara o expresie cu mai multe valori;

$_GET: este predefinit în PHP pentru a prelua datele introduse într-un formular HTML prin metoda get, metodă prin care toate variabilele sunt scrise în link (Adresă uniformă pentru localizarea resurselor, abreviat URL);

$_POST: este predefinit în PHP pentru a prelua datele introduse într-un formular HTML prin metoda post;

$_FILES: este predefinit în PHP pentru a prelua fișierul dintr-un formular HTML prin metoda post;

global: prin aceasta comandă se preia valoarea unei variabile în cadrul unei funcții, variabila ce poate fi considerată ca fiind o variabilă globală;

die: face același lucru cu funcția exit, încheie rularea scriptului.

Accesarea bazei de date prin intermediul PHP nu poate fi realizată fără existența unui script de logare. Acest fișier conține adresa bazei de date, utilizatorul bazei de date, parola și numele acesteia, după cum este exemplificat mai jos, unde este definită conectarea la baza de date.

define('DB_HOST', 'localhost');

define('DB_USER', 'root');

define('DB_PASW', 'licenta');

define('DB_NAME', 'licenta');

Conectarea unui utilizator la baza de date se realizează prin funcția DEFINE din PHP. Între apostrof sunt corespondenții fiecărui element după cum urmează:

Definim adresa bazei de date ca DB_HOST, adresa fiind propriul calculator (localhost);

Utilizatorul folosit pentru autentificare este asociat DB_USER, utilizatorul fiind root;

Parola este următorul element definit prin DB_PASW, parola fiind licența;

Numele bazei de date utilizate este definit ca DB_NAME și este licența.

Capitolul 3

Aplicația „Web site de sanatate”

3.1 Scopul si descrierea aplicației

Mi-am propus să realizez un website de tip forum de discuții privind îngrijirea sănătății prin exerciții și alimentație. S-au proiectat si realizat urmatoarele categorii de butoane/informatii: HOME, SANATATE, SPORT, CALATORII, FEEDBACK, LOGIN.

Instrumente utilizate: HTML5, CSS, Javascript, jQuery, PHP, MySQL.

S-au creat două Baze de date:

1. Baza de date site care conține două tabele: users si comentarii

2. Baza de date search care conține un singur table si anume: myvideo

Baza de date Site

A.Diagrama relatională a bazei de date site

Fig. 2 Diagrama relationalăa bazei de date

B. Descrierea tabelelor

**Tabelul usersstochează informațiile despre utilizator și este alcătuit din 12 coloane.

Din punct de vedere al cheii pe coloanauser_id, avem o cheie primară, iar ca tip de date avem int. Ce face această coloana?Simplu, stocheaza id-ul utilizatorului.

Coloanele username, first_name, last_name contribuie la crearea numelui utilizatorului, ca tip de date este folosit varchar.

Coloana password reține parolele utilizatorilor.Ca și metoda de criptare a parolei s-a folosit md5. Coloanele email si code_em rețin informații cu privire la email(adresa de email si codul).

In coloana active putem vedea daca userul este activ sau nu, daca acesta este activ in baza de date o sa ne apara 1, altfel o sa apara 0.

Coloana password_recov de tipul int reține daca utilizatorul a cerut recuperarea parolei.

Coloana tip a fost creata cu scopul de a face distincția intre administratorul bazei de date si un utilizator obisnuit. Ca si identificatori avem cifrele 1 si 0; 1 pentru administrator si 0 pentru un user oarecare.

Coloana email_al înregistreaza carui utilizator trebuie trimis emailul.Ca identificator avem 1 pe coloana.

Figura 3. Tabelul users din baza de date “site”

In coloana profile se stocheaza fotografia de profil actuala

**Tabelulcomentariistocheaza comentariile facute de utilizatori, acesta cuprinde 4 coloane: id_comment, comment, user_id, pagina

Coloanele id_comment,user_id stocheaza id-uri atât al comentariului cât si al utilizatorului,ca tip de date s-a folosit int.

Coloana de tip text commentinregistreaza comentariile .

Coloana pagina, ca tip de date int, a fost creată cu scopul de a diferentia paginile pe care se fac comentariile, de exemplu 1 corespunde paginii video.php(pagina sport) si 2 corespunde paginii feedback.php(pagina de feedback).

În imaginea de mai jos se vede clar ca pe coloana pagină avem doar cifrele 1 si 2.

Figura 4. Tabelul comentariidin baza de date “site”

Baza de date Search

A.Diagrama relationala a bazei de date Search

Figura 5. Diagrama relationala a bazei de date “search”

B Descrierea tabelelor

Search reprezintă o baza de date care stocheaza clipuri video (sport) si este strâns legată de butonul de search (aici poti tasta tipul de video dorit).

În imagine se poate vedea cum functionează acest buton si faptul ca returnează valori din baza de date.

Figura 6. Imagine buton de cautare

Ca si constructie, baza de date Search este compusă dintr-un singur tabel, acesta continând 4 coloane: id, name, data si link.

Figura 7.Tabelul myvideo din baza de date “search”

Coloana id ca și tip de date, este int și reprezintă id-ul videoclipurilor.

Ca tip de date coloana name , este de tip varchar iar coloana datade tip int, de asemenea col data, precum sugerează si numele, reprezintă data la care au fost adăugate clipurile video.

Cat despre coloana link stocheaza url-ul clipurilor video.

3.2 Mod de concepere și implementare

Prima pagină (index.php)

Figura 8. Pagina index.php

Această primă pagină reprezintă elementul principal al aplicatiei și descrie obiectivele cele mai importante. Navigarea către celelalte pagini se poate face folosind bara de meniu orizontala.

Denumirea primei pagini “”index.php””

<html>

<head>

<link href='http://fonts.googleapis.com/css?family=Oswald:400,300' rel='stylesheet'>

<link href="http://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet">

<link href="/site/style.css" rel="stylesheet">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

<script src="cycleplugin.js"></script>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.cycle/3.0.3/jquery.cycle.all.min.js"></script>

<script type="text/javascript">

function cautaq(){

var searchTxt = $("input[name='search']").val();

$.post("search.php", {searchVal: searchTxt}, function(output){

$("#output").html(output);

});

}

</script>

</head>

<body>

<div class="header">

<div class="container">

<div class="row">

<div class="col-sm-11">

<a href="/site/index.php"><p class="header3">Home</p></a>

<ul class="menu">

<li><a href="/site/diete.php">Sanatate</a></li>

<li><a href="/site/video.php">Sport</a></li>

<li><a href="/site/retete.php">Alimentatie</a></li>

<li><a href="/site/feedback.php">Feedback</a></li>

<li><a style="font-size:23px;" href="/site/login.php">Login</a></li>

<li>

<form action="video.php" method="post"style="display:inline;">

<input type="text" name="search" placeholder="Cautare" onkeydown="cautaq()">

<input type="submit" value=">>"/>

</form>

<div id="output">

<div class="cont">

</div>

</div>

</li>

<a style="font-size:10px; margin-left:350px; word-spacing: none; color:blue" href="/site/register.php">Register</a>

</div>

</div>

</div>

</div>

<h2 class="heading"><i>&#34 Mente sana, cuerpo sano &#34; </i></h2>

<script src="cycleplugin.js"></script>

<div class="slider">

<div class="slide active-slide">

<div class="container">

<div class="row">

<div class="slide-copy col-xs-5">

<h1>Totul consta in ceea ce mananci</h1>

<p>Sa iti doresti sa fii sanatos este o parte din sanatate (Seneca)</p>

</div>

<div class="slide-img col-xs-7">

<img src="http://localhost/site/images/health.png" width="740px" height="450">

</div>

</div>

</div>

</div>

<div class="slide slide-feature">

<div class="container">

<div class="row">

<div class="col-xs-12">

<h1><a href="#">Retete</a><h1>

</div>

</div>

</div>

</div>

<div class="slide">

<div class="container">

<div class="row">

<div class="slide-copy col-xs-5">

<h1>Sanatatea e tot ce conteaza</h1>

<h2>fa miscare</h2>

<p>Sportul este cultivarea consecventă și voluntară a efortului fizic intensiv.( Pierre de Coubertin)</p>

</div>

<div class="slide-img col-xs-7">

<img src="http://localhost/site/images/jump.png">

</div>

</div>

</div>

</div>

<div class="slide">

<div class="container">

<div class="row">

<div class="slide-copy col-xs-5">

<h1>Diete</h1>

<p>De la Pegan la Dukan, dietele reprezinta un mod a imbunatati stilul de viata, de a pastra greutatea corporala pe acceasi linie. Dietele sunt pentru cei ambitiosi, iubitori de frumos.</p>

</div>

<div class="slide-img col-xs-7">

<img src="http://localhost/site/images/dietplan.png" width="540px" height="440px">

</div>

</div>

</div>

</div>

</div>

<div class="slider-nav">

<a href="#" class="arrow-prev"><img src="http://localhost/site/morningex/prev.png"></a>

<ul class="slider-dots">

<li class="dot active-dot">&bull;</li>

<li class="dot">&bull;</li>

<li class="dot">&bull;</li>

<li class="dot">&bull;</li>

</ul>

<a href="#" class="arrow-next"><img src="http://localhost/site/images/next.png"></a>

</div>

</div>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script src="flipboard.js"></script>

<!–cream un container care sa cuprinda cele doua div-uri–>

<body>

<div class="">

<div class="row">

<div class="col-md-7 col-xs-7" style="word-wrap: break-word; padding: 30px">

<!–left content–>

<h3 style="color: blue; padding-left:33px;">Cum sa construim o fundatie puternica a sanatatii?</h3><br><br>

<img class="imgstylefpage" src="http://localhost/site/images/ayurveda.png"></img><br>

<p class="leftstyle" style="line-height:10px; font-size: 20px">4 directii pentru o viata sanatoasa</p><br>

<p class="paragonright" style="text-indent: 20px;">Mentinerea starii generale de sanatate include adresarea catre minte, corp, spirit si conexiuni sociale despre cine esti si cum traiesti. Vazand viata in felul acesta, coplesirea

ideii generale de sanatate incepe sa se estompeze. Exista 4 idei biologice cu privire la sanatate</p><br>

<p style="margin-left:33px"><b>1. Alimentatia sanatoasa</b></p><br>

<p class="" style="text-indent: 20px; margin-left: 33px">

Corpul tau are nevoie substante nutritive pentru a funcționa in mod corespunzător .

Avand obiective realiste cu privire la alimentatia ta , care se potrivesc cu viata ta este cheia succesului . Acest lucru poate insemna de multe ori mici îmbunatatiri , dar constante .

</p>

<p style="margin-left:33px"><b>2. Relaxarea si exercitiul mintii</b><br></p>

<p class="img" style="text-indent: 20px; margin-left: 33px">Produsele chimice pe care corpul tau produce atunci cand va confruntati cu stresul poate slabi sistemul imunitar. Acest lucru poate lasa celulele imune mai predispuse la infectii.Este aproape imposibil de a evita complet de stres, dar gestionarea stresului este importanta pentru sanatatea noastra fizica si mentala

Pentru a scapa de stres ne putem relaxa cu diferite jocuri, de ex jocul de sah.

</p>

<p style="margin-left:33px"><b>3. Exercitiile fizice</b><br></p>

<p class="" style="text-indent: 20px; margin-left: 33px">Cateva kilograme de masa musculara(masa musculara slaba),poate face diferenta

in cat de bine cineva se recupereaza de la o infectie. Exista mai multe motive pentru care exercitiul este bun pentru noi, de a ajuta muschii si oasele sa ramana puternice, pentru imbunatatirea functiei inimii

si a plamanilor nostri. Pentru masa musculara cat si pt imbunatatirea functiilor organismului uman ciclismul reprezinta una dintre cele mai eficiente metode.

</p>

<p style="margin-left:33px"><b>4. Odihna si somnul</b><br></p>

<p class="" style="text-indent: 20px; margin-left: 33px">

Corpul tau cand doarme se vindeca. Multi oameni se descurca mai bine dupa 8 ore de somn in fiecare noapte.Insa cantitatea poate fi diferita de la un om la altul.

Cand corpul tau doarme intra in repaus,deci in odihna totala.

</p>

</div>

</body>

</html>

Pagina de înregistrare(register.php)

Figura 9. Pagina register.php

Reprezinta pagina in care utilizatorul se inregistreaza, oferind date prin completarea celor 6 campuri de mai sus. De mentionat este ca nu toate campurile sunt obligatorii ci doar cele marcate cu *.Inregistrarea se face si fara completarea campurilor care nu au * .

Ca orice formular de inregistrare, se incepe prin a se verifica campurile.

COD PHP:

if(empty($_POST)=== false){//verifica daca campurile sunt goale

$campuri_obligatorii=array('username','password','password_ag','first_name','email');

foreach($_POST as $cheie=>$valoare){

if(empty($valoare)&& in_array($cheie, $campuri_obligatorii)=== true){

$erori[]='Campurile marcate cu * sunt obligatorii';

break 1;

}

}

Verificam daca campurile obligatorii: 'username','password','password_ag','first_name','email', sunt goale, daca da atunci se printeaza eroarea: 'Campurile marcate cu * sunt obligatorii, nepermitandu-i utilizatorului sa se inregistreze. Daca aceste campuri obligatorii sunt completate corect userul se inregistreaza , dupa aceea putand sa se autentifice.

Pagina de autentificare(login.php)

Figura 10. Pagina login.php

Aceasta permite sau nu utilizatorului de a-și accesa contul.Spunemnu permite pentru că mai există cazuri in care utilizatorul și-a uitat parola sau numele de utilizator și va trebui sa treaca prin catevaetape de recuperare a acestora.

Etape necesare recuperării numelui de utilizator sau a parolei:

-Introducerea adresei de email in casuta de mai jos si apăsarea pe butonul de recuperare.

In momentul apăsarii butonului se trimite un email cu numele de utilizator sau parola pe adresa celui care a solicitat asta.

Figura 11. Pagina recuperare.php

-Verificarea casutei de mesaje.In aceasta găsim un anumit tip de mesaj .

Tipul de mesaj primit: Hello nume_utilizator,

Numele tau de utilizator este: nume_utilizator

In cazul in utilizatorul iși știe toate datele necesare logării, aceasta se face normal.

COD PHP:

if(empty($username) === true || empty($password) === true ){

$erori[]= 'Trebuie sa introduci username si parola';

}else if(exista_user($username)=== false){//verificam daca userul exita

$erori[]= 'Te-ai inregistrat?? Nu putem gasi acest nume de utilizator';

Verificăm daca câmpurile nume de utilizator, parola sunt goale, daca da printeaza eroarea : 'Trebuie sa introduci username si parola’, altfel daca verificam ca userul nu exista printam alta eroare: Te-ai inregistrat?? Nu putem gasi acest nume de utilizator'.

Dacă aceste doua câmpuri, nume de utilizator si parola corespund cu datele oferite de utilizator la înregistrarea pe site, se poate face autentificarea. Dupa logare, fiecare utilizator va putea să intre in contul sau si sa:

Să iși incarce fotografia de profil

Să iși vizualizeze profilul(adresa de email cu care e logat)

Să se delogheze

Să se aboneze la newsletter

Să iși schimbe parola

Figura 12. Pagina loggedin.php cu redirect in template.php

Pagini de administrare(mail.php)

Pagina mail.php

Figura 13. Pagina mail.php

Accesul pe această pagina ii este permis doar administratorului aplicației.Ce poate face administratorul?Acestapoate trimite email tuturor utilizatorilor. Restricțiile sunt date de doua funcții: -pagina_protej();

-protej_admin();

cod:function pagina_protej(){

if(logat_in()=== false){

header('Location: protected.php');

exit();

}

}

function protej_admin(){//functie de verificare administrator(verifica daca cel autentificat este admin pentru a putea trmite email tuturor utilizatorilor)

global $user_data;

if(acces($user_data['tip'], 1) === false){

header('Location: template.php');

exit();

}

}

Pagina de comentarii și email(feedback.php)

Pe partea de email, fiecarui utilizator neinregistrat i se oferă posibilitatea sa contacteze administratorul completând câmpurile: nume, email, mesaj.

-nume(numele utilizatorului neînregistrat),

-email(aici se introduce emailul administratorului),

-mesaj(tipul de mesaj pe care dorește sa-l trimită userul)

Figura 14. Pagina feedback.php- partea mesaj

COD:

$numar_pagina = 2;

if(isset($_POST['sub_contact'])){

$name='';

$name=trim($_POST['name']);

$email=trim($_POST['email']);

$mesaj=$_POST['message'];

//verificam daca $nume si $email are header injection

if(has_header_injection($name)|| has_header_injection($email)){

die();//daca este adevărat, omoara scriptul

}

Partea de comentarii concepută pentru utilizatorii înregistrati, permite acestora sa transmită experientele dupa folosirea acestei aplicatii.

În casuta de comentarii găsim o informare:“Pentru a lăsa comentarii te rugăm să te înregistrezi”, ceea ce înseamna cănici un utilizator nu poate sa-și transmită părerile decât dacă este logat.Orice încercare de postare a comentariilor fara logare e însotita de un mesaj de avertizare.

Figura 12. Pagina feedback.php – partea comentarii

Doar dupa înregistrare, utilizatorii pot lăsa comentarii. In ceea ce priveste inserarea acestora în baza de date folosim functia:

COD PHP:

public static function inserare($text_com, $user_id, $numar_pagina){

$text_com = addslashes($text_com);

//insereaza date in baza de date

$sql="Insert Into comentarii VALUES ('', '$text_com', '$user_id', $numar_pagina)";

$query=mysql_query($sql);

if($query){

$ins_id = mysql_insert_id();

$std = new stdClass();

$std->id_comment= $ins_id;

$std->comment =$text_com;

$std->user_id = (int)$user_id;

return $std;

}

return null;

}

Bibliografie

1. Luke Welling, Laura Thomson, PHP and MySQL Web Development, Ed. Addison-Wesley Professional, 2006

2. Jeremy D. Zawodny, High Performance MySQL, Ed. O'Reilly Media, 2004

3. Traian Anghel, Programarea în PHP,  Editura Polirom, Bucuresti 2005
4.Douglas Crockford, JavaScript: The Good Parts, O'Reilly Media, Inc. 2008
5.Paul DuBois, "MySQL", Editura Teora, 2001
6.Ileana Popescu, Letiția Velcescu,  Proiectarea bazelor de date, Editura Universitatii din Bucuresti, 2007

7. Marin Vlada, Birotică. Tehnologii multimedia, Editura Universității din București, 2004

8. David Sawyer McFarland, JavaScript & jQuery: The Missing Manual, Editura Orelly, 2011

9. Jonathan Chaffer, Karl Swedberg, Learning jQuery, Third Edition, Editura Packt, 2011

10. Tudor Sorin, Vlad Hutanu, Crearea și programarea paginilor WEB, Ed. L&S SOFT, 2006.

11. Kevin Kline, SQL in a nutshell , 3rd Edition, O`Reilly 2008

12. Steven Holzner,PHPThe Complete Reference, McGraw-Hill Education (India) Pvt Limited, 13. George Schlossnagle, Advanced PHP Programming Sams Publishing, 2007

14. http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10

15.

http://www.scritube.com/stiinta/informatica/html/Introducere-istorie-versiuni-H31361.php

16.https://developer.mozilla.org/en-US/docs/DOM_Levels

Similar Posts

  • Perfectionarea Procesului Motivational In Sectorul Sanitar

    === 9378d01be5ee94b1fca1380e4f728fe1d3f04df2_310777_1 === CUPRINS INTRODUCERE CAPITOLUL I RESURSELE UMANE ÎN SERVICIILE DE SĂNĂTATE Generalități referitoare la resursele umane 1.2Tehnici de motivare a personalului 1.3Serviciile de sănătate CAPITOLUL IICERCETARE PRIVIND PRINCIPALELE MODALITATI DE MOTIVARE A PERSONALULUI DIN SECTORUL SANITAR 2.1Motivarea personalului din sectorul sanitar 2.2 Metotologia cercetării 2.3 Stabilirea obiectivelor și a ipotezelor cercetării CAPITOLUL III…

  • Milka Vs Heidi

    Unii consumatori preferă în mod clar o anumită ciocolată, când este vorba să aleagă între Milka și Heidi, în timp ce alții nici măcar nu-și dau seama ce diferență este între cele două. Am ales să compar cele două mărci dupa mai multe criterii și anume: Noțiuni referitoare la valoare și valoare de întrebuințare Metodologia…

  • Analiza Pozitiei Financiare

    Analiza pozitiei financiare Studii de caz A. Analiza structurii patrimoniului (activelor) si surselor de finantare (capitalurilor si datoriilor) În vederea analizei detailate a structurii activelor și a surselor de finanțare la ALFA S.A., informațiile din bilanțul contabil au fost prelucrate și sintetizate în următorul tabel, calculandu-se ratele de structura: Activele imobilizate detin ponderea cea mai…

  • Corpul Feminin In Publicitate

    CUPRINS CORPUL FEMININ ÎN PUBLICITATE INTRODUCERE CAPITOLUL I – Сonsidеrаții tеorеtiсе privind publiсitаtеа Publiсitаtеа Сonсеptul dе promovаrе Struсturа асtivității promoționаlе Impactul femeii în publicitate și rеlаțiilе publiсе Publiсitаtеа dirесtă CAPITOLUL II – Limbajul Corpului 2.1. О реrsреctivă dе аnsаmblu 2.2. Gеsturilе si рublicitаtеа CAPITOLUL III – Corpul fеminin în publicitаtе 3.1. Аbordаrе tеorеtică 3.2. Intеrprеtаrеа…

  • Administratia Publica Dupa Caderea Regimului Comunist

    ARGUMENT După căderea regimului comunist în România crearea unui sistem modern și eficient de administrație publică a fost considerată o prioritate pentru toate guvernele . Cauzele care au determinat imposibilitatea aplicării unei reforme reale administrației au constat în: constrângeri financiare, lipsa de experiență în ceea ce privește structurile administrative alternative, absența unor reglementări clare privind personalul și structurile administrative, lipsa de pregătire a politicienilor și a funcționarilor…

  • Eficienta Tratamentului DE Kinetoterapie In Patologia Degenerativa Localizata LA Nivelul Genunchilor

    Universitatea de Medicină și Farmacie Târgu Mureș Facultatea de Medicină Specializarea: Balneofiziokinetoterapie și Recuperare LUCRARE DE LICENȚĂ EFICIENȚA TRATAMENTULUI DE KINETOTERAPIE ÎN PATOLOGIA DEGENERATIVĂ LOCALIZATĂ LA NIVELUL GENUNCHILOR Fundamentare teoretică CAPITOLUL I Parte generală………………………………………………………………………3 Anatomia genunchiului………………………………………………….3 Biomecanica articulației genunchiului………………………………6 Gonartroza ………………………………………………………………..7 CAPITOLUL II 2.1 Motivarea alegerii temei……………………………………………………10 2.1.1 Argumentație…………………………………………………………..10 2.1.2 Ipoteze…………………………………………………………………..11 2.1.3 Scop……………………………………………………………………..11 2.1.4 Sarcini……………………………………………………………………11…