1.1. Site web și server web Programarea web poate fi clasificată în categoriile client și server. Partea de client are nevoie de programarea… [307494]

1. Programarea web

1.1. Site web și server web

Programarea web poate fi clasificată în categoriile client și server. Partea de client are nevoie de programarea referitoare la accesarea datelor de la utilizatori și furnizarea de informații. [anonimizat]-în-uri pentru a [anonimizat]. Pentru a [anonimizat]. Acesta platformă client este excelentă pentru proiectarea și implementarea de aplicații Web. De asemenea HTML5 și CSS3 [anonimizat].

O pagină web este un document scris de obicei în limbajul Hypertext Markup Language ( HTML) are poate fi accesat prin Internet sau altă rețea folosind un browser web. O pagină web este accesată prin introducerea unei adrese URL și poate conține de exemplu: text, imagini, hyperlink-[anonimizat], etc.

1.1.1. Tipuri de pagini web

Pagini web statice

Așa cum este și denumirea, o pagină web statică înseamnă o pagină web în care toate informațiile și materialele sunt prezentate utilizatorilor exact în forma în care au fost stocate. O pagină de web statică prezintă aceleași informații și date pentru toți utilizatorii. [anonimizat] a fost primul limbaj sau canal prin care oamenii au început să creeze pagini web statice. HTML oferă crearea stilul textului, a paragrafelor și a [anonimizat] a HTML-ului este opțiunea de creare a link-ului. Paginile web statice sunt utile pentru materialele și conținuturile care trebuie revizuite sau actualizate foarte rar. [anonimizat].

Pagini web dinamice:

Paginile web dinamice sunt acel tip de pagini web care arată de fiecare dată conținut diferit utilizatorului indiferent când este vizitat. [anonimizat]. Scriptul clientului și scriptul serverului sunt două tipuri de pagini web dinamice. La client scriptul paginii web se schimbă în funcție de acțiunile utilizatorului pe această pagină. În acest sistem utilizatorul poate descarcă și modifică conținutul. În partea de server scriptul paginii se schimbă de fiecare dată când se încarcă o pagină web. [anonimizat], [anonimizat]. [anonimizat], ASP, . NET și JSP.

Diferența dintre o pagină web și un website este accea că un site web se referă la o [anonimizat] o colecție de pagini web. Așadar un Website este o colecție de fișiere WWW (World Wide Web), acesta include o pagină de început numită pagină principala. De pe pagină principala putem ajunge la alte pagini de pe website. [anonimizat].

Din moment ce cuvântul "site" [anonimizat]. [anonimizat]. Un site web foarte mare poate fi răspândit pe un număr mai mare de servere în diferite locații geografice.

Un server web este un sistem care găzduiește site-uri web. Serverul rulează un soft de web server cum ar fi Apache sau Microsoft IIS, care îi oferă acces la paginile web de pe Internet. Majoritatea serverelor web sunt conectate la internet printr-o conexiune de doarte mare viteză oferind OX-3 sau transmisiuni de date foarte rapide. O conexiune rapidă la internet le permite serverelor web să suporte mai multe conexiuni în același timp fără să încetinească. Serverele web sunt proiectate să aibă un anumit set de obiective de baza. Acestea sunt:

-acceptarea de conexiuni de rețea de la browsere

-preluarea conținutului de pe disk

-de a rula local programele CGI

-de a transmite datele înapoi la clienți

-de a fi cât mai rapid posibil

Orice calculator poate fi folosit ca server web atât timp cât este conectat la Internet și are software-ul necesar instalat. Însă majoritatea serverelor sunt sisteme de tip 1U rack-mounted. Serverele web găzduiesc de obicei mi multe site-uri web. Unele găzduiesc câteva, în timp ce altele pot găzdui câteva sute. Serverele web care găzduiesc site-uri web pentru mai mulți useri se numesc "shared hosts". Acesta este cel mai comun tip de sulutie de găzduire și este folosit pentru site-uri personale sau site-uri ale companiilor mici. Serverele web care găzduiesc siteuri web doar pentru o singură persoană sau companie se numesc gazde dedicate "dedicated hosts". Aceste tipuri de servere sunt potrivite pentru site-uri cu trafic mare și cîte-uri care au nevoie de modificare de personalizate. Gazdele dedicate sunt, de asemenea, mult mai fiabile decât gazdele comune, din moment ce există mai puține site-uri care pot provoca blocaje sau alte probleme cu serverul.

Să spunem că vrem să accesăm "http://www. website. com/web-server. htm". Browser-ul web sparge url-ul în 3 părți. Aceste sunt: protocolul ("http"), numele serverului ("www. website. com") și numele fișierului ("web-server. htm"). Broswserul comunica cu numele serverului pentru a traduce serverului numele "www. website. com" într-o adresa IP pe care îl folosește pentru a se conecta la server. Astfel browserul a format o conexiune cu serverul pe acea adresa IP. Continuând cu protocolul, browserul trimite o cerere către server, întrebând de fișierul "http: //www. website. com/web-server. htm". Serverul trimite către browser textul HTML pentru pagină web. Browserul citește și formatează pachetul primit de la server și afiseză pagină pe ecranul nostru.

1.1.2. Clasificarea site-urilor web

După scopul utilizării site-urile web sunt de mai multe categorii:

Site-uri de prezentare. Au 5-10 pagini în care se prezintă o firmă, un produs sau un serviciu.

Site-uri de prezentare corporate. Utilizate pentru prezentarea companiilor mari, includ mai multe pagini prin care este prezentată activitatea companiei, proiectele desfășurate. Site-urile pot include și module prin care se facilitează colaborarea cu clienții, distribuitorii, etc.

Site-uri de informare. Sunt create exclusiv pentru a prezenta informații pe o anumită temă.

Site-uri de campanie publicitară. Sunt realizate în aplicații de animație Flash, sunt utilizate pentru a promova un produs sau un serviciu

Site-uri de conținut generat de utilizatori. Majoritatea conținutului acestor site-uri aparține vizitatorilor. De exemplu www. YouTube. com, www. soundcloud. com

Site-uri de rețele sociale. Printre cele mai cunoscute sunt: www. facebook. com, linkedin. com, twitter. com

Site-uri de știri. Aparțin de obicei instituțiilor dar pot fi și alcătuite din știri colectate de la terți furnizori mediafax. com, gandul. info, adevarul. com

Bloguri. Site-uri web create de obicei de o singură persoană, care scrie des articole pe diverse teme. Articolele pot fi comentate de vizitatori. Zoso. ro, wordpress. com,

Magazine online. Create pentru a servi comerțului electronic. Exemple: emag. ro, amazon. com, covera. ro

Platforme de e-learning. Acest tip de site pun la dispoziția utilizatorilor cursuri sau tutoriale gratuite. Exemple: Udemy. com, Coursera. com, iversity. com, FutureLearn. com sau iversity. com.

Portaluri. Sunt site uri care con. in mai multe tipuri de informații, știri, videclipuri, etc. Din această categorie fac parte site uri precum Apropo. ro , realitatea. net, romania. tv, tv5monde. com, yahoo. com.

Motoare de căutare. Sunt utilizate pentru a căuta informații în întregul world wide web, de exemplu www. google. com sau localizat într-o anumită regiune/țară, de exemplu www. yandex. ru, cel mai utilizat motor de căutare din Rusia sau www. baidu. com, cel mai utilizat motor de căutare chinez, google. com, altavista. com, yahoo. com.

Dupa modul în care au fost construite există două tipuri principale de site-uri.

Site-uri statice, care conțin doar fișiere HTML, CSS, Javascript HTML (toate aceste tehnici vor fi descrise mai jos într-o secțiune specială), imagini și text. Acestea sunt cele mai simple site-uri, pentru ca nu necesită cunostințe avansate de programare. Acest tip de site-uri este potrivit pentru prezentarea unei firme mici.

Site-urile web dinamice, cu o structură mai complexa decat cele statice. Site urile web dinamice pot conține un server de aplicații, o bază de date si un limbaj de scripting la nivel de server gen PhP Acest gen de website este recomandat pentru pagini complexe, de genul magazinelor online, blog-urilor dar și site-urilor de prezentare care oferă functionalități sporite.

Arhitectura unui site web dinamic

Lucrarea de față se concentrează asupra site urilor web dinamice construite cu PHP, MySql, Apache (toate aceste tehnici vor fi descrise mai jos într-o secțiune specială) la nivel de server și JavaScript, CSS si la nivel de client. Acestea sunt tehnologii Open Source foarte larg răspandite în randul comunității dezvoltatorilor de site uri web.

Un alt beneficiu important este acela ca aceste tehnologii sunt gratuite.

De aceea, vom considera în contiuare, un site web avand combinația menționată mai sus: PHP, MySql, Apache ( la nivel de server) și JavaScript, CSS si HTML la nivel de client.

De altfel, PHP ( limbaj de scripting) , MySql (baze de date) și Apache ( web server) reprezintă cele mai frecvent utilizate tehnologii din categoria lor.

Fig. 1 – Arhitectura unui site web

Procesul Cerere / Răspuns

La nivelul cel mai de bază, procesul cerere/raspuns este alcatuit dintr-un browser web care cere unui server să-i trimită o pagina web și un server web care îi trimite pagina ( Figura 2).

Fig. 2 – Secvența simplă cerere/raspuns

Pașii din secvența cerere răspuns din figura de mai sus sunt prezentați mai jos:

1. Se introduce http: //site. ro în adresa browserului

2. Browserul caută adresa IP asociată site. ro

3. Browserul emite o cerere pentru pagina principală la site. ro

4. Cererea este transmisă pe internet și ajunge la serverul web al site. ro

5. Serverul web, după ce a primit cererea, caută pagina web pe hard discul local.

6. Pagina web este gasită de serverul web și trimisă browserului

7. Browserul afișează pagina web.

La pasul 2, se observă că browserul web a căutat adresa IP a site. ro. Fiecare computer conectat la internet are atribuită o adresă IP. Dar, in general, accesăm serverele web după nume, cum ar fi site. ro sau google. com. Browserul consultă un serviciu internet numit DNS ( Domain Name Service ) pentru a găsi adresa IP asociată site ului si apoi o utilizează pentru a comunica cu calculatorul.

Fig. 3 – Secvența dinamică cerere/răaspuns

Pașii urmați pentru o secvență dinamică cerere /răspuns ( ilustrați în Figura 3) sunt:

1. Se introduce adresa http: //www. site. ro în browser

2. Browserul caută adresa IP asociată lui site. ro

3. Browserul emite o cerere la această adresă de IP pentru pagina de start a serverului web

4. Cererea străbate rețeaua internet și sosește la serverul web al site. ro

5. Serverul web, primind cererea, aduce pagina de start de pe hard disk.

6. Cu pagina de start în memorie, serverul web observă că este un fisier conținând script PHP și trimite pagina interpretorului PHP.

7. Interpretorul PHP execută codul PHP

8. Unele comenzi PHP pot conține declarații MySql ( cereri de interogări în baza de date) pe care interpretorul PHP le transmite mai departe motorului bazei de date MySQL.

9. Baza de date MySql returneaza rezultatele interogărilor/ declarațiilor MySql înapoi către serverul Web.

10. Interpretorul PHP returnează rezultatele execuției codului PHP împreună cu rezultatele interogărilor din baza de date MySql către serverul Web.

11. Serverul Web returnează pagina către browserul client, pe care o afișează.

Pagina HTML returnată către browser, in exemplul de mai sus, poate conține și cod JavaScript care va fi interpretat local de browserul client.

1.2. Front-end

Dezvoltarea web front-end (client-side) este acea parte a site-ului sau a aplicației web care se folosește de HTML, CSS, JavaScript pentru a face mai ușoară interactionarea directă cu utilizaorii, fiind vizibilă acestuia. Provocarea este aceea că tehnicile utilizate pentru a creea front-endul unui site web se schimbă constant și de aceea dezvoltatorul trebuie să avanseze o dată cu tehnologia.

Obiectivul proiectării unui site este acela de a asigura că, atunci când utilizatorii deschid site-ul, să vadă informația într-un format care este relevant și ușor de citit. Acest lucru este complicat dotorita faptului că utilizatorii folosesc acum o mare valietate de dispozitive cu diferite dimensiuni și rezoluții, obligând astfel proiectantul să ia în considerare aceste aspecte atunci când proiectează site-ul. Dezvoltatorii trebuie să se asigure că site-ul lor va arăta bine în diferite browsere, sisteme de operare și dispozitive.

1.3 Back-end

Back-end-ul este format de obicei din trei părți: un server, o aplicație și o baza de date. În cazul în care dorim să rezervăm un bilet de avion sau să cumbaram bilete la un concert, deschidem de obicei un website și interacționăm cu partea de front-end. După ce am introdus informația, aplicația o stochează într-o baza de date care a fost creată pe server. Toată această informație rămâne în server, astfel încât atunci când ne conectăm din nou în aplicație pentru a inprima biletele, toate informațiile sunt încă acolo, în contul nostru.

Persoana care construiește toate aceste tehnologii și le face să lucreze împreună se numește dezvoltator back-end. Tehnologiile back-end constă, de obcei, în limbaje precum PHP, Ruby, Python, etc. Pentru a face aceste limbaje mai ușor de utilizat, de obicei, acestea sunt îmbunătățite de framework-uri că Ruby on Rails, PHP Cake, și Codul Igniter, toate acestea fac că dezvoltarea să fie mai rapidă și mai ușoară de realizat.

Mulți profesioniști web care sunt începători în domeniu au auzit de WordPress. WordPress este un exemplu bun care arată cum partea de front-end și cea de back-end lucrează împreună, deoarece WordPress este un framework open source construit în limbajul PHP pe care trebuie să îl instalăm pe server împreună cu baza de date. Designerii apoi personalizează aspectul și functionaltatea site-urilor WordPress folosind CSS, jQuery și JavaScript.

2. Comerț electronic

Comerțul electronic, în mod obișnuit scris ca e-commerce sau eCommerce, este tranzacționarea sau facilitarea comercializării în produse sau servicii care utilizează rețele de calculatoare, cum ar fi Internetul sau rețelele sociale online.

Comerțul electronic se bazează pe tehnologii, cum ar fi comerțul mobil, transfer de fonduri electronic, managementul lanțului de aprovizionare, marketing pe Internet, procesare a tranzacțiilor on-line, schimbul electronic de date (EDI), sisteme de gestiune a stocurilor, precum și sisteme automate de colectare a datelor. Comerțul electronic modern folosește de obicei World Wide Web pentru cel puțin o parte din ciclul de viață al tranzacției.

Întreprinderi de comerț electronic pot angaja unele sau toate caracteristicile următoare:

Site-uri web de cumpărături online pentru vânzările directe către consumatori

Furnizarea sau participarea la piețe online, care procesează o parte terță business-to-consumer sau consumator la consumator vânzări

Business-to-business cumpărare și vânzare

Colectarea și utilizarea datelor demografice prin intermediul contactelor web și social media

Business-to-business schimbul electronic de date

Marketing pentru potențialii clienți prin e-mail sau fax (de exemplu, cu buletine de știri)

Angajarea în pretail pentru lansarea de noi produse și servicii

Schimburi financiare online pentru schimburi valutare sau în scopuri de tranzacționare

Alături de comerțul electronic și farmecul său unic, care a apărut treptat, întreprinderea virtuală, banca virtuală, rețea de marketing, cumpărături online, plata și publicitate online, astfel acest vocabular nou, care era nemaiauzit, acum a devenit familiar oamenilor. Comerțul electronic dovedesște astfel că are un impact enorm asupra economiei și asupra societății în ansamblu.

De exemplu, B2B este o afacere în creștere rapidă în lume, care duce la costuri mai mici și apoi se îmbunătățește eficientă economică și, de asemenea, duce la creșterea ocupării forței de muncă.

Pentru a înțelege modul în care comerțul electronic a afectat societatea și economia, avem menționate mai multe aspecte mai jos:

comerțul electronic a schimbat importanță relativă a timpului.

comerțul electronic oferă consumatorului sau întreprinderii diverse informații de care au nevoie, punând la dispoziție informațiile în transparență totală.

De fapt, în timpul activității economice în trecut, întreprindere mare are frecvent avantajul de resurse de informații, și, astfel, în detrimentul consumatorilor. În prezent, informațiile transparente și în timp real protejează drepturile consumatorilor, deoarece consumatorii pot folosi internetul pentru a alege din portofoliul în beneficiul lui însuși. Competitivitatea întreprinderilor va fi mult mai evidentă decât înainte, în consecință, bunăstarea socială ar fi îmbunătățită prin dezvoltarea de comerț electronic.

Noua economie condusă de comerțul electronic schimbă spiritul umanist de asemenea, dar mai presus de toate, este loialitatea angajaților. Din cauza pieței cu o concurență mare, nivelul de profesionalism al angajatului devine crucial pentru întreprindere pe piață de nișă.

Comercianți online adună activitatea și interesele de cumpărare a clienților lor. Această informație este utilizată de marketing online pentru a promova produsele și serviciile relevante. Acest lucru creează un confort suplimentar pentru cumpărători on-line.

Marfă online este căutată, ceea ce o face mai accesibile pentru cumpărători. Mulți dintre comercianții online oferă un mecanism de revizuire, care ajută cumpărătorii să decidă cu privire la produsul de achiziționeze

Comerțul electronic nu este un fel de industrie nouă, dar crează un nou model economic. Cei mai mulți dintre oameni consideră comerțul electronic important și semnificativ pentru societatea economică în viitor.

Acest lucru se datorează faptului că activitatea de rulare a unei afaceri de comerț electronic are un cost foarte scăzut în comparație cu cea de rulare a unui magazin fizic.

În general vorbind, ca tip de procedură activă de afaceri, comerțul electronic va conduce o revoluție fără precedent în lume, influența acestui model a depășind cu mult afacerea comercială în sine.

3. Tehnici de dezvoltare a aplicațiilor web

3.1. Browser

Un browser web este o aplicație utilizată pentru a accesa și vizualiza site-uri web. Browserele web comune includ Microsoft Internet Explorer, Google Chrome, Mozilla Firefox și Apple Safari.

Funcția principala a unui browser web este de transformă HTML (descris mai jos), codul folosit pentru a proiecta paginile web. De fiecare dată când un browser încarcă o pagină web, acesta procesează codul HTML care poate include text, link-uri și referințe către imagini sau alte elemente cum ar fi paginile CCS sau funcțiile JavaScript (descrise și ele mai jos). Browser-ul procesează aceste elemente apoi le afișează în fereastră browser-ului.

Primele browsere precum Mosaic și Navigatorul Netscape, erau simple aplicații care transformau codul HTML, prelucrate sub formă de intrare și cu semne de carte acceptate. În timp ce site-urile web au evoluat, și browserele trebuiau să evolueze pentru a le îndeplini cerințele. Browserele din prezent sunt mult mai avansate, suportând mai multe tipuri de HTML (cum ar fi HTML5 și XHTML), JavaScript dinamic și criptare folosită de site-uri web securizate.

Capacitățile browsere-lor web moderne permit dezvoltatorilor web să creeze site-uri web foarte interactive. De exemplu, Ajax permite unui browser să actualizeze infirmații în mod dinamic pe o pagină web fără să mai fie nevoia de a reîncarcă pagină. Progresele în CSS permit browserelor afișarea unui layout pentru documentele HTML conținând o gama largă de efecte vizuale. Cookie-urile le permite browserelor saisi amintească setările specifice ale fiecărui utilizator pe fiecare site web.

În timp ce tehnologia browser-ului web a parcurs un drum lung de la Netscape, problemele de compatibilitate ale browserelor rămân o problema. Din moment ce browserele folosesc motoare diferite de afișare, un site-urile web pot să nu fie afișate la fel pe browsere diferite. În unele cazuri un website poate funcționa bine pe un browser dar pe altul nu. Prin urmare este un lucru intelizent să instalăm mai multe browsere pe calculatorul nostru pentru a folosi un browser alternativ dacă este nevoie.

3.2. HTML5

3. 2. 1. Introducere

HTML (HyperText Markup Language) este limbajul utilizat în World Wide Web pentru descrierea hipertextelor. Fiind un limbaj de descriere ce conține seturi de simboluri de marcare sau coduri inserate într-un fișier care are că scop afișarea pe o pagină a World Wide Web. Marcajul spune browser-ului web cum să afișeze cuvintele și imaginile pentru utilizator. Fiecare cod de marcaj este menționat că fiind un element sau că fiind o eticheta. Anumite elemente vin în perechi care indică atunci când un anumit efect de afișare începe și când se încheie.

HTML5 este a cincea revizuire și cea mai nouă versiune a standardului HTML. Această oferă caracteristici noi care oferă nu numai un suport media mai bogat dar, de asemenea sporește suportul pentru crearea aplicațiilor web care pot interacționa cu utilizatorul, cu datele locale ale acestuia și cu serverele într-un mod mult mai eficient și mai ușor decât era posibil înainte se apariția lui,

HTML5 reprezintă două concepte diferite. În primul rând este o versiune nouă a limbajului HTML, cu elemente, atribute și comportamente noi. În al doilea rând conține un set mai mare de tehnologii care permite site-uri web și aplicații mult mai puternice și mai diverse. Browserele care susțin HTML5 o fac nativ, fără necesitatea de a instala plugin-uri suplimentare.

Îmbunătățiri aduse de HTML5:

3.2.2. Sintaxa

Cei care au creat standardul au dorit să ușureze munca dezvoltatorilor, păstrând lucrurile cât mai simple:

-pentru că un document HTML5 să fie valid are nevoie de un doctype mult simplificat față de HTML4 sau XHTML (<!DOCTYPE html>)

-unele atribute nu mai sunt obligatorii (type pentru <script> si <!DOCTYPE html> )

-dezvoltatorilor li se permite să omită împrejmuirea atributelor cu ghilimele

Câteva elemente noi în HTML5

Aplicații offline chache

Aplicațiile HTML5 pot rula și offline, această fiind una din noile funcții. Funcția de stocare offline este numită un chache al cererii pentru stocarea de fișiere. Indiferent că resursele necesare pentru a vizualiza pagină de web offline sunt HTML, CSS sau JavaScript, browserul încă mai are acces la fișierele necesare, astfel utilizatorul are acces la aceste fișiere chiar și în mod offline.

Drag & Drop

HTML5 oferă o funcție încorporată care permite dezvoltarea de aplicații interactive, aceasta este denumită Drag & Drop. Cu această funcție avem posibilitatea de a muta orice element în locul dorit.

Geolocation

Geolocation Api este o funcție care permite utilizatorului dacă dorește, să își partajeze locația cu site-uri de încredere. Confidențialitatea fiind importantă pentru această funcție, utilizatorul îi este cerută permisiunea de a partaja locația deoarece browserele nu au voie să trimită informații despre locație la site-uri web fără această permisiune.

Audio și video

Pentru punerea în aplicare a fișierelor multimedia, acestea se incudeau în HTML folosind diferite plugin-uri. Odată cu apariția HTML5 acest lucru poate fi foarte ușor de făcut cu ajutorul elementelor audio și video, fără utilizarea plugin-urilor.

Formulare de introducere

HTML5 introduce mai multe elemente noi de intrare, cum ar fi calendare pop-up, selectoare de culori și multe altele. Folosind aceste funcții se poate crea o formă foarte eficientă cu un control mai bun al intrarii și verificării.

JavaScript APIs

Datorită acestei funcții lucrul cu grafică de pe partea de client a devenit mult mai ușor deoarece în HTML5 s-a adăugat elementul canvas și un APOI special pe JavaScript pentru a funcționa cu el. Canvas este o suprafață dinamică peste care se poate coda desenarea obiectelor. Introducerea tag-ului svg ne permite introducerea graficii vectoriale, descrierea standardelor web relevante precum SVG, Scalable Vector Graphics. Au fost schimbate și o serie de mici detalii precum posibilitatea de a face conținutul direct editabil în locația curentă cu ajutorul atributului Content Editable.

3.3. CSS3

3.3.1. Introducere

În timp ce HTML-ul este folosit pentru a structura conținutul unui fișier, este nevoie de un instrument care să îl formateze, acest instrument este CSS (Cascading style Sheet) . CSS este un limbaj de stil care definește "layout-ul" pentru documente HTML. Unele din beneficiile concrete ale acestui limbaj sunt:

-abilitatea de a controla layout-ul documentelor pe o singură pagină de stiluri

-abilitatea de a aplică layouturi diferite pentru tipuri de media diferite precum ecran, printrare, etc.

-proceduri numeroase și sofisticate

CSS oferă mai mult control al aspectului unei pagini web, celui care o creează decât designer-ului de browser sau celui care o vizionează. Cu CSS, sursele de definire a stilului peru un document dat sunt în următoarea ordine de prioritate:

-atributul stil este pe un element tag individual

-elementul de stil care definește o foaie de stil conține declarații de stil sau elemente de tip link care se leagă la un document separat, care conține elementul de stil; într-o pagină web elementul stil este plasat între instructiunea titlu și instructiunea corp.

-o foaie de stil importată, folosind notația CSS@import pentru a importă automat și pentru a uni o pagină de stil externă cu pagină de stil curentă

-atributele de stile specificate de utilizator browserului

-foaia de stil implicită asumată de către browser

În general creatorul paginii de stil are prioritate dar este rcomandat că browserele să ofere modalități utilizatorului să treacă peste atributele de stil în anumite momente. Creatorul web trebuie să testeze pagină în diferite browsere.

3.3.2. Sintaxa

Un cod CSS cuprinde reguli de stil care sunt interpretate de browser și apoi aplicate la elementele corespunzătoare din document. O regulă de stil este formată din trei părți:

-selectorul ( Un selector este o eticheta HTML la care va fi aplicat un stil. Acest lucru poate fi orice eticheta, de exemplu: <h1 > sau < table> etc)

-proprietate ( O proprietate este un tip de atribut al tag-ului HTML. Toate atributele HTML sunt transformate în proprietăți CSS. Ele pot fi de culoare, de frontieră, etc. )

-valoare (Valorile sunt atribuite proprietăților. De exemplu, proprietatea de culoare poate avea o valoare sau poate fi roșu sau poate fi # F1F1F1. )

Putem pune sintaxa de stil CSS Rule dupa cum urmeaza:

Selector { property: value }

Putem defini table border după cum urmează:

table{ border: 1px solid #C00; }

Aici table este un selector și border este o proprietate, are valoarea dată de 1 px solid #C00, această fiind valoarea acestei proprietăți.

Tipuri de selectori:

Acesta este același selector pe care l-am văzut mai sus. Încă o dată un exemplu prin care dăm o culoare fiecărei rublici:

h1 {

color: #36CFFF; }

Selectori Universali

Decât să selecteze elementele de un anumit tip, selectorul universal potrivește într-un mod simplu numele fiecărui tip de element.

* {

color: #000000;

}

Această regulă face conținutul fiecărui element din documentul nostru să fie negru.

Selectoare descendente

Să presupunem să vrem să aplicăm o regulă de stil la un anumit element numai atunci când acesta se află în interiorul unui anumit element. Așa cum veți putea observă în exemplul urmatot, regulă de stil se va aplica elementului doar când acesta se află înăuntrul tag-ului:

ul em {

color: #000000;

}

Selectoare de clasă

Putem defini reguli de stil bazate pe atributul de clasă al elementelor. Toate elementele care au această clasă vor fi formatate în conformitate cu regula.

. black {

color: #000000;

}

Această regulă transformă conținutul în negru pentru fiecare element cu atribut de clasă setat la negru din document. Putem face un exemplu mai special:

h1. black {

color: #000000;

}

Această regulă transformă conținutul în negru numai pentru elementele

cu atribut de clasă setat pe culoarea negru.

Putem aplica mai mult decât un selector de clasa pentru elementul dat. De exemplu:

<p class="center bold">

Acest paragraf va fi stilizat de clasele center si bold.

</p>

Selectoare ID

Putem defini reguli de stil bazate pe atributul id al elementelor. Toate elementele care au acel id vor fi formatate în conformitate cu regula definită:

#black {

color: #000000;

}

Următoarea regulă transformă conținutul în negru pentru fiecare element cu atribut id setat la negru, regăsit în document.

h1#black {

color: #000000;

}

Această regulă transformă conținutul în negru numai pentru elementele care au atributul id setat la negru.

Adevărată putere a selectorilor de id este atunci când acestea sunt folosite ca fundament pentru selectorii de descendența, de exemplu:

#black h2 {

color: #000000;

}

Reguli de stil multiple

Este posibil să trebuiască să definim reguli de stil multiple pentru un singur element. Putem defini aceste reguli pentru a combina mai multe proprietăți și valori corespunzătoare într-un singur bloc definit ca în exemplul următor:

h1 {

color: #36C;

font-weight: normal;

letter-spacing: . 4em;

margin-bottom: 1em;

text-transform: lowercase;

}

Aici toate proprietățile și perechile de valori sunt separate de "; ". Avem posibilitatea de a le păstra într-o singură linie sau pe mai multe linii. Pentru o mai bună lizibilitate este indicat să le mentinem în linii separate.

Gruparea selectorilor

Avem posibilitatea să aplicăm un stil mai multor selectori dacă dorim. Tot ce trebuie să facem este să separăm selectorii cu virgulă așa cum puteți observa și în exemplul următor:

h1, h2, h3 {

color: #36C;

font-weight: normal;

letter-spacing: . 4em;

margin-bottom: 1em;

text-transform: lowercase;

}

Această regulă va defini stilul aplicabil elementelor h1, h2 și h3. Ordinea listei este irelevantă. Toate elementele din selector vor avea declarațiile corespunzătoare aplicate acestora.

Putem combina împreună diferite clase de selectori așa cum se regăsește în exemplul de mai jos:

#content, #footer, #supplement {

position: absolute;

left: 510px;

width: 200px;

}

3.4. JavaScript

3.4.1. Introducere

JavaScript este un limbaj de scripting, un limbaj de programare care este interpretat de browser atunci când pagină web se încarcă. JavaScript a fost creat de BrendanEich în cadrul companiei Netscape, fiind introdus în decembrie 1995 sub numele de LiveScript. Însă a fost redenumit foarte repede în JavaScript.

Faptul că programul de interpretare JavaScript este motorul browserului în sine, poate prezenta unele neconcordanțe în modul cum pagină rulată cu JavaScript poate să se comporte în diferite browsere. Dar tehnici bine stabilite și librăriile JavaScript, cum ar fi jQuery au că scop să ne ușureze munca.

JavaScript se execută pe partea de client, în browser. Dacă utilizăm un browser mai vechi, fără suport de JavaScript, sau dacă alegem pur și simplu să dezactivăm JavaScript în browser-ul nostru, atunci scripturile JavaScript nu vor merge. Spre deosebire de alte limbaje precum PHP care se execută pe server, când este vorba de JavaScript nu știm niciodată complet sigur care va fi impactul pe care îl va avea pe diferite browsere, depinzând și de faptul dacă utilizatorul oprește suportul JavaScript.

Un avantaj al JavaScript este acela că nu putem accesa sau afecta resurlsele dintr-un alt domeniu de internet prin folosirea lui. Acest lucru se numește "Politica aceeași origini " JavaScript având acces numai la resursele de pe site-ul nostru. De asemenea cu JavaScript nu se pot accesa resursele serverului, cum ar fi baze de date, pentru că acesta este un limbaj pe partea de client, este limitat la ceea ce se poate face în client, care este de obicei mediul de browser.

Funcționalități ale JavaScript:

Pune text într-o pagină on-the-fly HTML

Acesta funcționalitate vine în ajutorul nostru în situația în care să zicem un utilizator tocmai a completat un chectionar pe pagină noastră iar noi dorim să îi afișăm un mesaj de mulțumire. Am putea să lăsăm serverul să facă asta dar în cazul în care site-ul web este foarte ocupat iar serverul procesează sute de chestionare, ar dura ceva timp pentru că acest mesaj de mulțumire să îi fie afișat utilizatorului. Astfel JavaScript poate să ne salveze pentru că acesta rulează în browser-ul utilizatorului, unde putem adaugă note de mulțumire care vor fi afișate pe pagină aproape instantaneu.

Face paginile web receptive

Mediile web sunt dinamice, mereu se întâmplă ceva de exemplu atunci când pagină web este încărcată în browser, utilizatorul face clic pe un buton sau mută mouse-ul peste un link, etc. Acestea sunt numite evenimente. Cu ajutorul JavaScript putem face că pagină să reacționeze imediat la aceste evenimente în modul în care ne dorim. De exemplu, prin afișarea sau ascunderea elementelor specifice pe pagină, prin schimbarea culorii de fundal, etc.

Detectează vizitatorii browser-ului

Prin utilizarea JavaScript avem posibilitatea de a detecta vizitatotii browser-ului sau, și mai mult, putem detecta ce caracteristici acceptă sau nu acceptă un anumit browser. În funcție de browser și de capacitățile sale, putem alege să încărcăm o pagină adaptată în mod specific la acest tip de browser.

Creează cookie-uri

Cookie-urile reprezintă în general o cantitate mică de date ce este transmisă de la un expeditor la un destinatar, fiind creat și interpretat de expeditor și păstrat de destinatar pentru că apoi să îl trimită înapoi dacă expeditorul o cere. Astfel un script JavaScript este foarte bun în cazul în care doriți să creați cookie-uri deoarece vizitatorii se pot bucură de o experiență personalizată dată următoare când vor accesa site-ul dumneavoastră.

Validează datele formularelor web

Avem posibilitatea de a utiliza un script JavaScript pentru a valida datele din formular înainte de trimiterea formularului către server. Acest lucru salvează serverul de la procesarea suplimentară.

Și multe alte funcționalitați

Învățând JavaScript ne va pormite să adăugăm efecte de animație paginilor web fără să folosin plugin-uri externe Flash, folosind cele mai noi actualizări ale HTML5 cum ar fi canvas (pentru a desena direct pe pagină web ) și funcția drag și drop, să integrăm pe site-ul web servicii web externe precum Facebook, Twitter, etc.

3.4. 2. Sintaxa

Iată câteva exemple de sintaxa:

var x; // declararea unei variabile

x = 3 + y; // atribuirea unei valori variabilei `x`

moo (x, y); // apelarea funcției moo care are parametrii `x` și `y`

obj. bar (3); // apelarea metodei `bar` a obiectului `obj`

// O instrucțiune condiționată:

if (x === 0) { // Este `x` egal cu zero?

x = 123;

}

// definirea funcției `baz` cu parametrii `a` și `b`

function baz (a, b) {

return a + b;

}

//Un singur semn de egal ( = ) este folosit pentru a atribui o valoare unei variabile.

//Un semn triplu este egal cu ( === ) este folosit pentru a compară două valori.

Instrucțiune versus Expresii

Pentru a înțelege sintaxa JavaScript trebuie să știm că include două categorii majore: instrucțiuni și expresii.

Instrucțiunile "fac lucruri". Un program este o secvență de instrucțiuni. Iată un exemplu de instrucțiune, unde se declara (creează) variabilă moo:

var moo;

-Expresiile produc valori, Ele sunt argumente funcționale. Iată un exemplu de expresie:

2 * 5

Diferența dintre instrucțiuni și expresii este cel mai bine ilustrată de faptul că JavaScript are două moduri diferite de a face o instrucțiune if-then-else.

Primul mod este ca o instrucțiune:

var x;

if (y >= 0) {

x = y;

} else {

x = -y;

}

Iar cel de-al doilea este ca o expresie:

var x = y >= 0 ? y: -y;

De fiecare dată când JavaScript așteaptă o instrucțiune putem să folosim și o expresie, de exemplu: moo (7, 1); întreagă linie fiind o instrucțiune dar funcția apelată este o expresie.

Comentariile

JavaScript are două tipuri de comentarii:

-comentarii pe o singură linie care încep cu // și se termină la sfârșitul liniei:

x++; // comentariu pe o singură linie

-comentarii pe mai multe linii delimitate de /* și */:

/* Acesta

este

un comentariu

pe mai multe linii

*/

Variabile și atribuiri

În JavaScript variablele sunt declarate înainte să fie folosite:

var moo; // declararea variabilei "moo"

Putem declara o variabilă și îi putem atribui o valoare în același timp:

var moo = 6;

De asemenea putem atribui o valoare unei variabile existente:

moo = 4; // schimbă variabilă moo

Operatori de atribuire compuși

Există operatori de atriburire compuși că de exemplu +=. Următoarele două atribuiri sunt echivalente:

x += 1;

x = x + 1;

Identificatori și numele variabilelor

Identificatorii sunt nume care joacă diferite roluri sintactice în JavaScript. De exemplu numele unei variabile este un identificator. Identificatorii sunt case-sensitive. În mare parte primul caracter al unui identificator poate să fie orice litera Unicode, un semn dolar ($) , sau o subliniere (_). De exemplu:

arg0

_tmp

$elem

π

Următorii identificatori sunt cuvinte rezervate-ele fac parte din sintaxa și nu pot fi folosite că și nume de variabile (sunt incluse și nume de funcții și nume de parametrii) :

Următorii trei identificatori nu sunt cuvinte rezervate dar trebuie tratate că și cum ar fi:

3. 4. 3. Funcțiile

O modalitate de definire a funcțiilor este declararea funcțiilor.

function add (param1, param2) {

return param1 + parăm2;

}

Codul de precedent definește o funcție, de adăugare, care are doi parametri, param1 și param2, și returnează suma parametrilor. Acesta este modul în care funcția trebuie apelată:

> add (6, 1)

7

> add ('a', 'b')

'ab'

Un alt mod de a defini add () este prin atribuirea unei expresii de funcție variabilei add:

var add = function (param1, param2) {

return param1 + param2;

};

O expresie a unei funcții produce o valoare și poate fi folosită pentru a trece direct de funcții ca argumente ale altor funcții:

someOtherFunction (function (p1, p2) {… });

Declarațiile de funcții sunt arborate:

Declarațiile de funcții sunt arborate, adică deplasate în întregime la începutul domeniului de aplicare curent. Asta permite să ne referim la funcții care sunt declarare ulterior:

function moo () {

bar (); // în regulă, bar este arborat

function bar () {

}

Declarațiile var nu sunt arborate, sarcinile îndeplinite de acestea nu sunt recunoscute înainte:

function moo () {

bar (); // nu este în regulă, bar este încă nedefinit

var bar = function () {

//…

};

}

Variabila specială arguments

Putem apela orice funcție din JavaScript cu un număr arbitrar de argumente. Funcția va face toți parametrii disponibili cu ajutorul variabilei speciale arguments. arguments arată ca un tablou (array) dar nu are nici una dintre metodele de tablou.

Exemplu:

> function f () { return arguments }

> var args = f ('a', 'b', 'c');

> args. length

3

> args[0] // citește elemetul la index 0

'a'

Prea multe sau prea puține argumente

Să folosim următoarea funcție pentru a explora modul în care prea multe sau prea puține argumente sunt manipulate în JavaScript:

function f (x, y) {

console. log (x, y);

return toArray (arguments);//intoarce un tablou cu argumentele

// se va explica mai jos

}

Parametrii adiționali vor fii ignorați (cu excepția argumentelor)

> f ('a', 'b', 'c')

Afișează a b

Întoarce tabloul [ 'a', 'b', 'c' ]

Parametrii care lipsesc vor primi valoarea undefined:

> f ('a')

Afișează a undefined

Întoarce tabloul [ 'a' ]

> f ()

Afișează undefined undefined

Întoarce tabloul vid [ ]

Convertirea argumentelor într-un Array :

arguments nu este un tablou (array), seamănă cu un tablou dar are o lungime de proprietate și putem accesa elementele prin indici între paranteze drepte. Nu putem să eliminăm elementele sau să invocăm vreo metodă de Array în ea. Uneori avem nevoie să convertim argumentele într-un tablou, asta este exact ce face și funcția următoare:

function toArray (arrayLikeObject) {

return Array. prototype. slice. call (arrayLikeObject);

}

3. 5.  PHP

3.5.1. Introducere

PHP (PHP: Hypertext Preprocesor) este, probabil, cel mai popular limbaj de scripting de pe internet permițând modificarea paginilor web înainte că acestea să fie transmise de server către browserele utilizatorilor. Cu PHP putem crea pagini de utilizator și parole de conectare, putem verifică detaliile unui form, crea formulare, galerii de imagini, și multe altele. Dacă ați ajuns pe o pagină web care se termină în PHP, atunci autorul a scris un cod de programare pentru a îi da viață codului HTML.

PHP se folosește prin inserarea de cod PHP în interiorul HTML, formând un site web. Atunci când un client (oricine pe web) accesează o pagină web care conține acest cod, serverul îl execută. De accea, pentru a testa PHP la nivel local trebuie să instalăm propriul server deoarece server-ul este creierul, nu browser-ul. Utilizatorii nu au nevoie de plugin-uri speciale sau altceva pentru a vedea codul PHP în acțiune, ajungând la utilizator cu ajutorul HTML.

PHP este un limbaj de scripting ca și JavaScript. Asta înseamnă că codul nu necesită compilare înainte să fie folosit fiind procesar în zbor în funcție de necesități. Caracteristicile limbajului PHP sunt: simplitatea, eficiența, securitatea, flexibilitaea și familiaritatea.

3.5.2. Utilizări comune ale PHP:

– PHP îndeplinește funcții de sistem adică poate crea, deschide, citi, scrie și închide fișiere de pe un sistem

– PHP poate manipula formulare, adică poate adună date din fișiere, salva datele într-un fișier, printr-un email poate trimite date și poate de asemenea să returneze datele către utilizator

– adăugare, ștergere sau modificare a elementelor din baza de date prin intermediul PHP

– accesarea variabilelor cookies și setarea lor

– restricționarea urilizatorilor pentru că aceștia să aibă acces la anumite pagini de pe site.

– poate cripta date

Pentru a putea dezvolta și rula pagini web PHP trebuie că trei componente vitale să fie instalate:

Serverul Web- PHP va lucra cu aproape toate software-urile de web server, inclusiv Microsoft Information Server (IIS), dar cel mai des polosit este Apache Server.

Baza de date- PHP va lucra cu aproape toate softurile de baze de date inclusiv Oracle și Sybase, dar cel mai frecvent utilizat este MySQL.

PHP Parser – Pentru a procesa instrucțiuni de script PHP, un parser trebuie să fie instalat pentru a genera output-ul HTML care poate fi apoi trimis către browser.

PHP acționează că o extensie a serverului web apelată ori de câte ori o pagină PHP este accesată. Această extensie procesează codul sursă din pagină iar apoi trimite rezultatul înapoi la serverul web, ajungând în final la browserele utilizatorilor.

3.5.3. Sintaxa

Un script PHP poate fi plasat oriunde în document și este de forma:

<?php
//cod PHP
?>

Extensia fișierelor PHP este ". php". Un document PHP conține de obicei tag-uri HTML și scripturi PHP. Mai jos avem un exemplu de fișier php, cu un script php care folosește o funcție integrată php pentru a afișa textul " Bună ziua ! "

<!DOCTYPE html>

<html>

<body>

<h1>o pagina PHP</h1>

<?php

echo "Buna ziua!";

?>

</body>

</html>

Comentarii:

Un comentariu este o porțiune din progam care nu este citită/executată că parte din program. Singurul scop al acestor linii este de a fii citite de persoana care se uită la cod. În PHP sunt două formate de comentarii:

Comentarii pe o singură linie -folosite în general pentru explicații sau note scurte relevante. Iată un exemplu:

<?

# Acesta este un comentariu

# Aceasta este a doua linie de comentariu

// Si acesta este un comentariu

print "Exemplu cu comentarii pe o singura linie";

?>

Comentarii pe mai multe linii -folosite în general pentru a scrie algoritmi în pseudocod și explicații mulți mai detaliate. Iată un exemplu:

/* Acesta este un comentariu pe mai multe linii

Autor: Valentina Florina Stancu

Scop: exemplu de comentariu pe mai multe linii

Subiect: PHP

*/

print "Un exemplu de comentariu pe mai multe linii";

?>

PHP nu este sensibil la spațiile goale:

Instrucțiunile sunt expresii terminate în "; "

O instrucțiune în PHP este orice expresie care este urmată de "; ". Orice secvență de instrucțiuni PHP vaide care este închisă de tag-uri PHP, este un program PHP valid. Iată o instrucțiune tipică în PHP care, în acest caz, atribuie un șir de caractere unri variabile numită $salut:

$salut = "Bine ai venit, PHP!";

3.5.4. Tipuri de variabile PHP

Principala modalitate de a stoca informații în mijlocul unui program PHP este prin utilizarea unei variabile. Iată câteva lucruri importante despre variabile:

-toate variabilele din PHP sunt notate cu semnul " $ "

-valoarea unei variabile este valoare celei mai recente atribuiri a să

-variabilele pot fi declarate înainte de a fi alocate, dar nu este neapărat necesar

-variabilele în PHP nu au tipuri intrinseci, nu se știe dinainte dacă o variabilă va fi utilizată oentru a stoca un număr sau un șir de caractere

-variabilele folosite înainte de a primi valori au valori default

-atunci când este necesar, PHP poate converti tipurile de variabile

PHP are în total opt tipuri de date folosite pentru a construi variabilele, acestea sunt:

Integer

Numerele întregi fără zecimale, că 12345. Sunt cel mai simplu tip, curespunde cu numere întregi atât negative cât și pozitive putând fi în decimal, octal, și hexazecimal. Integer pot fi atribuite variabilelor sau pot fi folosite în expresii că:

$int_var = 12345;

$alt_int = -12345 + 12345;

Double

Numerele cu zecimale, ca 12, 345. Ca standard, doubles afișează numărul minim de zecimale necesar, de exemplu:

$multe= 2. 2888800;

$multe_2 = 2. 2111200;

$putine = $multe + $multe_2;

print ("$multe + $multe= $putine

");

?>

Output-ul va fi: 2. 28888 + 2. 21112 = 4. 5

Boolean

Au doar două valori posibile, adevărat sau fals. PHP oferă două constante folosite special pentru acest tip: TRUE și FALSE, care pot fi folosite astfel:

if (TRUE)

print ("Asta se va afișa

");

else

print ("Asta nu se va afișa niciodată

");

NULL, este un tip special care are doar o valoare NULL.

$a_var = NULL;

String

Sunt secvențe de caractere, de exemplu " PHP suportă operatori string. Iată exemple valide pentru acesta:

$string_1 = "Ana are mere";

$string_2 = "Ana are mere, pere și gutui";

$string_39 = "Ana are treiceci și nouă de fructe";

$string_0 = ""; // un sting cu zero caractere

Array

Este compus din mai multe elemente, fiecare element este o pereche formată dintr-o cheie și o valoare ( cheile pot fi întregi sau stringuri, în timp ce valorile pot avea orice tip de date).

Obiectele sunt o colecție de variabile și funcții.

Resursele, sunt variabile speciale care păstrează referințe ale resurselor externe ale PHP-ului, de exemplu conexiunile cu baza de date.

În PHP, variabilele pot fi declarate oriunde în script. Scopul unei variabile este în partea de script unde variabilă va fi folosită. De aceea PHP are trei tipuri de variabile diferite: locale, globale și statice.

O variabilă declarată în afară unei funcții are un scop GLOBAL și poate fi accesată numai din afară funcției.

<?php

$x = 5; // global

function myTest () {

// folosind x in interiorul acestei functii, o eroare va fi generata

echo "<p> Variabila x din functie este: $x</p>";

}

test ();

echo "<p>Variabila x din afara functiei este: $x</p>";

?>

O variabilă declarată în interiorul funcției are scop local și poate fi accesată în acea funcție.

<?php

function test () {

$x = 5; // local

echo "<p>Variabila x din interiorul functiei este: $x</p>";

}

test ();

// folosirea variabilei x in afara functiei va genera o eroare

echo "<p>Variabila x din exteriorul functiei este: $x</p>";

?>

3.5.5. Operatori PHP

Operatorii sunt folosiți pentru a efectua operații asupra variabilelor și a valorilor. Limbajul PHP suportă următoarele tipuri de operatori:

-operatori aritmetici

-operatori de comparație

-operatori logici

-operatori de atribuire

-operator ternar

Operatori aritmetici:

adunare $a + $b

scădere $a – $b

înmulțire $a * $b

împărțire $a / $b

modulo $a % $b

operator de incrementare cu 1 $a ++

operator de decrementare cu 1 $a–

Operatori de comparație:

Egalitate $a==$b adevărat dacă $a este egal cu $b

Identic $a===$b adevărat dacă $a este egal cu $b și sunt de același tip

Inegalitate $a!=$b adevărat dacă $a este diferit de $b

inegalitate $a<>$b adevărat dacă $a este diferit de $b

neidentic $a!==$b adevărat dacă $a este diferit de $b și nu sunt de același tip

mai mic $a<$b adevărat dacă $a este mai mic decât $b

mai mare $a>$b adevărat dacă $a este mai mare decât $b

mai mic sau egal $a<=$b adevărat dacă $a este mai mic sau egal cu $b

mai mare sau egal $a>=$b adevărat dacă $a este mai mare sau egal cu $b

Operatori logici:

NOT !$a adevărat dacă $a nu este adevărat

AND $a && $b adevărat dacă și $a și $b sunt adevărat

AND $a and $b adevărat dacă și $a și $b sunt adevărate

OR $a || $b adevărat dacă ori $a ori $b sunt adevărate

OR $a or $b adevărat dacă ori $a ori $b sunt adevărate

XOR $a xor $b adevărat dacă ori $a ori $b sunt adevărate dar nu amândouă

Operatori de atribuire:

Operatorul principal de atribuire este " = ", acesta înseamnă asocierea operatorului din stânga cu valoarea expresiei din dreapta. De exemplu:

$a=5;

$a+=4; //atribuie lui $a valoarea 9, acelasi lucru cu $a=$a+4

$b="Buna ";

$b. ="seara"; // atribuie lui $b valoarea "Buna seara", acelasi lucru cu $b=$b. "seara";

Operator ternar

Acesta evaluează o expresie pentru a vedea dacă este adevărat sau fals apoi execută una din cele două instrucțiuni în funcție de rezultatul evaluării. Acest operator are sintaxa " ?: "

3.5.6. Functii PHP

O funcție este o parte autonoimă din cod, care realizează o anumită sarcina. Beneficiul principal al folosirii funcțiilor este acela că ele sunt reutilizabile; Dacă trebuie trebuie să efectuăm un task de mai multe ori, o funcție este soluția ideală. Funcțiile pot fi definide de noi sau de PHP (PHP are o colecție bogată de funcții integrate).

Definirea unei funcții

Exemplu:

function addNumere ($num1, $num2) {

$result = $num1 + $num2;

return $rezultat;

}

Cuvântul cheie, function, îi spune limbajului PHP despre ceea ce urmază adică definirea unei funcții. Numele funcției este addNumere. În interiorul parantezelor se află argumentele (parametrii), valorile pe care i le vom da funcției atunci and o apelăm. Funcțiile nu trebuie să accepte argumente, în acest caz parantezele ar fi goale. Aici variabilele $num1 și $num2 sunt nume arbritrare și sunt folosite înăuntrul funcției. Trebuie reținut că cele două instrucțiuni dinăuntrul funcției sunt delimitate de paranteze. Instrucțiunile sunt foarte simple, prima ia valoarea funcției că $num1 și $num2, le însumează și păstrează rezultatul în $result.

În ceea ce primește argumentele, funcțiile de asemenea nu trebuie să returneze valori. Ele pot fi folosite pentru un calcul care va fi de printat. Însă este important să înțelegem conceptul de returnare a unei valori de la o funcție din moment ce este un aspect de baza.

Funcțiile nu vor fi executate până când nu scriem un cod care să îi spună să facă asta. Pentru a apela o funcție simplă putem folosi o instrucțiune că aceasta:

$total = addNumbers ($imprumutSuma, $dobandaSuma);

Asta înseamnă că, codul de după = apelează funcția și că și consecință codul rulează. Valorile date funcitiei sunt pătrate în cele două variabile $imprumutSuma și $dobandaSuma. Aceste nume nu corespund cu numele argumentelor folosite atunci când definim funcția ($num1 și $num2). Din moment ce în funcție a fost folosit return mtotalul păstrat în $result va fi trimis înapoi la instructiunea care execută funcția. În acest caz, valoarea va fi atribuită lui $total.

Atunci când denumim o funcție, numele ar trebui să fie unic. Poate fi format din litere, numere și (_) dar nu poate începe cu o cifra (aceleași reguli se aplică și la denumirea unei variabile). De exemplu addNumere și add_numere sunt nume de funcții valide, add numere nu este, nici 12add_numere nu este deoarece începe cu o cifra. Denumirea unei funcții abs123 este din punct de vedere al sintaxei corect dar numele ar trebui să aibă și sens.

Conceptele cheie ale funcțiilor:

Ușor de întreținut- utilizăm funcții pentru a nu fi nevoie să repetăm codul pentru niște task-uri comune.

Refolosibile- funcțiile pot fi folosite atât în scripturi indiviuale cât și în scripturi multiple.

Flexibile-funcțiile sunt flexibile, acceptând un număr specific de argumente sau o variabilă argumente de numere cu func_num_args () și func_get_arg ().

Lizibilitate îmbunătățită -separarea funcționalității în funcții îmbunătățește lizibiltatea.

3.6. Baze de date

3.6.1. Introducere

O baza de date este o colecție de informații organizate pentru a asigura o recuperare eficientă. Informația colectată poate fi în tot felul de formate (electroni, printat, grafic, audio, statistic, etc. ) . Există baze de date fizice și cele electronice.

O baza de date ar putea fi la fel de simplă că o aranjarea numelor dintr-o agenda telefonică în ordine alfabetică sau complexă că o baza de date care furnizează informații într-o combinație de formate.

Baze de date în programarea web

O baza de date web este un termen larg pentru gestionarea datelor în mediul online. Această ne oferă posibilitatea de a construi propia noastră baza de date fără să fim o persoană cu background tehnic. Baza de date web este folosită pentru sondaje, formuri de păreri, pagină de contact, conectie de DVD-uri, invitații la petrecerei, etc.

3.6.2. MySQL

MySQL este un sistem open source de management al bazelor de date relaționale (SGBDR) bazat pe Structurat Query Language (SQL).

MySQL rulează pe aproape toate platformele inclusiv Linux, UNIX și Windows. Cu toate că poate fi utilizat într-o gama largă de aplicații, MySQL este cel mai des asociat cu aplicații web și esteo componentă importantă a stack-ului open source LAMP. LAMP este o platforma de dezvoltare web care folosește Linux că și sistem de operare, Apache că și Web server, MySQL că sistem de baze de date relațional și PHP că și limbaj de script orientat pe obiecte (uneori se poate folosi Perl sau Python în locul PHP)

MySQL este un sistem de management al bazelor de date

Așa cum am spus și mai devreme, o baza de date este o colecție structurată de date. O baza e date poae fi orice de la o simplă lista de cumpărături până la o galerie de imagini su la cantități mari de informații ale unei rețele de companii. Pendru a adaugă, accesa și procesa datele păstrate într-o baza de date a calculatorului, este nevoie de un sistem dede management al bazelor de date precum MySQL Server. Din moment ce computerele sunt foarte bune la manevrarea unor cantități mari de date, sistemele de managent al bazelor de date joacă un rol principal în această ecuație, că un instrument de sine stătător dar și că parte din alte aplicații.

Bazele de date MySQL sunt relaționale

O baza de date relaționale stochează date în tabele separate, în loc să o stocheze într-un camera de stocare mai mare. Structurile bazei de date sunt organizate în fișiere fizice optimizate pentru viteză. Modelul logic, cu obiecte că și bazele de date, tabele, rânduri și coloane, acestea oferă un mediu se programare flexibil. Putem seta reguli ale relațiilor dintre diferite tipuri de date, că și unu-la-unu, unu -la-mulți, unice, necesare sau opționale și pointeri între diferite tabele. Baza de date impune aceste reguli, astfel încât cu o baza de date bine concepută, aplicația noastră nu va întâlni date inconsistente, duplicate sau chiar lipsa acestora.

Partea SQL din "mySQL" reprezintă "Structured Query Language". SQL este cel mai folosit și standardizat limbaj folosit pentru a accesa bazele de date. În funcție de mediul de programare, putem folosi SQL direct (de exemplu pentru a genera rapoarte) , încorpora instrucțiuni SQL într-un cod scris în alt limbaj sau într-un limbaj specific API care ascunde sintaxa SQL.

SQL este definit de standardul ANSI / ISO. Standardul SQL a evoluat din 1986 și există deja câteva versiuni ale sale.

Software-ul MySQL este Open Source

Open Source înseamnă că este posibil că oricine să folosească și să modifice software-ul. Oricine poate descarcă software-ul MySQL de oe internet fără să plătească ceva. Dacă doriți puteți studia codul sursă și să îl modificați pentru a se potrivi nevoilor dumneavoastră. Software-ul MySQL folosește GPL (GNU General Public License) pentru a defini ceea ce putem sau nu putem să facem cu software-ul în diverse situații.

Serverul de baze de dare MySQL este voarte rapid, de încredere, scalabil și ușor de utilizat

MySQL poate rula confortabil pe un computer desktop sau pe un laotio, alături de alte aplicații, servere web, acesta necesitând puțină atenție. Dacă ați dedică o întreagă mașinărie lui MySQL, îi puteți ajusta setările pentru a beneficia de toată memoria, de puterea CPU și de capacitatea I/O disponibilă. MySQL se poate folosi bineînțeles și într-o rețea de mașinării.

My SQL Server a fost inițial dezvoltat pentru a gestiona baze de date mari, mult mai rapid decât soluțiile existente și a fost folosit cu succes în medii de producție foarte solicitante. Astăzi, după o dezvoltare constanța, MySQL server oferă un set de funcții foarte bogat și util.

MySQL Server lucrează în sisteme embedded client/server

Software-ul de baze de date MySQL este un sistem client/server care constă într-un server SQL mulți-threaded care suportă partea de back-end, diverse programe și librării client, unelte administrative, și o gama variată de interfețe de programare a aplicațiilor (API).

Caracteristici ale MySQL:

-este scris în limbajele de programare C și C++

-este testat pe o varietate mare de compilatoare

-se poate utiliza pe diferite platforme de exemplu Oracle Linux, Solaris, Ubuntu, etc.

-folosește motoare de stocare tranzacționale și nontranzactionale

-implementează funcții SQL folosind o librărie de clase foarte bine optimizată fiind foarte rapida

3.6.3. Conectarea la o baza de date prin PHP

Pentru a realiza conectarea la o baza de date trebuie să stabilim conexiunea către MySQL dintr-un script PHP. Funcția cu care ne conectăm la MySQL se numește mysql_connect. Această funcție returnează o resursă care este un pointer pentru conexiunea cu baza de date.

<?php

$username = "numele_tau";

$password = "parola_ta";

$hostname = "localhost";

//conexiunea la baza de date

$dbhandle = mysql_connect ($hostname, $username, $password)

or die ("Conectarea la MySQL a esuat");

echo "Conectat la MySQL<br>";

?>

Daca totul merge bine ar trebui sa vedem mesajul "Conectat la MySQL" atunci cand rulam scriptul. Odata ce ne-am conectat, trebuie sa selectam o baza de data cu care vrem sa lucram. Sa spunem ca baza de date se numeste "exemple". Pentru a putea incepe lucrul cu baza de date avem nevoie de functia mysql_select_db () :

<?php

//selecteaza baza de date cu care vrei sa lucrezi

$selected = mysql_select_db ("exemple", $dbhandle)

or die ("Nu s-a putut selecta baza de date exemple");

?>

Acum fiind conectați vom rula câteva interogări. Funcția folosită pentru a interoga se numește mysql_query (). Funcția returnează o resursă care conține rezultatele interogării, numite set de rezultate. Pentru a examina rezultatul vom folosi funcția mysql_fetch_array care returnează rezultatele rând cu rând. În cazul în care o interogare nu returnează un rezultat, resursa pe care funcția o returnează va fii o valoare de true sau false.

<?php

//executa interogarile SQL si returneaza rezultatele

$result = mysql_query ("SELECT id, model, year FROM masini");

//preia datele din baza de date

while ($row = mysql_fetch_array ($result) ) {

echo "ID: ". $row{'id'}. " Name: ". $row{'model'}. "

". $row{'an'}. "<br>";

}

?>

În final, închidem conexiunea. Chiar dacă acest lucru nu este neapărat necesar deoarece PHP va închide automat conexiunea atunci când script-ul se va termina.

<?php

//inchiderea conexiunii

mysql_close ($dbhandle);

?>

Iată codul complet:

<?php

$username = "numele_tau";

$password = "parola_ta";

$hostname = "localhost";

//conexiunea la baza de date

$dbhandle = mysql_connect ($hostname, $username, $password)

or die ("Conectarea la MySQL a esuat");

echo "Conectat la MySQL<br>";

?>

<?php

//selecteaza baza de date cu care vrei sa lucrezi

$selected = mysql_select_db ("exemple", $dbhandle)

or die ("Nu s-a putut selecta baza de date exemple");

?>

<?php

//executa interogarile SQL si returneaza rezultatele

$result = mysql_query ("SELECT id, model, year FROM masini");

//preia datele din baza de date

while ($row = mysql_fetch_array ($result) ) {

echo "ID: ". $row{'id'}. " Name: ". $row{'model'}. "

". $row{'an'}. "<br>";

}

?>

<?php

//inchiderea conexiunii

mysql_close ($dbhandle);

?>

Pentru a crea baza de date " exemple " pe un server MySQL trebuie să rulăm următorul script:

CREATE DATABASE `exemple`;

USE `exemple`;

CREATE TABLE `masini` (

`id` int UNIQUE NOT NULL,

`name` varchar (40),

`an` varchar (50),

PRIMARY KEY (id)

);

INSERT INTO masini VALUES (1, 'Mercedes', '2002');

INSERT INTO masini VALUES (2, 'BMW', '2005');

INSERT INTO masini VALUES (3, 'Audi', '2003');

4. Aplicație

4.1. Descrierea aplicației

Aplicația descrisă în continuare reprezintă un Web Site de comerț electronic, cu gama de produse disponibile limitată în prezent la produse electronice și IT&C, dar care poate fi extinsă.

Pagina principala a site-ului.

Aplicația are două componente funcționale:

Componentă destinată utilizatorilor – care permite înregistrarea și logarea utilizatorilor, editarea contului de utilizator, vizualizarea produselor, categoriilor și detaliilor produselor, adăugarea produselor în coș, comandarea de produse, plata produselor prin paypal.

Componentă de gestiune a aplicației – permite administratorilor să vizualizeze toți utilizatorii înregistrați, comenzile și plățile, precum și inserarea, editatea și ștergerea de produse, categorii și brand-uri.

Fișierul functions.php, include toate funcțiile necesare realizării aplicației, este inclus în fiecare pagină a site-ului pentru a face realizarea aplicației mai ușoară.

$con = mysqli_connect("localhost","root","","ecommerce");

if (mysqli_connect_errno())

{

echo "Connection faild: " . mysqli_connect_errno();

}

Funcția de conectare la baza de date

function getIp(){

$ip = $_SERVER['REMOTE_ADDR'];

if (!empty($_SERVER['HTTP_CLIENT_IP'])) {

$ip = $_SERVER['HTTP_CLIENT_IP'];

} elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {

$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];

}

return $ip;

}

Funcția de obținere a adresei IP a utilizatorilor

function cos(){

if(isset($_GET['add_cos'])){

global $con;

$ip = getIp();

$prod_id = $_GET['add_cos'];

$chek_prod = "select * from cos where ip_adr='$ip' and p_id='$prod_id'";

$run_chek = mysqli_query($con, $chek_prod);

if (!$run_chek) {

die(mysqli_error($con));

}

if(mysqli_num_rows($run_chek)>0)

echo "";

}

else {

$insert_prod = "insert into cos (p_id,ip_adr) values ('$prod_id','$ip')";

$run_prod = mysqli_query($con, $insert_prod);

echo "<script>window.open('index.php','_self')</script>";

}

}

}

Funcția de creare a coșului de cumpărături

function total_produse() {

if(isset($_GET['add_cos'])){

global $con;

$ip = getIp();

$get_produse = "select * from cos where ip_add='$ip'";

$run_produse = mysqli_query($con, $get_produse);

$count_produse = mysqli_num_rows($run_produse);

}

else {

global $con;

$ip = getIp();

$get_produse = "select * from cos where ip_add='$ip'";

$run_produse = mysqli_query($con, $get_produse);

$count_produse = mysqli_num_rows($run_produse);

}

echo $count_produse;

}

Funcția de obținere a totalului obiectelor din coș

function total_pret() {

$total = 0;

global $con;

$ip = getIp();

$sel_pret = "select * from cos where ip_add='$ip'";

$run_pret = mysqli_query($con, $sel_pret);

while($p_pret=mysqli_fetch_array($run_pret)){

$prod_id = $p_pret['p_id'];

$prod_pret = "select * from produse where produs_id='$prod_id'";

$run_prod_pret = mysqli_query($con, $prod_pret);

while($pp_pret = mysqli_fetch_array($run_prod_pret)) {

$produs_pret = array($pp_pret['produs_pret']);

$values = array_sum($produs_pret);

$total +=$values;

}

}

echo "$" . $total;

}

Funcția de obținere a prețului total a obiectelor din coș

function getCateg(){

global $con;

$get_categ = "select * from categorii";

$run_categ = mysqli_query($con, $get_categ);

while ($row_categ=mysqli_fetch_array($run_categ)) {

$cate_id = $row_categ['cate_id'];

$cate_title = $row_categ['cate_title'];

echo "<li><a href='index.php?cate=$cate_id'>$cate_title</a></li>";

}

}

Funcția de obținere a categoriilor produselor

function getBrend()

global $con;

$get_brend = "select * from branduri";

$run_brend = mysqli_query($con, $get_brend);

while ($row_brend=mysqli_fetch_array($run_brend)) {

$bra_id = $row_brend['bra_id'];

$bra_title = $row_brend['bra_title'];

echo "<li><a href='index.php?bra=$bra_id'>$bra_title</a></li>";

}

}

Funcția de obținere a brand-urilor produselor

function getProd(){

if(!isset($_GET['cate'])) {

if(!isset($_GET['bra'])) {

global $con;

$get_prd = "select * from produse order by RAND()LIMIT 0,12";

$run_prd = mysqli_query($con, $get_prd);

while($row_prd=mysqli_fetch_array($run_prd)) {

$prd_id = $row_prd['produs_id'];

$prd_cate = $row_prd['produs_cate'];

$prd_bra = $row_prd['produs_brand'];

$prd_title = $row_prd['produs_title'];

$prd_pret = $row_prd['produs_pret'];

$prd_image = $row_prd['produs_image'];

echo "

<div id='single_produs'>

<h4 style='color:#004466; padding:10px'>$pro_title</h4>

<img src='admin/produs_images/$prod_image' width='180' height='180' />

<p><b style='color:#004466; padding:10px'> Price: $ $prod_pret </b></p>

<a href='detalii.php?prd_id=$prd_id' style='float:left;'>Detalii</a>

<a href='index.php?add_cos=$prod_id'><button style='float:right;'>Add to Cart</button></a>

</div>

";

}

}

}

}

Funcția de afișare a tuturor produselor

function getCateProd(){

if(isset($_GET['cate'])) {

$cat_id = $_GET['cate'];

global $con;

$get_cate_prod = "select * from produse where produs_cate='$cate_id'"

$run_cate_prod = mysqli_query($con, $get_cate_prod);

$count_categ = mysqli_num_rows($run_cate_prod);

if($count_categ==0){

echo "<h2 style='padding:20px; color:#004466;'>No products! </h2>";

exit();

}

else{

while($row_cate_prod=mysqli_fetch_array($run_cate_prod)) {

$prod_id = $row_cate_prod['produs_id'];

$prod_cate = $row_cate_prod['produs_cate'];

$prod_bra = $row_cate_prod['produs_bra'];

$prod_title = $row_cate_prod['produs_title'];

$prod_pret = $row_cate_prod['produs_pret'];

$prod_image = $row_cate_prod['produs_image'];

echo "

<div id='single_produs'>

<h4 style='color:#004466; padding:10px'>$prod_title</h4>

<img src='admin/produs_images/$prod_image' width='180' height='180' />

<p><b style='color:#004466; padding:10px'> $ $prod_pret</b></p>

<a href='detalii.php?prd_id=$prd_id' style='float:left;'>Detalii</a>

<a href='index.php?prd_id=$prd_id'><button style='float:right;'>Add to Cart</button></a>

</div>

";

}

}

}

}

Funcția de afișare a produselor în funcție de categorie

function getBraProd(){

if(isset($_GET['bra'])) {

$brand_id = $_GET['bra'];

global $con;

$get_bra_prod = "select * from produse where produs_bra='$bra_id'";

$run_bra_prod = mysqli_query($con, $get_bra_prod);

$count_brend = mysqli_num_rows($run_bra_prod);

if($count_brands==0){

echo "<h2 style='padding:20px; color:#004466;'>Nu exista produse! </h2>";

exit();

}

else{

while($row_bra_prod=mysqli_fetch_array($run_bra_prod)) {

$prod_id = $row_bra_prod['produs_id'];

$prod_cate = $row_bra_prod['produs_cate'];

$prod_bra = $row_bra_prod['produs_bra'];

$prod_title = $row_bra_prod['produs_title'];

$prod_pret = $row_bra_prod['produs_pret'];

$prod_image = $row_bra_prod['produs_image'];

echo "

<div id='single_produs'>

<h4 style='color:#004466; padding:10px'>$prod_title</h4>

<img src='admin/produs_images/$pro_image' width='180' height='180' />

<p><b style='color:#004466; padding:10px'> $ $prd_pret</b></p>

<a href='detalii.php?prd_id=$prd_id' style='float:left;'>Detalii</a>

<a href='index.php?prd_id=$prd_id'><button style='float:right;'>Add to Cart</button></a>

</div>

";

}

}

}

}

Funcția de afișare a produselor în funcție de brand

4.1.1 Descrierea componentei destinate utilizatorilor

Prima pagină a web site-ului trebuie să fie cât mai sugestivă, simplu de utilizat, să ofere utilizatorului motive de a rămâne pe site și de a se folosi de serviciile acestuia.

În partea de sus se află header-ul care conține banner-ul și logo-ul site-ului, urmat de

bară de meniu principal.

Logo si Banner site

Home – pagină principala a site-ului

All products – Afișarea tuturor produselor

My account – afișează informații despre comenzile utilizatorului; utilizatorul are posibilitatea de a-și modifică datele din cont cu excepția țării pe care a ales-o la înregistrare; parolă deasemeni poate fi schimbată, iar dacă vizitatorul nu are cont pe site, are posibilitatea de a se înregistra.

Shopping cart – sunt prezentate toate produsele ce au fost selectate pentru a fi comandate ; găsim informații despre prețul produsului, cantitatea de produse din fiecare produs care se dorește a fi comandat dar și posibilitatea de a șterge produsele pe care nu le mai vrea;

Search – cu ajutorul lui, cumpărătorul poate caută produsul dorit mult mai ușor.

Login – afișează formularul de logare ; dacă utilizatorul nu are cont are posibilitatea de a-și crea unul cu ajutorul formularului de înscriere.

Logout – ieșire din cont.

Meniul principal

Sub meniul principal în bară laterală din partea stânga sunt afișate categoriile produselor, și brand-urile acestora.

Bara laterală stânga, impărțită în două, categorii și brand-uri

În zona de conținut sunt afișate câte 12 produse la întâmplare din toate produsele din baza de date.

Pentru înregistrare utilizatorului i se cer o parolă și un email. Pentru a se putea înregistra utilizatorul are nevoie de un cont.

Contul se poate crea prin completarea unui formular cu datele personale.

Formularele de autentificare (login) și înregistrare

Dacă toate condițiile sunt deplinite, iar emailul nu a mai fost folosit înainte, se inserează în baza de date utlizatorul cu datele acestuia.

Pagina utilizatorului după crearea contului.

My account

În partea din dreapta se află fotografia acestuia și un meniu cu 5 butoane corespunzătoare:

‘My orders’

‘Edit account’

‘Change password’

‘Delete account’

‘Logout’

În centru se află un mesaj de întâmpinare și un link care duce către comenzile făcute.

4.1.2 Descrierea componentei destinate gestiunii aplicației

În această secțiune are acces daor administratorul site-ului. Această aprte ontine 10 butoate principale:

Insert new product

View all products

Insert new category

View all categories

Insert new brand

View all brands

View customers

View orders

View payments

Admin Logout

Panoul de administrare

‘View product’, ‘View categories’, ‘View brands’ permite editarea și ștergerea produselor , categoriilor și brand-urilor.

Baza de date ‘ecommerce’ a site-ului contine 8 tabele.

Baza de date ‘Ecommerce’ phpmyadmin

Tabelul ‘Admins ‘ folosește la logarea în secțiunea de administrare

Tabelul ‘Brands’ folosește la stocarea produselor în funcție de brand

Tabelul ‘Cateories’ folosește la stocarea produselor în funcție de categoria acestora

Tabelul ‘Cart’ stochează produsele ce urmează a fi comandate

Tabelul ‘Customers’ folosește la înregistrarea utilizatorilor

Tableul ‘Orders’ stochează comenzile făcute.

Tabelul ‘Payments’ stochează plățile făcute.

Tableul ‘Products’ stochează produsele site-ului, introduse de către administrator.

Aplicația Web s-a realizat folosind tehnologiile PHP, MySQL și JavaScript. Conform obiectivelor aplicației, acesta trebuie elaborat având în vedere componentele funcționale descries anterior:

Componenta utilizatorilor

Componenta administratorilor

4.2. Partea destinată utilizatorului

Meniul destinat cumpărătorului are 7 categorii corespunzătoare :

My Account – permite vizualizarea comenzilor efectuate, editarea datelor introduse la crearea contului, schimbarea parolei, ștergerea continului și delogare.

Pagina principala “ My Account”

Vizualizarea comenzilor

Scriptul Php cu cod MySQL pentru vizualizarea comenziulor în contul utilizatorului

<?php

include("includes/db.php");

$user = $_SESSION['custm_email'];

$get_cs = "select * from cumparatori where custm_email='$user'";

$run_cs = mysqli_query($con, $get_cs);

$row_cs = mysqli_fetch_array($run_cs);

$cs_id = $row_cs['custm_id'];

$get_com = "select * from comenzi where cs_id='$cs_id'";

$run_com = mysqli_query($con, $get_com);

$i = 0;

while ($row_com = mysqli_fetch_array($run_com)){

$com_id = $row_com['com_id'];

$qty = $row_com['qty'];

$prod_id = $row_com['p_id'];

$com_date = $row_com['com_date'];

$status = $row_com['status'];

$i++;

$get_prod = "select * from produse where produs_id='$prod_id'";

$run_prod = mysqli_query($con, $get_prod);

$row_prod = mysqli_fetch_array($run_prod);

$prod_image = $row_prod['produs_image'];

$prod_title = $row_prod['produs_title'];

?>

<tr align="center" style='color:#004466;' >

<td><?php echo $i; ?></td>

<td>

<?php echo $prod_title; ?>

<img src="../admin/produs_images/<?php echo $prod_image; ?>" width="50" height="50" />

</td>

<td><?php echo $qty; ?></td>

<td><?php echo $com_date; ?></td>

<td><?php echo $status; ?></td>

</tr>

<?php } ?>

Editarea datelor introduse la înregistrare

Schimbarea parolei

Scriptul Php și cod MySQL folosit la schimbarea parolei utilizatorului

<?php

include("includes/db.php");

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

$user = $_SESSION['custm_email'];

$act_pas = $_POST['act_pas'];

$nou_pas = $_POST['nou_pas'];

$nou_again = $_POST['nou_pas_again'];

$sel_pas = "select * from cumparatori where custm_pas='$act_pas' AND custm_email='$user'";

$run_pas = mysqli_query($con, $sel_pas);

$check_pas = mysqli_num_rows($run_pas);

if($check_pas==0){

echo "<script>alert(Parola curenta este gresita!')</script>";

exit();

}

if($nou_pas!=$nou_again){

echo "<script>alert(Parola nou nu se potriveste!')</script>";

exit();

}

else {

$update_pas = "update cumparatori set custm_pas='$nou_pas' where custm_email='$user'";

$run_update = mysqli_query($con, $update_pas);

echo "<script>alert('Parola a fost schimbata cu succes!')</script>";

echo "<script>window.open('my_account.php','_self')</script";

}

}

?>

Ștergerea contului

Shopping Cart – permite vizualizarea produselor selectate ce urmează a fi comandate, prețul acestora, introducerea cantității pentru fiecare produs în parte, ștergerea produselor din coș, checkout..

Shopping Cart

Cod Php pentru aflarea prețului total al produselor din coș (interogarea bazei de date MySQL)

<?php

$total = 0;

global $con;

$ip = getIp();

$sel_pret = "select * from cos where ip_add='$ip'";

$run_ pret = mysqli_query($con, $sel_ pret);

while($p_ pret =mysqli_fetch_array($run_ pret){

$prod_id = $p_ pret['p_id'];

$prod_ pret = "select * from produse where produs_id='$prod_id'";

$run_prod_pret = mysqli_query($con,$prod_pret);

while ($pp_pret = mysqli_fetch_array($run_prod_pret))

$produs_pret = array($pp_pret['produs_pret']);

$produs_title = $pp_pret['produs_title'];

$produs_image = $pp_pret['produs_image'];

$single_pret = $pp_pret['produs_pret'];

$values = array_sum($produs_pret);

$total += $values;

?>

Checkout

Cod Php folosit la efectuarea plății prin PayPal (interogarea bazei de date MySQL)

<?php

include("includes/db.php");

$total = 0;

global $con;

$ip = getIp();

$sel_pret = "select * from ccos where ip_add='$ip'";

$run_pret = mysqli_query($con, $sel_pret);

while($p_pret = mysqli_fetch_array($run_pret)){

$prod_id = $p_pret['p_id'];

$prod_pret = "select * from produse where produs_id='$prod_id'";

$run_prod_pret = mysqli_query($con, $prod_pret);

while($pp_pret = mysqli_fetch_array($run_prod_pret)) {

$produs_pret = array($pp_pret['produs_pret']);

$produs_name = $pp_pret['produs_title'];

$values = array_sum($produs_pret);

$total +=$values;

}

}

$get_cant = "select * from cos where p_id='$prod_id'";

$run_cant = mysqli_query($con, $get_cant);

$row_cant = mysqli_fetch_array($run_cant);

$cant = $row_cant['cant'];

if($cant==0){

$cant=1;

}

else {

$cant=$cant;

$total = $total*$cant;

}

?>

All products – permite vizualizarea tuturor produselor, detaliile despre fiecare produs și adăugarea acestora în coșul de cumpărături.

Toate produsele de pe site sunt afișate pe această pagină

Detalii despre produs

Search – cu ajutorul lui, cumpărătorul poate caută produsul dorit mult mai ușor.

Butonul de cautare

Cod Php pentru afisaea rezultatelor căutate cu ajutorul butonului Search (interogarea bazei de date MySQL)

<?php

if(isset($_GET['cauta'])) {

$cauta_query = $_GET['user_query']

$get_prod = "select * from produse where produs_keywords like '%$cauta_query%'";

$run_prod = mysqli_query($con, $get_prod)

or die("Error: ".mysqli_error($con));

while($row_prod=mysqli_fetch_array($run_prod)){

$prod_id = $row_prod['produs_id'];

$prod_cate = $row_prod['produs_cate'];

$prod_bra = $row_prod['produs_bra’];

$prod_title = $row_prod['produs_title'];

$prod_pret = $row_prod['produs_pret'];

$prod_image = $row_prod['produs_image'];

echo "

<div id='single_produs'>

<h3 style='color:#004466;'>$prod_title</h3>

<img src='admin/produs_images/$pro_image' width='180' height='180' />

<p><b style='color:#004466;'> $ $prod_pret </b></p>

<a href='detalii.php?prd_id=$prd_id' style='float:left;'>Detalii</a>

<a href='index.php?prd_id=$prd_id'><button style='float:right'>Adauga in cos</button></a>

</div>

";

}

}

?>

Paypal – permite cumpărătorului să platească comanda

Checkout Paypal

Logarea in contul PayPal

Contul de PayPal cu dovada plății

Categories – permite cumpărătorului vizualizarea produselor în funcție de categoria acestora

Cele 6 categorii aflate in prezent pe site

Tabelul categoriilor

Brands – permite cumpărătorului vizualizarea produselor în funcție de brand-ul acestora.

Produse afisate in functie de brand

Tabelul brand-urilor

Potențialii comparatori pot face comenzi numai după ce s-au înregistrat și logat.

Formularul de înregistrare

Cod Php care folosește la înregistarea noilor utilizatori în baza de date MySQL

<?php

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

$ip = getIp();

$cs_nume = $_POST['cs_nume'];

$cs_email = $_POST['cs_email'];

$cs_pas = $_POST['cs_pas'];

$cs_image = $_FILES['cs_image']['nume'];

$cs_image_tmp = $_FILES['cs_image']['tmp_nume'];

$cs_tara = $_POST['cs_tara'];

$cs_oras = $_POST['cs_oras’];

$cs_contact = $_POST['cs_contact'];

$cs_adresa = $_POST['cs_adresa'];

move_uploaded_file($c_image_tmp,"../cumparatori/cumparator_image/$cs_image");

$insert_cs = "insert into cumparatori (custm_ip,custm_nume,custm_email,custm_pas,custm_tara,custm_oras,custm_contact,custm_adresa,custm_image)

values ('$ip','$cs_nume','$cs_email','$cs_pas','$cs_tara','$cs_oras','$cs_contact','$cs_adresa','$cs_image')";

$run_cs = mysqli_query($con, $insert_cs);

$sel_cos= "select * from cos where ip_add='$ip'";

$run_cos = mysqli_query($con, $sel_cos);

$check_cos= mysqli_num_rows($run_cos);

if($check_cos==0){

$_SESSION['custm_email']=$cs_email;

echo "<script>alert(Contul a fost creat cu succes!)</script>";

echo "<script>window.open('cumparatori/my_account.php','_self')</script>";

}

else {

$_SESSION['custm_email']=$cs_email;

echo "<script>alert(Contul a fost creat cu succes!)</script>";

echo "<script>window.open('checkout.php','_self')</script>";

}

}

?>

Formularul de autentificare (login)

<?php

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

$cs_email = $_POST['email'];

$cs_pas = $_POST['pas'];

$sel_cs= "select * from cumparatori where custm_pas='$cs_pas' AND custm_email='$cs_email'";

$run_cs = mysqli_query($con, $sel_cs);

if(!$run_cs){

die(mysqli_error($con));

}

$check_custm = mysqli_num_rows($run_cs);

if($check_custm==0){

echo "<script>alert(“Parola sau emai incorrect, incearca din nou”)</script>";

exit();

}

$ip = getIp();

$sel_cos = "select * from cos where ip_add='$ip'";

$run_cos = mysqli_query($con, $sel_cos);

$check_cos = mysqli_num_rows($run_cos);

if($check_custm>0 AND $check_cos==0){

$_SESSION['custm_email']=$cs_email;

echo "<script>alert('Te-ai logat cu succes!')</script>";

echo "<script>window.open('cumparatori/my_account.php','_self')</script>";

}

else {

$_SESSION['custm_email']=$cs_email;

echo "<script>alert('Te-ai logat cu succes')</script>";

echo "<script>window.open('checkout.php','_self')</script>";

}

}

?>

Scriptul Php de logare a utilizatorilor înregistrați

După plasarea comenzii și efectuarea plății, administratorul site-ului poate finaliza comandă, dând click pe ‘Complete order’ din tabelul următor.

Tabelul de unde se finalizeaza comanda.

Tabelul ‘Orders’ din baza de date

În tabelul de mai sus putem vedea modificările survenite în urmă finalizării comenzii de către administrator. Prima comandă a fost completată cu succes, a două fiind încă în progres.

4.3 Partea de gestiune, dedicată administratorilor site-ului

În secțiunea această doar administratorii site-ului se pot loga. Această parte conține 10 butoane principale :

Insert new product – permite inserarea de noi produse

Formularul de inserare produse

Cod Php folosit la inserarea de produse noi în baza de date MySQL

<?php

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

$produs_title = $_POST['produs_title'];

$produs_cate = $_POST['produs_cate'];

$produs_bra = $_POST['produs_bra'];

$produs_pret = $_POST['produs_pret'];

$produs_desc = $_POST['produs_desc'];

$produs_keywords = $_POST['produs_keywords'];

$produs_image = $_FILES['produs_image']['nume'];

$produs_image_tmp = $_FILES['produs_image']['tmp_nume'];

move_uploaded_file($produs_image_tmp,"produs_images/$produs_image");

$insert_produs = "insert into produse (produs_cate, produs_bra, produs_title, produs_pret, produs_desc,produs_image,produs_keywords) values('$produs_cate', '$produs_bra', '$produs_title', '$produs_pret', '$produs_desc', '$produs_image','$produs_keywords')";

$insert_prod = mysqli_query($con, $insert_produs);

if($insert_prod){

echo "<script>alert('Produsul a fost inserat!')</script>";

echo "<script>window.open('index.php?insert_produs','_self')</script>" }

}

?>

View all products – aici putem vedea toate produsele din magazinul nostru virtual. Dar în același timp, putem să le și ștergem sau să le edităm.

Tabelul cu toate produsele de pe site

Formularul de editare a produselor aflate deja pe site

Cod Php folosit pentru a modifica datele despre un produs (interogarea bazei de date MySQL)

<?php

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

$update_id = $prod_id;

$produs_title = $_POST['produs_title'];

$produs_cate = $_POST['produs_cat'];

$produs_bra = $_POST['produs_brand'];

$produs_pret = $_POST['produs_pret'];

$produs_desc = $_POST['produs_desc'];

$produs_keywords = $_POST['produs_keywords'];

$produs_image = $_FILES['produs_image']['nume'];

$produs_image_tmp = $_FILES['produs_image']['tmp_nume'];

move_uploaded_file($produs_image_tmp,"produs_images/$produs_image");

$update_produs = "update produse set

produs_cate='$produs_cate',produs_bra='$produs_bra',produs_title='$produs_title',produs_pret='$produs_pret',produs_desc='$produs_desc',

produs_image='$produs_image',produs_keywords='$produs_keywords' where produs_id='$update_id'";

$run_produs = mysqli_query($con, $update_produs);

if($run_produs){

echo "<script>alert(“Produsul a fost update”)</script>";

echo "<script>window.open('index.php?view_produse','_self')</script>";

}

}

?>

Insert new category – permite introducerea unei categorii noi de produse

Inserare categorie nouă

View all categories – permite vizualizarea tuturor categoriile de produse disponibile pe site, editarea și ștergerea acestora.

Tabelul tuturor categoriilor

Editare categorii

Insert new brand – permite adaugarea unor brand-uri noi

Inserare brand nou

View all brands – permite vizualizarea tuturor brand-urilor de produse disponibile pe site, editarea și ștergerea acestora.

Tabelul tuturor brand-urilor

Editare brand

View customers – permite ștergerea și vizualizare datelor utilizatorilor înregistrați, (nume, email, fotografie).

Tabelul utilizatorilor înregistrați

Cod Php folosit pentru a vedea utilizatorii înregistrați în categoria de gestionare a aplicației (interogarea bazei de date MySQL)

<?php

include("includes/db.php");

$get_cs = "select * from cumparatori";

$run_cs = mysqli_query($con, $get_cs);

$i = 0;

while ($row_cs=mysqli_fetch_array($run_cs)){

$cs_id = $row_cs['custm_id'];

$cs_name = $row_cs['custm_name'];

$cs_email = $row_cs['custm_email'];

$cs_image = $row_cs['custm_image'];

$i++;

?>

<tr align="center" style=' padding:5px; color:#004466;' >

<td><?php echo $i; ?></td>

<td><?php echo $cs_name; ?></td>

<td><?php echo $cs_email; ?></td>

<td><img src="../cumparatoi/custm_images/<?php echo $cs_image; ?>" width="60" height="60" /></td>

<td><a href="delete_cs.php?delete_cs=<?php echo $cs_id; ?>">Stergere</a></td>

</tr>

<?php } ?>

View orders – oferă informații administratorului despre comenzile făcute, numele produsului, cantitate, dată comenzii și statusul acesteia.

Tabelul comenzilor

View payments – oferă informații administratorului despre plățile făcute, numele produselor, suma plătită, dată comenzii.

Tabelul plăților

Admin logout – ieșire din panoul de administrare

5. Bibliografie

1. Anghel, Traian , Dezvoltarea aplicațiilor Web folosind PHP si AJAX, EduSoft, 2007.

2. Buraga, Sabin (coord.) , Tendinte actuale in proiectarea si dezvoltarea aplicațiilor Web, Matrix Rom, Bucuresti, 2006.

3. Darie, Cristian; Brinzarea, Bogdan; Cheeches-Tosa, Filip; Bucica, Mihai, AJAX and PHP: Building Responsive Web Applications, Packt Publishing, 2006 .

4. Davis, Michele; Phillips, Jon, Learning PHP & MYSQL: Step-By-Step Guide to Create Database-Driven Web Sites, O’Reilly, 2007.

5. Deslie, Marc , Mastering phpMyAdmin 1.3 for Effective MySQL Management, Packt Publishing, 2009.

6. DuBois, Paul, MySQL, 5th Edition, Developer's Library, 2013.

7. Flanagan, David, JavaScript the definitive Guide, 6th edition, O’Reilly Media, 2011.

8. Harwood , Mike; Goncalves , Marcus; Pemble ,Matthew , Security Strategies in Web Applications and Social Networking , Jones & Bartlett Learning, 2010.

9. Lavin, Peter, Object-Oriented PHP, Concepts, Techniques and Code, No Starch Press, 2006.

10. Lerdorf, Rasmus; Tatroe, Kevin; MacIntyre, Peter, Programming PHP, O’Reilly, 2006.

11. Lepofsky , Ron, The Manager’s Guide to Web Application Security: A Concise Guide to the Weaker Side of the Web , Apress, 2014.

12. Nahari , Hadi; Krutz, Ronald, Web Commerce Security Design and Development , John Wiley & Sons, 2011.

13. Palmer, Steven, Web Application Vulnerabilities , Syngress, 2011.

14. Schafer, S. , Web Standards Programmer’s Reference: HTML, CSS, JavaScript, Perl, Python and PHP, Wrox, 2005.

15. Stamate, Eugenia Lucia, Crearea si publicarea unui site web. Limbajul HTML si elemente de web design, Paralela 45, 2005.

16. Ullman, Larry, PHP și MySQL pentru site-uri web dinamice, Editura Teora, 2014.

17. Welling, Luke; Thomson, Laura, PHP and MySQL Web Development, Fourth Edition, Addison-Wesley, 2009.

18. http://www.php.net/

19. http://www.w3schools.com/php/php_intro.asp

20. http://www.mysql.com

Similar Posts