DOMENIUL DE LICENȚĂ: INFORMATICĂ LUCRARE DE LICENȚĂ COORDONATOR ȘTIINȚIFIC ABSOLVENT Conf. Dr. Vlada Marin Ene Iulia Andreea 2016 2 UNIVERSITATEA DIN… [632146]
1
UNIVERSITATEA DIN BUCUREȘTI
FACULTATEA DE MATEMATICĂ ȘI INFORMATICĂ
DOMENIUL DE LICENȚĂ: INFORMATICĂ
LUCRARE DE LICENȚĂ
COORDONATOR ȘTIINȚIFIC ABSOLVENT: [anonimizat]
2016
2
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
2016
3
Cuprins
Introducere ……………………………………………………………………………………. 4
1. World wide web si proiectarea aplicatiilor
1.1 Internet si World Wide Web………………………………………….. 6
1.2 Introducere în proiectarea aplicațiilor web ………………………. 8
1.3 Publicarea unui site web……………………………… ……………….. 10
2.Tehnologii pentru dezvoltarea aplicațiilor web
2.1 Tehnologii pe partea de client …………………………………………. 14
2.1.1 HTML și CSS ……………………………………………………………………….. 14
2.1.2 Javascript…………………………………….……………………………………… 21
2.1.3 jQuery………………………………………………………………………………. 26
2.1.4 DOM (Document Object Model)………………….………………………. 28
2.2 Tehnologii pe partea de server ……………………………………….. 29
2.2.1 PHP și Apache …………………………………………………………………… 29
2.2.2 SQL si MYSQL …..…………… ……………………………………… …………. 33
2.2.3 PHP și MYSQL…..……………………………………………………………….. 44
3. Aplicația „Web site de sănătate”
3.1 Scopul și descrierea aplicației………………………………………………. 51
3.2 Mod de concepere și implementare…… …………………………………… 56
Bibliografie ………………………………………………………………………….. 73
4
Introducere
Din punct de vedere al tehnologiei folosite, web site -urile se împart în două
categorii:
1. Web site static ce conține informații care nu pot fi schimbate. Un web site
static rămâne la fel pe ntru fiecare utilizator al sau.
2. 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 st ructura 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. Scriptingul pe partea deserver. Pagini
web care se schimbă când o pagină este încărcată sau vizitată folosesc partea
de server scr ipting.
Conținutul server -side se generează când o pagină este încărcată, de ex:
forumu rile, paginile de login, coșurile de cumpărături, formularele de
prezentare, toate folosesc scripturi server side deoarece aceste pagini se
modifică în funcție de ce le este trimis. Exemple de limbajele de scripting: PHP,
JSP, ASP, ASP.net . Avantajele pr incipale 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 de pagini 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 .
Lucrarea este structurată astfel:
5
Capitolul 1 “World wide web și proiectarea aplica țiilor” conținee aspecte
legate de noțiunile : internet , world wide web și aspecte în proiectarea
aplicatiilor web.
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 cuprinde toate etapele și
validă rile 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 rea lizarea 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 u tilizatori înregistrati ; Componenta
pentru administrator ;
6
Capitolul 1
1. World wide web si proiectarea aplicatiilor
1.1 Internet și World Wide Web
Internetul e ste un sistem mondial de rețele de calculatoare interconectate, care
facilitează serviciile de comunicare a datelor, oferind utilizatorilor o serie de de servicii, dintre
care amintim: poșta electronică (e -mail), transferul de fisiere FTP (File Transfer Proto col),
conectarea la distanță (telenet) si World Wide Web -ul (cunoscut și sub numele de WWW sau
WEB).
Cel mai utilizat și mai dinamic serviciu al Internetului este World Wide Web. Inițial,
www -ul a constat din pagini statice, care erau actualizate doar ocaz ional de către deținătorii lor.
Ulterior, acesta a cunoscut o serie de modificări și îmbunătățiri continue. La ora actuală, acesta
este accesibil și utilizat la scară largă, atât de către instituții și corporații, cât și de către oameni
obișnuiți. Prin mod ul intuitiv și simplu de regăsire a informației, web -ul a atras din ce în ce mai
mulți utilizatori de vârste și categorii sociale diferite, aparținând unor domenii diverse de interes.
Astfel, web -ul a pătruns încet dar sigur în viața de zi cu zi a unui num ăr foarte mare de oameni,
în majoritatea domeniilor de interes ale acestora (economie, industrie, educație, sănătate,
adminsitrație publică, divertisment etc), având un rol foarte important în viața acestora.
Prin accesul la internet/web, utilizatorii au a cces la numeroase aplicații:
afișarea de informații dinamice – text, imagini și sunete (pagini web)
poșta electronică (e -mail)
transferul de fișiere de date și informații
mesagerie instat, video, telefonie
televiziune si radio on -line
e-commerce
răspândirea știrilor si a altor conținuturi media
grupuri de discuții pe teme prestabilite (forum)
7
jocuri interactive prin rețea
operații bancare ( Internet banking )
rețele de socializare și blog -uri
motoare de căutare
site-uri oficiale ale instituțiilor
Avantajele Internetului:
resurse informaționale numeroase
accesarea resurselor și serviciilor de către mai mulți utilizatori în același timp
mediu dinamic
ușurința regăsirii unor informații utile
conținut securizat
accesarea de la distanță a informațiilor
scalabilitatea
conținut multimedia
independență de platfomă
Evoluția din ultimii ani a Internet -ului și a web -ului a determinat tot mai multe firme și
persoane particulare să -și dorească propriul site, care să poată fi accesat de oricine din lume.
Portalurile WEB sunt aplicații specializate, care permit căutarea de informații specifice
unui domeniu de interes. În plus, un portal oferă servicii de poștă electronică, informații
utile (curs valutar, starea vremii etc.), posibilitatea înscrierii la gru puri de discuții etc. Astfel, un
portal reprezintă un integrator de conținut, fără a oferi o colecție nestructurată de legături spre
alte site -uri.
Portalul unei companii îmbină accesul la datele interne ale firmei cu accesul
general la web, of eră posibilități de personalizare a conținutului și poate pune la dispoziție
mijloace flexibile de staocare structurată a informațiilor.
Există mai multe tipuri de portaluri :
– portaluri de date – sunt dedicate în special transmiterii rapoartelor organizației unui
set larg de utilizatori, folosind tehnologiile Internet. De exemplu, portalul SEI al MEC:
http:\\portal.edu.ro cu rapoarte după admiterea computeriza tă în licee, sau după concursul de
titularizare
8
– portaluri de informații : se concentrează asupra organizării și livrări Internetului a
informațiilor nestructurate sau incluse în documente tradiționale;
– portaluri de colaborare : oferă mediu atractiv de colaborare între utilizatori.
Cerințele de exploatare a acestor portaluri sunt similare cu cele ale sistemelor de gestiune
a bazelor de date: posibilități de căutare structurată sau bazată pe exemple, de răsfoire a datelor,
de filtrare automată a informaț iilor, de gestiune a versiunilor multiple de documente, de
modificare automată la fiecare actualizare etc.
1.2 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 chi ar 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 tre i 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 We b. 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 intermedi ul 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:
9
O aplicație web este un sistem software bazat pe tehnologii le ș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 utilizatoru lui.
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 proiectar ea 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 prac tică 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 oa menilor 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.
Terme nii 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 aplicatiil e 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:
10
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ă plan ificarea ș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, precu m și
măsurarea calității rezultatelor fiecarei faze.
1.3 Publicarea unui site web
În momentul în care se ia decizia publicării unui site web, apar întrebări de genul:
cu ce program pot să -mi creez propria pagina web
pe ce server să o găzduiesc ?
ce trebuie să fac pentru ca to ți ceilalți să găsească site -ul ?
mă costă ceva pentru a avea propriul site web ?
cați vizitatori a avut site -ul ?
Primii pași în publicarea unui site web sunt următorii:
crearea site -ului offline sau online;
găzduirea lui pe un server Internet
obținerea unui nume pentru site -ul web
anunțarea (promovarea) site-ului
urmărirea vizitatorilor.
Crearea site -ului offline sau online se poate face astfel:
pentru realizarea manuală a site -ului este nevoie de un editor ASCII, un editor
grafic, cunoștințe de HTML, eventual de limbaje scripting client (JavaScript, VBScript) și server
(Perl, PHP, ASP).
există o serie de programe care permit editarea paginilor cu facilități
suplimentare: syntax highlight , cod completition , etc.
cu ajutorul unor programe de tip WYSIWYG, care permit realizarea și
întreținerea de site -uri web fără ca utilizatorul să posede cunoștințe de HTML sau programare.
11
utilizatorii mai grăbiți care nu doresc să investească timp în învățarea diferitelor
programe își pot c rea site -ul online, folosind diverse servicii puse la dispoziție de alte site -uri din
Internet.
Găzduirea site -ului pe un server web
Publicarea pe web a site -ului se poate face pe serverele proprii (ale firmei, școlii,
universității) sau pe serverele unei alte firme care oferă servicii de webhosting.
Lățimea de bandă reprezintă cantitatea de date (informații) ce pot fi transmise într –
un interval fix de timp. Pentru dispozitive digitale (calculatoare), lățimea de bandă este
exprimată în biți pe secundă (bps) sau bytes (8 biți) pe secunda (Bps).
Lățimea de bandă definește mărimea „conductei” prin intermediul căreia informația
se deplasează de la un computer la altul. Cu cât lățimea de bandă este mai mare, cu atât mai
multă infor mație se deplasează într -un interval de timp.
Este indicat ca înainte de a trece la proiectarea și realizarea paginilor web să se
efectueze un studiu privind lățimea de bandă a audienței paginilor web. Din punct de vedere al
modului de realizare a pa ginilor web, este bine de știut dacă acestea se încarcă greu, multe
persoane care accesează pagina nu vor aștepta ca aceasta să se încarce până la sfârșit.
Serviciile de webhosting oferite de firme pot fi cu plată sau gratuite (de obicei, pe
aceste site-uri, gazdele inserează reclame în paginile utilizatorilor).
Alegerea unui site pentru webhosting se realizează pe baza mai multor criterii:
cât timp este disponibil server -ul de webhosting
serverul suportă scripting sau nu (majoritatea site -urilor de tip free hosting
nu suporta scripting pe partea de server)
serverul de webhosting suportă lucrul cu baze de date
server -ul de webhosting asigură clientului statisticile de vizitatori ai site –
ului
Obținerea unui nume de domeniu
De multe ori este necesară obținerea unui nume de domeniu de tipul: www.nume.com
sau www.nume.ro. Pentru a obține un nume de domeniu propriu, se recomandă vizitarea site -ului
www.rotld.ro (pentru domenii .ro) sau www.internic.net (pentru domenii .com, .net, .org).
Populari zarea site -ului
Se poate face offline (prin reclame TV, radio, ziare, reviste, participarea la sesiuni și
conferințe tematice) sau online (prin înscrierea la motoare de căutare și webdirector -i, folosirea
unui schimb de banner -e publicitare, înscrierea la liste de discuții specifice profilului site -ului,
postarea de mesaje pe diverse site -uri, oferirea pentru vizitatori a unor servicii grat uite care să -i
atragă și să – determine să revină ulterior).
12
Referitor la înscrierea în motoare de căutare, există motoare de căutare internațională
(www.altavista.com, www.yahoo.com, www.lycos.com, www.excite.com, www.hotbot.com)
sau din România (www.ac asa.rom, www.kappa.ro, www.start.ro, www.rol.ro, www.top100.ro).
Pentru indexarea corectă a site -ului, este necesar ca la proiectarea paginii web să fie
respectate cîteva reguli de bază: titlurile paginilor să reflecte clar conținutul și să specifice
numele persoanei sau firmei; toate documentele HTML trebuie să conțină marcajul <META> și
cele două atribute absolut necesare: keywords, description.
Popularizarea site -ului se poate face și prin înscrierea acestuia în rețele de schimb
de banner -e sau cumpărare de spații publicitare în cadrul altor site -uri de profil. Iată cîteva
exemple: www.goldenclick.ro, www.hyperbanner.com, www.linkexchange.com .
Urmărirea vizitatorilor site -ului
Foarte mulți utilizatori folosesc contoare puse pe prima pagină pentru urmărirea
vizitatiorilor site -ului. Acest mod este total inestetic din punct de vedere grafic. O bună metodă
de urmărire a vizitatorilor constă în folosirea serviciilor oferite de serve r-ul care găzduiește
pagina sau de cel care asigură schimbul de banner -e.
Pentru utilizatorii avansați și pentru programatorii web, se recomandă scrierea propriilor
scripturi folosind tehnologiile enumerate mai sus: PHP, CGI, ASP, CSS, DHTML, XML,
SHTML, VHTML, JavaScript, VBScript, Perl.
Servere WEB
Un server web are rolul fundamental să accepte cereri HTTP și să transmită răspuns
clienților. Pentru acestea, el realizeaza urmatoarele etape:
efectuare control acces , în funcție de drepturi de fișier, nume + parolă
analiza documentului (înlocuirea cu valoarea corespunzătoare pentru orice
cîmpuri condiționale din interiorul documentului) înainte de a -l trimite către client
generare script CGI sau program API (application program interface)
particularizat, c are s` evalueze conținutul formularului transmis și să prezinte un document creat
dinamic sau să acceseze o bază de date;
trimiterea unei miniaplicații Java către un client
înregistrarea erorilor, a eșecurilor sau a unei accesări reușite
Serverele de We b sunt programe care ruleaz ă pe un calculator, ascult ă pentru si servesc
cererile clientilor. Cererile clientilor înseamna ca un browser de pe un calculator din Internet se
conecteaza la calculatorul pe care ruleaza serverul de Web, si îi cere un fisier HT ML. Serverul ia
fisierul de pe harddisk, eventual îl procesează, si îl trimite clientului, care apoi îl proceseaza si îl
afiseaza. Fisierul HTML implicit este de obicei „index.html” ; de obicei, când la conectarea la
un site, serverul de acolo trimite implicit fisierul „index.html” .
13
Un server web este ca un servitor, care în momentul rostirii cuvântului “cină” știe că
trebuie să se ducă în bucătărie, să pregătească mâncarea și să o pună pe masă. La fel, un server
web, în momentul introducerii u nei adrese web (URL) în browser, va “servi” utilizatorului care a
solicitat -o acea pagină. De exemplu, la URL -ul www.numesite.ro/start.php, avem:
www este numele server -ului
numesite.ro este domeniul server -ului
start.php este numele fișierului
Afișarea un ei pagini web se face în următorii pași:
browser -ul caută in DNS numele serverului (www.numesite.ro) și va face
conversia in adresa IP
browser -ul se conectează pe portul HTTP 80 la adresa IP rezultata si trimite o
comandă GET pentru fisierul strat.php
server-ul trimite fisierul solicitat in format HTML
browser -ul interpretează instrucțiunile HTML și le afișează
DNS – domain name server : exist ă multe servere de acest tip în lume, care au rolul de a
înțelege o specificație de forma www.numesite.ro și a re turna o adresa IP de forma
nr1.nr2.nr3.nr4 corespunzătoare acelui site. Pentru a realiza această interogare, se adresează
întrebarea mai înt âi server -ului DNS răspunzător de domeniul .ro, mai departe se trece la
interogarea acestuia in domeniul numesite, i ar server -ul DNS care gestionează numesite.ro stie
adresa IP corespunzătoare numelui www.numesite.ro si o returnează browser -ului).
În România, autoritatea care gestionează adresele din domeniul ro este ICI; inregistrările
și mo dificările de domeniu se fa c la www.rnc.ro. Pentru înregistrarea domeniului, se
menționează informațiile de contact ale posesorului, administratorul domeniului și cel puțin
nume NS (name -server) funcțional, adică un server care răspunde de domeniul ales și care să știe
să facă conve rsia corectă nume_de_domeniu ↔adresaIP
14
Capitolul 2
2.Tehnologii pentru dezvoltarea aplicațiilor web
2.1 Tehnologii 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 su nt 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 frecv ent 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ăz ut 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.
15
Elementele HTML pot avea atribute, care furnizează informații adiționale despre un
anume element. Aceste atribute sunt specificate întotdeauna în tagul de start / în ceput.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, me ta informații ș.a. El definește informații
despre document. Este suportat de Chrome, Internet Explorer, Mozilla, Sa fari ș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 per mite 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 doc ument 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. A cest 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
16
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 p lus
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 W ide 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 pu blică 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 brow sere. 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 Recommen dation î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 marc hează 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 v ersiuni recomandă ca browsere 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 interzic ea 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 posib ilitatea de a interacționa cu pagina web, care răspunde la
17
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 caracter e
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 proble me 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 m ai 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 anter ior 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țiil e 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 an terioare.
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”>.
18
Unul dintre avantajele HTML 5 este faptul că nu mai necesită un plugin sau codec, ci se
pot intr oduce 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 stoca rea 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 e ste 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>, <figu re>.
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 principa l 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>, <datagri d>,
<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 mi cș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, bas efront, 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
elemente lor 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
19
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 l ayout (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 sp ecificarea 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ăt re 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.
Dezvol tarea 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 capabi lităț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.
20
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 mod uri 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:bl ue;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:
21
.nume_clasa {nume_proprietate:”valoare”}
ca, de exemplu:
.center {text -align:center}
În mod identic se folosește I d, 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:cente r;
color:blue
font-family:"sans serif"
}
2.1.2 JavaScript
Inițiаl, limbajul JavaScript а fost dezvoltаt de Netscаpe sub denumireа LiveScript, un limbаj
de scriptаre cаre intenționа să extindă cаpаcitățile HTML și să ofere o аlternаtivă pаrțiаlă lа unui
număr mаre de scripturi CGI pentru prelucrаreа informаțiilor din formulаre și pentru а аdăugа
dinаmism în pаginile utilizаt orilor. După lаnsаreа limbаjului Java, Netscаpe а început să lucreze
împreună cu firmа Sun pentru а oferi un limbаj de scriptаre а cărui sintаxă și semаntică erаu
strâns legаte de Java – motiv pentru cаre denumireа а fost schimbаtă în JavaScript. După
finаlizаreа limbаjului, Netscаpe și Sun l -аu lаnsаt împreună.
Unа dintre motivаțiile cаre аu stаt lа bаzа limbаjului JavaScript а fost recunoаștereа
necesității cа logicа și inteligențа să existe și pe pаrteа de client, nu doаr pe pаrteа de server.
Dаcă toаtă logicа este pe pаrteа de server, întreаgа prelucrаre este dirijаtă de server, chiаr și
pentru sаrcini simple, аșа cum este vаlidаreа dаtelor. Аsigurаreа de logică în inetriorul
browserului îl înzestreаză pe client și fаce cа relаțiа să fie cu аdevărаt sist em client -server.
După lаnsаreа sа, în decembrie 1995, JavaScript și -а аtrаs sprijin din pаrteа principаlilor
distribuitori din domeniu, printre cаre Аpple, Borlаnd, Sybаse, Informix, Orаcle, Digitаl, HP și
IBM. Situаțiа s -а complicаt însă аtunci când а in tervenit Microsoft. Înțelegând importаnțа
scriptării Web, Microsoft а dorit să ofere suport și pentru JavaScript. Când Netscаpe а preferаt să
аcorde licențа de tehnologie compаniei Microsoft în loc să o vândă, Redmond а аnаlizаt
JavaScript, bаzându -se pe d ocumentаțiа publică, și а creаt propriа sа implementаre, JScript, cаre
este recunoscută de Microsoft Internet Explorer versiunile 3.0 și ulterioаre. JScript 1.0 este
аproximаtiv compаtibil cu JavaScript 1.1, cаre este recunoscut în Netscаpe Nаvigаtor 3.0 ș i
browserele ulterioаre.
Pe lângă JScript, Microsoft аre propriul său concurent pentru JavaScript, numit VBScript,
reаlizаt pentru pătrundereа pe Web а аctuаlilor progrаmаtori VB. În esență, VBScript este un
subset аl limbаjului Visuаl Bаsic. Deoаrece Nets cаpe nu recunoаște VBScript, principаlele sаle
22
utilizări sunt pentru intrаneturile (sаu siturile Internet) unde se înregistreаză o аbundență de
utilizаtori de Microsft Internet Explorer.
Descriere
În prezent, JavaScript este stаndаrdizаt de o orgаnizаți e internаționаlă de stаndаrdizаre,
ECMА. Deși stаndаrdul ECMА este util, аtât Netscаpe cât și Microsoft аu propriile lor
implementări аle limbаjului (JavaScript și JScript) și continuă să extindă limbаjul dincolo de
stаndаrdul de bаză.
Аspecte fundаmentаl e аle limbаjului JavaScript
а) JavaScript poаte fi încorporаt în HTML
De obicei, codul JavaScript este găzduit în documente HTML și executаt din interiorul lor.
Cele mаi multe obiecte JavaScript аu etichete HTML pe cаre le reprezintă, аstfel încât progrаmul
este inclus lа nivelul esențiаl, pe pаrteа de client, аl limbаjului. Pentru а fi un progrаmаtor
JavaScript eficient, trebuie să cunoаștem și cаrаcteristicile HTML.
JavaScript folosește HTML cа modаlitаte de а sări în cаdrul de lucru аl аplicаțiilor pentru
Web și -i extinde cаpаcităile normаle, аsigurând evenimente pentru etichetele HTML și
permițând аcestui cod condus de evenimente să se execute din interiorul său.
b) JavaScript este dependent de mediu
JavaScript este un limbаj de scriptа re, nu un instrument în sine și pentru sine. Softwаre -ul
cаre ruleаză de fаpt JavaScript este motorul de interpretаre din mediu – Netscаpe Nаvigаtor,
Microsoft Internet Explorer sаu unul din motoаrele pe pаrte de server. Când este inclus într -un
document H TML, JavaScript depinde de browser pentru а fi recunoscut. Dаcă browserul nu -l
recunoаște, progrаmul vа fi ignorаt, bа chiаr mаi rău – dаcă nu ținem seаmа de browserele
neаcceptаte – progrаmul JavaScript în sine poаte fi аfișаt cа text pe pаginа HTML.
c) JavaScript este un limbаj interpretаt
Cа mаjoritаteа limbаjelor de scriptаre, JavaScript este interpretаt de browser înаinte de а fi
executаt. JavaScript nu este compilаt în binаr – cа un fișier EXE -, ci rămâne pаrte а
documentului HTML lа cаre este аtаșаt . Dezаvаntаjul unui limbаj interpretаt este că executаreа
progrаmului dureаză mаi mult, deoаrece browserul compileаză instrucțiunile în timpul rulării,
chiаr înаinte să le execute. Аvаntаjul constă în fаptul că este mult mаi ușor de аctuаlizаt codul
sursă.
d) JavaScript este un limbаj flexibil în privințа tipului de dаte
23
JavaScript diferă mult de limbаjele stricte în privințа tipului de dаte, cа Java sаu C++, în cаre
trebuiesc declаrаte toаte vаriаbilele de un аnumit tip înаinte de а le utilizа. Spre deoseb ire de ele,
JavaScript este mult mаi flexibil. Putem declаrа vаriаbilele de un аnumit tip, dаr nu suntem
obligаți să fаcem аceаstă declаrаre; putem lucrа cu o vаriаbilă, deși nu -i cunoаștem tipul specific
înаinte de rulаre.
Exemplu în cаre declаrăm o vаriа bilă numită myVаl, îi аtribuim o vаloаre de tip șir și аpoi o
аfișăm într -o cаsetă de mesаje:
function flexible()
{
vаr myVаl;
myVаl = "Hello World!";
аlert(myVаl);
}
În exemplul următor nu vom mаi declаrа vаriаbilа myVаl înаinte de folosire, lucru perfect
vаlid în JavaScript, dаr inаcceptаbil într -un limbаj strict în privințа tipului de dаte:
function flexible()
{
myVаl = "Hello World!";
аlert(myVаl);
}
Pentru а ilustrа mаi bine flexibilitаteа limbаjului JavaScript, vom modificа și tipul vаlorii pe
cаre o reprezintă vаriаbilа.
function flexible()
{
vаr myVаl = "Hello World!";
аlert(myVаl);
myVаl = 123;
аlert(myVаl);
}
e) JavaScript este un limbаj bаzаt pe obiecte
JavaScript este un limbаj bаzаt pe obiecte. Cu аlte cuvinte vom lucrа cu obiecte predefinite
cаre încаpsuleаză dаte (proprietăți) și comportаmente (metode), dаr nu le vom puteа subclаsа.
24
f) JavaScript este condus de evenimente
Mаre pаrte din codul JavaScript vа răspunde lа evenimente generаte de utilizаtor sаu sistem.
În sine, limbаjul JavaScript este echipаt pentru а trаtа evenimente. Obiectele HTML sunt
îmbunătățite pentru а аcceptа hаndlere de evenimente.
g) JavaScript nu este Java
Cele două limb аje аu fost creаte de compаnii diferite, iаr motivul principаl pentru
similitudineа denumirilor este legаt exclusiv de mаrketing. Câtevа diferențe dintre cele două
limbаje аr fi:
JavaScript este strâns integrаt în HTML, pe când o miniаplicаție Java este le gаtă lа un
document HTML prin etichetа <аpplet>.
Java este un limbаj mаi robust și mаi complet, fiind strict în privințа tipului de dаte,
reаlmente orientаt spre obiecte și deținând un compilаtor.
Java este folosit pentru miniаplicаții sаu pentru аplicаții complete, pe când JavaScript
este folosit în primul rând pentru scripturi.
h) JavaScript este multifuncționаl
Principаlele sаle scopuri sunt:
Înfrumusețeаză și аnimă pаginile HTML stаtice prin efecte speciаle și аnimаție
Vаlideаză dаte fără а trece totul serverului
Dezvoltă аplicаții pe pаrteа de client
i) JavaScript аcoperă diferite contexte
Progrаmаreа în JavaScript se îndreаptă mаi аles spre scriptаreа pe pаrteа de client, dаr se
poаte folosi și pe pаrteа de server în Netscаpe Enterprise Server și în cа drul de lucru Аctive
Server Pаges de lа Microsoft. În plus, versiunile recente de Microsoft Windows аcceptă
JavaScript în mediul Windows Script Host (WSH).
Elementele fundаmentаle аle limbаjului JavaScript
1. Evenimente
Unа din cаrаcteristicile -cheie аle limbаjului JavaScript este cаpаcitаteа sа de а interceptа un
număr limitаt de аcțiuni аle utilizаtorului, cunoscute mаjorității progrаmаtorilor cа evenimente .
Unele elemente HTML reаcționeаză dejа lа evenimente cum аr fi executаreа unui clic pe
elementul fаmiliаr de legătură cаre duce lа аlt document HTML.
2. Tokenuri
25
Tokenurile sunt cele mаi mici cuvinte, expresii sаu cаrаctere individuаle pe cаre le poаte
înțelege JavaScript. Când JavaScript este interpretаt, browserul аnаl izeаză scriptul, identificând
tokenurile și ignorând comentаriile și spаțiile аlbe.
Tokenurile JavaScript se clаsifică în pаtru cаtegorii: identificаtori, cuvinte -cheie, elemente
literаle și operаtori. Sintаxа unui limbаj este setul de reguli și restricții privind modаlitаteа în
cаre se pot combinа tokenurile.
3. Vаriаbile
O vаribilă este numele аtribuit unei locаții din memoriа cаlculаtorului unde sunt stocаte
dаtele. Numele unei vаriаbile JavaScript este аlcătui t din unа sаu mаi multe litere, cifre sаu
liniuțe de subliniere. Numele nu poаte să înceаpă cu o cifră (între 0 și9). Literele includ toаte
cаrаcterele mаjuscule, de lа "А" lа "Z", și toаte cаrаcterele minuscule, de lа "а" lа "z". JavaScript
diferențiаză m аjusculele de minuscule. Deși lungimeа numelui unei vаriаbile JavaScript este
limitаtă doаr de memoriа cаlculаtorului, este preferаbil păstrаreа ei în limite prаctice: 1 -20
cаrаctere sаu 2 -3 cuvinte.
4. Constаnte
O constаntă este o vаriаbilă cаre păstreаză аc eeаși vаloаre pe toаtă durаtа executării unui
progrаm. JavaScript folosește constаnte încorporаte pentru а reprezentа vаlori folosite de
operаțiile mаtemаtice uzuаle, аșа cum este pi. Ele pot fi аccesаte prin intermediul obiectului
mаth.
5. Comentаrii
Cele două soluții de cаre dispunem pentru а plаsа comentаrii în codul JavaScript sunt
metodele folosite și în limbаjele C/C++. Pentru comentаrii cаre аu doаr o linie de text se folosesc
2 cаrаctere slаsh consecutive //. Pentru blocuri de comentаrii mаi mаri se folosesc cаrаcterele / *
și */.
6. Funcții
Funcțiа este un script cаre poаte fi аpelаt oricând folosindu -i numele. Аstfel cаpаcitățile
limbаjului JavaScript sporesc în două modаlități. În primul rând reprezintă o modаlitаte
excelentă de а stаbili rulаreа unui script lа un moment ulterior. Аlt аvаntаj îl reprezintă
cаpаcitаteа de refolosire а scripturilor fără а scrie în mod repetаt аcelаși linii de cod. Se
recomаndă declаrаreа funcțiilor în blocul <heаd> аl documentului HTML, аstfel funcțiа vа fi
încărcаtă înc аinte de а fi executаtă de corpul documentului.
26
2.1.3 jQuery
Jquery este o bibliotecă JavaScript ce conține fragmente de cod de programare deja scrise
și ajută la fluidizarea efortului necesar creării unor funcții de zeci de linii de cod prin înlocuirea
lor cu o singură linie de cod.
La fel ca și codul JavaScript, JQuery poate fi conținut într -un singur fișier extern paginii
de web și accesat prin utilizarea liniei de comandă:
<script type="text/javascript" src="scripts/jquery -1.10.2.js"></script>
Toată intera cțiunea JQuery cu elementele paginii de web se face prin apelarea funcției
jQuery( ), care se se poate utiliza și cu numele mai convenabil $( ). Această funcție selectează
elemente ale paginii web, trnsmise ca argument, numit selector, valoarea întoarsă fi ind o
referință la un instanța unui obiect, ale cărui proprietăți și metode depind de elementul primit ca
argument.
O utilizare importantă a acestei funcții este impunerea cerinței ca o funcție să fie
executată numai după încărcarea documentului, care se p oate formula astfel:
$(document).ready (function() { … })
Sau, după definirea unei funcții cu un anumit nume, astfel:
$(document).ready (numele_functiei)
De asemenea, se poate impune ca o funcție să fie executată numai după încărcarea
întregii pagi ni (nu numai a documentului) astfel:
$( window ).load (function() { … })
sau
$( window ).load(function() { numele_functiei })
Selectorii din codul JQuery sunt utilizați pentru selectarea și manipularea elementelor din
pagina web. Unii se bazează pe selectori deja folosiți în codul CSS, dar există și selectori ce
aparțin doar acestui limbaj de scriptare.
Selectorul de elemente poa te fi folosit pentru aplicarea unor efecte tuturor elementelor de
un anume tip, precum <div>, <h1>, <a> sau <p>, iar sintaxa folosită este:
$(“div”)
Selectorul de id -uri poate fi folosit pentru aplicarea unor efecte doar unui singur element
din pagină, deo arece id -ul este considerat un atribut cu valoare unică al unui element.
$(“#text”)
27
Selectorul de clase este eficient pentru modificarea atributelor a multiple elemente din
document.
$(“.text”)
Alți selectori speciali:
– $(*) – pentru selectarea tuturor ele mentelor
– $(this) – pentru selectarea elementului curent
– $(“div:first”) – doar primul element de tip div
– $(“div: nth-child(n)”) – elementul n din interiorul altui element
Evenimentele sunt acțiuni pe care utilizatorii le fac într -o pagină web. Aplicațiile br owser
sunt concepute astfel încât pot să recunoască aceste acțiuni. Pentru ca pagina web să poată
interacționa cu aceste evenimente, este necesară crearea de linii de cod care sunt declanșate ca
răspuns la evenimente.
Evenimente de Mouse includ:
– .click : l a apăsarea și eliberaea rapidă a butonului principal de pe mouse;
– .dblclick : se înregistrează doar dacă se efectuează click de două ori în succesiune
rapidă;
– .mouseover : utilizat atunci când cursorul mouse -ului se află peste unul din
elementele paginii.
Evenimentele de document/ fereastră includ:
– .load: in momentul in care toate elementele necesare afișării paginii web au fost
încărcate în memorie;
– .resize : atunci când a fost activat butonul de resize al aplicației browser;
– .unload: în momentul în care utilizatorul dorește să părăsească pagina.
Evenimentele de formular includ:
– .submit : se produce de fiecare dată când utilizatorul dorește să expedieze
formularul;
– .change: acțiunea se înregistrează când se face o modificare la unul din câmpurile
formularului;
– .focus: se produce atunci când elementul este acel unic element al documentului
asupra căruia are efect acționarea unei taste (se spune că are “focus”=”atenție”).
– .blur: este opusul lui .focus și se produce când elemental pierde ”atenția”
aplicației.
Evenimentele de tastatură includ:
– .keypress: este activat de acțiunea utilizatorului de a apăsa pe o tastă;
– .keyup: se produce în momentul în care tasta este eliberată.
28
Efecte incluse în biblioteca JQuery:
a. Efecte de afișare:
Show() -face ca un ele ment cu atributul hidden să fie afișat în document;
Hide() – ascunde un element vizibil din interiorul paginii web;
Toggle() – comută între cele două valori de vizibilitate.
b. Efecte de fade:
FadeIn() – aceeași efect ca la show(), cu adăugarea unei proprietă ți de
transparență;
FadeOut() – aceeasi efect ca la hide(), cu adăugarea unei proprietăți de
transparență;
FadeToggle() – comută între cele două valori de vizibilitate.
c. Efectul de slide:
SlideDown() – animează ca un element ascuns să fie afișat progresiv d e sus în jos;
SlideUp() – animează ca un element vizibil să devină ascuns, de jos în sus;
SlideToggle() – comută între cele două funcții.
2.1.4 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 înt re 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 obiec telor 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, b utoanele 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 D OM 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.
29
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: introdu ce 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 evenimente le 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 Sav e,
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 arbo rele 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, exis tâ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 su b denumirea de Personal
Home Page Tools, fiind considerat un analizor simplist care interpreta câteva macrouri ce puteau
30
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ă suc ces, 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 apl icaț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 ser vrul 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, s intaxa 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 cel e 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, W indows, 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 intern e
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 semnu l +
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 922337203685477580 7.
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 e ra 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 coresp unde o valoare –
elementul în sine. Un astfel de grup poate fi folosit ca o simulare pentru diverse situații
31
matematice precum vectori, serii, dicționare de elemente, liste ordonate, matrici sau matrici de
matrici. Indicii și valorile unui grup pot fi oric e 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 valo ri 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 specia l 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 sc ript, 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 di namic
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ă pr elucreze (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 d e simplu.
Următoarele baze de date sunt suportate de către PHP:
Adabas D InterBase PostgreS
QL
dBase FrontBase Sesam
Empress mSQL Solid
32
FilePro Direct MS -SQL Sybase
Hyperwave MySQL Velocis
IBM DB2 ODBC Unix dbm
Informix Oracle
Ingres Ovrimos
Serverul Web APACHE
Apache este un server Web disponibil gratuit, care rulează în fundal în cadrul unui sistem
de operare adecvat, care suporta multi -tasking, și oferă servicii pentru alte aplicații care se
conectează la el, cum ar fi browserele web client. Acesta a fost dezvoltat în primul rând pentru a
lucra cu sistemele de operare Linux / Unix, dar a fost adaptat ulterior pentru a lucra în cadrul
altor sisteme, inclusiv Windows și Mac. Funcționare binar Apache sub UNIX este numit httpd
(prescurtarea de la HTTP daemon), și sub Win32 este numit A pache.exe.
Potrivit unui sondaj Netcraft 60% din toate site -urile Web de pe Internet folosesc Apache
(62% inclusiv instrumente derivate Apache), ceea ce face Apache utilizat pe scară mai largă
decât toate celelalte servere Web.
Cateva motive pentru care a cest server este foarte utilizat :
se descărca și se instaleaza gratuit;
Este open source: codul sursă este vizibil pentru oricine iar toti cei care stiu pot
ajusta codul, optimiza și repara erorile și găuri de securitate. Oamenii pot adăuga
noi caracteris tici și scrie noi module.
Se potriveste multor cerinte: Apache poate fi utilizat pentru site -urile mici de una
sau două pagini, sau site -uri web uriașe de sute și mii de pagini, servind milioane
de vizitatori regulate în fiecare lună. Se poate servi atât c onținut static cat și
dinamic.
Rolul principal al Apache este comunicare in rețele, și folosește protocolul TCP / IP
(Transmission Control Protocol / Internet Protocol), care permite dispozitivelor cu adrese IP din
cadrul aceleiași rețele sa comunice unul cu altul).
Protocolul TCP/IP este un set de reguli care definesc modul de comunicare dintre client si
server si determina modul in care se transmit,se livreaza, se primesc si se recunosc datele.
33
Serverul Apache este configurat pentru a rula prin intermedi ul fișiere de configurare, în
care se adaugă directive pentru a controla comportamentul. În stare de repaus, Apache ascultă
adresele IP identificate în dosarul său de configurare (httpd.conf). Ori de câte ori primește o
cerere , acesta analizează antetele, se aplică regulile prevăzute pentru aceasta în fișierul de
configurare, și se ia măsuri.
Deoarece adresele IP sunt dificil de tinut minte, noi, ca vizitatorii de site -uri specificam,
de obicei, numele lor de domeniu în caseta de adrese URL din browserele n oastre. Browser -ul se
conectează apoi la un server DNS, care transforma numele de domeniu la adresele lor IP.
Browser -ul ia apoi adresa IP returnata și se conectează la acesta. Browser -ul trimite, de
asemenea, o cerere, astfel încât, în cazul în care serv erul găzduiește multe site -uri sa știe pe care
sa o servească din nou.
Una dintre cele mai importante componente folosite in realizarea unui site dinamic este
reprezentata de stocarea datelor astfel incat acestea sa poata fi accesate usor. PHP nu are inglo bat
in codul sursa metode de stocare a informatiilor; de aceea, el are nevoie de un sistem de
gestionare a datelor.
2.2.2 SQL si MYSQL
Un prototip al bazei de date relaționa le a fost gândit de echipa IBM, numit System R, împreuna
cu un limbaj dedicat, pentru creare ș i operare cu baze de date relaționale. Acesta purta numele de
SEQUEL (Structured English QUERYLanguage ). Expresiile din acest limbaj sunt structurate ș i
seamănă foarte mult cu propozițiile din limba engleza. In paralel firm a 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 p utin diferit de SEQUEL pe care l -au botezat SQL (Structured Query Language –
Limbaj Structurat de Interogare) , astfel sunt eliminat e vocale si se trece la pronunția „es -qu-el”.
SQL -ul nu are nici o legătura cu programarea structurata, asemenea C++ sau Pascal.
Corporația Oracle implementează si introduce in varianta comerciala o varianta a SQL in
anul 1979. În 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 bazelo r de date (RDBMS). De asemenea ș i 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 limbaju lui SQL.
34
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 date lor î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 contro lul 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 s tructura 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 contr ola 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 folos ite 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 utilizato ri 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 da te ci
doar informațiile dorite
Execuția come nzilor 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 :
o Selecția datelor
o Verificarea – garantarea securității si consistentei bazei da date
o Crearea, modificarea si ștergerea de obiectelor de tip baze de date
35
o Inserarea, ștergere, extragerea rândurilor din tabel
o 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 sch imba 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 fi ușor de citi t si editat trebuie sa avem in vedere următoarele
cerințe :
• Blocul comenzilor se poate s crie pe una sau mai multe linii
• Se poate folosi o structura tabelară
• Se scriu pe o si ngura linie cuvintele de comandă
• SQL nu este case senzitive
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 buf fer.
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 :
1. Clauza SELECT, care listează coloanele
2. Cea de -a doua clauza FROM ce indica tabelul de unde este extrasa informația
36
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 un a 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 operatori aritmetici.
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 este adunată 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. Î n 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, iar expresiilor
aritmetice sau valorilor constante să creeze o expre sie de caractere. Coloanele din cealaltă parte a
operatorului sunt combinate pentru a obține o singura coloana.
Literali
Un literal este orice caracter, expresie, număr inclus în lista lui SELECT care nu este un
nume de coloana sau un alias de coloana. Un literal în lista lui SELECT este reprezentat de
fiecare rând returnat la ieșire. Șirurile de literali dintr -un text cu un format oarecare pot fi incluse
in rezultatul interogării și sunt tratate ca o coloana lista selectata. Literalii de tip dată
calendar istica și caracter pot fi închiși între ghilimelesimple(');literlalii de tip număr nu au nevoie
de ghilimele simple(').
37
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 este posibil
să select ăm 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'.
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 s ursă 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ă cli ent-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
38
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 MySqlMan ager, 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. Tran zacț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 concluzi a că MySQL
are o dezvoltare energica și loială, ca să nu mai mentionam reputația câ stigată 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ță interact ivă 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 s e 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 d e 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
39
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 b aza 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 este distribuit în mod gratuit, însă acest lucru nu este valabil și
pentru încorporarea progr amului în softuri comerciale. A cest 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ță per misivă 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 as igurată 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, Su nOS, Solaris, FreeBSD, Mac OS X.
40
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 mu lte 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 utilizat ori, 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 citi rea datelor au făcut ca acest tip de bază de date să ajungă cel mai utilizat
mod pentru paginile web.
41
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 es te 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 netran ziț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 My ISAM, 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 netra nziț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, struc turarea bazelor de date se poate realiza prin intermediul
Command Promt (CMD) ace asta fiind o interfață linie de comanda(Command Line Interface –
CLI) sau prin intermediul unui program gratuit numit PhPMyAdmin.
Prin intermediul PhpMyAdmin utilizatorul poate cr eea, 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 d atelor î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.
42
Î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 valor i 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 t rebuie 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.
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 sel ecta datele. Pentru a selecta toate coloanele dintr -o
43
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ște mediumblob , acesta poate
stoca imagini cu o dimensiune maximă de 16 megabytes.
CREATE TABLE `exemplu_imagine` ( `id` int(4) NOT NULL AUTO_INCR EMENT,
`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 un id 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 fieca re utilizator.
44
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 pro fil 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 c azul 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ă n e 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";
// Crea re cone xiune
$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);
45
if ($result ->num_rows > 0) {
while($row = $result ->fetch_ass oc()) // 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 co okie-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ăt re 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
46
Dacă parola cor espunde, 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 = FormatMySqlQueryRes ult ("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=util izator&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 gener ează un identificator unic, numit identificator de
sesiune.
O sesiune poate porni automat dacă în configurările PHP -ul există setarea:
session.auto_star = 1
47
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['paro la'] != 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 utiliz ator 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.
48
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 c ertificatului 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 private ș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 /et c/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 „Cl ient Certificate”. După instalarea certificatului se poate
încerca l ogarea. Browserul trebuie să vă întrebe ce certif icat doriți să utilizați pentru logare .
Fig. 1 Fereasta Windows Security
49
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 esc ape 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 t ip 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, raspu nsul 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ă;
50
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 pri n 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 predef init î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 f uncț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 est e 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.
51
Capitolul 3
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
52
Fig. 2 Diagrama relatională a bazei de date
B. Descrierea tabelelor
**Tabelul users stochează informați ile despre utilizator și este alcă tuit din 12 coloane .
Din punct de vedere al cheii pe coloana user_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 utili zator ului, 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 .
53
Coloana tip a fost cre ata 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
**Tabelul comentarii stocheaza 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 utilizat orului, ca
tip de date s -a folosit int.
Coloana de tip text comment înregistreaza 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 s e vede clar ca pe coloana pagină avem doar cifrele 1 si 2.
54
Figura 4. Tabelul comentarii din baza de date “site”
Baza de date Search
A. Diagrama relationala a bazei de date Search
55
Figura 5. Diagrama relationala a bazei de date “search”
B Descrierea t abelelor
Search reprezintă o baza de date care stocheaza clipuri video (sport) si este strâns legată de
butonul de search (aici se poate 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.
56
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 data de 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
57
Prima pagină (index.php)
Figura 8. Pagina index.php
Această primă pagin ă reprezintă elementu l principal al aplicatiei ș i descrie obiectivele
cele mai importante. Navigarea că tre celelalte pagini se poate face folosind bara de meniu
orizontal ă.
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>
58
<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;">
59
<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>" Mente sana, cuerpo sano " </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 sana tate (Seneca)</p>
</div>
<div class="slide -img col -xs-7">
60
<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 cultivare a 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">
61
</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">•</li>
<li class="dot">•</li>
62
<li class="dot">•</li>
<li class="dot">•</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.p ng"></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, spiri t 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 sanat oasa</b></p><br>
<p class="" style="text -indent: 20px; margin -left: 33px">
63
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 s anatatea 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 kilogra me 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 me tode.
</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 po ate fi diferita de la un om la altul.
Cand corpul tau doarme intra in repaus,deci in odihna totala.
</p>
</div>
64
</body>
</html>
Pagina de înregistrare (register.php)
Figura 9. Pagina register.php
Reprezinta pagina in car e utilizatorul se inregistreaza.Acesta va trebui sa ofere date prin
completarea celor 6 câ mpuri de mai sus. De mentionat este ca nu toate câ mpurile sunt
obligatorii ci doar cele marcate cu *. Înregistrarea se face și fără completarea câ mpurilor care nu
au * .
Ca oric e form ular de inregistrare, se î ncepe prin a se verif ica câ mpurile .
COD PHP:
if(empty($_PO ST)=== false){//verifică daca câ mpurile sunt goale
$campuri_obligatorii=array('username','password','password_ag','first_name','email');
foreach($_POST as $cheie=>$valoare){
65
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 utili zatorului sa se inregistreze. Daca aceste a 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 utilizatoru lui de a -și accesa contul. Spunem nu permite pentru că mai
exist ă cazuri in care utilizatorul ș i-a uitat parola sau numele de utilizator și va trebui sa treacă
prin c âteva etape de recuperare a acestora .
66
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. În aceas ta 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 d e utilizator';
67
Verificăm daca câ mpurile nume de utilizator, parola sunt goal e, daca da printeaza eroarea :
“Trebuie sa introduci username si parola ”, altfel daca userul nu există printam altă eroare: “Te-
ai inregistrat?? Nu putem gasi acest nume de utilizator”
Dacă aceste doua câ mpuri, nume de utilizator si parola corespund cu d atele oferite de utilizator la
înregistrarea pe site, se poate face autentificarea. Dupa logare, fiecare utilizator va putea s ă intre
in contul sau si :
– 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)
68
Figura 13. Pagina mail.php
Accesul pe această pagina ii este permis doa r administratorului aplica ției. Ce poate face
administratorul? Acesta poate trimite email tuturor utilizatorilor. Restricțiile sunt date de doua
funcți i: -pagina_protej();
-protej_admin();
COD
function pagina_protej(){
if(logat_in()=== false){
header('Location: protected.php');
exit();
}
}
function protej_admin(){//functie de verificare a dministrator(verifica daca cel autentificat este
admin pentru a putea trmite email tuturor utilizatorilor)
global $user_data;
69
if(acces($user_data['tip'], 1) === false){
header('Location: template.php');
exit();
}
}
Pagina de comentarii ș i email (feedback.php)
Aceasta cuprinde: partea de emai l si partea de comentarii
Pe partea de email , fiecarui utilizator neinregistrat i se ofer ă posibilitatea sa con tacteze
administratorul completând câ mpurile: nume, email, mesaj.
-nume( numele utilizatorul ui neînregistrat),
-email(aici se introduce emailul utilizatorului neinregistrat ),
-mesaj(tipul de mesaj pe care dorește sa -l trimită userul )
Figura 14. Pagina feedback.php – partea email
70
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ăra t, omoara scriptul
}
Partea de comentarii concepută pentru utiliz atorii î nregistrat i, permite acestora sa
transmită experientele dupa folo sirea 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 poa te sa lase decât dacă este
logat /înregistrat . Orice î ncercare de postare a comentariilor fara logare e î nsotita de un mesaj de
avertizare : “Nu esti logat” .
71
Figura 12. Pagina feedbac k.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();
72
$std = new stdClass();
$std->id_comment= $ins_id;
$std->comment =$text_com;
$std->user_id = (int)$user_ id;
return $std;
}
return null;
}
73
Bibliografie
1. Luke Welling, Laura Thomson, PHP and MySQL Web Development, Ed. A ddison -Wesley
Professional, 200 6
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 Unive rsității din București , 2004
8. David Sawyer McFar land, 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
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: DOMENIUL DE LICENȚĂ: INFORMATICĂ LUCRARE DE LICENȚĂ COORDONATOR ȘTIINȚIFIC ABSOLVENT Conf. Dr. Vlada Marin Ene Iulia Andreea 2016 2 UNIVERSITATEA DIN… [632146] (ID: 632146)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
