AplicaĠie web pentru studenĠi [621947]
UNIVERSITATEA DIN BUCUREɆTI
FACULTATEA DE MATEMATICĂ ɆI INFORMATICĂ
DOMENIUL DE LICENğĂ INFORMATICĂ
LUCRARE DE LICENğĂ
Coordonator ɇtiinĠific: Student: [anonimizat]. Mihail Cherciu Iɇtoc Lidia -Iuliana
-Bucureɇti 2017 –
UNIVERSITATEA DIN BUCUREɆTI
FACULTATEA DE MATEMATICĂ ɆI INFORMATICĂ
DOMENIUL DE LICENğĂ INFORMATICĂ
AplicaĠie web pentru studenĠi
Coordonator ɇtiinĠific: Student: [anonimizat]. Mihail Cherciu Iɇtoc Lidia -Iuliana
-Bucureɇti 2017 –
3
CUPRINS
1. Introducere ……………………………………………………………………………………… ..5
1.1 Prezentare generală ……………… .………………………………………………… 5
1.2 Analiza SWOT ………………………………………………………………………… 6
1.3 AplicaĠii similare ……………………… ..…………………………………………… 8
2. Tehnologii folosite în dezvoltarea aplicaĠiei………………………………………… .10
2.1 Front-end ……………………………………………………………………………… 10
2.1.1 HTML …………………………………………………… .………………………… .10
2.1.2 CSS………………………………………………………… .………………………… 14
2.1.3 Bootstrap ………………………… ..……… .………… ..………………………… .18
2.1.4 JavaScript ………… ..…………………………………………………………… ..20
2.1.5 jQuery …………………………………………………………………… ..………… 23
2.2 Back-end ……………………………………………………………………………… 24
2.2.1 PHP …………………………………………………………………………………… 25
2.2.2 Model-View-Controller ……………………………………………………… ..28
2.2.3 PHPMailer ………………………………………………………………………… ..31
2.2.4 Protocolul HTTP ………………………………………………………………… 33
2.2.5 Serverul Apache ………………………………………………………………….. 35
2.2.6 MySql ………………………………………………………………………………… 37
3. Descrierea aplica Ġiei…………………………………………. ……………………………..43
3.1 Motivarea alegerii…………………………………. ………………………………..43
3.2 Scopul aplicaĠiei …………………………………………… ………………………..44
3.3 Realizarea aplicaĠiei …………………………………………… …………………..45
3.4 Structura aplicaĠiei …………………………………………… …………………….47
3.4.1 Arhitectura……………………………………. …………………………………..47
3.4.2 Detalii funcĠionale …………………………………………… …………………48
3.4.3 Structura bazei de date……………………………….. ……………………..50
3.4.4 Cazuri de utilizare………………………………….. ………………………….54
4
3.4.5 Fiɇiere …………………………………………… …………………………………..56
3.5 Scenarii de utilizare…………………………………. ………………………………58
3.5.1 Perspectiva vizitatorului………………………………. ……………………..59
3.5.2 Perspectiva utilizatorului înscris…………………………… ……………..61
3.5.3 Perspectiva administratorului……………………………. ………………..63
Concluzie………………………………………. …………………………………………… ………..68
Bibliografie………………………………….. …………………………………………… ………….69
5
1. Introducere
Acest capitol cuprinde o prezentare generală a proiectului de licenĠă, o
analiză swot a aplicaĠiei pe care am ales să o dezvolt ɇi o serie de apl icaĠii
similare , una fiind descrisă mai pe larg .
1.1 Prezentare generală
O dată cu evoluĠia tehnologiei, oamenii, în special tinerii ɇi copii sunt din ce
în ce mai puĠin interesaĠi de lectură ɇi dezvoltarea lor personală , preferând
oricând un joc video sau un site de socializare. Desigur, acest lucru se înt âlneɇte
destul de des ɇi în rândul adulĠ ilor, mai ales când vorbim de Facebook sau
WhatsApp. Nu este nimic greɇit în navigarea pe internet, chiar ɇi p entru relaxare
sau socializare. Problema apare atunci când acest lucru scapă de sub control ɇi
devine o dependenĠă.
În această lucrare de licenĠ ă voi prezenta dezvoltarea ɇi descrierea în
detaliu a unei aplicaĠii web care încurajează lectura, modul de abor dare fiind
unul de recomandare de cărĠi. Dezvoltarea acestei aplicaĠii a pornit de l a o nevoie
personală, mai exact salvarea detaliilor cu privire la cărĠile c itite ɇi reĠinerea
numelor persoanelor care împrumutau cărĠi din biblioteca personală ɇi a cărĠilor
pe care aceɇtia le -au împrumutat.
AplicaĠia se numeɇte My Books (logo: My 📖s) ɇi este dezvoltată folosind
limbajul PHP, baza de date MySql, serverul Apache ɇi pattern -ul MVC (model –
view – controller). Alegerea acestor tehnologii are la bază foarte multe avanta je
care vor fi dezvoltate în capitolul dedicate limbajelor. Unul din cele mai
importante este separarea clară a nivelurilor de activitate, ɇi anume: intef aĠa,
baza de date ɇi activităĠile utilizatorului.
AplicaĠia are două mari capitole, primul capitol cuprinde descrierea pe larg
a tehnologiile ɇi limbajelor folosite iar ce -l de-al doilea capitol face referire la
6
descrierea aplicaĠiei propriu- zisă, a modului cum aceasta interacĠionează cu
utilizatorii , structura bazei de date, cazuri de utilizare, detalii funcĠionale ɇi
arhitectura bazei de date.
În prezent există numeroase aplicaĠii care încurajează lectura dar care
îndeplinesc doar a numite condiĠii din cele dorite de mine. Există aplicaĠii unde
pot fi stocate cărĠile, există aplicaĠii cu ajutorul cărora poĠi citi cărĠi direct de pe
telefonul personal ɇi aplicaĠii unde oamenii pot vedea ce aleg să citeas că alĠi
oameni. Nu am găsit încă aplicaĠia care să îmbine aceste lucruri, ɇi anume
salvarea informaĠiilor despre cărĠile citite, sc rierea unei recenzii proprii,
acordarea unui rating ɇi facilitarea procesului de împrumutare, aɇa că acestea
sunt o parte din motivele pentru care am ales să dezvolt aplicaĠia MyBooks.
1.2 Analiza SWOT
Acronimul SWOT provine din limba engleză ɇi provine de la cuvintele
Strenghts, Weaknesses, Opportunities, Threats, însemnând: puncte tari, puncte
slabe, oportunităĠi, ameninĠări. Analiza SWOT este o metodă folosită în mediul
afacerilor ɇi este folosită pen tru crearea unei viziuni de ansamblu asupra unui
proiect stabilind o serie de idei pentru cele 4 categorii enumerate mai sus. O
expunere mai clară se poate observa în figura următoare:
7
Consider că o analiză SWOT este foarte importantă în realizarea oric ărui
proiect deoarece analizând toate beneficiile ɇi punctele critice, realizarea acestuia
poate fi mult mai eficientă ɇi rapidă.
Analiza SWOT a proiectului MyBooks:
Puncte tari:
InterfaĠa atrăgătoare
Posibilitatea contactării administratorului în orice moment
Nota personală din partea administratorului asupra fiecărei cărĠi
Accesul la o bază de date cu o gamă largă de cărĠi
Puncte slabe:
Numărul limitat de cărĠi aflate în stoc pentru fiecare tip.
Limitarea operaĠiilor premise vizitatorilor.
ExistenĠa unu i singur administrator care manageriază totul.
OportunităĠi:
Comunicarea cu profesorul îndrumător.
Părerile eventualilor utilizatori primite înainte de începerea dezvoltării
aplicaĠiei.
Găzduirea aplicaĠiei în mod gratuit din partea unei asociaĠii.
AmeninĠări:
Numărul mic de utilizatori din cauza gradului de noutate al aplicaĠiei.
ExistenĠa anumitor aplicaĠii asemănătoare.
8
1.3 AplicaĠii similare
Atunci când vine vorba de aplicaĠii, fie acestea mobile sau web, exi stă o
gamă largă din care se pot alege oricând aplicaĠii pentru orice act ivitate. În
prezent această piaĠă este extreme de dezvoltată, existând de la aplic aĠii care
amintesc periodic utili zatorului să consume un pahar cu apă până la aplicaĠii care
măsoară numărul de paɇi dintr -o anumită zi.
Ɇi când vorbim de domeniul lecturii, numărul de aplicaĠii este unul destul
de vast ɇi aplicaĠiile pornesc de la foarte simple la cele mai compl exe. Kindle,
Google Play Books, Aldiko Book Reader sunt trei dintre aplicaĠiile folosite pentru
citirea cărĠilor direct de pe telefonul mobil sau tabletă . Acestea sunt foarte
întâlnite pe dispozitivele persoanelor interesate de cărĠi ɇi dezvoltare personală.
Una din aplicaĠiile pe care o folosesc ɇi eu este goodreads. Aceasta p ermite
utilizatorilor să salveze cărĠile pe care le citesc, sau le- au citit, să creeze o listă cu
cărĠile pe care doresc să le citească ɇi să ofere un rating fiecărei cărĠi în parte.
9
Goodreads (www.goodreads.com) a fost înfiinĠat în anul 2006 ɇi lansat de
Otis Chandler ɇi Elizabeth Chandler în ianuarie 2007. Acest site perm ite în mod
gratuit oricărei persoane să caute în baza de date Goodreads cărĠi, recenzii ɇi
comentarii. Utilizatorii se pot înregistra ɇi astfel îɇi crează un cont . Acest cont
odată creat oferă utilizatorului o multitudine de oportunităĠi, cum ar fi crearea
listelor de cărĠi după preferinĠele utilizatorului, crearea propriilor grupuri de
sugestii, sondaje ɇi discuĠii.
La începutul anului 2008, site- ul a avut aproximativ 650.000 de membri ɇi
au fost adăugate mai mult de 10.000.000 de cărĠi iar în iulie 2012, site -ul avea
peste 10 milioane de membri ɇi 20 de milioane de vizite lunare. În anul 2013 în
luna martie, Amazon a achiziĠionat Goodreads ɇi în prezent aparĠine de această
companie.
10
2.Tehnologii folosite în dezvoltarea aplicaĠiei
2.1 Front-end
Front-end- ul reprezintă acea parte a unei aplicaĠii cu care utilizatoru l
interacĠionează în mod direct, acea parte pe care acesta o poate vedea. Est e
alcătuit din două părĠi: partea creativă numită design ɇi partea de cod numită
interfață. Deɇi în trecut front-end- ul era ceva unitar, diferenĠierea dintre design
grafic ɇi partea de implementare a devenit o necesitate, astfel că în pre zent
rolurile sunt diferite ɇi bine delimitate ɇi anume: grafic designer (care se ocupă cu
partea vizuală) ɇi front -end developer (care se ocupă cu funcĠionalitatea, cu
ajutorul HTML, CSS, JavaScript).
Motivul pentru care ne dorim ca aplicaĠia să aibă un design plăcut es te în
primul rând uɇurinĠă utilizatorului de a citi informaĠiile ɇi de a naviga p e pagina
în cauză, ca să nu mai vorbim de faptul că orice utilizator dacă ar a vea de ales
între două aplicaĠii cu aceeaɇi funcĠionalitate, o va alege pe cea care arată mai
bine.
2.1.1 HTML
In anul 1980, fizicianul Tim Bernes- Lee ɇi inginerul de sisteme Robert
Cailliau au lucrat împreună la o modalitate de a partaja documente între oamenii
de ɇtiinĠă. Această modalitate trebuia să fie cât mai practică ɇi, desigur, în mediul
virtual. Astfel a luat naɇtere Enquire care este un soft care a pus bazele World
Wide Web. Înaintea acestei dezvoltări utilizarea internetului era limitată; pentru
comunicare se folosea textul simplu ɇi tehnologiile folosite erau foarte simple.
HyperText Markup Language (abreviat HTML) foloseɇte un set de
elemente pentru a defini conĠinutul. Acestea, la randul lor, contin unul sau mai
multe taguri. Tagurile sunt între paranteze unghiulare ɇi acestea marchea za
11
începutul ɇi finalul conĠinutului. DiferenĠa dintre tag -ul de început (<html> ) ɇi
cel de final este că la final vom pune mereu o bară oblică (</html> ).
Prima descriere publică a HTML a avut loc în anul 1991 sub forma unui
document denumit “Taguri HTML” . Acesta descrie 18 elemente cuprinse î n
proiectul initial, o versiune simplă a limbajului. Dintre cele 18 taguri iniĠiale, în
HTML4 se regăsesc doar 11. Exceptând tagul de hyperlink, tagurile sunt
influenĠate de SGML (Standard Generalized Markup Language), o sintaxă
complexă pentru legarea conĠ inutului în documente. Începând cu HTML5, se
încearcă îndepărtarea completă de SGML.
HTML are la bază o structură arborescentă. În imaginea de mai jos se
observă o structură a unei pagini web:
HTML este un limbaj de marcare care dă forma elementelor di ntr-o pagină
web ɇi sta la baza oricărui site ɇi, de asemenea, separă continutul de ideea de
prezentare a acestuia. Adică separă cuvintele, imaginile, videoclipurile de
instrucĠiunile pentru afisarea acestora. Limbajul se asigură de faptul că brow serul
le poate afiɇa în mod cât mai corect, după cum au fost concepute de programator .
Dacă nu am folosi HTML, browserul nu ar ɇti să afiɇeze elementele, sau le -ar afiɇa
12
într- un mod dezorganizat. Astfel, HTML resprectă structura gândită ɇi proiect ată
de programator asupra paginii, aceasta fiind ulterior stilizată de CSS (Casca ding
Style Sheets).
Elementele HTML sunt formate din cele doua etichete de deschidere,
respectiv închidere ɇi conĠinutul care se află între acestea, conform exemplului
următor care reprezintă un paragraf:
<p>Acesta este proiectul meu de licență.</p>
Există taguri care au un un sens foarte specific, cum ar fi tagul de imagine,
un tabel, o lista ordonată sau neordonată, etc. dar există ɇi taguri mai puĠin
stricte care cuprind alte elemente, cum ar fi o sectiune. Pe lângă acestea mai
există ɇi tagurile pe care le folosim din motive tehnice. Indiferent de tipul lor,
elementele HTML au o valoare semantică.
Mai jos este un exemplu de pagină H TML:
Un fiɇier HTML conĠine următoare structură: Pe prima linie tagul
<!doctype> care informează browserul despre versiunea de HTML folosită.
Următorul tag este <html> care conĠine, practic, documentul în sine. Ta gul
acesta conĠine, la rândul său alte două taguri extreme de importante, ɇi anume
13
<head> ɇi <body>. În tagul head se află alte taguri cum ar fi cel de titul sau
linkuri către fiɇiere de tip CSS sau JavaScript. Toate elementele vizuale apar î n
tagul body care conĠine imagini, paragrafe, butoane, tabele, etc.
Browserul nu afiɇează tagurile aɇa cum sunt ele scrise. Acesta ɇti e să le
interpreteze pentru a afiɇa conĠinutul paginii aɇa cum trebuie. Putem spune c ă
HTML este baza site-urilor web deoarece este un limbaj care poate fi usor
modelat prin inter mediul altor limbaje superioare ɇi permite înglobarea mai
multor elemente de orice tip.
Încă de când a apărut, HTML este un limbaj care se află într -o continuă
evoluĠie. Ultima versiunea este HTML5 ɇi vine cu o extindere, o îmbunătă Ġire a
marcajelor ɇi introduce noi marcaje ɇi posibilitatea utilizării A PI-urilor
(Application Programming Interfaces) pentru aplicaĠiile web care sunt mai
complexe. Mai exact HTML5:
Defineɇte un arbore de analiză pentru generarea unui arbore DOM
(Document Object Model) chiar ɇi din marcajele ambigue sau de o
calitate mai slab ă,
Adaugă elemente noi pentru a sprijini aplicaĠiile multimedia ɇi web ,
Identifică regulile ɇi semantica elementelor HTML existe nte,
Este un suport pentru versiunea sa anterioară, HTML4.
Printre numeroasele îmbunătăĠiri ale HTML5 se numără elementele
canvas, audio ɇi video pentru o mai uɇoară manipulare si includere a
conĠinuturilor grafice ɇi multimedia într -o pagină. De asemenea, noile elemente:
section, article, nav ɇi header ajută la îmbunătăĠirea conĠinutului semanti c al
paginilor web.
În plus, HTML5 a introdus noĠiunea de Semantics Web care presupune
structura clară a unei pagini. Semantics Web presupune un set de reguli de
separare a elementelor în funcĠie de rolul pe care îl au acestea într -o pagină.
14
2.1.2 CSS
În anul 1994, Hakon Wium Lie a înaintat prima propunere de CSS către
World Wide Web Consortium. Una din cerinĠele principale era ca foile de stil s ă
poată proveni din diferite surse de pe internet. Au avut loc multe dezbateri ɇ i
discuĠii dar, după doi ani a fost stabilit primul standard al foilor de stil ɇi anume
CSS1. Autorii Hakon Wium Lie ɇi Bert Bos au respectat cerinĠele legate de foile de
stil ɇi astfel au implementat idea de cascadă care permite ca ac elaɇi fiɇier HTML
să fie influenĠat de mai multe fiɇiere CSS.
Cascading Style Sheets (CSS) este folosit pentru a prelucra asp ectul
paginilor web ɇi a interfeĠelor care au fost scrise în HTML ɇi nu numai. Limbajul
poate fi aplicat oricărui document de timp XML sau SVG. Scopul CSS e ste de a
separa conĠinutul unui document de prezentarea sa. Mai exact separă conĠinutul
de tot ce tine de aspect, culori, fonturi, adică de stilizarea sa. Această separare se
face tocmai pentru a îmbunătăĠi accesul conĠinutului deoarece paginile sunt mai
organizate ɇi nu sunt atât de încărcate. Pe lângă acestea, oferă mai multă
flexibilitate în prezentarea caracteristicilor ɇi un lucru extreme de util este faptul
că mai multe pagini HTML pot folosi aceeasi formatare prin specifi carea regul ilor
CSS într- un fiɇier separat cu exten sia corespunsătoare.
Un fiɇier CSS este uɇor de înĠeles, mai ales că putem obĠine acelaɇ i efect
folosind metode diferite. Pentru a scrie un bloc în CSS vom scrie între acolade
câteva reguli de forma proprietate:valoare . Un alt element întâlnit este
selectorul care ne spune asupra cărui sau căror elemente se va aplica stilizarea
definită între acolade. Mai jos este un exemplu care subliniază acest lucru:
15
Fiecare element dintr-un document este reprezentat printr-un box.
Folosind acest mod este descr is spaĠiul ocupat de un element. Fiecare box, la
rândul său este compus din 4 elemente:
Marginea – delimitează elementul de cele din jurul său.
Bordura – linia care delimitează exteriorul de interiorul elementului.
Content – conĠine elementul care la rândul său are un width ɇi height.
Padding – extinde suprafaĠa ocupată de elementul în cauză preluând
elemente din content, dacă e cazul.
CSS introduce ideea de fluiditate a prezentarii deoarece se poate adapta
dinamic la momentul vizualizării pe dis pozitive de diferite dimensiuni sau cu
diverse sisteme de operare. De asemenea, stilul unei pagini poate fi foarte uɇor
modificat prin specificarea unei alte căi împreună cu un alt fiɇier cu extensia css.
16
În continuare vom analiza cele trei metode prin care putem interactiona cu
CSS. Cele trei metode sunt: inline, intern ɇi extern.
1. Metoda inline
În cazul acesta, cu ajutorul atributului style care va fi plasat în int eriorul tagului,
se poate stiliza orice parte dintr- o pagină web. Cel mai mare dezavantaj care este
destul de evident este faptul că deseori codul va fi repetat în cazul elementelor
cărora li se aplică aceeaɇi stilizare ɇi, de asemenea, dacă dorim să facem o
schimbare, aceast a nu va fi făcută o singură dată ci de mai multe ori, pentru
fiecare conĠinut unde se regăseɇte atributul. În acest caz nu este necesară
folosirea selectorului.
Mai jos este un exemplu pentru a sublinia cele descrise mai sus:
După cum se observă, în tagul paragrafului am adăugat at ributul style cu
ajutorul căruia am modificat culoarea ɇi dimensiunea conĠinutului. Color ɇi font –
size reprezintă proprietăĠile iar blue ɇi 46px sunt valorile atribuite.
2. Metoda internă
De această data atributul nu mai este p lasat în interiorul altui tag ci vom
avea un tag separate numit style ɇi codul va fi în interiorul acestuia. Tag -ul style
va fi în interiorul tag-ului head. De data aceasta vom folosi selectorii prin care se
vor indica elementele care vor fi afectate de mo dificările aduse. Avantajul
17
principal este faptul că vom scrie codul o singură data ɇ i acesta va fi aplicat acolo
unde este cazul.
Exemplul de mai jos subliniază cele descrise anterior:
În exemplul de mai sus “box” este selectorul. Datorită codului scris în head,
se vor modifica automat toate cele trei div-uri, culoarea textului modificându- se
în verde.
3. Metoda externă
Această metodă se aseamănă foarte mult cu cea internă doar că nu vom
plasa codul într-un tag extern ci într- un fiɇier extern cu extensia .css. Acest fiɇier
va fi importat în fiɇierul HTML în modul următor:
<link rel="stylesheet" type="text/css" href="style.css" />
Codul în fiɇierul extern va fi compus din selector ɇi modificările între
acolade. Mai jos este un exemplu:
18
Cel mai bun motiv pentru care metoda aceasta este cea mai eficientă este
avantajul de a scrie doar o dată, chiar dacă dorim să modificăm elemente din
pagini diferite .
Acum intervine noĠiunea de cascadă deoarece ea reprezintă ordinea în care
aceste metode sunt executate în cazul în care sunt folosite toate, ɇi anume: inline,
intern, extern ɇi în cele din urmă stilul predefinit de browser. Când vine vorba de
stilizare, CSS este cea mai bună opĠiune. Desigur, are limitările ɇi restricĠiile sale
dar cu sigura nĠă aduce un plus uriaɇ ɇi uɇurează munca programatorilor.
2.1.3 Bootstrap
Înainte de a prezenta pe larg Bootstrap, trebuie să introducem noĠiunea de
framework. Un framework este o aplicatie web cu ajutorul careia se poate realiza
mult mai rapid un site complex datorită colecĠiei de scripturi pe care le deĠine.
Bootstrap, intitulat initial Twitter Blueprint a fost dezvoltat în anul 2010
de către Jacob Thornton ɇi Mark Otto. Scopul acestui framework era încurajarea
consistenĠei în tool -urile folosite de cei de la Twitter, pentru a închega uneltele
interne de dezvoltare. Acest framework conĠine ɇabloane de design bazate pe CSS
combinate cu HTML, elemente precum butoane, formul are ɇi alte component de
interfaĠă dar ɇi câteva extensii în JavaScript. La scurt timp după ce a fost
începută dezvoltare proiectului, acesta a avut un impact uriaɇ deoarece
dezvoltatori de toate nivelurile de calificare au început să lucreze la acesta. În
anul 2011 Twitter Blueprint a devenit Bootstrap ɇi a fost ghidul de sti l în cadrul
companiei aproximativ un an. În acelaɇi an a fost publicat ɇi a fos t la fel de
utilizat până în ziua de astăzi.
Motivele pentru a folosi Bootstrap sunt extreme de multe, acesta având
extreme de multe avantaje. Folosind acest framework se poate obtine o interfata
placuta cu un minim de efort. Cele mai mari avantaje sunt urmatoarele:
19
1. Economia de timp – folosind elementele predefinite se salvează foarte
mult timp. Librariile pot fi integrate într- un proiect dând naɇtere unui website
fără prea mult efort ɇi într -un timp mult mai scurt decât dacă ar fi fost totul scris
de la zero.
2. Elementele respons ive – bootstrap conĠine un set de clase responsive
util în realizarea unui design foarte uɇor adaptabil oricărui display. Se adaptează
la schimbări de platformă foarte repede ɇi eficient.
3. Este customizabil – având cunoɇtinĠe fundamentale de HTML ɇi CSS
poate fi realizat un design în Bootstrap. Practic, fiecare iɇi poat e crea propria
versiune de Bootstrap printr- o analiză a codului, păstrând codul care este de folos
ɇi eliminând părĠile nedorite.
4. Este consistent – reuɇeɇte să ofere consistenĠă codului re zultând astfel
website- uri uniforme ɇi plăcute.
5. Este Open Source – este o platformă gratuită, din acest motiv este atât
de popular ɇi accesibil.
Un exemplu de Bootstrap din proiectul pe care l-am dezvoltat este iconita
din dreptul optiunii de Log In/Out. Pentru a o putea folosi, a fost nevoie doar de
includerea unei clase. Codul este cel de mai jos iar rezultatul este reprezentat în
figura 1.
<span class=” glyphicon glyphicon-log-out ”> Log Out </span>
Figura 1
20
2.1.4 JavaScript
În anul 1995, Brendan Eich a creat în doar 10 zile limbajul de programar e
JavaScript care, ulterior a fost dezvoltat de către Netscape, pentru a fa ce paginile
web cât mai interactive. IniĠial JavaScript s -a numit Mocha, nume ales de Marc
Andereessen, fondatorul Netscape iar la foarte scurt timp denumire a fost
schimbată în LiveScript. În luna decembrie a aceluiaɇi an s -a stabilit numele pe
care îl poartă ɇi astăzi ɇi anume JavaScript, nume ales conform unei strategii de
marketing deoarece limbajul Java era ɇi este în continuare foarte popular. Din
acest motiv se crează confuzia între aceste două limbaje chiar ɇi în prezent .
JavaScript este unul din cele trei tehnologii de bază în dezvoltarea
aplicaĠiilor web, celelalte două fiind reprezentate de HTML ɇi CSS. JavaScript
conĠine funcĠii de primă clasă, este un limbaj de programare de nivel înalt ɇi este
standardizat de European Computer Manufacturers Association Script. Limb ajul
JavaScript s- a dezvoltat foarte mult în ultimii ani, aɇ adar poate fi utilizat pentru
dezvoltarea de jocuri ɇi chiar crearea aplicaĠiilor atât desktop cât ɇ i mobile.
JavaScript este un limbaj de programare orientat-obiect care se bazeaza pe
conceptul prototipurilor.
Codul scris în JavaScript este executat de u n motor cu acelaɇi nume.
Primul motor a fost creat de fondator pentru browserul Netscape Navigator.
Acest motor a fost implementat î n C ɇi iniĠial a purtat numele de SpiderMonkey.
Pentru realizarea unei aplicaĠii web reuɇite ɇi cu un aspect plăcut, codul d e
HTML ɇi CSS trebuie îmbinat cu cel de JavaScript. Putem lega un script de o
pagină HTML în două moduri: fie îl includem, fie îl asociem. Executarea are loc la
încărcarea paginii sau când are loc un eveniment (cum ar fi un simplu click).
Primul mod, adică includerea unui script în pagina HTML nu este foarte eficient.
În general, fie că este cod de CSS, fie că este JavaScript, acestea ar treb ui scrise
21
separat, în primul rând pentru eficienĠă ɇi în al doilea rând deoarece codul este
mult mai lizibil fiind scris cât mai ordonat.
Mai jos este un model de cod JavaScript prin care includem un script în
pagina HTML:
Un al doilea mod este de a scrie un script în interiorul unui fiɇier care are
extensia .js iar referenĠierea lui se face în felul următor:
<script type="text/javascript" href="scripts.js" />
Există două locuri în care se pot executa scripturile: client-side pe care o
numim ɇi front -end sau server-side , numită ɇi back -end. Clientul unui site web
face referire la browserul cu care acesta este accesat. Serverul unui website este
serverul care îl găzduieɇte. Majoriatea limbajelor de programare sunt proiec tate
să ruleze pe una din cele două. Fie pe partea de server, fie pe partea de client.
Urmează câteva exemple prin care vom evidenĠia mai tare diferenĠa dintre
acestea două:
Client Side
Dezvoltare pe această parte se face aproape exclusive în JavaScript care
vine în plus, pe lângă codul de HTML ɇi CSS care reprezintă codul de bază.
22
Motivul pentru care JavaScript este încadrat în partea de client side este deoarece
acesta executa scripturi după ce a fost încărcată o pagină.
Server Side
De aceast ă dată scriptul este executat înainte ca pagina HTML să fie
încărcată. Există o serie de limbaje pe care le folosim, dintre care cele mai
populare sunt Ruby on Rails, ASP.NET ɇi multe altele. Acestea sunt numit e
limbaje pe partea de server deoarece scripturile nu sunt executate pe calculato rul
personal ci pe serverul care găzduieɇte site -ul web ɇi care trimite mai departe
codul HTML.
În principiu, majoriatea site- urilor web utilizează atât o parte a clientului,
cât ɇi una a serverului. Sunt multe lucruri care pot fi făcute de ambele părĠi, dar la
fel de multe sunt care pot fi executate doar de una dintre ele. Din acest moti v este
nevoie de amândouă. Partea de front -end este bună pentru orice necesită
interacĠiune cu utilizatorul, cum ar fi un joc simplu. Partea de back -end est e
extrem de folositoare pentru siteurile care necesită încărcarea datelor dinamic e,
cum ar fi o notificare care să anunĠe utilizatorul că s -a conectat.
După cum se poate observa în schema de mai sus, HTML reprezintă
structura aplicaĠiei web, CSS reprezi ntă prezentarea sau stilizarea sa, iar
23
JavaScript se ocupă de comportamentul elementelor dintr -o aplicaĠie. Aceste trei
elemente îmbinate construiesc aplicaĠia web ideală.
JavaScript este un limbaj foarte utilizat după cum se poate observa ɇi în
diagrama de mai jos. Acesta prezintă o serie de caracteristici, cum ar fi :
independenĠa sa de mediu, limbaj bazat pe obiecte, limbaj flexibil, ɇ.a.m.d .
2.1.5 jQuery
IniĠial a fost lansat în anul 2006 la BarCamp de către John Resig ɇi a fost
influenĠat cssQuery, o bibliotecă lansată mai devreme de către Dean E dwards. În
prez ent biblioteca jQuery este menĠinută de o echipă de programatori condusă de
Timmy Willison.
Motivul pentru care a fost conceput jQuery este pentru a simplifica
scrip tingul în paginile HTML pe partea de client. jQuery reprezintă cea mai
populară bibliotecă de JavaScript cu un procentaj de utilizare de peste 50% în
topul celor mai frecvente site-uri web. Unul din motivele pentru care jQuer y este
atât de populară este faptul că este open -source.
24
jQuery este o librărie care se ocupă, în primul rând, de manevrarea
elementelor DOM (este o reprezentare arborescentă a tuturor elementelor dintr -o
pagină). jQuery ajută la simplificarea sintaxei pentru identificare a ɇi mai ales
manipularea acestor elemente. Deseori folosim aceasta bibliotecă pentru a
identifica elemente care sunt caracterizate de o anumită proprietate (cum ar fi
toate elementele luate după un anumit tag) pentru schimbarea sa ulterioară sau
pentru răspunsul la evenimente, cum ar fi un click. jQuery se foloseɇte c ombinat
cu JavaScript, astfel selecĠia elementelor realezându -se mai uɇor.
Librăria jQuery are o serie de avantaje care nu trebuiesc ignorate, ɇi
anume:
1. Uɇor de folosit ɇi dimenisune mică
2. Nu este necesar să scriem foarte multe linii de cod
3. Este compatibil cu orice browser
4. Poate fi extins
2.2 Back-end
Back-end-ul este acea parte a unei aplicatii care are rolul de manag ement
al con Ġinutului, partea care nu se vede. Acesta are trei mari părĠ i: un server, o
aplica Ġie de interfa Ġă ɇi o baz ă de date. Acestea trei îmbinate fac posibilă existent
componentei descrise anterior, cea de front-end. Limbajele de programare pe
partea de back-end prin care serverul, baza de date ɇi aplica Ġia de interfa Ġă sunt
numeroase. Printre cele mai cunoscute se numără: Java, .NET, PHP, Ruby,
Python, Perl, etc. Pe partea de baze de date, cele mai folosite tehnologii pent ru
crearea, interogarea, între Ġinerea, accesul controlat, prelucrarea datelor ɇi
trimiterea acestora c ătre utilizatori se num ără SQL Server, MySql ɇi
Oracle.
25
2.2.1 PHP
Limbajul PHP a fost dezvoltat iniĠial în anul 1994 de către Rasmus Lerdorf
sub denumrea de PHP/FI, adică Personal Home Page/Forms Interpreter). Prima
sa versiune a fost reprezentată de un set de fiɇiere CGI (Common Gateway
Interface) scrise în C, iar Rasmus Lerdorf dorea ca principala sa u tilizare să fie d e
a-ɇi putea contoriza numărul de vizite p e CV- ul său de pe web, acesta fiind ɇi
motivul pentru care a primit denumirea de Personal Home Page/Forms
Interpreter. Ulterior Raspos a căutat să dezvolte limbajul, s-a hotărât să îl rescrie
compl et ɇi astfel a apărut PHP care permite lucrul cu bazele de date ɇi crearea
aplicaĠiilor web dinamice.
PHP a fost lansat în 1995 ɇi la scurt timp după lansarea acestuia i s-a
schimbat denumirea în FI (Forms Interpreter) care a fost apreciat c a instrument
CGI, dar nu a fost încă acceptat ca fiind un limbaj. În acelaɇi an, fondatorul a
rescris aproape tot codul, creând o nouă versiune care a reluat numele de PHP.
Această nouă versiune a fost imediat acceptată ɇi apreciată deoarece dej a era un
limbaj de script ing adevărat iar arhitectura sa semăna destul de mult cu cea a
limbajului C.
În anul 1996 a apărut o nouă versiune sub numele de PHP/FI2.0 care a
venit cu două mari avantaje. Primul avantaj a fost faptul că a fost int rodusă
posibilitatea ca fiecare programator să îɇi scrie propriile funcĠi i iar al doilea
avantaj a fost lucrul cu bazele de date care a fost facilitat foarte mult.
Odată cu trecerea anilor PHP a devenit din ce în ce mai popular, aɇadar
Rasmus Lerdorf împreună cu Andi Gutmans ɇi Zeev Suraski s -a apucat să rescrie
limbajul deoarece acesta avea nevoie de multe funcĠionalitaĠi care începuseră să
fie cerinĠe obligatorii. Noul limbaj era foarte diferit faĠă de prima sa versiu ne dar
acronimul a rămas PHP, schimbându-i- se semnificaĠia ɇi anume Hypertext
Preprocessor ɇi după cum se observă, PHP este un acronim recursiv la stân ga.
26
Într- un final, această versiune s -a bucurat de un adevărat succes deoarece era o
adevărată îmbunătăĠire: lucru cu API -uri, protocoale ɇi baze de date. Pe deasupra
s-a introdus programarea orientată pe obiect ɇi chiar posibilitatea dezvoltatorilor
de a extinde limbajul.
Ultima versiune este PHP7, numită PHPng (PHP next generation), această
versiune vine cu o performanĠă crescută, memoria este utilizată mai eficient ɇi
securitatea este crescută. Limbajul este în continuare open source ɇi est e extrem
de u tilizat în rândul aplicaĠiilor web. Exită trei mari categorii de produse în care
putem utiliza PHP ɇi anume: scripting în domeniul web pe partea serverului,
utilizarea din linia de comandă ɇi crearea aplicaĠiilor desktop. ğinând cont de
aceste aspecte, PHP are foarte multe de oferit, marea majoritate respec tând
modelul MVC(Model-View-Controller).
Codul PHP trebuie delimitat de restul conĠinutului prin tagul de început
(<?php) , respectiv de sfârɇit ( ?>). Tot ce se află în interiorul acestor tag -uri se
interpretează ca fiind cod PHP si ce este în exterior nu este afectat, urmând să fie
interpretat de browser. InstrucĠiunile sunt executate secvenĠial ɇi sunt separate
prin punct ɇi virgulă. Mai jos sunt două exemple, primul (figura 1) fii nd cel mai
des întâlnit iar cel de- al doilea (figura 2) care deɇi nu este greɇit nu este întâlnit
foarte des:
Figura 1
Figura 2
27
Gruparea datelor ɇi a funcĠiilor într -o structură orientată pe obiect se face
cu ajutorul claselor. Este o metodă destul de simplă ɇi marele avantaj este că
odată ce o clasă este definită, putem defini oricât de multe obiecte de ti pul clasei
respective. Cuvântul cheie folosit pentru definirea unui nou obiect este new iar
metodele obiectului sau proprietăĠile acestuia pot fi accesate cu ->. Mai jos este
sintaxa pentru declararea unei clase în PHP, iar în interiorul acesteia este si ntaxa
pentru definirea unei funcĠii:
După cum se poate observa, sintaxa PHP nu este complicată deloc.
Variabilele sunt declarate cu simbolul $ în faĠa fiecăreia. Trebuie subl iniat faptul
că există o serie de cuvinte cheie care sunt rezervate de compilator ɇi acest ea nu
pot fi folosite ca identificatori (cum ar fi class sau var).
Un script PHP poate executa în acelaɇi timp mai multe sarcini, cum ar fi:
1. Citirea ɇi procesarea conĠinutului unui formular web;
2. Lucru cu baza de date stocată pe server;
3. Preluarea ɇi procesarea datelor de pe alte site-uri web;
4. Generarea grafurilor dinamice, cum ar fi diagramele;
28
Sute de mii de developeri folosesc PHP, milioane de site- uri au declarat că
se bazează pe PHP, aɇadar numărul de furnizori de servicii de internet ɇi de
companii de Web hosting e ste unul foarte mare. Cu siguranĠă PHP este un limbaj
de succes, utilizarea sa în aplicaĠii fiind din ce în ce mai des întâlnită.
2.2.2 Model – View – Controller
Model- View-Controller este folosit în industria software, inclusive web
development ɇi reprezintă o modalitate de lucru care separă interfaĠa proiectul ui
de partea sa logică, aplicaĠiile fiind foarte uɇor de modificat în ac est mod. În
MVC, modelul reprezintă datele de care are nevoie aplicaĠia, view- ul face referire
la elementele de interaĠă iar controller- ul reprezintă sistemul decizional ɇi
comunicativ care procesează datele informaĠionale ɇi care face legătura între
model ɇi view. Acest lucru este reprezentat mai clar în figura de mai jos:
Modelul este reprezentat de partea logică a aplicaĠiei. Acesta se ocupă cu
operaĠiile ɇi acĠiunile care se exercită asupra datelor, autentificare a utilizatorilor
29
ɇi integrarea claselor care permit procesarea informaĠiilor din ba zele de date.
Modelul poate fi pr ivit ca o clasă care înglobează proprietăĠile ɇi acĠiunile
elementelor bazei de date. Un alt aspect foarte important legat de model este
faptul că acesta nu are nicio legătură cu ce se întâmplă cu datele când acestea
sunt transferate view-ului sau controll er-ului. Practic, modelul reprezintă temelia
datelor dintr- o aplicaĠi ɇi acesta acceptă cererile care apar, fără a pune vreo
întrebare. În general, modelul este cea mai complexă parte a MV C-ului, fiind baza
întregului si stem deoarece fără el nu poate exista nicio conexiune între view ɇi
controller.
View- ul este cel care afiɇează datele, adică se ocup de aspectul informaĠiei
procesate de controller. După ce funcĠiile au fost executate de model, view -ul
primeɇte rezultatele iar acesta le trimite broweru lui. De obicei, view-ul este o
mini- aplicaĠie care are la bază diferite template -uri. View-ul este legat de celelalte
două componente printr -o relaĠie directă, scopul fiind de a primi date din mode l
ɇi organizarea din controller pentru a le afiɇa utilizato rului. Un lucru care trebuie
subliniat este faptul că dacă se doreɇte aplicarea corectă a pa ttern -ului MVC este
necesar ca între model ɇi view sa existe interacĠiune doar prin intermediul
controller- ului, acesta manipulând întreaga logică a aplicaĠiei .
Controller- ul este creierul aplicaĠiei, aɇa cum sugerează ɇi numele, el
controleză logica aplicaĠiei, face legătura între model ɇi view, între acĠiuni ɇi
sistemul decizional. ğinând cont de nevoile utilizatorului, acesta apelează
funcĠiile necesare. Functiil e se vor folosi de model pentru a extrage sau actualize
datele, apoi acestea vor fi trimise către view care le va afiɇa prin template -uri.
Acest patter este foarte util deoarece dezvoltatorul se poate concetra pe
fiecare componentă a aplicaĠiei în parte, facilitând ɇi lucrul în paralel.
AplicaĠiile web în PHP a căror arhitectură se bazează pe modelul MVC s unt
destul de des întâlnite. Vom lua un exemplu de bază pentru a înĠelege structura.
30
Mai jos este un exemplu de definire a claselor. Vom avea clasele de bază pentru
fiecare parte, ɇi anume:
Mai jos este un exemplu de modalitate de a crea legăturile dintre clase.
31
2.2.3 PHPMailer
PHPMailer a fost scris pentru prima oară în anul 2001 de către Brent R.
Matzelle, fiind de fapt un proiect SourceForge. Source Forge este un serviciu w eb
care oferă dezvoltatorilor o locaĠie online pentru a gestiona proiectele softwa re
gratuite ɇi open source. În anul 2004 Marcus Boiton ɇi Andy Prevost au preluat
acest proiect, PHPMailer ɇi au continuat dezvoltarea sa. Ulterior, în anu l 2010 a
devenit un proiect Apache pe Google Code, fiind gestionat de Jim Jagielski.
IniĠial Marcus ɇi -a creat un fork pe GitHub pentru dezvoltarea acestui
proiect. La scurt timp Jim Jagielski i s- a alăturat ɇi aceɇtia ɇi-au unit forĠele ɇi au
continuat să lucreze, utilizând în continuare GitHub ca repo official pentru
PHPMailer.
PHPMailer este una din cele mai populare bi blioteci de generare ɇi
trimitere de e- mailuri din lume ɇi prezintă o serie de caracteristici după cum
urmează:
1. Probabil cel mai popular cod din lume pentru trimiterea de e-mailuri
folosind PHP;
2. Utilizat de foarte multe proiecte open source: Drupal, WordPress,
SugarCRM, 1CRM, etc;
3. Suport SMTP integrat – trimiterea e- mailurilor fără a fi nevoie de un
server de mail local;
4. Trimiterea e- mailurilor cu multe TO, CC, BCC ɇi REPLAY -TO;
5. E-mailuri alternative pentru clienĠii care nu citesc HTML ;
6. Suport pentru conĠin utul UTF-8;
32
7. Autentificare SMTP cu login, plain, ntlm, cram-md5 pe transporturile
SLL ɇi TLS;
8. Mesaje de eroare în 47 de limbi;
9. Compatibil cu PHP 5.0 ɇi ulterior.
Mai jos este o ilustrare a codului PHPMailer, aceasta fiind folosită în
proiectul pe care l-am dezvoltat:
SMTP (Simple Mail Transfer Protocol) este protocolul folosit pentru a
trimite aceste e-mailuri.
33
2.2.4 Protocolul HTTP
În anul 1965, Ted Nelson în proiectul Xanadu a inventat termenul de
hypertext . Acesta, la rândul său a fost inspirat de Vannervar Bush, mai ex at de
viziunea acestuia despre sistemul de recupereare ɇi gestionare a informaĠiilor.
HTTP (Hypertext Transfer Protocol) este protocolul standard folosit
pentru transferul de date care are loc între partea de client ɇi cea de server. A fost
initial dezvoltat de Tim Bernes-Lee în 1989. Dezvoltarea standardelor HTTP a
fost coordonată de Internet Engineering Task Force (IETF) ɇi World Wide Web
Consortium (W3C). Prima versiune HTTP/1.1 a apărut în 1997. Dave Ragget a
condus grupul de lucru HTTP î n 1995 ɇi a dorit să extindă protocolul cu
operaĠiuni extinse, meta -informaĠii mai bogate, legătura cu un protocol de
securitate care a devenit mai eficient prin metode de suplimentare ɇi câmpuri
antet . O versiune apărută ulterior este HTTP/2 care este ɇi acum susĠinută de
servere web majore ɇi a fost standardizată în 2015.
Acest protocol face parte din clasa protocoalelor simple de tipul cer ere-
răspuns executate, de cele mai multe ori, prin TCP (Transmis sion Control
Protocol). Asemenea tuturor tehnologiilor, ɇi HTTP este într -o continuă
dezvoltare. Dacă la început era un protocol al nivelului aplicaĠiei datorit ă TCP, în
prezent acesta reprezintă o punte între procesele sistemelor ɇi reĠelelor. L a
început un server permitea o singură conexiune HTTP. Răspunsul se întorcea în
aceeaɇi conexiune ɇi abia după ce acest process era finalizat se închide a
conexiunea ɇi putea fi reluat acest proces pentru următoarele cereri. Odat ă cu
apariĠia TCP lucrurile s -au schim bat ɇi anume, conexiunea rămâne deschisă până
când îɇi primeɇte răspunsul ultima cerere din coadă.
O sesiune HTTP este o secvenĠă de tranzacĠii în reĠea de tipul cerere –
răspuns. Un client iniĠiază o solicitare prin stabilirea unei conexi uni TCP la un
port de pe un server (de obicei este vorba de portul 80). Un server HTTP aɇteaptă
34
mesajul de solicitare al unui client. Odată primită solicitarea, s erverul trimite o
linie de stare ɇi un mesaj propriu -zis. Mesajul este de obicei resursa solicitată. De
asemenea , poate fi returnat ɇi un mesaj de eroare sau alte informaĠii.
InteracĠiunea poate avea loc prin mai multe metode, enumerate mai jos:
1. GET – este probabil cea mai folosită metodă ɇi aceasta îi cere server ului să
trimită pagina pentru a fi citită ;
2. HEAD – se comport ca metoda GET ɇi este, de asemenea, foarte folosită
doar că de această data nu mai este solicitată întreaga pagină c i doar
headerul, nemaifiind nevoie citirea întregii pagini;
3. POST – se ocupă cu trimiterea datelor către server ɇi a unui statut a l
operaĠiei, dacă aceasta a reuɇit sau a eɇuat ;
4. PUT – este inversul metodei GET ɇi se ocupă cu depunerea documentelor
pe server, desigur, dacă are drepturile necesare;
5. DELETE – dacă are drepturile necesare, ɇterge o pagină de pe server;
putem spune că est e opusul metodei put;
6. TRACE – este folosit pentru a depă na problemele care apar pe parcursul
cererii, poate da mai multe informaĠii despre traseul urmat de legă tura
HTTP;
7. OPTIONS – permite serverului să întrebe de metodele unei pagini, de
asemenea pentru i dentificarea capacităĠii unui server înainte de înaintarea
unei cereri;
8. CONNECT – permite conectarea la server da foloseste intermediari.
35
2.2.5 Serverul Apache
Un server web este un calculator care se ocupă cu rularea site -urilor web
care primeɇte ɇi răspunde cererilor HTML venite din partea clienĠilor printr -o
conexiune de tip HTTP. Aceasta este varianta brută a unui server. Între timp
acesta a avut parte de o evo luĠie ɇi în ziua de astăzi un server poate răspunde atât
prin conĠinut, dar ɇi prin servicii.
Un server poate fi de două feluri. Poate fi static, adică calculatorul cu HTTP
instalat poate doar să trimită fiɇiere interpetate ɇi dinamic care pe lângă
caracteristicile serverului static, are un interpretor PHP, o bază da date su alte
elemente. Se numeɇte dinamic deoarece pe măsură ce utilizatorii trimit c ereri
către site, serverul actualizează informaĠia înainte de a o trimite sub form ă de
răspuns.
Cele mai folosite servere web în prezent sunt:
1. Apache pentru PHP
2. TomCat pentru Java
3. IIS pentru .NET
Serverul Apache este un software gratuit ɇi open-source care este
dezvoltat ɇi menĠinut de o comunitate deschisă de dezvoltatori, Apache Softw are
Foundation. Apache este cel mai des utilizat pe sistemul de operare Unix , dar
acesta este disponibil ɇi pentru Windows. Apache este unul din serverele foarte
importante, mai ales în programarea web, acesta fiind încă foarte ut ilizat în acest
domeniu.
În an ul 1992, Rob McCool împreună cu o echipă de programatori din
cadrul The National Center for Supercomputing Activities a demarat un proi ect
prin care dorea crearea unui browser. Acest browser nu trebuia să aibă doar o
funcĠionalitate foarte bună, ci se dorea ca acesta să fie mai ales atractiv din punct
36
de vedere grafic. Acest browser a fost creat în acelaɇi an ɇi a purta t numele de
Mosaic care pentru o vreme a fost unul din cele mai populare browsere. Pe lângă
acest browser s-a dat startul scrierii unui nou server care introducea CGI
(Common Gateway Interface) care oferea posibilitatea creării site -urilor
dinamice. În anul 1994 Rob McCool a plecat din NCSA ɇi astfel dezvoltar ea
serverului a început să stagneze. În aceeaɇi perioadă s -a înfiinĠat organizaĠia
Apache care a preluat ɇi prelucrat proiectul lui Rob.
Apache face parte din topul serverelor utilizate, venind cu două din cele
mai importante inovaĠii:
“sever -side includes” – este foarte utilizat în cazul site- urilor web ɇi
presupune interpretarea unor scripturi
Virtual hosting – găzduirea virtuală înseamnă de fapt posibilitatea
de a rula mai multe site- uri simultan pe acelaɇi server
Câteva dintre caracteristicile serverului Apache:
1. Se poate ocupa de mai mult de 10.000 de conexiuni simultan
2. Manipularea fiɇierelor statice ɇi a fiɇierelor index
3. ToleranĠa la defecĠiuni ɇi redresarea cu recuperare automată
4. ConfiguraĠie dinamică
5. Suport XML
37
2.2.6 MySql
MySql este cel mai popular sistem de gestiune a bazelor de date. Acesta
este dezvoltat, susĠinut ɇi distribuit de către Oracle Corporation. Până în
momentul actual acesta a fost descărcat ɇi utilizat de peste o sută de milioane de
utilizatori din întreaga lume. Website-uri extrem de cunoscute la nivel mondi al
folosesc MySql, cum ar fi Facebook, YouTube, Twitter, Wikipedia, etc.
O bază de date este o colecĠie structurată de informaĠii. Dimensiunea
acesteaia poate fi oricât de mare sau oricât de mică, de la o list ă simplă de cărĠi
până la o cantitate uriaɇă de informaĠii dintr -o corporaĠie. Pentr u a putea accesa
sau utiliza informaĠiile dintr -o bază de date este necesar un sistem de gestiune a
bazelor de date. Cele mai folosite sisteme de gestiune în prezent sunt:
1. Oracle
2. MySql
3. Microsoft SQL Server
4. PostgreSql
5. MongoDB
În anul 1994, una din primele baze de date a fost mSQL (mini SQL) care a
fost concepută de David Hughes fiind o interfaĠă a unui sistem de gestiune a
bazelor de date care nu putea fi interogat folosind SQL. mSQL a fost dezvolt at în
38
continuare până a deve nit un sistem de gestiune a bazelor de date dar care era
destul de limitat însă acest lucru nu a fost atât de important deoarec e mSQL
stătea la baza multor aplicaĠii. În jurul anului 1999 mSQL disp ăruse aproape
complet, fiind înlocuit de MySql. MySql a fos t creat de David Axmark ɇi Monty
Widenius. InterfaĠa a fost scrisă în C/C++. Acesta din urmă a avut un real succes
ɇi astăzi este disponibil pe aproape toate sistemele de operare.
Bazele de date MySql sunt relaĠionale, adică datele sunt stocate în tabel e
separate. Acest lucru este mult mai eficient ɇi mai lizibil decât dacă informaĠiile
ar fi fost stocate într-un singur tabel mai mare. Structurile ba zei de date sunt
organizate în fiɇiere fizice optimizate pentru viteză . Un alt lucru foarte important
este c ă există un set de reguli standard care reglementează relaĠiile dintre
diferitele câmpuri de date, cum ar fi:
1. Unu- la-unu (1 – 1) – această relaĠie este cea mai simplă. Ideea de bază
este că unui element din primul tabel îi corespunde un singur element
din cel de- al doilea tabel. Aceast tip de relaĠie nu este foarte des întâlnit
pentru a reduce numărul de atribute dintr -o tabelă. Mai jos se poate
observa o ilustrare a acestui tip de relaĠie:
2. Unu la mai mulĠi (1 – N) – acest tip este mai complex decât cel de mai
sus. Unui element din primul tabel îi corespund unul sau mai multe
elemente din cel de-al doilea tabel . Un lucru important este faptul că
acest lucru nu este reciproc, ci unui element din cel de-al doilea tabel îi
39
corespunde un singur element din p rimul tabel, după cum se poate
observa mai jos:
3. Mai mulĠi la mai mulĠi (M – N) – prin acest tip de relaĠie unui element
din primul tabel îi corespund unul sau mai multe elemente din cel de-al
doilea tabel ɇi reciproc. Acest tip de relaĠie este foarte des întâlnită dar
nu se poate implementa în mod direct ci se foloseɇte o relaĠie
suplimentară de tip 1 -N pentru fiecare din tabelele create iniĠial.
Baza de date impune aceste reguli deoarece dacă aceasta este bine
concepută, aplicaĠia nu va întâmpina prob leme cum ar fi date inconsistente,
duplicate, depăɇite sau lipsa datelor.
40
SQL (Structured Query Language) este cel mai înâlnit limbaj standardizat
folosint pentru a accesa bazele de date. Acesta a fost dezvoltat în ca drul
companiei IBM de către Raymond F. Boyce ɇi Donald D. Chamberlin în 1974 ɇi se
numea SEQUEL (tot Structured Query Language). Scopul iniĠial era manipularea
datelor celor de la IBM. În anul 1970 compania care în prezent poartă nume le de
Oracle Corporation a fost impresionată de potenĠialul acestui concept ɇi a u
dezvoltat propriul SQL iar în 1979 a fost introdusă prima variantă comercia lă de
SQL de către cei de la Oracle.
Serverul de baze de date MySql este foarte uɇor de folosit ɇi foarte rapid,
acestea fiind două dintre motivele pentru care este atât de des utilizat. Astăzi
serverul oferă un set de funcĠii foarte bogat ɇi util. Viteza ɇi securita tea acestuia îl
fac potrivit pentru accesarea bazelor de date pe internet.
Serverul MySql se bazează pe un sistem client -server care constă în diferite
biblioteci, instrumente administrative ɇi o gamă largă de interfeĠ e de programare
a aplicaĠiilor. De asemenea, acesta deĠine o bibliotecă încorporată multi -threaded
care poate fi conectată la aplicaĠia proprie pentru a obĠine un prod us mai mic ɇi
mai uɇor de administrat.
Motivele pentru care MySql este atât de răsândit sunt foarte multe, printre
care se numără gratuitatea acestuia sau faptul că este open source. Pe lângă
acestea MySql are o serie de calităĠi enumerate mai jos:
Compatibilitatea cu orice sistem softare
Viteza
Instalarea se realizează foarte uɇor
Dacă vom combina un limbaj de programare web cu MySql, ia naɇtere un nou
concept ɇi anume acela de baze de date web. Când bazele de date abia au apărut,
acestea nu erau salvate mereu ɇi aplicaĠiile ignorau uneori anumite componente
de stocare a datelor. Ac est lucru era ulteriror disputat de cele două mari
41
componente, browserul care trimitea o cerere ɇi serverul care procesa cerere a
primită ɇi trimitea un răspuns înapoi spre browser . Acest lucru este ilustrat mai
jos:
Odată cu introducerea serverului pentru baze de date acest proces a devenit
mai complex, deoarece atenĠia acordată a devenit mai mare ɇi nu se mai dorea
pierderea acestora. Paɇii unei tranzacĠii într -o bază de date web sunt următorii:
1. Este trimisă o cerere de tip HTTP prin intermediul un ui browser. De
exemplu, folosind un formular un utilizator solicită listarea tuturor cărĠilor
apărute în acest an. Pagina de căutare a rezultatelor se numeɇte cărĠi.php
2. Cererea pentru cărĠi.php ajunge la server ɇi îl dă mai departe motorului
PHP unde urmeaz ă a fi procesată.
3. În această etapă are loc parsarea script -ului. Scriptul se conectează la baza
de date ɇi execută căutarea cărĠilor dorite . PHP va deschide o conexiune cu
serverul MySOL ɇi cererea corespunzătoare va fi trimisă mai departe.
4. Serverul MySQL primeɇte cererea pe care o procesează, obĠine rezultatul
dorit, adică lista de cărĠi ɇi trimite rezultatul înapoi motorului PHP.
5. Motorul PHP este cel care încheie execuĠia script -ului ɇi returnează
rezultatul către serverul web.
6. Serverul web trimite codul HTML care a fost formatat către browser ɇi
utilizatorul va primi răspunsul la cererea solicitată, adică lista de cărĠi
dorită.
42
Cei ɇase paɇi descriɇi sunt reprezentaĠi în schema de mai jos:
MySql ɇi PHP este o combinaĠie ideală, acest lucru fiind decl arat de
majoritatea dezvoltatorilor. Alături de MySql ɇi PHP este folosit ɇi s erverul
Apache. Acestea trei sunt foarte des întâlnite împreună, din acest motiv a fost
creat ɇi acronimul LAMP care prescurtează sistemele utilizate cel m ai des atunci
când vorb im de aplicaĠii web:
L – Linux
A – Apache
M – MySQL
P – PHP, Perl, Python.
PHP se foloseɇte atât de des cu MySQL deoarece configurarea reĠelei dintre
ele este extreme de simplă. Pe lângă acest motiv, se mai adaugă ɇi extensia din
PHP pentru MySQL. Dar cel mai bun motiv este chiar existenĠa unui sistem de
gestiune a bazelor de date scris în PHP pentru manipularea datelor din MySQL,
acesta fiind numit phpMyAdmin . phpMyAdmin a fost creat de Tobias Ratschiller
ɇi ideea initială a fost scrierea unei interfeĠe pentru PHP ɇi MySQL.
43
3.Descrierea aplicaĠiei
În acest capitol se vor evidenĠia scopul aplicaĠiei ɇi motivaĠia alegerii,
funcĠionalitatea efectivă, scopul ɇi cazurile de utilizare ale acesteia. Se vor descrie
pe rând fiecare tabel din baza de date ɇi fiecare pagină a aplicaĠie, punctând
fiecare detaliu.
3.1 Motivarea alegerii
Cu cât tehnologia evoluează mai mult, cu atât interesul oamenilor pentru a
citi este mai mic. Se observă cum încă de mici copii, oamenii preferă site -urile de
socializare, jocuri online sau orice activitate care are legătură cu s martphone -ul,
tableta sau laptopul. Dar cum există oameni total opuɇi, la fel de b ine există
oamenii care g ăsesc un echilibru între dezvoltarea lor personală ɇi relaxarea
folosind mijloacele tehnologice. Astfel am decis s ă pornesc dezvoltarea aplicaĠiei
web, MyBooks.
Dezvoltarea aceste aplicaĠii a pornit de la o nevoie personală, dar pe care
am observat- o ɇi la persoanele pasionate de lectură ɇi anume de a crea o listă cu
toate cărĠile citite sau cărĠile dorite. Prima variantă a fost acum aproximativ 10
ani când am început să scriu aceste cărĠi pe caiete. Caiete care erau pi erdute,
deteriorate după câteva luni sau uitate printre altele. Varianta a doua a apărut
acum 4 ani când am transferat datele de pe caietul respectiv într-un docum ent
excel, mai exact google sheets. Astfel am creat un tabel cu numaru l cartii în
ordinea citirii, titlul, autorul, genul cartii si nota pe care o ac ord fiecarei carti,
acest lucru fiind complet subiectiv. Se poate observa un exemplu mai jos:
44
Până la dezvoltarea proiectului de licenĠă am continuat cu această variantă,
deɇi a devenit ɇi aceasta ineficientă ɇi nu oferă foarte multe oportunităĠi. Astfel
m-am decis să dezvolt o aplicaĠie web care să îmi fie ɇi mie utilă . Un alt lucru care
uɇurează aplicaĠia este procesul de împrumutare al cărĠilor. Persoanele care vor
să împrumute cărĠi trebuie să îɇi facă un cont ɇi acestea pot select a ce cărĠi doresc
să împrumute ɇi să trimită un e -mail iar administratorul, la rândul său poate
vedea ce utilizatori au împru mutat cărĠi de la el ɇi, desigur, ce cărĠi.
Administratorul, de asemenea, poate trimite e-mail-uri utilizatorului când
consideră că a trecut prea mult timp sau când îĠi doreɇte, pur ɇi simplu, cartea
înapoi.
Un alt motiv pentru care am decis să creez această aplicaĠie este faptul că
am observat că mulĠi oameni citesc conform recomandărilor celor apropiaĠ i ɇi
stocarea unei descrieri personale a cărĠii care să fie în concordanĠă cu ratingul
acordat este o metodă inedită. Astfel, dacă cineva doreɇte o rec omandare din
partea unui prieten, nu mai este necesar să îl contacteze. Este necesar doar să
intre pe pagina sa de MyBooks ɇi să îɇi aleagă singur carte. Iar deĠinătorul paginii,
la rândul său, nu va mai fi nevoit să recomande cărĠi de nenumărate ori. El v a
scrie o recenzie ɇi va acorda o notă ɇi vor avea parte de acestea toĠi oamenii care
doresc o recomandare din partea sa.
3.2 Scopul aplicaĠiei
AplicaĠia presupune crearea unei liste cu cărĠile citite sau cărĠile pe care le
deĠine utilizatorul în bibliotecă, inclusiv biblioteca virtuală deoarece foarte mulĠi
oameni citesc de pe telefon, tabletă sau eBook. Fiecare carte primeɇte un rating ɇ i
o descriere proprie. Utilizatorii care se ab onează pot vizualiza, ordona sau căuta
prin cărĠie citite în funcĠie de numele autorului, numele cărĠii, genul acesteia s au
notă. Un alt lucru foarte important este faptul că utilizatorii pot ”împrumuta ”
cărĠi, adică pot rezerva o carte urmând ca aceɇtia să contacteze deĠinător ul
45
paginii web pentru a primi cartea de împrumut sau dacă este în forma t electronic
pentru a o primi efectiv. De asemenea, dacă rezervarea nu se mai doreste, aceasta
poate fi oricând anulată.
Cel care are rolul de administratorul poat e oricând adăuga, edita sau ɇterge
o carte, adică îi poate schimba nota, descrierea, chiar si titlul, numele sau coperta
alocată acestor câmpuri.
Scopul aplicaĠiei este de a eficientiza comunicarea dintre două persoane
pasionate de lectură. În pr imul rând, persoana cu rol de administrator poate
salva cărĠile citite într -un mod mai eficient ɇi rapid, aducând nota personală prin
descriere ɇi notă iar persoana abonată îɇi poate primi recomandare alegând
cartea care se încadrează în genul dorit ɇi care primeɇte un rating pe mă sură,
urmând ca în funcĠie de descriere cartea dorită să fie aleasă.
3.3 Realizarea aplica Ġiei
AplicaĠia a pornit de la o nevoie atât personală cât ɇi sesizată î n rândul
tinerilor pasionaĠi de lectură. Atunci când am început dezvoltarea acesteia m -am
întrebat ce mi- aɇ dori ca aceasta să facă, rezultând scopul care a fost enunĠat ma i
sus. Următoarele întrebări nu au mai început cu “ce?”. Următorul pas a fost
setarea obiectivelor aplicaĠiei, aɇadar a apărut întrebarea ”cum?”.
Primul lucru pe care l- am făcut pentru dezvoltarea aplicaĠiei a fost
selectarea metodelor ɇi a taskurilor care mă ajutau să aju ng la realizarea scopului.
Al doilea pas a fost împărĠirea acestora în taskuri mai mici , acordând fiecărui task
un timp necesar pentru realizare.
Un alt lucru foarte important în realizarea aplicaĠiei a fost aleger ea
limbajului. Am ales PHP deoarece consi der că acesta este limbajul ideal pentru
crearea paginilor web dinamice. Acesta este un limbaj usor de învăĠat, open –
source, se poate conecta la mai multe tipuri de baze de date ɇi cel mai important
46
este faptul că poate fi imbricate cu bucăĠi de cod HTML, fără a întâm pina
probleme. Aɇadar, putem crea foarte uɇor pagini statice ɇi acolo unde est e nevoie,
prin adăugarea de cod PHP putem introduce dinamismul. O diferenĠă foarte
importantă faĠă de alte limbaje de scripting, cum ar fi JavaScript, de exemplu,
este faptul că folosind PHP operaĠiile nu sunt executate pe calculatorul
utilizatorului ci de un server (server-side). Un alt lucru care m- a încurajat să
folosesc PHP este faptul că în prezent este cel mai folosit limbaj de pro gramare
pentru dezvoltarea aplicaĠiilor web dinamice. Pentru a putea testa pagini care au
cod PHP este nevoie ɇi de un server web.
Pentru a rula aplic aĠia am ales serverul Apache ɇi pentru partea de baze de
date MySql. Alegerea serverului a venit în mod natural odată cu limbajul a les
deoarece acesta era foarte des întâlnit printre recomandări. Pentru partea de baze
de date am ales MySql deoarece ɇi ace asta era foarte des recomandat ă alături de
Apache ɇi PHP ɇi pe lângă acestea este foarte rapidă , este în top pentru
implementarea proiectelor care folosesc PHP ɇi pe internet se găsesc foarte multe
soluĠii pentru posibilele probleme întâmpinate.
După alegerea tehnologiilor în care aplicaĠia urma să fie dezvoltată, am
folosit d ouă programe gratuite pentru a putea începe implementarea: Un mediu
de dezvoltare integrat ɇi un pachet de dezvoltare pentru PHP:
● PhpStorm – mediul de dezvoltare integrat ( IDE) oferit gratuit studenĠilor
de către JetBrains. Scopul acestui IDE este de a organiza fiɇierele. Acest lucru
simplifică dezvoltarea, oferă posibilitatea editării în timp real, adică schimbările
vor fi afiɇate imediat după ce au fost realizate în cod. N u este necesar ca acestea
să fie salvate, ci doar de un refresh asupra paginii în cauză.
47
● XAMPP – Denumirea vine de la un acronim recursiv "XAMPP Apache +
MariaDB + PHP + Perl". Reprezintă un pachet de dezvoltare pentru PHP care
conĠine tehnologii ɇi unelte pe care utilizatorul le poate folosi după ce a instalat
pachetul. AplicaĠia MyBooks foloseɇte pentru partea de server Apach e ɇi pentru
partea de baze de date MySql. Pentru administrarea bazei de date foloseɇte
PhpMyAdmin.
3.4 Structura aplicaĠiei
În acest capitol va fi abordată structura aplicaĠiei din punct de vedere a l
arhitecturii, detaliilor funcĠionale, structura bazei, cazurile de utilizare ɇi
explicarea fiecărui fiɇier din PhpStorm.
3.4.1 Arhitectura
Arhitectura aplicaĠiei este construită conform arhitecturii MVC (model –
view – controller), fiind compusă din mai multe fiɇiere împărĠite în concordanĠ ă
cu funcĠiile pe care le îndeplinesc. Conf orm celor descrise, aplicaĠia MyBooks este
alcătuită după cum urmează:
Controller – conĠine fiɇiere cu extensia php. Fiecare fiɇier îndeplineɇte
rolul de controller pen tru fiecare funcĠionalitate. Fiecare funcĠionalitate, la
rândul ei cuprinde metode pentr u fiecare acĠiune pe care o desfăɇoară un
utilizator.
48
Model – acesta conĠine fiɇierele PHP care deĠin metode prin care se extrag
informaĠii din baza de date pentru fiecare controller. RelaĠia dintre mode l
ɇi controller este de unu la unu.
View – conĠine fiɇierele PHP din view care sunt utilizate pentru afiɇarea
paginilor. AplicaĠia conĠine un singur fiɇier template pentru părĠil e comune
cu restul paginilor, cum ar fi meniul ɇi fiɇiere specifice fiecărei pagini. O
pagină poate conĠine mai multe view- uri. RelaĠia dintre view ɇi controller
este de mai multe la unu.
3.4.2 Detalii funcĠionale
Această aplicaĠie are trei tipuri diferite de utilizatori (adminis trator,
utilizator înregistrat ɇi vizitator ) cu diferite privilegii descrise mai jos.
Vizitatorii sunt utilizatorii cel mai des întâlniĠi dar ɇi cei mai limitaĠi din punct
de vedere al operaĠiilor pe care le pot efectua deoarece aceɇtia nu deĠin un cont ɇ i
limitarea lor provine din faptul că sunt anonimi. Pot fi unul sau mai mulĠi
utilizatori de acest tip . Aceɇtia pot efectua următoarele operaĠii:
Înregistrare
Vizualizarea listei de cărĠi
Vizualizarea detalii lor unei cărĠi printr -un pop- up
49
Vizualizarea citatelor
Vizualizare recomandări lor lunare s au săptămânale
Filtrare cărĠi în funcĠie de gen, titlu, autor, notă
Trimite re mesaj către administrator
Membrii sunt utilizatorii autentificaĠi care ɇi -au făcut deja un cont, acesta
fiind verificat prin e-mail. Pot fi unul sau mai mulĠi membr i. Acest tip de
utilizatori pe lângă privilegiile de vizitator pot efectua ɇi alte operaĠ ii asupra bazei
de date, după cum urmează:
Autentificare
Vizualizarea listei de cărĠi
Vizualizarea detaliilor unei cărĠi printr -un pop- up
Filtrare cărĠi în funcĠie de gen, titlu, autor, notă
Trimitere mesaj către administrator
Vizualizarea citatelor
Vizualizare recomandărilor lunare sau săptămânale
Rezervarea uneia sau mai mulor cărĠi
Anulare a rezervării
Adăugare a comentariilor pentru o carte
Ɇtergere comentariilor proprii
Administratorul este cel care se ocupă cu cele mai importante funcĠii din
aplicaĠie. Poate fi un singur administrator. Acesta administrează efectiv aplicaĠia
ɇi poate efectua următoarele operaĠii:
Autentificare
Vizualizarea listei de cărĠi
Vizualizarea det aliilor unei cărĠi printr -un pop- up
Filtrare cărĠi în funcĠie de gen, titlu, autor, notă
Vizualizare recomandărilor lunare sau săptămânale
50
Editare recomandări lor
Vizualizarea citatelor
Vizualizare utilizatorilor
Vizualizare cărĠi lor rezervate de utilizatori
Anulare rezervare utilizatori
Trimitere mesaje către utilizatori
Rezervarea uneia sau mai mulor cărĠi
Anularea rezervării
Adăugarea comentariilor pentru o carte
Ɇtergere comentariilor pentru orice carte
Adăugare a unei noi c ărĠi
Editare a cărĠilor
Ɇtergere c ărĠilor
Update copertă carte
Adăugare a unei descrieri proprii pentru o carte
Adăugare rati ngului pentru fiecare carte
3.4.3 Structura bazei de date
Baza de date este foarte imporantă în orice proiect ɇi implicit ɇi în MyBooks
deoarece în ea se stochează toate informaĠiile despre utilizatori, desp re cărĠi ɇi
toate operaĠiile pe care utilizatorii le efectuează asupra cărĠilor. Ba za de date
poartă numele de “Biblioteca” ɇi conĠine 4 tabele după cum urmează:
Tabela de cărĠi cu numele de “carte”;
Tabela de rezervări cu numele de “rezervari”;
Tabela de utilizatori cu numele de “useri”;
Tabela de comentarii cu numele de “comentariu”.
51
Structura bazei de date este următoare:
În tabela “carte” se stochează toate informaĠiile cu privire la o carte ɇi
fiecare carte primeɇte un id unic , acesta fiind un prim câmp al bazei de date. Pe
lângă aceasta, tabela mai conĠine ɇi câmpurile:
nume – acest câmp conĠine titlul cărĠii.
autor – numele autorului sau autorilor cărĠii.
gen – conĠine genul cărĠii. Genul poate fi ales dintr -un dropdown.
stoc – reprezintă numărul de cărĠi disponibilie. De obicei acest câmp are
valoarea 1, dar există ɇi excepĠii unde poate fi mai mare. De asemenea,
52
există ɇi cazul în care cartea nu este în stoc, adică aceasta a f ost deja
împrumutată.
imagine – acest câmp conĠine coperta cărĠii. Aceasta poate fi schimbată
oricând prin editare. Acest câmp conĠine, de fapt, un URL către locaĠia de
unde este luată imagine a, fie un folder local, fie o imagine de pe internet.
descriere – conĠine o descriere pe care o acordă administratorul cărĠii în
cauză. Aceasta este subiectivă ɇi compoziĠie proprie, nu o recenzie luată de
pe internet.
notă – Reprezintă ratingul pe care o acordă administratorul cărĠii
respective. Aceasta va fi un număr de la 1 la 10, atunci când
administratorul va adăuga sau edita o carte ɇi va fi afiɇat pe pagină su b
formă de stele după cum urmează:
Nota 1: jumătate de stea,
Nota 2: o stea,
Nota 3: o stea ɇi jumătate,
Nota 4: două stele,
Nota 5: două stele ɇi jumătate,
Nota 6: trei stele,
Nota 7: trei stele ɇi jumătate,
Nota 8: patru stele,
Nota 9: patru stele ɇi jumătate,
Nota 10: cinci stele.
În tabela “useri” se vor păstra informaĠii cu privire la utilizatorii care ɇi -au
făcut cont sau utilizatorii deja existenĠ i, inclusiv administratorul care va avea
privilegii diferite. Acest tabel conĠine următoarele câmpuri:
id – reprezintă codul unic pe care îl are fiecare utilizator.
53
nume – Numele utilizatorului, mai exact numele pe care acesta îl introduce
în câmpul dedicat. Nu este necesar ca acesta să îɇi introducă numele
complet.
email – Adresa de e- mail a utilizatorului. De acestă dată este necesar ɇi
obligatoriu ca aceasta să fie validă deoarece pentru a s e putea înregistra,
utilizatorul va primi un cod prin e- mail pe care va trebui să îl introducă
ulterior într- un câmp pentru ca înregistrarea să fie cu succes.
password – este câmpul care conĠine parolele utilizatorilor. Acestea vor fi
stocate sigur, nefiind vreo probabilitate ca detaliile utilizatorului să fie
compromise.
priv – reprezintă câmpul care descrie privilegiile utilizatorilor. Acesta
poate fie completat în două feluri deoarece utilizatorii care sunt vizita tori
nu apar în baza de date. Aɇadar privilegii vor avea doar administratorul ɇi
utilizatorii înregistraĠi. Câmpul poate fi completat astfel:
2: pentru utilizatorul de tip admin
1: pentru utilizatorul înregistrat
Tabela “rezervari” este cea care stochează detalii despre utilizatori ɇi cărĠ ile
pe care aceɇtia le -au rezervat. Câmpurile autor ɇi nume ale acestui tabel vor
apărea în pagina de rezervări a fiecărui utilizator. ConĠine câmpurile următoare:
id – reprezintă id -ul unic pe care îl are rezervarea.
id_carte – id-ul pe care îl are carte în tabelul de cărĠi.
id_user – id-ul pe care îl are utilizatorul în tabelul de useri.
autor – numele autoru lui preluat din tabela de cărĠi.
nume – titlul cărĠii preluat tot din tabela de cărĠi.
54
Tabela “comentariu” conĠine informaĠii cu privire la comentariile pe care
utilizatorii le- au introdus pentru fiecare carte. Câmpurile acestui tabel sunt după
cum urmează:
id – reprezintă id -ul unic pe care îl are cometariul.
id_carte – id-ul pe care î l are carte în tabelul de cărĠi.
id_user – id-ul pe care îl are utilizatorul în tabelul de useri.
nume – numele utilizatorului din tabela de utilizatori.
descriere – comentariul propriu-zis.
data – data ɇi ora la care a fost lăsat comentariul.
3.4.4 Cazuri de utilizare
Folosind diagramele de tip cazuri de utilizare se doreɇte reprezentarea într –
o formă grafică a funcĠionalităĠilor pe care trebuie să le îndeplineasc ă sistemul în
fază finală. Actorii sunt rolurile pe care le au diferiĠi utilizatori, în cazul de f aĠă:
vizit atorii, utilizatorii înregistraĠi ɇi administratorii. Cazurile de ut ilizare răspund
la întrebarea “ce ar trebui să facă sistemul?”, dar nu ɇi la întrebarea “Cum?”.
Realizarea cazurilor de u tilizare este foarte importantă deoarece orice
persoană poate înĠelege la ce foloseɇte aplicaĠa, fără a fi nevoie de cunoɇtinĠe în
domeniul programării ɇi astfel aceasta îɇi poate da seama dacă aɇt eptările ei sunt
îndeplinite sau nu.
Mai jos sunt prezentate acĠiunile principale care pot fi întreprinse de cele
trei tipuri de utilizatori:
vizitator
membru (utilizator înregistrat)
administrator
55
Vizitator:
Membru:
56
Administrator:
3.4.5 Fiɇiere
În cadrul proiectului, fiɇierele sunt organizate cât mai modular, numele
fiind sugestive pentru funcĠia pe care o îndeplinesc.
În figura 1 putem observa reprezentarea grafică a structurii proiectului a ɇa
cum este văzută în IDE -ul PHPStrom. În continuare urmează explicaĠia fiecărui
fiɇier ɇi a funcĠiilor pe care le îndeplineɇte acesta.
Primele trei elemente care se observă în figura 1 sunt trei foldere care
îndeplinesc urătoarele funcĠii:
css – conĠine toate fiɇierele cu extensia .css sau .tff. Aceste fiɇiere se oc upă
cu stilizarea fiecărei pagini din proiect din punct de vedere al fonturilor,
imaginilor, aɇezare, încadrare ɇi tot ce Ġine de aspectul paginii.
img – este folderul care conĠine toate imaginile din proiect , mai puĠin logo –
ul, de la coperĠile cărĠilor până la favicon.
57
mailer – fiɇierul care este utilizat pentru trimiterea mailurilor.
Figura 1
add.php – generează codul html pentru adăugarea elementelor în baza de
date.
carti.php –apelează funcĠiile pentru filtrare ɇi afiɇează lista de cărĠi.
contact .php – generează formularul de contact prin care utilizatorul poate
contacta administratorul ɇi invers.
date_bd.php – conĠine datele necesare conectării la baza de date.
edit.php – apelează funcĠiile de editare pentru a putea afiɇa pagina html.
form.php – formularul de înregistrare.
58
functii_carte.php – fiɇier care selectează toate datele din baza de date .
index.php – redirecĠionare către pagina principală.
login.php – pagina care se ocupă de autentificarea utilizatorului
logo.png – fiɇier care conĠine logo -ul aplicaĠiei.
logout.php – fiɇier care se ocupă cu încheierea sesiunii
obiect_carte.php – conĠine definirea unui obiect de tip carte
obiect_rezervare.php – conĠine definire a unui obiect de tip rezervare
pageview-counter.php – funcĠie pentru numărarea vizitatorilor paginii
pateview-counter.txt – se salveză numărul vizitatorilor .
rezervare.php – afiɇează rezervările făcute.
rezsucc.php – pagina care se deschide dacă rezervarea a avut success.
tabel_bd_carti.php –generarea tabelurilor de carti, rezervari, s.a.m.d.
Template.php – pagina principală a aplicației
upload.php – permite utilizarea unei imagini alese de utilizator în
aplicație cu ajutorul bazei de date
3.5 Scenarii de utilizare
În acest subcapitol vor fi explicate detaliat fiecare tip de utilizat or cu
operaĠiile pe care acesta le va putea efectua. Un prim lucru de precizat es te faptul
că pagina care conĠine lista de cărĠi este aceeaɇi pentru orice tip de utilizator. Cu
un simplu click pe logo- ul aplicaĠiei care este situate în antetul paginii (figura 1)
se poate accesa lista cu cărĠi care poate fi doar vizualizată.
Figura 1
59
3.5.1 Perspectiva vizitatorului
Acest tip de utilizator este cel mai limitat din punct de vedere al acĠ iunii,
acesta neputând să efectueze operaĠii foarte complexe, ci mai degrabă doar
vizualizarea informaĠiilor din aplicaĠie.
Dacă doreɇte, acesta îɇi poate crea un cont în orice moment ɇi astfel va
avea privilegiile unui utilizator înregistrat. Înregistrearea este una destul de
simplă, fiind nevoie de un nume, o adresă de e -mail validă ɇi completarea a două
câmpuri de parolă pentru a avea siguranĠa că aceasta este corectă. După
completarea acestor câmpuri ɇi trimiterea informaĠiilor, utilizator ul va primi prin
e-mailul pe care l-a introdus un cod de înregistrare de 6 caractere, litere sau
cifre, pe care va trebui să îl introducă în câmpul specific pen tru a- ɇi confirma
codul. Odată introdus acest cod, vizitatorul va deveni utilizator cu privilegi ile
unui membru înscris.
Un alt lucru pe care il poate face un vizitator este vizualizarea atât a listei
de cărĠi (figura 1), cât ɇi a detaliilor cărĠii selectate. Aceasta listă a det aliilor va fi
afiɇată printr -un pop- up care se va deschie odată ce utilizatorul va selecta câmpul
care ap arĠine unei cărĠi . Acest pop- up conĠine pe dreapta coperta cărĠii mărită iar
pe partea stângă sunt numele cărĠii, autorul, gen ul literar, descrierea data de
administrator ɇi ratingul pe care l -a acordat acesta.
Figura 1
60
Pe lângă aceste detalii, vizitatorul va putea vizualiza ɇi comentariil e care au
fost adăugate de alĠi utilizatori, acestea fiind afiɇate în pop -up-ul cu detalii despre
carte. Neavând un cont, acesta nu va putea adăuga un comentariu dar va putea
vizualiza comentariile oricărui uitlizator înscris, oricărei cărĠi ɇi poate tine cont de
acele comentarii a tunci când se decide ce carte să citească.
Pe partea dreaptă a ecranului principal vor fi două câmpuri fixe care pot fi
vizualizate de orice utilizator, ɇi anume: citatul zilei (figura 2) ɇi re comandările
lunare.
Figura 2
Utilizatorul va putea căuta în lista de cărĠi în funcĠie de gen, titlu, autor ɇi
notă. Astfel, acesta îɇi poate filtra informaĠiile doar legate de că rĠile de care este
interest.
Vizitatorul, pe lângă cele descrise mai sus, poate trimite mesaj
administratorului. Acesta va trebui să co mpleteze trei câmpuri: Nume, e-mail,
Text ɇi e -mailul va fi trimis fără a fi cerute informaĠii suplimentar e. Am adăugat
ɇi această opĠiune pentru cazurile în care utilizatorii întâmpină problem e la
crearea unui cont sau alte inconveniente.
61
3.5.2 Perspectiva utilizatorului înscris
Procesul de utilizare a aplicaĠiei pentru acest tip de utilizator începe cu
autentificarea (figura 1). Utilizatorul care are deja un cont va trebui să introducă
e-mailul ɇi parola ɇi v a fi autentificat.
Figura 1
Asemenea vizitatorilor, utilizatorii autentificaĠi pot vizualiza lista de cărĠi.
InformaĠiile care apar sunt titlul cărĠii, autorul, imaginea care re prezintă coperta,
ɇi un nou câmp care specifică dacă acea carte este în stoc sau nu, adi că dacă a fost
împrumutată de către altcineva, sau este disponibilă. Atunci când se selec tează
câmpul alocat unei cărĠi se va deschide un pop -ul ca cel al vizitatorilor, diferenĠa
fiind că utilizatorul autentificat îɇi poate rezerva o carte (figura 2 ) dacă nu se află
deja în posesia sa. Dacă utilizatorul deĠine deja acea carte, acesta nu o va putea
rezerva din nou (figura 3). Adică, dacă acesta a avut cartea dar a returnat -o, o
poate rezerva ɇi ulterior împrumuta din nou dar dacă cartea se află în prezent în
posesia lui, nu o va putea împrumuta pe a doua.
62
Figura 2 Figura 3
O opĠiune în plus faĠă de vizitator este aceea că utilizatorul autentific at
poate lăsa comentarii. Odată deschis pop -up-ul cu detaliile cărĠii, va apărea ɇi
lista de comentarii anterioare introduse de diferiĠi utilizatori ɇi un câmp unde
utilizatorul curent va putea să îĠi introducă propriul comentariu. Consider că
acest lucru este un plus pen tru aplicaĠie, atât pentru administrator, cât ɇi pentru
ceilalĠi utilizatori deoarece aceɇtia vor putea Ġine cont de mai multe rec enzii, nu
doar una, a administratorului ɇi asfel îɇi vor alege cărĠile mai uɇor.
Utilizatorul poate vizualiza o listă cu cărĠi le pe care le-a rezervat accesând
pagina de rezervări din meniu (figura 4) , ulterior având posiblitatea să anuleze
rezervarea făcută (figura 5).
Figura 4
Figura 5
După cum se poate observa ɇi în Figura 4, există ɇi pagina de Contact care
permite utilizatorului să contacteze administratorul, adică îi poate trimi te un e –
mail prin care îi poate transmite cele dorite. O carte care nu există î n stoc dar pe
63
care o caută, probleme întâmpinate legate de aplicaĠie, diferite nemulĠum iri sau
alte cazuri în care este necesară contactarea administratorului.
Aflându- se în lista de cărĠi, utilizatorul poate căuta detalii, fără a mai
parcurge toată lista. Acesta poate selecta categoria după care se va re aliza
căutarea, ulterior căutând după cuvinte cheie ale categoriei respective. Desigur,
căutarea se poate realiza ɇi la nivel general.
Ca ɇi în cazul vizitatorului, pe partea dreaptă a paginii principa le se află
două câmpuri fixe, cel în care apare un citat la fiecare reîncărcare a paginii ɇi
câmpul în care administratorul va introduce în fiecare lună cărĠile pe care acest a
le recomandă, utilizatorul având privilegiul de a vizualiza aceste două câmp uri,
fără a putea efectua vreo operaĠie asupra lor.
Părăsirea sesiunii are loc la un singur click pe butonul de Log Out din
Figura 4.
3.5.3 Perspectiva administratorului
Administratorul este cel care se ocupă de managementul paginii. Acesta
poate efectua cele mai multe operaĠii ɇi poate manageria ceilalĠi utilizatori.
Pentru a i se recunoaɇte drepturile, administratorul trebuie să se autentifice,
folosind adresa de e- mail ɇi parola corespunzătoare.
Un administrator poate vizualiza lista cărĠilor asemena celorlalte două
tipuri de utilizatori ɇi poate vizualiza detaliile împreună cu comenta riile care au
fost adăugate. Acesta poate rezerva de asemenea, o carte. Luăm exemplul în c are
presupunem că el doreɇte să recitească o carte începând de mâine . Pentru a evita
ca această carte să fie împrumutată de altcineva, acesta o va rezerva pentru el. Ɇi
la pachet cu rezervarea, vine anularea rezervării, operaĠie care poate fi e xecutată,
de asemenea.
64
În pop- ul-ul deschis cu detaliile unei cărĠi, pe lângă vizualizare
comentariilor, un administrator poate adăuga comentariile proprii ɇi ce este
foarte important, el poate ɇterge orice comentariu, al oricărui utilizator.
Unul din cele mai importante lucruri pe care le poate realiza un
administrator este adăugarea unei noi cărĠi. Aceasta se realizează completând
anumite câmpuri corespunzătoare cărĠii (ex: titlu, autor, gen literar, coper ta) dar
ɇi câmpuri unde îɇi va aduce propria sa imaginaĠie, ɇi anume recenzia ɇi not a pe
care le acordă cărĠii în cauză. O schemă a paginii de adăugare este următoarea:
Figura 1
65
Un lucru foarte important de menĠionat este faptul că aceste câmpu ri pot fi
oricând editate din bara de meniu, accesând din “Management” (figura 2)
optiunea de editare.
Figura 2
Selectând editarea, se va deschide o nouă pagina care va conĠine toate
cărĠile cu 2 opĠiuni: ɇtergere sau update (figura 3). Ɇtergerea se va reali za
automat, la selectarea acestei operaĠii. Nu este necesară o pagină nouă sau alte
operaĠii suplimentare. Singura fereastră suplimenta ră este un alert care întreabă
administratorul dacă este sigur de decizia sa. Pentru a edita o carte, este necesară
selectarea comenzii update care va declanɇa deschiderea unei noi pagini care va
conĠine toate informaĠiile din prezent legate de cartea în c auza. Poate fi modificat
orice câmp ɇi odată salvată modificarea, aceasta s -a produs instant ɇi în lista de
cărĠi.
Figura 3
66
CărĠile fiind adăugate în baza de date, se crează implicit pagina ca re
conĠine aceste cărĠi listate. Afiɇarea cărĠilor va fi as emenea utilizatorilor anteriori
ɇi administratorul va putea efectua operaĠia de căutare în aceeaɇi mani eră. Va
selecta o categorie după care se va face categoria, urmând folosirea cuvintelor
cheie.
Câmpul de citatul lunii nu va fi modficiat de administrator doarece acesta
se actualizează automat la fiecare reîmprospătare a paginii. Modi ficarea citatului
de către administrator în mod regulat ar fi fost destul de ineficientă ɇi numărul
acestora ar fi fost mult mai mic în comparaĠie cu metoda folosită în pr ezent.
Citatul este luat automat de pe site-ul cuvintecelebre.ro iar codul pentru
aceast ă operaĠie este următorul (figura 4):
Figura 4
Un administrator poate trimite mesaje c ătre un utilizator. Dacă acesta
consideră că a sosit timpul să îi înapoieze cartea sau pur ɇi simplu doreɇte să îi
lase un mesaj, este necesar să trimită un e -mail către adresa cu care utilizatorul
vizat s- a înscris, această adresă de e -mail fiind salvată în baza de date.
O acĠiune foarte imporantă ɇi utilă este recomandarea cărĠ ilor în fiecare
lună. Astfel, utilizatorii înscriɇi nu vor fi nevoiĠi să caute prin sutele de cărĠi
67
adăugate, ci pot Ġine cont de cărĠile recomandate în luna respectivă. Pe lâng ă
vizualizarea cărĠilor recomandate care este disponibilă tuturor utilizator ilor,
administratorul are datoria ca în fiecare lună să reactualizeze câmpul cu
recomandările în cauză. Acest lucru are următoarea structură, numărul c ărĠilor
recomandate nefiind unul standard:
1. Gen 1 – Cartea 1
2. Gen 2 – cartea 2
3. Gen 3 – cartea 3
Administratorul poate vedea toĠi utilizatorii care ɇi -au făcut cont ɇi pentru
fiecare utilizator cărĠile rezervate. După un eventual mesaj trimis, utilizat orul
poate anula rezervarea unui utilizator.
Pentru ca sesiunea să se oprească, este necesară doar ieɇirea, accesând
butonul de log out, situat în partea dreaptă (figura 5):
Figura 5
68
Concluz ie
Un lucru este sigur, ɇi anume că domeniul tehnologi ei nu va înceta să se
dezvolte , dimpotrivă, evoluĠia acest uia va fi din ce în ce mai rapidă ɇi inovatoare,
anual inventându- se ceva nou ɇi atrăgător pentru public. Ce este foarte important
ɇi acest lucru îl poate decide doar deĠinătorul dispozitivelor este în ce mod le va
folosi acesta, dacă vor fi simple consumato are de timp sau le va folosi pentru
facili tarea ɇi dezvoltarea vieĠii personale .
AplicaĠia MyBooks este una destinată celui de -al doilea motiv , scopul ei
fiind stocarea detaliilor legate de cărĠile citite de un utilizator ɇi a procesului de
recomandare de cărĠi. Consider că aplicaĠia poate încuraja mulĠi utili zatori să
citească sau să înceapă anumite demersuri în acest sens.
Tehnologiile utilizate pentru dezvoltarea apl icaĠiei precum PHP, MySql,
JavaScript, ɇ.a.m.d. ɇi organizarea fiɇierelor cu ajutorul IDE -ului PhpStorm au
făcut procesul de dezvoltare al aplicaĠiei mult mai plăcut ɇi uɇor de înĠeles.
Îmi doresc ca această aplicaĠie să fie o sursă de motivaĠie, pentru început
pentru un număr redus de persoane, urmând ca odată cu dezvoltarea ei la o gamă
mai largă, persoanele care beneficiază de ea să se înmulĠească pe zi ce trece.
69
Bibliografie
(1) http://webblog.bestwebimage.ro/2014/06/ce-inseamna-front- end- si-ce-inseamna-
back-end/
(2) https://en.wikipedia.org/wiki/HTML
(3) http://wp2x.com/html5/
(4) https://en.wikipedia.org/wiki/Cascading_Style_Sheets
(5) https://www.w3schools.com/css/css_syntax.asp
(6) http://www.webstyleexpert.ro/blog/ce-este- un-framework/
(7) https://en.wikipedia.org/wiki/Bootstrap_(front-end_frame work)
(8) https://en.wikipedia.org/wiki/JavaScript
(9) http://www.ghid-html.info/111-notiuni-generale-java- si-javascript.html
(10) http://www.codeconquest.com/website/client-side- vs-server-side/
(11) https://coderseye.com/what- is-coding/common-programming-languages/
(12) https://en.wikipedia.org/wiki/JQuery
(13) https://dicit.ro/jquery-avantaje- si-un-mic-ghid
(14) https://en.wikipedia.org/wiki/PHP
(15) https://sinnersprojects.ro/php-7-magento- si-wordpress-merita-noul-php/
(16) http://web.ceiti.md/lesson.php?id=7
(17) https://en.wikipedia.org/wiki/Model%E2%80%93view%E 2%80%93controller
(18) http://www.worldit.info/articole/introducere- in-design-patterns-mvc-partea- i/
(19) https://commons.wikimedia.org/wiki/File:MVC_Diagram_(Mode l-View-
Controller).svg
70
(20) https://www.sitepoint.com/the-mvc-pattern-and-php- 1/
(21) http://php-html.net/tutorials/model-view-controller- in-php/
(22) https://mandrill.zendesk.com/hc/en-us/articles/2055 82147-How- to-Send-with-
PHPMailer
(23) https://en.wikipedia.org/wiki/PHPMailer
(24) https://github.com/PHPMailer/PHPMailer
(25) https://en.wikipedia.org/wiki/Hypertext_Transfer_Pr otocol
(26) https://www.apachefriends.org/ro/about.html
(27) https://en.wikipedia.org/wiki/Apache_HTTP_Server
(28) https://ro.wikipedia.org/wiki/SQL
(29) https://en.wikipedia.org/wiki/MySQL
(30) https://dev.mysql.com/doc/refman/5.7/en/what- is-mysql.html
(31) https://dev.mysql.com/doc/refman/5.7/en/optimization.html
(32) https://db-engines.com/en/ranking
(33) http://www.info-hobby.ro/access/relatii.html
(34) http://www.databasejournal.com/features/mysql/articl e.php/1402281/Build-
Your-Own-Database-Driven-Website-Using-PHP –MySQL- Pt-4.htm
(35) http://193.226.51.37/web/curs/curs5.pdf
(36) http://students.info.uaic.ro/~madalina.vatamanelu/wordpres s/?p=42
(37) http://www.webdesign-galati.ro/blog/de- ce-php-mysql-realizare-website
(38) https://www.slideshare.net/icapetillos/model-view- controller-mvc-31065496
(39) https://ro.wikipedia.org/wiki/Analiza_SWOT
71
(40) https://en.wikipedia.org/wiki/Goodreads
(41) https://www.goodreads.com/
(42) http://www.androidauthority.com/best-android-apps-for- book-lovers-66611/
(43) https://www.buzzfeed.com/ariannarebolini/amazing-ap ps-that-will-improve-any-
book-lovers-life?utm_term=.flg88g9YVx#.kgVzzvrdwA
(44) https://appadvice.com/applists/show/apps-for-book-lovers
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: AplicaĠie web pentru studenĠi [621947] (ID: 621947)
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.
