Sunteți pe pagina 1din 64

UNIVERSITATEA DIN CRAIOVA

FACULTATEA DE AUTOMATIC, CALCULATOARE I


ELECTRONIC
DEPARTAMENTUL DE CALCULATOARE I TEHNOLOGIA
INFORMAIEI

PROIECT DE DIPLOM
Coeran A. Andreea-Mdlina

COORDONATOR TIINIFIC
Asist.Ph.D.Eng Stoica Spahiu Cosmin

Iulie 2014
CRAIOVA

UNIVERSITATEA DIN CRAIOVA


FACULTATEA DE AUTOMATIC, CALCULATOARE I
ELECTRONIC
DEPARTAMENTUL DE CALCULATOARE I TEHNOLOGIA
INFORMAIEI

Magazin online de componente electronice


Coeran A. Andreea-Mdlina

COORDONATOR TIINIFIC
Assist.Ph.D.Eng Stoica Spahiu Cosmin

Iuie 2014
CRAIOVA

ii

DECLARAIE DE ORIGINALITATE

Subsemnata COERAN ANDREEA-MDLINA , student la specializarea Calculatoare Roman


din cadrul Facultii de Automatic, Calculatoare i Electronic a Universit ii din Craiova, certific
prin prezenta c am luat la cunotin de cele prezentate mai jos i c mi asum, n acest context,
originalitatea proiectului meu de licen:

cu titlul Magazin online de componente electronice


coordonat de Assist.Ph.D.Eng Stoica Spahiu Cosmin
prezentat n sesiunea Iulie 2014.

La elaborarea proiectului de licen, se consider plagiat una dintre urmtoarele aciuni:

reproducerea exact a cuvintelor unui alt autor, dintr-o alt lucrare, n limba romn sau prin

traducere dintr-o alt limb, dac se omit ghilimele i referina precis,


redarea cu alte cuvinte, reformularea prin cuvinte proprii sau rezumarea ideilor din alte

lucrri, dac nu se indic sursa bibliografic,


prezentarea unor date experimentale obinute sau a unor aplicaii realizate de ali autori fr

menionarea corect a acestor surse,


nsuirea total sau parial a unei lucrri n care regulile de mai sus sunt respectate, dar care
are alt autor.

Pentru evitarea acestor situaii neplcute se recomand:

plasarea ntre ghilimele a citatelor directe i indicarea referinei ntr-o list corespunztoare la

sfritul lucrrii,
indicarea n text a reformulrii unei idei, opinii sau teorii i corespunztor n lista de referine

a sursei originale de la care s-a fcut preluarea,


precizarea sursei de la care s-au preluat date experimentale, descrieri tehnice, figuri, imagini,

statistici, tabele et caetera,


precizarea referinelor poate fi omis dac se folosesc informaii sau teorii arhicunoscute, a
cror paternitate este unanim cunoscut i acceptat.

Data,

Semntura candidatului,

4.06.2014

iii

UNIVERSITATEA DIN CRAIOVA

Aprobat la data de

Facultatea de Automatic, Calculatoare i Electronic

ef de departament,

Departamentul de Calculatoare i Tehnologia Informaiei

Prof. dr. ing.


Marius BREZOVAN/
Emil PETRE

PROIECTUL DE DIPLOM

Numele i prenumele studentului/-ei:

Enunul temei:

Coeran Andreea-Mdlina

Magazin online de componente electronice

Aplicaia este realizat n ntregime n pagini PHP.


Datele de pornire:

Codul este realizat n programul Adobe Dreamweaver cs4.


Aplicaia ruleaz pe server.

Proiectul este realizat din dou parti: una teoretic care se


Coninutul proiectului:

refera la noiuni generale despre web design i una practic


care se refer la aplicaia n sine.

Material grafic obligatoriu:

Consultaii:
Conductorul tiinific
(titlul, nume i prenume, semntura):

Periodice

Assist.Ph.D.Eng. Stoica Spahiu Cosmin


01.12.2013

Data eliberrii temei:


iv

Termenul estimat de predare a


proiectului:

13.06.2014

Data predrii proiectului de ctre


student i semntura acestuia:

UNIVERSITATEA DIN CRAIOVA


Facultatea de Automatic, Calculatoare i Electronic
Departamentul de Calculatoare i Tehnologia

REFERATUL CONDUCTORULUI TIINIFIC

Numele i prenumele candidatului/-ei:


Specializarea:
Titlul proiectului:

COERAN A. ANDREEA-MDLINA
Calculatoare
Magazin online de componente electronice

Locaia n care s-a realizat practica de

n facultate

documentare (se bifeaz una sau mai


multe din opiunile din dreapta):

n producie
n cercetare
Alt locaie: [se detaliaz]

n urma analizei lucrrii candidatului au fost constatate urmtoarele:

Nivelul documentrii

Tipul proiectului

Aparatul matematic utilizat

Utilitate

Redactarea lucrrii

Partea grafic, desene


Realizarea
practic

Insuficient

Satisfctor

Bine

Foarte bine

Cercetare

Proiectare

Realizare

Altul

[se detaliaz]

Simplu

Mediu

practic
Complex

Contract de

Cercetare

Utilare

Altul

cercetare
Insuficient

intern
Satisfctor

[se detaliaz]

Bine

Foarte bine

Insuficient

Satisfctoar

Bun

Foarte bun

e
Satisfctoar

Mare

Foarte mare

Insuficient
Contribuia autorului

Absent

Mare

Complex

Complexitatea

Simpl

e
Medie

temei
Analiza cerinelor

Insuficient
vi

Satisfctor

Bine

Foarte bine

Simpl

Medie

Mare

Complex

Insuficient

Satisfctoar

Bun

Foarte bun

Arhitectura
ntocmirea
specificaiilor

funcionale

Insuficient

Satisfctoar

Bun

Foarte bun

e
Satisfctoar

Bun

Foarte bun

Implementarea

Insuficient
Testarea
Funcionarea

Da

e
Parial

Experiment propriu

Preluare din bibliografie

Rezultate experimentale
Cri

Bibliografie

Nu

Reviste

Articole

Referine web

Comentarii
i
observaii

n concluzie, se propune:

ADMITEREA PROIECTULUI

RESPINGEREA PROIECTULUI

Data,

Semntura conductorului tiin ific,

vii

viii

REZUMATUL PROIECTULUI
n acest proiect este vorba despre gestionarea i ntreinerea unui magazin online de componente
electronice. Aplicaia ruleaz pe server LocalHost cu ajutorul programului WampServer. Baza de date
este realizat cu phpMyAdmin din cadrul aceluiai program. Paginile site-ului sunt realizate n
limbajul web php cu ajutorul programului Adobe Dreamweaver cs4.
Magazinul Online este destinat tuturor persoanelor, fiind gestionat de ctre un admin care are
sarcina de a menine funcionarea acestuia n sigurana i de a simplifica utilizarea lui. Acesta are rolul
de a aduga,modifica, terge categoriile sau produsele care sunt disponibile utilizatorului. Clientul are
posibilitatea doar de a vizualiza ofertele disponibile i de a le cumpara dac acesta dorete.

ix

CUPRINS
1

INTRODUCERE.........................................................................................1

PROGRAMAREA WEB................................................................................2
2.1

PROGRAMAREA

DE TIP

CLIENT SIDE..............................................................................2

2.1.1 HTML(HyperTextMarkupLanguage)...................................................................2
2.1.2 CSS (Cascading Style Sheet)............................................................................4
2.1.3 JavaScript......................................................................................................... 4
2.2

PROGRAMAREA

DE TIP SERVER SIDE..............................................................................7

2.2.1 PHP................................................................................................................... 9
2.2.2 Baze de date.................................................................................................. 11
2.2.3 Limbajul SQL..................................................................................................13
2.3

COMERTUL

ELECTRONIC............................................................................................ 14

2.3.1 Tranzactii online.............................................................................................16


2.3.2 Sistemul de confirmare prin email..................................................................17
3

APLICATIA SOFTWARE............................................................................18
3.1

PREZENTARE

3.2

INTEFATA

GENERALA........................................................................................... 18

SITE-ULUI.................................................................................................. 19

3.2.1 Zona de administrare.....................................................................................21


3.2.2 Magazinul online............................................................................................. 28
3.3

SOFTURI

FOLOSITE.................................................................................................. 43

3.3.1 Dreamweaver.................................................................................................43
3.3.2 Wamp Server.................................................................................................. 47
3.4

MODELUL

RELAIONAL AL BAZEI DE DATE.....................................................................49

CONCLUZII............................................................................................. 50

BIBLIOGRAFIE........................................................................................51

REFERINE WEB.....................................................................................52

CD / DVD..................................................................................................... 53

LISTA FIGURILOR
FIGURA 1. EXEMPLU.................................................................................................................................................6
FIGURA 2. CREEAREA OBIECTELOR...........................................................................................................................7
FIGURA 3. MODELUL CLIENT-SERVER.......................................................................................................................8
FIGURA 4. SITE ROOT..............................................................................................................................................20
FIGURA 5. ADMIN.PHP.............................................................................................................................................21
FIGURA 6. INDEX.PHP..............................................................................................................................................22
FIGURA 7. .LISTA CATEGORII...................................................................................................................................22
FIGURA 8. ADAUGA CATEGORIE NOUA....................................................................................................................24
FIGURA 9. LISTA DE PRODUSE.................................................................................................................................25
FIGURA 10. ADAUGARE PRODUSE...........................................................................................................................26
FIGURA 11. INCARCA IMAGINEA.............................................................................................................................27
FIGURA 12. INDEX.PHP............................................................................................................................................28
FIGURA 13.INREGISTRARE CLEINTI.........................................................................................................................30
FIGURA 14. INREGISTRARE CU SUCCES...................................................................................................................31
FIGURA 15. ACCES UTILIZATOR...............................................................................................................................32
FIGURA 16. PRODUSE.............................................................................................................................................34
FIGURA 17. INTEGRATE...........................................................................................................................................35
FIGURA 18. PRODUSE..............................................................................................................................................36
FIGURA 19. LISTA COS............................................................................................................................................38
FIGURA 20. COS CUMPARATURI...............................................................................................................................41
FIGURA 21. METODA PLATA....................................................................................................................................41
FIGURA 22. FINALIZARE PLATA...............................................................................................................................42
FIGURA 23. INTERFATA DW.....................................................................................................................................44
FIGURA 24 CREARE SITE.........................................................................................................................................44
FIGURA 25. SERVER BEHAVIORS.............................................................................................................................45
FIGURA 26. BINDINGS.............................................................................................................................................45
FIGURA 27. WAMP SERVER......................................................................................................................................48
FIGURA 28. PHP MYADMIN......................................................................................................................................48
FIGURA 29. MODELUL RELATIONAL........................................................................................................................49

xi

xii

1 INTRODUCERE
Dezvoltarea rapid a Internetului s-a datorat faptului c accesul la documentaia protocoalelor
obligatorii a fost i este liber i gratuit. n 1969 S. Crocker a iniiat o serie de note de cercetare
denumite RFC (Request for Comments), numerotate cronologic i devenite cu timpul accesibile
gratuit on-line (n Internet). Marea schimbare a nceput n 1989, cnd Tim Berners Lee de la Centrul
European pentru Fizica Nuclear din Geneva (CERN) a pus bazele dezvoltrii primului prototip al
World Wide Web (WWW sau web).
Aplicaiile Internetului sunt numeroase: n primul rnd afiarea de informaii mai mult sau
mai puin statice cu form de text, imagini i sunete (aa-numitele pagini web), apoi pota electronic
e-mail, transferul de fiiere de date i informaii, chat, video i video on demand, telefonie i telefonie
cu imagine prin Internet, televiziune prin Internet, e-commerce, sondri de opinie, mediu pentru
rspndirea tirilor, mediu pentru toate genurile de grafic i muzic, deschiderea unei sesiuni de lucru
de la distan, grupuri de discuii pe teme prestabilite, jocuri interactive prin reea, operaii bancare
(Internet banking), transmitere de fiiere i multe, multe altele. Pentru folosirea tuturor acestor
aplicaii din web este nevoie n general doar de un singur program multi-funcional numit browser.
Exemple de browsere: Chrome, Internet Explorer, Mozilla Firefox (provenit din Netscape Navigator),
Opera, Apple Safari etc.
Cu timpul, optimizarea unei pagini web(SEO) a unui site a devenit un serviciu oferit de
unele companii i/sau corporaii, odat cu apariia primelor site-uri pe internet, i care reprezint
totalitatea tehnicilor prin care un site web este adus la o form n care este propulsat mai sus n lista de
rezultate date de un motor de cutare pentru diverse cuvinte-cheie. La nceputurile internetului,
motoarele de cutare afiau n urma unei cutari, pagini n a cror descriere se afla cuvntul de
cutare. Deoarece webmasterii (proprietarii de site-uri) au fcut abuz de acest factor, motoarele de
cutare au alctuit algoritmi mult mai compleci, care includ :

Textul din titlu

Numele de domeniu

Elementele HTML

Frecvena unui cuvnt cheie, att n pagin ct i global

Atributele pentru imagini ALT

Titlul link-urilor

Numrul total de hyperlink-uri de la i spre o pagin

2 PROGRAMAREA WEB
Programarea web poate fi impartita in mai multe tipuri, iar o dezvoltare simplista ar putea
contine:
- Client side coding
- Server side coding
Un limbaj de tip server side este asemanator cu Java script si permite integrarea de mici
scripturi in codul HTML al unei pagini web. Cand sunt executate, aceste scripturi ne dau un control
mai mare asupra a ceea ce apare in fereastra browserului decat o pagina simpla scrisa numai in
HTML.
Limbajele de tip client sunt citite si executate de browser dupa descarcarea paginii web de pe
server. PHP, in mod contrar, ca si limbajele de tip server, sunt rulate pe server inainte de a trimite
pagina web catre browser.

2.1 Programarea de tip Client Side


Se refera in general la programe care sunt executate de browserul web al userului. Ele sunt de
obicei integrate intr-un document HTML, dar pot, de asemenea, sa fie parti ale unor fisiere
separate(CSS, JavaScript).

2.1.1 HTML(HyperTextMarkupLanguage)
Un fiier care conine hipertext este scris ntr-un limbaj specific numit HiperText Markup Language
(HTML). HTML este un limbaj care permite inserarea de text, sunete, imagini, legaturi catre alte
pagini Web, etc.
Pagina principala a unui domeniu este fisierul index.html respectiv index.htm. Aceast pagin
este setat a fi afiat automat la vizitarea unui domeniu. De exemplu la vizitarea domeniului
www.nume.ro este afiat pagina www.nume.ro/index.html.
Componenta unui document HTML este:
1. versiunea HTML a documentului
2. zona head cu etichetele <head> </head>
3. zona body cu etichetele <body> </body> sau <frameset> </frameset>
Versiunea HTML poate fi:
HTML 4.01 Strict
2

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"


"http://www.w3.org/TR/html4/strict.dtd">
HTML 4.01 Transitional
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
HTML 4.01 Frameset
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
"http://www.w3.org/TR/html4/frameset.dtd">
HTML 5
<!DOCTYPE HTML>
Toate paginile HTML ncep i se termin cu etichetele <html> i </html>. n interiorul acestor
etichete gsim perechile <head>, </head> i <body>, </body>.
Head conine titlul paginii ntre etichetele <title> i </title>, descrieri de tip <meta>, stiluri pentru
formatarea textului, scripturi i linkuri ctre fisiere externe (de exemplu scripturi, fi iere de tip CSS
sau favicon).
Etichetele de tip meta conin cuvinte cheie, descrierea paginii, date despre autor, informa ii
utile motoarelor de cutare i au urmtorul format: <META NAME="nume" CONTENT="continut">
Exemplu: link ctre un fisier extern CSS: <link rel="stylesheet" type="text/css" href="css.css">
Body gzduiete practic toate etichetele afi ate de browser pe ecran. Exemplu:
<HTML>
<HEAD>
<TITLE> Exemplu HTML </TITLE>
</HEAD>
<BODY>
<p>
Hello World!

</BODY>
</HTML>
Editarea unui fisier HTML se poate face utilizand un editor de texte obisnuit (Notepad, Word,
etc) sau un editor de texte dedicat (Dreamweaver).

2.1.2 CSS (Cascading Style Sheet)


CSS este un standard pentru formatarea elementelor unui document HTML. Stilurile se pot
ataa elementelor HTML prin intermediul unor fi iere externe sau n cadrul documentului, prin
elementul <style> i/sau atributul style .
Legturile dintre HTML i CSS se realizeaz cu ajutorul elementului STYLE. Stilurile pot fi
definite ca:
-

stiluri in-line care se definesc ca atribute STYLE. Aproape toate elementele HTML(cu
excepia elementelor BASE, HEAD, BASE FONT, HTML, META, PARAM, SCRIPT,
STYLE, TITLE) permit acest atribut. Valorile atributului STYLE constau dintr-o list de
specificaii, sub forma nume-proprietate: valoare, pus ntre ghilimele i separate prin

punct i virgul;
foi de stil n interiorul unui document, plasate n partea de antet a documentului, n

interiorul blocului <STYLE>...</STYLE> ;


foi de stil,definite ntr-un fiier extern, care se poate lega la orice pagin WEB

2.1.3 JavaScript
JavaScript este un limbaj de programare folosit mai ales pentru introducerea unor
funcionaliti n paginile web. Codul Javascript din aceste pagini este rulat de ctre browser.
Limbajul este binecunoscut pentru folosirea sa n construirea siteurilor web, dar este folosit i pentru
acesul la obiecte ncastrate (embedded objects) n alte aplicaii. n ciuda numelui i a unor similariti
n sintax, ntre JavaScript i limbajul Java nu exist nicio legtur.
Cea mai des ntlnit utilizare a JavaScript este n scriptarea paginilor web. Programatorii web
pot ngloba n paginile HTML script-uri pentru diverse activiti cum ar fi verificarea datelor
introduse de utilizatori sau crearea de meniuri i alte efecte animate.
O tehnic de construire a paginilor web tot mai ntlnit n ultimul timp este AJAX, abreviere
de la Asynchronous JavaScript and XML. Aceast tehnic const n executarea de cereri HTTP n
4

fundal, fr a rencrca toat pagina web, i actualizarea numai anumitor poriuni ale paginii prin
manipularea DOM-ului paginii. Tehnica AJAX permite construirea unor interfee web cu timp de
rspuns mic, ntruct operaia (costisitoare ca timp) de ncrcare a unei pagini HTML complet este n
mare parte eliminat.
Scripturile JavaScript pot fi incluse n pagina Web n dou moduri:
-

prin intermediul etichetei <SCRIPT> </SCRIPT>;


prin intermediul unei proceduri eveniment.

Exemplul 1:
<HTML>
<HEAD>
<TITLE>javascript1</TITLE>
</HEAD>
<BODY>
<H1>Primul exemplu JavaScript</H1><HR>
<SCRIPT language="JavaScript">
document.write("Buna ziua!")
</SCRIPT>
</BODY>
</HTML>

Pagina rezultata dupa rularea scriptului de mai sus:

Figura 1. Exemplu
Exemplu 2:
<HTML>

<HEAD>
<TITLE>javascript2</TITLE>
<SCRIPT language="JavaScript">
function PrintCard()
{
document.write("<B>Numele:</B> ", this.nume, "<BR>");
document.write("<B>Adresa:</B> ", this.adresa, "<BR>");
document.write("<B>Telefonul:</B> ", this.telefon, "<HR>");
}
function Card(num, adr, tel)
{
this.nume=num;
this.adresa=adr;
this.telefon=tel;
this.PrintCard=PrintCard;
}
</SCRIPT>
</HEAD>
<BODY>
<H1 align="center">Crearea obiectelor</H1>
Inceputul scriptului<HR>
<SCRIPT language="JavaScript">
// Crearea a trei obiecte noi
ana=new Card ("Ana Munteanu", "Str. Apusului, nr.2, Bucuresti",
"6162345")
ion=new Card("Ion Popescu", "Str. Zorilor nr.1, Ploiesti",
"456789");
radu=new Card("Radu Ionescu", "Str. Noptii, nr.3, Pitesti",
"201202");
// Afisarea lor
ana.PrintCard();
ion.PrintCard();
radu.PrintCard();
</SCRIPT>
Sfarsitul scriptului
</BODY>
</HTML>

Pagina rezultata dupa rularea scriptului de la Exemplu 2:


6

Figura 2. Crearea obiectelor


Scripturile integrate n cadrul paginilor sunt evaluate dup ce ncrcarea paginii s-a ncheiat
dar nainte ca aceasta s fie afiat. Pe de alt parte, scripturile stocate ca fiiere separate sunt evaluate
naintea tuturor scripturilor in-line (adic a celor incluse n pagin). Funciile definite n cadrul
scripturilor nu sunt executate automat la ncrcarea paginilor ci abia atunci cnd acestea sunt apelate,
fie prin eticheta <SCRIPT> fie printr-o procedur eveniment .

2.2 Programarea de tip server side


n tehnologia informaiei, un server este un program de aplicaie care furnizeaz servicii altor
aplicaii (numite aplicaii client), aflate pe acelai calculator sau pe calculatoare diferite. De obicei,
aplicaia server ateapt conexiuni din partea aplicaiilor client. Se mai numete server i calculatorul
pe care ruleaz una sau mai multe asemenea aplicaii. Deseori soluia pentru mari aplicaii cu muli
utilizatori se bazeaz tocmai pe arhitectura client-server, care const din cel puin 2 aplicaii (i
deseori cel puin 2 computere).
Serverele ocup un loc important n tehnologia informaticii, la fel ca i minicomputerele n trecut,
care ns au fost nlocuite. Un server este o aplicaie pe computer, uneori chiar un computer ntreg,
care opereaz continuu n reeaua sa i ateapt solicitri din partea altor calculatoare din reea.
Serverele pot fi folosite simultan i pentru alte scopuri, dar cnd nevoile o cer, ele pot fi rezervate
exclusiv pentru funcia de server. De exemplu, un calculator se poate folosi ntr-un birou simultan
pentru dou scopuri, ca staie de lucru i ca server pentru celelalte calculatoare din birou.

Deseori unul i acelai computer poate juca ambele roluri, i de server, i de client, n acelai
timp. Numele de server este un alt termen pentru Host computer computer gazd, spre deosebire de
alte elemente "inteligente" din reea cum ar fi routerele i switch-urile.
n zilele noastre serverele se aseamn fizic cu celelalte calculatoare uzuale, dei configuraia
hardware este deseori optimizat pentru funcionarea lor ca servere. Multe componente de hardware
sunt identice cu cele ce le gsim ntr-un calculator personal. Totui serverele ruleaz sisteme de
operare i programe specializate care sunt foarte diferite fa de cele folosite pe calculatoare personale
i staiile de lucru.

Figura 3. Modelul Client- Server


Serverele au aprut n paralel cu reelele de calculatoare. Reelele permit calculatoarelor s
comunice unul cu celalalt, iar cu ct reeaua este mai mare apare nevoia ca un calculator s ia rolul de
server care s deserveasc alte calculatoare (acestea interacionnd eventual direct cu utilizatorii
umani), care i asum la rndul lor rolul de client.
i dup apariia serverelor reelele s-au dezvoltat i au crescut mai departe; n schimb
minicomputerele care erau mai eficiente dect cele personale dar mai puin eficiente
dect mainframe-urile au disprut sau au fost "absorbite" de unele din aceste servere (au preluat
rolul de server).
Apariia reelelor cu calculatoare personale, a Internetului i rspndirea utilizatorilor acestor
servicii au dat un impuls puternic dezvoltrii serverelor.
Diferena major ntre computerele personale i servere nu este partea hardware ci partea
de software. Pe servere ruleaz sisteme de operare care sunt special proiectate pentru acestea. De
asemenea ele ruleaz aplicaii special proiectate pentru procesele dorite.

Modelul client-server este o structur aplicaie distribuit care partajeaz procesarea ntre
furnizorii de servicii numii servere i elementele care solicit servicii, numite clieni. Adesea, clienii
i serverele comunic prin reea, avnd suporturi hardware diferite, dar se pot afla i pe acelai sistem.
Un server ruleaz unul sau mai multe programe server, care partajeaz resursele cu clienii. Clientul
nu partajeaz niciuna dintre resursele proprii, dar apeleaz la resursele serverului prin funciile-server.
Clienii iniiaz comunicaia cu serverele i ateapt mesajele acestora.

2.2.1 PHP
PHP este un limbaj de programare. Numele PHP provine din limba englez i este un acronim
recursiv : Php: Hypertext Preprocessor. Folosit iniial pentru a produce pagini web dinamice, este
folosit pe scar larg n dezvoltarea paginilor i aplicaiilor web. Se folosete n principal nglobat n
codul HTML, dar ncepnd de la versiunea 4.3.0 se poate folosi i n mod linie de comand,
permind crearea de aplicaii independente. Este unul din cele mai importante limbaje de programare
web open-source i server-side, existnd versiuni disponibile pentru majoritatea web serverelor i
pentru toate sistemele de operare. Conform statisticilor este instalat pe 20 de milioane de situri web i
pe 1 milion de servere web.. Este disponibil sub Licent a PHP s i Free Software Foundation l
consider a fi un software liber.
Iniial, limbajul a fost dezvoltat de inventatorul su, Rasmus Lerdorf. Odat cu creterea
numrului de utilizatori, dezvoltarea a fost preluat de o nou entitate, numit The PHP
Group (Grupul PHP).
PHP-ul este unul din cele mai folosite limbaje de programare server-side, aprnd pe 9 din cele
37 milioane de domenii cercetate n studiu. De asemenea, exist un grafic al creterii folosirii PHPului pe site-ul oficial. Popularitatea de care se bucur acest limbaj de programare se datoreaz
urmtoarelor caracteristici :
-

Familiaritatea : sintaxa limbajului este foarte uoar combinnd sintaxele unora din cele

mai populare limbaje Perl sau C;


Simplitatea : sintaxa limbajului este destul de liber. Nu este nevoie de includere de
biblioteci sau de directive de compilare, codul PHP inclus ntr-un document executndu-

se ntre marcajele speciale;


Eficiena : PHP-ul se folosete de mecanisme de alocare a resurselor, foarte necesare unui

mediu multiutilizator, aa cum este web-ul;


Securitate : PHP-ul pune la dispoziia programatorului un set flexibil i eficient de msuri

de siguran;
Flexibilitate : fiind aprut din necesitatea dezvoltrii web-ului, PHP a fost modularizat
pentru a ine pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server
web, PHP-ul a fost integrat pentru numeroasele servere web existente;
9

Gratuitate : este probabil cea mai important caracteristic a PHP-ului. Dezvoltarea PHPului sub licena open-source a determinat adaptarea rapid a PHP-ului la nevoile webului, eficientizarea i securizarea codului .

PHP este un limbaj de programare destinat n primul rnd Internetului, aducnd dinamic unei
pagini web. Este unul dintre cele mai importante limbaje de programare web open-source (este
gratuit i, n plus, utilizatorii pot aciona liber asupra procesului de dezvoltare) i server-side (codul
surs nu se ruleaz pe calculatorul celui care vizualizeaz pagina, ci pe serverul web). n prezent este
utilizat versiunea 6 a acestui limbaj.
Prin CGI (Common Gateway Interface) se nelege o interfa a unui server de web, care
extinde funcionalitile acestuia. CGI nu se refer la un anumit limbaj de programare, ci definete un
modul standardizat, prezent n cadrul unui server HTTP. Prin intermediul acestui modul se stabilesc
regulile prin care server-ul va pasa datele primite de la un utilizator ctre o aplicaie scris ntr-un
anumit limbaj de programare, pentru ca apoi s ntoarc rezultatele acestei aplicaii napoi la
utilizator.
Limbajul PHP, n marea majoritate a cazurilor, se folosete sub form de secvene de cod
inserate n cadrul unui document HTML. Din acest motiv, vom prefera termenul de script PHP
celui de program PHP. Structura unui script PHP este foarte asemntoare cu cea a unui cod scris n
limbajul C, mai ales n sensul n care structurile de programare au aceeai sintax i aceeai
funcionalitate. Rolurile de baz ale unui script PHP constau n aceea c scipt-ul poate prelua date
trimise de ctre o pagin web de la un client (n general, datele pot fi trimise de ctre o pagin web
prin intermediul formularelor) i de a executa o secven de program n urma creia va rezulta un cod
HTML, cod pe care clientul l va primi sub forma unei pagini web. Clientul nu va avea acces la codul
efectiv al script-ului, ci, prin faptul c acesta se afl pe server i se ruleaz tot pe acesta, va primi
direct HTML-ul generat de script.

Exemplu de pagina HTML cu un script PHP :


<HTML>
<HEAD>
<TITLE> HTML cu Script PHP </TITLE>
</HEAD>
<BODY>
10

<? php
echo Acest text este afisat de scriptul PHP;
? >
</BODY>
</HTML>
Instruciunea echo cuprins ntre acestea este o instruciune specific limbajului PHP, ea avnd rolul
de a scrie n pagina web textul ce urmeaz dup cel cuprins ntre ghilimele.
PHP nu este un limbaj de programare de sine-stttor (cum ar fi C++, spre exemplu) ci se folosete n
simbioz n primul rnd cu HTML, i deci pentru a rula, are nevoie neaprat de un server de web
(http server). Practic, pentru a face ca pe calculatorul nostru s poat rula fiiere php, avem nevoie s
instalm, pe lng limbajul PHP, i un server de web, i de a face legtura dintre cele dou.

2.2.2 Baze de date


Majoritatea site-urilor care au continut folosesc un sistem de baze de date.
n sensul larg, o baz de date (database) este o colecie de date corelate din punct de vedere
logic, care reflect un anumit aspect al lumii reale i este destinat unui anumit grup de utilizatori. n
acest sens, bazele de date pot fi create i meninute manual (un exemplu ar fi fiele de eviden a
crilor dintr-o bibliotec, aa cum erau folosite cu ani n urm) sau computerizat, aa cum sunt
majoritatea bazelor de date n momentul de fa. O definiie ntr-un sens mai restrns a unei baze de
date este urmtoarea:
O baz de date este o colecie de date centralizate, creat i meninut
computerizat, n scopul prelucrrii datelor n contextual unui set de aplicaii.
Prelucrarea datelor se refer la operaiile de introducere, tergere, actualizare
i interogare a datelor.
Simple colecii de fie (documente pe hrtie) sau fiiere de date care conin date, dar nu
permit operaii de interogare nu sunt considerate baze de date. De exemplu, datele memorate n fiiere
pe disc ntr-o aplicaie de calcul tabelar (Microsoft Excel) sau documentele memorate de un editor de
texte (ca Microsoft Word) nu sunt considerate baze de date.
Orice baz de date are urmtoarele proprieti implicite:
-

Baza de date este o colecie logic coerent de date ce are cel puin un neles;
11

Baza de date este destinat, construit i populat de date despre un domeniu bine

precizat. Ea are un grup de utilizatori i se adreseaz unui anumit grup de aplicaii;


O baz de date reprezint cteva aspecte ale lumii reale crend orizontul propriu.

Schimbrile orizontului sunt reflectate n baza de date. Fa de vechile metode de


nregistrare a datelor privind diferite activiti pe fie (documente scrise) sau chiar n fiiere pe disc,
sistemele de baze de date ofer avantaje considerabile, ceea ce explic extinsa utilizare a acestora.
Cteva dintre avantajele oferite sunt:
-

Controlul centralizat al datelor, putnd fi desemnat o persoan ca responsabil cu

administrarea bazei de date;


Vitez mare de regsire i actualizare a informaiilor
Sunt compacte: volumul ocupat de sistemele de baze de date este mult mai redus dect

documetele scrise;
Flexibilitatea ce const n posibilitatea modificrii structurii bazei de date fr a fi

necesar modificarea programelor de aplicaie;


Redundan sczut a datelor memorate, care se obine prin partajarea datelor ntre mai
muli utilizatori i aplicaii.

n sistemele de baze de date, mai multe aplicaii pot folosi date comune, memorate o
singur dat. De exemplu, o aplicaie pentru gestionarea personalului dintr-o universitate i o
aplicaie pentru gestionarea rezultatelor la examene din aceeai universitate care folosete o
singur baz de date, pot folosi aceleai informaii referitoare la structurarea facultilor.
-

Posibilitatea introducerii standardelor privind modul de stocare a datelor, ceea ce permite


interschimbarea datelor ntre organizaii;
Meninerea integritii datelor prin politica de securitate (drepturi de acces difereniate n
funcie de rolul utilizatorilor), prin gestionarea tranzaciilor i prin refacerea datelor n caz

de funcionare defectuoas a diferitelor componente hardware sau software.


Independena datelor fa de suportul hardware utilizat. Sistemul de gestiunea a bazelor
de date ofer o vizualizare a datelor, care nu se modific atunci cnd se schimb suportul
de memorare fizic, ceea ce asigur imunitatea structurii bazei de date i a aplicaiilor la
modificri ale sistemului hardware utilizat.

2.2.3 Limbajul SQL


Limbajul SQL se bazeaz pe interogri i are ca obiect bazele de date relaionale. Bazele de
date relaionale au fost introduse n 1970 de acelai cercettor de la IBM (E.F. Codd) care a pus
bazele normalizrii. Modelul bazelor de date relaionale reprezint baza de date ca o colecie de
tabele, fiecare dintre acestea relaionnd cu cel puin un altul. SQL este un limbaj prin intermediul
12

cruia, utiliznd comenzi derivate din limbajul natural, i se comunicunui SGBD ce se dorete.
Comenzile SQL permit, astfel, interogarea, inserarea, actualizarea i tergerea datelor. SQL este
referit uneori ca i limbaj neprocedural. Asta nseamn c nu este nevoie ss e expliciteze locul unde
SQL trebuie s caute un set de date, de exemplu. Este suficient s i se spun ce anume se dorete.
Localizarea informaiei dorite n baza de date este sarcina SGBD-ului. n cazul limbajelor
procedurale, fiecare interogare trebuie creat, compilat i executat. Sistemele de gestiune a bazelor
de date comerciale utilizeaz SQL-ul n 2 nivele, astfel:
- Comenzile SQL se scriu direct ca i linie de comand, ceea ce face ca SGBD-ul s
interpreteze imediat comenzile i sfurnizeze rezultatul. Aceast metod de procesare se numete
SQL interactiv.
- Cel de-al doilea nivel se numete SQL programat i constn integrarea comenzilor SQL ntr-un
limbaj ca C, Basic, Cobol etc.
Exemplu de instructiuni SQL:
-

Instruciunea CREATE TABLE se foloseste pentru a crea un tabel nou.


CREATE TABLE nume_tabel (cmp_1 tip_date_1, , cmp_n tip_date_n);

Instructiunea SELECT se utilizeaza pentru extragerea datelor din tabele:


SELECT cmp_1, , cmp_n FROM nume_tabel;
Instruciunea UPDATE permite modificarea inregistrarilor din baza de date:
UPDATE nume_tabel
SET valoare_cmp_de_modificat = valoare
WHERE criteriu_selectie_inregistrare;
Instruciunea INSERT VALUES
INSERT INTO nume_tabel <(cmp_1, , cmp_n)>
VALUES (valoare_cmp_1, , valoare_cmp_n);
Instruciunea DELETE sterge unul sau mai multe articole existente:
Delete from nume_tabela where nume_camp=100;
Instruciunea DROP permite stergerea unui tabel sau intregii baze de date:
DROP table nume_tabela;
DROP database nume_baza;
Instruciunea SHOW listeaza baza de date existenta , tabelele din baza de date sau
campurile unei tabele:
SHOW databases;
SHOW tables;
SHOW fields from nume_tabela;

13

2.3 Comertul electronic


Comerul electronic este demersul de cumprare sau vnzare prin intermediul transmiterii de
date la distan, demers specific politicii expansive a marketingului companiilor comerciale. Prin
intermediul Internetului se dezvolt o relaie de servicii i schimb de mrfuri ntre ofertant i viitorul
cumpartor. n anii 1990 compania IBM, printr-o campanie publicitar corespunztoare, a fcut
popular i termenul echivalent Electronic Business. Un termen nrudit este E-Trade, care se refer la
tranzaciile bursiere electronice.
Utilizarea tuturor mijloacelor electronice pentru participarea la o activitate de comer
electronic poart denumirea de tranzacie electronic.
Strns legate de comerul electronic pot fi legate i alte activiti electronice, de exemplu
servirea cumprtorilor, livrarea mrfii (dac e vorba de medii electronice), colaborarea cu partenerii
de afaceri sau i conducerea unei organizaii prin mijloace electronice.
n tranzaciile comerciale clasice se disting urmtoarele etape:
-

informarea comercial referitoare la tranzacie i anume cercetarea de marketing;


ncheierea contractului comercial general;
comandarea/vnzarea produsului sau a serviciului;
plata.

n cadrul comerului electronic pot fi tranzacionate bunuri i servicii digitale (sunt excluse
fazele logistice), iar locul n care sunt tranzacionate aceste bunuri digitale poart denumirea de pia
electronic (n limba englez e-marketspace) contextul virtual n care cumprtorii i vnztorii se
gsesc unii pe alii i tranzacioneaz afaceri electronice.
Comerul electronic permite participarea att a persoanelor fizice i juridice, ct i
a statului sau a instituiilor acestuia. n funcie de relaiile dintre aceti participani au luat natere mai
multe categorii de comer electronic.
Cele mai frecvente categorii de comer electronic sunt:
-

B2B (business-to-business): este un model de comer electronic n care toi participanii


sunt companii sau alte organizaii. n Romnia, domeniul B2B este o afacere foarte
promitoare, datorit penetrrii Internetului n firme la nivel nalt. Studii recente arat c
n Romnia exist mai mult de 1,1 milioane de utilizatori care intr pe Internet de la locul
lor de munc (inclusiv coli i universiti), i peste 42.000 de domenii de nivel nalt sunt

nregistrate.
B2C (business-to-consumer): model de comer electronic n care companiile vnd la
cumpratori individuali persoane fizice. n Romnia, piaa electronic B2C se afl nc
14

ntr-un stadiu de formare. Consumatorii nc experimenteaz online, dar sunt nc multe


obstacole ce trebuie s fie nvinse nainte de a se schimba comportamentul clienilor;
aceste probleme sunt legate de crearea securitii transaciilor, asigurarea proteciei
clienilor, mrirea vitezei de transfer n reea sau chiar asigurarea accesului la Internet.
Majoritatea utilizatorilor Internet particulari au acces la Internet prin intermediul locului
lor de munc, i numai circa 200.000 de oameni dispun de un acces personal. Office of
National Statistics din Marea Britanie susine c vnzrile B2C pe glob au depit 10
-

miliarde de dolari n 2001, piaa fiind n plin expansiune.


B2G (business-to-gouvernment): Guvernele utilizeaz canale de comer electronic pentru
creterea eficienei operaiunilor i mbuntirea serviciilor oferite cetenilor-clieni. O
arie de interes pentru guverne n domeniul afacerilor este intensificarea utilizrii
Internetului i a reelelor VAN, pentru diseminarea informaiei, a oportunitilor, cotaiilor
primite de la vnztori/furnizori de bunuri i servicii.

2.3.1 Tranzactii online


Aceste tipuri de comer necesit tranzacionri online ale produselor. Iat rspunsuri la
cteva ntrebri comune despre tranzacii online:
-

Ce este o conexiune securizat? O conexiune securizat este un schimb criptat de


informaii ntre site-ul Web pe care l vizitai i Internet Explorer. Criptarea este furnizat
printr-un document oferit de site-ul Web, denumit certificat. Cnd se trimit informa ii
ctre site-ul Web, acestea sunt criptate n computer i decriptate n site-ul Web. n mod
normal, informaiile nu se pot citi sau falsifica n timpul trimiterii, dar este posibil ca
cineva s gseasc o modalitate de a sparge criptarea. Chiar dac este criptat conexiunea
dintre computer i site-ul Web, acest lucru nu garanteaz faptul c site-ul Web este de
ncredere. Confidenialitatea poate fi compromis de modul n care site-ul Web utilizeaz

sau distribuie informaiile dvs.


Conexiunile securizate sunt confideniale? Nu neaprat. Chiar dac informaiile pe care le
trimitei i le primii sunt criptate (codificate), este posibil ca o parte intermediar s vad
site-ul Web la care v conectai. tiind site-ul Web la care v conecta i, este posibil ca
cealalt parte s tie destul de bine ce face i pe acel site. De exemplu, dac sunte i n
cutarea unei slujbe noi utiliznd computerul de la serviciu, este posibil ca firma s
verifice cuvintele cheie din site-urile Web sau s pstreze un jurnal al site-urilor vizitate.
Dac ncrcai un CV pe un site Web de slujbe, documentul poate fi criptat, dar firma va

ti c suntei n cutarea unui alt loc de munc.


Cum aflu dac am o conexiune securizat? n Internet Explorer, vei vedea o pictogram
lact n bara Stare de securitate. Bara de stare a securit ii este amplasat n partea
dreapt a barei Adres. Certificatul utilizat la criptarea conexiunii con ine i informa ii
15

despre identitatea proprietarului site-ului Web sau a organiza iei. Face i clic pe lact
-

pentru a vizualiza identitatea site-ului Web.


Cum sporesc sigurana tranzaciilor online? n timp ce pe Web nu exist o garanie a
siguranei, avei posibilitatea s diminuai problemele de confiden ialitate sau securitate
online utiliznd site-uri Web pe care le cunoatei i n care ave i ncredere. Internet
Explorer nu poate spune dac proprietarul unui site Web este de ncredere. ncerca i s
utilizai site-uri pe care le-ai mai utilizat anterior sau care sunt recomandate de prieteni de
ncredere sau de familie. De asemenea, trebuie s activa i Filtrul pentru n eltorie din
Internet Explorer pentru a ajuta la identificarea site-urilor Web frauduloase.

2.3.2 Sistemul de confirmare prin email


Sistemul de confirmare de e-mail-uri trimite un mesaj automat expeditorului de e-mail
suspect. n cazul n care expeditorul rspunde la mesaj (prin urmare de autentificare, a faptului c el
sau ea este o persoan "real") sistemul de confirmare de e-mail va aduga adresa la lista alb a
utilizatorului. Mesajul original va fi livrat n csua potal a utilizatorului. Avnd n vedere c
persoana a fost adugat n lista alb, mesajele ulterioare de la el sau ea vor fi livrate automat n casua
potal a utilizatorului. Procesul de confirmare nu va fi repetat.
Fluxul diagram ajut la ilustrarea procesului de confirmare e-mail. Este important de reinut
faptul c mesajele care necesit confirmare sunt mesajele de la expeditori care nu sunt n lista alb sau
lista neagr i cele care au trecut prin filtrul spam, fr a fi terse automat.

16

3 APLICATIA SOFTWARE
3.1 Prezentare generala

Am ales ca aplicatie pentru lucrarea de licenta dezvoltarea unui magazin online de componente
electronice, ce ofera mai multe facilitati:
-

Adaugarea de categorii si produse;

Editarea/ stergerea acestora;

Inregistrarea utilizatorilor;

Posibilitatea de a cumpara produsele, etc.

Site-ul contine o baza de date denumita electronix, care este alcatuita din mai multe tabele:
-

categorii_tabel, ce contine id_categorie ( fiecarei categorii nou introduse i se genereaza


un id automat si crescator ) si id_descriere (denumirea categoriilor introduse de
administrator);

produse_tabel, cu cod_produse, cod_furnizor ( administratorul le introduce pentru fiecare


produs nou adaugat) , denumire, pret, disponibilitate( 0 pentru indisponibil si 1 pentru
disponibil), id_categorie si imagine;

user_tabel, ce contine user_id ( se aloca automat), user_nume (il introduce utilizatorul),


user_email ( mailul utilizatorului), user_statusActivare ( 0 pentru inactiv si 1 pentru activ)
si password (parola aleasa de utilizator);

cos_cumparaturi, cu Counter , user_id ( identificarea userului dupa id), idProdus


(coincide cu cod_produse), Cantitate si cumparare_ok.

3.2 Intefata site-ului


17

Conexiunea intre baza de date si site-ul magazinului se face cu ajutorul fisierului


conexiune_magazin.php.
<?php if (!isset ($_SESSION)) {
session_start();
}?>
<?php
# FileName="Connection_php_mysql.htm"
# Type="MYSQL"
# HTTP="true"
$hostname_conexiune_magazin = "localhost";
$database_conexiune_magazin = "electronix";
$username_conexiune_magazin = "root";
$password_conexiune_magazin = "";
$conexiune_magazin = mysql_pconnect($hostname_conexiune_magazin,
$username_conexiune_magazin, $password_conexiune_magazin) or
trigger_error(mysql_error(),E_USER_ERROR);
?>
Sesiunea reprezinta un mecanism ce permite retinerea informatiilor despre starea clientului.
Daca serverul nu a mai intalnit clientul respectiv, el genereaza o noua sesiune.
Aplicatia este compusa din doua parti principale:
-

zona de administrare a magazinului ;

magazinul online.

Cele doua se afla in stransa legatura, deoarece produsele si categoriile pe care le adaugam din
sectiunea de administrare sunt vizibile pe site-ul magazinului, iar administratorul are posibilitatea de a
vedea utilizatorii care s-au inregistrat in baza de date.

Structura aplicatiei este urmatoarea:


18

Figura 4. Site root

3.2.1 Zona de administrare


Toata sectiunea grafica de administrare este construita pe baza unui template,
BasaAdmin.dwt.php. Designul este dat de un fisier extern, aflat in folderul style, twoColFixLtHdr.css
si de stiluri inline.
19

In partea din stanga, sub logo-ul magazinului, avem un sidebar care contine un meniu cu
link-uri catre Administrare(index.php), Lista de produse, Lista de categorii si Clienti.
Continutul sidebarului este dat de fisierul php admin.php, care se afla in folderul includes,
printr-o interogare php:
<div id="sidebar1">
<?php include ("../includes/admin.php");
?>
<!-- end #sidebar1 --></div>
Pagina admin.php contine linkurile catre paginile cu functii de editare, adaugare, stergere:

Figura 5. Admin.php
Continutul principal al paginii are, de asemenea, link-uri catre Adaugare categorii, Adaugare
Produse si Editare produse.

20

Figura 6. Index.php
Accesand linkul Lista de categorii, avem posibilitatea de a vedea categoriile de produse
deja existente si de efectuare a unor operatii ca Editare/ Stergere sau Adaugare categorie noua.

Figura 7. Lista categorii

Selectia si vizualizarea categoriilor este posibila cu ajutorul unui query mysql:


mysql_select_db($database_conexiune_magazin, $conexiune_magazin);
21

$query_Recordset1 = "SELECT * FROM categorii_tabel ORDER BY


categorii_tabel.id_descriere ASC"; /*selecteaza toate datele din categorii_tabel ordonate
ascendent dupa id_descriere */
$Recordset1 = mysql_query($query_Recordset1, $conexiune_magazin) or
die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
Un Recordset reprezinta un script folosit pentru a afisa date ce sunt stocate intr-un tabel MySQL.
Dupa ce am extras informatiile care ne intereseaza, le putem afisa in pagina:
<?php do { ?>
<tr>
<td><?php echo $row_Recordset1['id_descriere']; ?></td>
<td><a href="editare_categorii.php?recordID=<?php echo
$row_Recordset1['id_categorie']; ?>">Editare / </a>
<a href="sterge_categorii.php?recordID=<?php echo
$row_Recordset1['id_categorie']; ?>">Stergere</a></td>
</tr>
<?php } while ($row_Recordset1 = mysql_fetch_assoc($Recordset1)); ?>
Dupa ce pagina a fost afsata cu datele cerute din baza de date, curatam recordsetul cu
instructiunea:
<?php
mysql_free_result($Recordset1);
?>.

Adaugarea unei noi categorii in baza e date se face prin adaugarea denumirii categoriei in
campul Descriere si apasarea butonului de tip submit:
$insertSQL = sprintf("INSERT INTO categorii_tabel (id_descriere) VALUES (%s)",
22

GetSQLValueString($_POST['id_descriere'], "text"));
mysql_select_db($database_conexiune_magazin, $conexiune_magazin);
$Result1 = mysql_query($insertSQL, $conexiune_magazin) or die(mysql_error());
$insertGoTo = "lista_categorii.php"; /*redirecteaza catre pagina Lista categoriilor */
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];

Figura 8. Adauga categorie noua


Editarea categoriilor permite decat redenumirea lor, deoarece id-ul categoriei se aloca
automat.
$updateSQL = sprintf("UPDATE categorii_tabel SET id_descriere=%s WHERE
id_categorie=%s",
GetSQLValueString($_POST['id_descriere'], "text"),
GetSQLValueString($_POST['id_categorie'], "int"));

Stergerea se executa din pagina sterge_categorii, care contine scriptul:


if ((isset($_GET['recordID'])) && ($_GET['recordID'] != ""))
{
23

$deleteSQL = sprintf("DELETE FROM categorii_tabel WHERE id_categorie=%s",


GetSQLValueString($_GET['recordID'], "int"));
mysql_select_db($database_conexiune_magazin, $conexiune_magazin);
$Result1 = mysql_query($deleteSQL, $conexiune_magazin) or die(mysql_error());
$deleteGoTo = "lista_categorii.php";
if (isset($_SERVER['QUERY_STRING'])) {
$deleteGoTo .= (strpos($deleteGoTo, '?')) ? "&" : "?";
$deleteGoTo .= $_SERVER['QUERY_STRING']; }
Pagina cu lista de produse permite aceleasi functii ca si cea cu lista categoriilor, ca adaugarea,
stergerea sau editarea produselor, afisand cate 10 produse pe pagina.

Figura 9. Lista de produse


Adaugarea produselor se face din pagina adaugare_prod.php . Aceasta contine un tabel care
are mai multe campuri obligatorii ce trebuiesc completate pentru a introduce un nou produs in baza
de date.

24

Figura 10. Adaugare produse


$insertSQL = sprintf("INSERT INTO produse_tabel (cod_produse, cod_furnizor, denumire,
pret, disponibilitate, id_categorie, imagine) VALUES (%s, %s, %s, %s, %s, %s, %s)",
GetSQLValueString($_POST['cod_produse'], "int"),
GetSQLValueString($_POST['cod_furnizor'], "int"),
GetSQLValueString($_POST['denumire'], "text"),
GetSQLValueString($_POST['pret'], "double"),
GetSQLValueString($_POST['disponibilitate'], "int"),
GetSQLValueString($_POST['id_categorie'], "int"),
GetSQLValueString($_POST['imagine'], "text"));
Dupa ce a introdus datele obligatorii, administratorul are poate atribui produsul unei anumite
categorii deja create care sunt afisate in Dynamic list, poate incarca o imagine sau poate selecta
stocul (Disponibil/ Epuizat).
Functia incarcaImginea apeleaza pagina gestionare_prod.php
25

<script>
function incarcaImaginea()
{

self.name = 'opener';
remote = open ('gestionare_prod.php', 'remote', 'width=400, height = 150, location =

no, scrollbars = yes, menubars = no, toolbars = no, resizable = yes, fullscreen = no, status =
yes');
remote.focus();}
</script>.
Pagina gestionare_prod.php este cea care incarca imagininea in baza de date, in folderul
"../docs/produse/".

Figura 11. Incarca imaginea


Administratorul site-ului poate sterge din baza de date userii inregistrati, cu ajutorul codului
din pagina sterge_user.php :
$deleteSQL = sprintf("DELETE FROM user_tabel WHERE user_id=%s",
GetSQLValueString($_GET['recordID'], "int"));

3.2.2 Magazinul online


La fel ca la sectiunea de administrare, partea grafica a magazinul online este bazata pe un
template, diferit fata de cal anterior, main.dwt.php, care este legat de fisierul main.css:
<link href="../style/main.css" rel="stylesheet" type="text/css" />

26

Figura 12. Index.php


In zona header-ului avem inserata imaginea cu logo-ul magazinului, care reprezinta si un
link catre index.php.

<h1>
<a href="../index.php"><img src="../images/logo_0.png" width="300" height="100"
alt="logo_trans" />
</a>
27

</h1>
Containerul paginii contine un AccordionMenu implementat de Dreamweaver, printr-un fisier
JavaScript inclus in folderul SpryAssets, cu cateva informatii despre magazin, precum si datele de
contact. Acesta este apelat in pagina principala de scriptul :
<script src="SpryAssets/SpryAccordion.js" type="text/javascript"></script>
<link href="SpryAssets/SpryAccordion.css" rel="stylesheet" type="text/css" />
In partea stanga a paginii avem un sidebar care ne arata categoriile introduse de administrator
sub forma unui meniu si optiuni de inregistrare/ log in pentru clienti. Sidebarul este complet efectuat
in alta pagina, catalog.php, si este apelat prin scriptul :
<?php include ("includes/catalog.php"); ?>
Un recordset afiseaza toate intrarile din tabelul categorii_tabel si le ordoneaza dupa numarul intrarii:
mysql_select_db($database_conexiune_magazin, $conexiune_magazin);
$query_Recordset1 = "SELECT * FROM categorii_tabel ORDER BY
categorii_tabel.id_categorie";
$Recordset1 = mysql_query($query_Recordset1, $conexiune_magazin) or
die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
Daca utilizatorul care navigheaza pe site nu este inregistrat, el are posibilitatea de a se
inregistra, folosind formularul de inregistrare pus la dispozitie lor. Sintaxa urmatoare introduce datele
utilizatorilor in baza de date, in tabelul user_tabel.
$insertSQL = sprintf("INSERT INTO user_tabel (user_nume, user_email,
user_statusActivare, password) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['user_nume'], "text"),
GetSQLValueString($_POST['user_email'], "text"),
GetSQLValueString($_POST['user_statusActivare'], "int"),
GetSQLValueString($_POST['password'], "text"));
28

Figura 13. Inregistrare clienti


In cazul in care utilizatorul reuseste inregistrarea, este redirectionat catre pagina
inreg_succes.php, unde este anuntat ca a fost inregistrat cu succes si ca se poate loga cu emailul si
parola alese.
if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO user_tabel (user_nume, user_email,
user_statusActivare, password) VALUES (%s, %s, %s, %s)",
GetSQLValueString($_POST['user_nume'], "text"),
GetSQLValueString($_POST['user_email'], "text"),
GetSQLValueString($_POST['user_statusActivare'], "int"),
GetSQLValueString($_POST['password'], "text"));
mysql_select_db($database_conexiune_magazin, $conexiune_magazin);
$Result1 = mysql_query($insertSQL, $conexiune_magazin) or die(mysql_error());
$insertGoTo = "inreg_succes.php";
29

if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

Figura 14. Inregistrare cu succes

Pe sectiunea de log in, clientul trebuie sa introduca emailul si parola:

30

Figura 15. Acces utilizator


Daca logarea s-a efectuat cu succes, va aparea mesajul Bine ati venit! Multumim pentru
logare. In caz contrar, va aparea un mesaj de atentionare: Atentiune! A existat o eroare in procesul
de logare! si un link pentru a reincerca logarea.
Scriptul urmator afiseaza, cu ajutorul functiei ObtineNumeUser inclusa in
../includes/functii.php numele utilizatorului inregistrat
<?php
if ((isset($_SESSION['MM_Username'])) && ($_SESSION['MM_Username'] != ""))
{
echo "Salut, ";
echo ObtineNumeUser($_SESSION['MM_UserId']);
?>

Functia ObtineNumeUser selecteaza din tabelul user_tabel numele utilizatorului :


function ObtineNumeUser ($identificator)
31

{
global $database_conexiune_magazin, $conexiune_magazin;
mysql_select_db($database_conexiune_magazin, $conexiune_magazin);
$query_QueryFunction = sprintf("SELECT user_tabel.user_nume FROM user_tabel
WHERE user_tabel.user_id = %s" ,$identificator );
$QueryFunction = mysql_query($query_QueryFunction, $conexiune_magazin) or
die(mysql_error());
$row_QueryFunction = mysql_fetch_assoc($QueryFunction);
$totalRows_QueryFunction = mysql_num_rows($QueryFunction);
return $row_QueryFunction['user_nume'];
mysql_free_result($QueryFunction);
}
Daca dam click pe una din categorii, in container ne va aparea o galerie de imagini cu toate
produsele din categoria respectiva; in cazul in care nu exista inca produse, serverul ne va raspunde ca
nu exista inca produse in acea categorie.
<div class="prod_result">
<?php if ($totalRows_dateProd > 0) { // Show if recordset not empty ?>
<?php do { ?>
<div class="produse">
<div class="img_prod">
<img src="docs/produse/<?php echo $row_dateProd['imagine']; ?>" width="90"
height="90" /><br /> </div>
<div class="text_prod"><a href="prod_mari.php?recordID=<?php echo
$row_dateProd['cod_produse']; ?>"> <?php echo $row_dateProd['denumire']; ?></a>
<br />
Pret:<?php echo $row_dateProd['pret']; ?> lei </div>
32

</div>
<?php } while ($row_dateProd = mysql_fetch_assoc($dateProd)); ?>
<?php } // Show if recordset not empty ?>
<?php if ($totalRows_dateProd == 0) { // Show if recordset empty ?>
Nu exista inca produse in aceasta categorie
<?php } // Show if recordset empty ?>
</div>

Figura 16. Produse

33

Figura 17. Integrate


Produsele electronice astfel afisate au o poza descriptiva, o denumire si pret. Daca dam click pe
un produs anume, ajungem la posibilitatea de a adauga produsul respectiv in cosul de cumparaturi.
De asemenea, in cazul in care nu suntem inregistrati, ne apare un mesaj care ne avertizeaza ca
trebuie sa fim inregistrati pentru a putea cumpara produsul si un link catre pagina
inregistrare_clienti.php.
<?php echo $row_dateProd['denumire'];
?>
<table width="70%" border="0">
<tr>
<td><img src="docs/produse/<?php echo $row_dateProd['imagine']; ?>"
width="250" height="250" /></td>
<td valign="top"> <p> <?php echo $row_dateProd['denumire']; ?> </p>
34

<p>Pret:<?php echo $row_dateProd['pret']; ?> lei


<?php if ((isset($_SESSION['MM_UserId'])) &&
($_SESSION['MM_UserId']!=""))
{?>
<p><a href="adaug_cos.php?recordID=<?php echo
$row_dateProd['cod_produse']; ?>">Cumpara produsul</a></p>
<?php }
else
{?>
Trebuie sa fiti <a href="inregistrare_clienti.php">inregistrat</a> pentru a putea
cumpara.
<?php } ?> </td>

Figura 18. Produse

35

Dupa ce am apasat pe butonul Cumpara produsul, suntem redirectati catre pagina ce contine
cosul de cumparaturi, lista_cos.php. Produsul a fost deja adaugat in tabelul cos_cumparaturi cu
ajutorul codului din pagina adaug_cos.php:
$insertSQL = sprintf("INSERT INTO cos_cumparaturi (user_id, idProdus, cantitate )
VALUES (%s, %s, %s)",
GetSQLValueString($_SESSION['MM_UserId'], "int"),
GetSQLValueString($_GET['recordID'], "text"),1 );
mysql_select_db($database_conexiune_magazin, $conexiune_magazin);
$Result1 = mysql_query($insertSQL, $conexiune_magazin) or die(mysql_error());
$insertGoTo = "lista_cos.php";
Query- ul urmator selecteaza produsele din tabel:
mysql_select_db($database_conexiune_magazin, $conexiune_magazin);
$query_DateCumparaturi = sprintf("SELECT * FROM cos_cumparaturi WHERE
cos_cumparaturi.user_id = %s and cos_cumparaturi.cumparare_ok = 0",
GetSQLValueString($varUser_DateCumparaturi, "int"));
$DateCumparaturi = mysql_query($query_DateCumparaturi, $conexiune_magazin) or
die(mysql_error());
$row_DateCumparaturi = mysql_fetch_assoc($DateCumparaturi);
$totalRows_DateCumparaturi = mysql_num_rows($DateCumparaturi);

36

Figura 19. Lista cos


In aceasta pagina avem optiunile de a sterge produsele din cos si de a selecta metoda de plata.
Prin doua functii definite in alt fisier, pe pagina cu posibilitatea de a cumpara ne sunt afisate
denumirea produselor si pretul acestora.
function ObtineNumeProdus ($identificator)
{
global $database_conexiune_magazin, $conexiune_magazin;
mysql_select_db($database_conexiune_magazin, $conexiune_magazin);
$query_QueryFunction = sprintf("SELECT denumire FROM produse_tabel WHERE
cod_produse = %s" ,$identificator );
$QueryFunction = mysql_query($query_QueryFunction, $conexiune_magazin) or
die(mysql_error());
$row_QueryFunction = mysql_fetch_assoc($QueryFunction);
$totalRows_QueryFunction = mysql_num_rows($QueryFunction);

37

return $row_QueryFunction['denumire'];
mysql_free_result($QueryFunction);
}

function ObtinePretProdus ($identificator)


{
global $database_conexiune_magazin, $conexiune_magazin;
mysql_select_db($database_conexiune_magazin, $conexiune_magazin);
$query_QueryFunction = sprintf("SELECT pret FROM produse_tabel WHERE
cod_produse = %s" ,$identificator );
$QueryFunction = mysql_query($query_QueryFunction, $conexiune_magazin) or
die(mysql_error());
$row_QueryFunction = mysql_fetch_assoc($QueryFunction);
$totalRows_QueryFunction = mysql_num_rows($QueryFunction);
return $row_QueryFunction['pret'];
mysql_free_result($QueryFunction);
}
In fisierul lista_cos.php, suma de plata este initializata cu zero. In tabul Produse se afiseaza
denumirea produsului, iar in totalul de plata este calculat prin adunarea pretului afisat cu functia
ObtinePretProdus:
<table width="100%" border="0">
<tr>
<td>Produse</td>
<td>Unitati</td>
<td>Pret</td>
38

<td>Actiuni</td>
</tr>
<?php $suma = 0;
?>
<?php do { ?>
<tr>
<td><?php echo ObtineNumeProdus($row_DateCumparaturi['idProdus']); ?></td>
<td><?php echo $row_DateCumparaturi['Cantitate']; ?></td>
<td><?php echo ObtinePretProdus($row_DateCumparaturi['idProdus']); ?></td>
<td><a href="sterg.php?recordID=<?php echo $row_DateCumparaturi['idProdus']; ?
>">Sterge</a></td>
</tr>
<?php $suma=$suma+ ObtinePretProdus($row_DateCumparaturi['idProdus']); ?>
<?php } while ($row_DateCumparaturi = mysql_fetch_assoc($DateCumparaturi)); ?>
<tr>
<td>&nbsp;</td>
<td align="right">Total:</td>
<td><?php echo $suma ;?> Lei</td>
<td>&nbsp;</td>
</tr>
</table>

39

Figura 20. Cos cumparaturi


Urmand linkul de la Selectati metoda de plata, suntem redirectionati pe o pagina unde putem
alege una dintre metodele de plata:

Figura 21. Metoda de plata


40

Daca alegem sa finalizam plata prin transfer bancar, produsele vor fi livrate dupa primirea
confirmarii platii pe email:

Figura 22. Transfer

41

3.3 Softuri folosite


Un IDE (Integrated Development Environment) inseamna o aplicatie software care ofera
faciliteaza munca programatorilor in dezvoltarea software. Acestea sunt dedicate anumitor limbaje de
programare. De obicei, un IDE contine:
-

un editor de cod;

Caracteristici de completare automata a codului;

Un debugger;

Compiler.

Exemple de IDE-uri:
-

Visual Studio (C\C++, C#, VB.NET);

Nebeans ( pentru Java, C/C++);

Eclipse ( Java);

Dreamweaver ( HTML, PHP, CSS, JavaScript);

3.3.1 Dreamweaver
Adobe Dreamweaver CS4 este unealta perfecta pentru a dezvolta aplicatii web. In el se
regasesc necesitatile programatorilor si designerilor totodata, datorita interfetei grafice cu care este
dotat. Dezvoltatorul poate scrie cod sau se poate folosi de functiile sale built in, cum ar fi inserarea
imaginilor , tabelelor, butoanelor etc, din meniul Insert (Figura 23)
Se pot de asemenea, crea site-uri (o colectie de fisiere si foldere care corespund unui website
de pe un server). De exemplu, in Figura 24. sunt evidentiate radacina ( root) magazinului Electronix.
Tot aici se specifica si modelul serverului (PHP MySQL), prefixul URL-ului (adresa pe care o scriem
in bara browserului pentru a accesa paginile web dorite. De exemplu, http://localhost/ ne va deschide
pagina home a siteului, index.php) precum si adresa unde se afla folderul pentru testare
( C:\wamp\www).

42

Figura 23. Interfata DW

Figura 24. Creare site

43

Dreamweaver vine cu un set de Comportamente ale Serverului (Server behaviors) care permit
adaugarea usoare de functionalitati dinamince unui site:

Figura 25. Sever behaviors

Figura 26. Bindings

Alegerea unei functionalitati insereaza automat un script in pagina web:


RECORDSET:
<?php if (!function_exists("GetSQLValueString")) {
function GetSQLValueString($theValue, $theType, $theDefinedValue = "",
$theNotDefinedValue = "")
{ if (PHP_VERSION < 6) {
$theValue = get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue; }
$theValue = function_exists("mysql_real_escape_string") ?
mysql_real_escape_string($theValue) : mysql_escape_string($theValue);
switch ($theType) {

44

case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? doubleval($theValue) : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined": $theValue = ($theValue != "") ? $theDefinedValue :
$theNotDefinedValue; break; } return $theValue;} }
mysql_select_db($database_conexiune_magazin, $conexiune_magazin);
$query_Recordset1 = "SELECT * FROM categorii_tabel ORDER BY
categorii_tabel.id_categorie";
$Recordset1 = mysql_query($query_Recordset1, $conexiune_magazin) or
die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1); ?>

LOG IN USER:

45

<form id="form1" name="form1" method="POST" action="<?php echo


$loginFormAction; ?>">
<p> <label for="user_email">Email:</label> <span id="sprytextfield1">
<input type="text" name="user_email" id="user_email" />
<span class="textfieldRequiredMsg">Camp obligatoriu!</span><span
class="textfieldInvalidFormatMsg">Adresa invalida.</span></span></p>
<p>Parola: <label for="password"></label>
<span id="sprytextfield2"><input type="password" name="password" id="password" />
<span class="textfieldRequiredMsg">Camp obligatoriu!</span></span></p>
<p> <label for="button"></label>
<input type="submit" name="button" id="button" value="Trimite" /> </p>
</form>

3.3.2 Wamp Server


Wamp Server este o aplicatie care instaleaza un server pe calculatorul personal. Acesta permite
dezvoltatorilor web sa-si testeze aplicatiile ca si cum s-ar afla online, pe un server al unor servicii de
host.
Aplicatia are urmatoarele functionalitati:
-

Gestionarea bazelor de date cu ajutorul phpMyAdmin;

Accesul la fisierele site-ului;

Schimbarea setarilor serverului.

De obicei, vizualizarea websiteului se face scriind in bara de adrese a browserului localhost sau
dand click pe pictograma aplicatiei si alegand din meniu Localhost, ca in Figura 27:

46

Figura 27. Wamp Server


Daca alegem www directory, ne duce in folderul in care se afla site-ul, de exemplu
C:\wamp\www .
phpMyAdmin ne arata detaliile serverului si ne permite accesul la baza de date si tabelele ei, inclusiv
operatii ca Adaugare/ stergere/ editare baza de date, adaugare/ modificare/ stergere tabele, etc.

Figura 28. PhpMyAdmin

47

3.4 Modelul relaional al bazei de date


In modelul relaional, o baz de date este compusa dintr-o multime de relatii, fiecare relatie
reprezentand un tip de entitate sau o asociere dintre doua sau mai multe tipuri de entitati.
Intr-o baza de date, fiecare relatie este unica.

Figura 29. Modelul relaional al bazei de date electronix


Relaiile intre tabele sunt:
-

Id_categorie(produse_tabel)

Cod_produse (produse_tabel)

User_id (user_tabel)

Id_categorie(categorii_tabel)
idProdus (cos_cumparaturi)
user_id (cos_cumparaturi)

48

4 CONCLUZII
Site-ul web al unui magazin reprezinta, la ora actuala, forma cea mai comuna de proiectare si
desfasurare a marketingului din zona online.
Internetul, cu toate facilitile sale, a devenit o component extrem de important a fiecruia
dintre noi. Folosim acest resurs pentru a face cumprturi online, pentru a face programri online,
pentru a cumpra bilete de avion sau de tren, pentru a ne delecta cu fisierele media pe care le pune la
dispoziie i, de ce nu, pentru a ne ajuta sa socializm.
Aplicaiile Internetului sunt numeroase, aa c de ce nu ne-am bucura de fiecare resurs pe
care o pune la dispoziie? Spre exemplu, combinaia dintre tehinicile folosite, alternarea in codul surs
al programului, a scripturilor Java, al interogrilor PHP, al conexiunilor ctre o baz de date conduc n
final la un site dinamic, uor de ntreinut si de utilizat.
Realizarea temei Magazin online de componente electronice pentru susinerea examenului
de licen dup terminarea celor 4 ani de facultate are ca scop dovedirea cunotiinelor acumulate n
timpul facultii.
Punerea in practic a acestei teme a fost realizat cu ajutorul programului Abode
Dreamweaver CS4. Interfaa realizat este una foarte uoara i simpl, fiind accesibil tuturor
utilizatorilor, aceasta fiind foarte bine structurat i organizat. Am nvaat limbajul de programare
php n profunzime i am avut ocazia s pun n aplicare cunotintele acumulate. Pentru mine redactarea
licenei a fost un proces de sistematizare a lucrurilor ce le-am nvaat n decursul anilor dar i a celor
ce le-am nvatat pe parcursul realizri lucrrii. Din acest motiv consider c ntregul proiect din faza
iniiala pn la faza de documentaie pentru redactarea licenei i scrierea propriu-zis, a fost o ocazie
deosebit de a avansa pe plan profesional. Colaborarea cu dl. S.I. Dr. Ing. Stoica Spahiu Cosmin,
coordonatorul proiectului, a decurs foarte bine i a fost benefic pentru rezultatele finale obinute la
nivel de site, astfel am avut i o plcere lucrnd pentru proiect i licena.
Site-ul este foarte accesibil i are un design modern i atractiv. Acesta dispune de o structur
foarte bine organizat i un coninut simplist.
Prin lucrarea descris mai sus am ncercat sa evideniez tehnicile folosite de programatorii
web pentru a introduce vastele servicii oferite de Internet n aceast epoc a naltei tehnologii.

49

5 BIBLIOGRAFIE

Practical SEO tehniques, Macronimous web solution;

Tehnologii Web, Sabin Corneliu Buraga;


Retele de calculatoare, Tanenbaum

PHP Manualul Programatorului, programare.org;

JavaScript, Richard Wagner;

Proiectarea paginilor web HTML, CSS, JavaScript - , Florentina Rodica Niculescu ;

Dezvoltarea site-urilor web;

Baze de date suport teoretic-, Catalin Constantinescu ;

Introduction to Structured Query Language, James Hoffman ;

PHP & MYSQL novice to ninja, fifth edition, Kevin Yank

50

6 REFERINE WEB

http://ro.wikipedia.org/wiki/Comer%C8%9B_electronic;

http://windows.microsoft.com/ro-ro/windows/know-online-transactionsecure#1TC=windows-7;

http://ro.wikipedia.org/wiki/Server;

http://ro.wikipedia.org/wiki/HyperText_Markup_Language ;

http://ro.wikipedia.org/wiki/PHP ;

http://www.wampserver.com/en/;

http://inf.ucv.ro/~mihaiug/courses/web/slides/Curs12%20-%20Gestiunea%20Sesiunilor.pdf ;

http://www.seap.usv.ro/~valeriul/lupu/html_php_mysql.pdf ;

http://www.wildbunny.co.uk/blog/wp-content/uploads/2012/10/clientServer.gif ;

http://www.websolpc.ro/wp-content/uploads/2011/02/Dezvoltarea-Site-urilor-Web.pdf ;

http://biblioteca.regielive.ro/cursuri/limbaje-de-programare/fundamente-html-104283.html ;

http://tehnoit.info/wp-content/uploads/2013/01/Administrarea-bazelor-de-date-MySQL-dinlinia-de-comanda-PDF.pdf ;

http://www.adobe.com/aboutadobe/pressroom/pressmaterials/pdfs/cs4_dreamweaver_whatsne
w.pdf ;

http://www.websolpc.ro/wp-content/uploads/2011/02/Dezvoltarea-Site-urilor-Web.pdf .

51

CD / DVD
Autorul ataeaz n aceast anex obligatorie, versiunea electronic a aplicaiei, a acestei
lucrri, precum i prezentarea final a tezei.

52

S-ar putea să vă placă și