Tema Proiectului ………………………………………pag.2

CUPRINS:
Tema Proiectului ………………………………………pag.2
Implementare………………………………………….pag.3
Generalitati
3.1. Generalitati PHP………………………………….pag.
3.2. Generalitati MySQL……………………………..pag.
3.3. Generalitati APACHE……………………………pag.
3.4. Generalitati XHTML……………………………..pag.
3.5. Generalitati CSS………………………………….pag.
3.6. Generalitati JavaSript.……………………………pag.
3.7. Generalitati PHOTOSHOP……………………….pag.
4. Structura bazei de date …………………………………….pag.
5. Structura proiectului …..…………………………………..pag.
6. Structura aplicatiei ………………………………………..pag.
7. Codul Sursa ……………………………………………….pag.
Tema Proiectului:
Acest proiect implementeaza un magazin virtual care este structurat facil, continand un cos de cumparaturi, harta a site-ului, si o sectiune de cautare. De asemenea, acest proiect contine si o sectiune pt administrator, care poate sa-si schimbe parola, adauge/modifice/stearga subcategorii, categorii, comentarii, notificari, producatori, produse, promotii, utilizatori, cupoane de reduceri.
Implementare:
Acest magazin virtual a fost implementat folosind limbajele de programare PHP, XHTML, CSS, JS, serverul Web APACHE, serverul de baze de date MySQL, si aplicatia ADOBE PHOTOSHOP pentru grafica.
Generalitati:
Generalitati PHP:
Internet-ul a intrat deja in al treilea stadiu de dezvoltare, iar notiuni si facilitati precum site-uri web dinamice si interactive au devenit atributele esentiale ale oricarei afaceri online de succes implicand comert electronic (dar nu numai). Un studiu al Cyberatlas cu privire la comertul prin Internet releva faptul ca activitatile de vazari online au cel mai mare potential de dezvoltare din intreg sectorul economic.
Principalul avantaj al unui site dinamic asupra unuia static este usurinta in administrare (actualizare). Adaugarea sau modificarea de continut este foarte simpla datorita faptului ca acest continut este stocat intr-o baza de date sau in fisiere text, astfel incat cei care se ocupa de continut nu au nevoie sa posede cunostinte de HTML, CSS, JavaScript sau alte tehnologii specifice domeniului „web design” si utilizate intens la construirea paginilor de prezentare. De asemenea, daca trebuie sa schimbam logo-ul pe fiecare pagina a site-ului, este de ajuns sa facem modificarea intr-un singur fisier in loc sa luam fiecare pagina in parte, sa o modificam si sa o uploadam inapoi pe server. PHP este un limbaj de programare pe parte de server (in engleza „server-side”) care poate, printre altele, sa interactioneze cu o baza de date pentru a afisa sau a modifica informatiile din ea. Mai exact, serverul stie sa furnizeze browser-ului clientului doar pagini HTML. Paginile HTML pot fi deja pe server sau create tot acolo de catre alte aplicatii la cererea server-ului de web, fiind apoi servite ca HTML browser-ului clientului.
In momentul in care cerem pagina „test.html” de pe server, acesta o serveste imediat. Daca in schimb cerem o pagina cu alta extensie, „.php” in cazul de fata, serverul cauta sa vada daca este configurat sa serveasca pagini cu aceasta extensie si ce program (din cele pe care le gestioneaza) se ocupa de ele. Astfel, atunci cand cerem o pagina cu extensia „.php”, serverul va trimite mai departe cererea catre PHP, de tipul „Se cere un fisier PHP; acceseaza-l, analizeaza-l si executa-i continutul dupa care da-mi inapoi o pagina HTML pe care sa o afisez clientului”. PHP preia cererea, ruleaza codul din programul PHP si daca vede ca se cer informatii din baza de date MySQL, o acceseaza, extrage informatiile cerute si construieste cu ele o pagina HTML pe care o va trimite serverului (de obicei este vorba de un server Apache) pentru ca acesta sa o poata servi clientului.
Ca limbaj de programare web, PHP este foarte usor de invatat daca elementele programarii sunt explicate pe intelesul tuturor. Datorita similaritatii intre limbajele de programare de uz comun, cunoscand PHP va fii mai usor trecem apoi la VBScript, Java sau C.
Din toata gama de tehnologii web, PHP este limbajul ideal pentru construirea de pagini web dinamice si interactive. Este relativ simplu, open-source, poate fi rulat pe mai multe platforme (Linux, Windows, precum si pe o multime de alte sisteme de operare mai rar intalnite) si se poate conecta la mai multe tipuri de baze de date.
Cel mai important aspect al limbajului este posibilitatea de a fi imbricat cu cod HTML. Putem crea astfel pagini HTML statice si, din loc in loc, acolo unde este nevoie, sa introducem dinamism cu ajutorul PHP. Spre exemplu, o mare parte din structura unei pagini web cum ar fi meniurile, tabelele, aranjamentul in pagina, poate fi compusa din cod HTML static. Din loc in loc codul HTML va fi intercalat cu cod PHP care extrage din baza de date cele mai noi stiri. In momentul in care accesam pagina, acest cod este parsat (analizat linie cu linie si executat) pe server astfel incat este afisata o pagina HTML fara sa stim ca pentru crearea ei s-a facut o conexiune la baza de date, s-au extras informatiile de acolo si au fost ordonate pentru afisare.
In istoria tehnologiilor utilizate la realizarea site-urilor web, limbajul PHP a aparut in 1994 din nevoia lui Rasmus Lerdof de a afla cate persoane ii vizualizeaza CV-ul online. El a denumit setul de scripturi create „PHP”, acronimul pentru Personal Home Page. Pe parcursul urmatorilor 3 ani limbajul a evoluat dar adevaratul succes a inceput sa il cunoasca de cand Zeev Suraski si Andi Gutmans au rescris motorul PHP de la cap la coada, motor care poarta de la versiunea 4 a PHP numele Zend, o combinatie de litere din prenumele creatorilor sai: Zeev si Andi.
Fiind open source, PHP beneficiaza de suport activ din partea comunitatii online, acesta fiind si motivul cresterii explozive a numarului de site-uri bazate pe PHP. Intre 2000 si 2002 numarul lor a crescut de peste 130 de ori, in timp ce numarul site-urilor bazate pe tehnologia ASP a crescut de 3 ori, Java Server Pages (JSP) de 16 ori, iar Cold Fusion de 4 ori.
Pe langa manipularea continutului paginilor web, PHP poate trimite headere HTTP pentru autentificare, seta cookie-uri, redirectiona utilizatorii. Mai mult, cu ajutorul bibliotecilor externe de functii poate parsa fisiere XML, crea si manipula imagini, animatii Shockwave, Flash, PDF-uri sau se poate conecta la un server de mail. Iar acestea sunt doar cateva din functiile pe care le poate indeplini.
Dezvoltarea exploziva a limbajului PHP din ultimii ani este in cea mai mare parte datorata usurintei cu care acesta lucreaza cu bazele de date in Internet. Din multitudinea de solutii de dezvoltare site-uri web, PHP ofera programatorului o multime de functii predefinite pentru lucrul cu bazele de date in Internet. Aceasta inseamna ca din cadrul PHP putem executa toate operatiunile aferente comenzilor MySql. O prima pagina atractiva este vitala pentru succesul unui site. Menirea ei este sa ofere utilizatorului motivele pentru a continua sa vada mai mult si eventual sa fie imediat interesat sa cumpere un produs. Spre exemplu, vitrina unei librarii virtuale ar putea prezenta utilizatorului domeniile de carte disponibile, cele mai noi carti adaugate, precum si cele mai populare carti din librarie sub aspectul vanzarilor sau al interesului publicului. In orice astfel de magazin virtual, prima pagina este de fapt o combinatie de mai multe module de pagina. Unele elemente-modul sunt prezente pe toate paginile site-ului, ca de exemplu header-ul (capul de pagina) in care specificam titlul, setul de caractere folosit, stilul CSS generic al paginii, apoi instructiunile de conectare la baza de date si, nu in ultimul rand, nota de copyright din subsol.
Structura fiecarei pagini dintr-un astfel de site – indiferent ca este prima pagina, pagina cu date de contact sau pagina cu detalii despre carte – ar putea arata astfel: 1. Partea de conectare la baza de date 2. Header(titlu, specificatii stil, set de caractere) 3. Meniul (butoanele de navigare) 4. Continutul paginii 5. Footer-ul paginii (partea de jos continand nota de copyright, etc…) Aceasta structura se va putea folosi pentru toate paginile site-ului si, in afara de partea reprezentand continutul, care difera de la pagina la pagina, celelalte elemente-modul raman practic neschimbate. Asadar le putem refolosi scriindu-le pe fiecare din ele intr-un fisier separat si apoi incluzandu-le in pagina finala, livrata la utilizator atunci cand avem nevoie. Vom putea modifica direct din baza de date continutul oricareia dintre ele, fiecare parte putandu-se actualiza independent una de cealalta, reusindu-se astfel dintr-o singura miscare operarea modificarilor dorite in toate paginile site-ului.
Per ansamblu, proiectarea site-urilor web (crearea de pagini si administrarea acestora din punct de vedere al continutului) a inceput sa se identifice in mod aproape universal cu tehnologia PHP. Dincolo de multitudinea de biblioteci de functii si facilitati oferite, PHP si MySql sunt foarte usor de invatat chiar si pentru cei nefamiliarizati cu programarea sau bazele de date. In prezent, PHP este atat de puternic si de versatil incat pana si liderul portalurilor, Yahoo, a renuntat cu ceva timp in urma la limbajul sau proprietar, yscript, in favoarea PHP.
Generalitati MySQL:
MySQL este un sistem de gestiune a bazelor de date, foarte rapid si robust.O baza de date va permite sa stocati, sa cautati, sa sortati si sa va regasiti datele in mod eficient. Serverul MySQL controleaza accesul la datele dumneavoastra pentru a garanta ca mai multi utilizatori pot lucra simultan cu acestea.
Deci, MySQL este un server multi-user (mai multi utilizatori) si multi-thread (mai multe fire de executie). Utilizeaza SQL (Structured Query Language), limbajul standard de interogare a bazelor de date din intreaga lume.
MySQL este disponibil in mod public din 1996, dar istoria dezvoltarii sale incepe in 1979.
MySQL AB dezvolta si suporta o gama larga de servere de baze de date de inalta performanta. Produsul cel mai cunoscut al companiei, MySQL, cea mai populara baza de date open source, cu peste sase milioane de instalari active.
Multe dintre cele mai mari organizatii din lume, incluzand Yahoo!, Sabre Holdings, The Associated Press, Suzuki si NASA realizeaza costurile ce pot fi salvate folosind MySQL pentru site-uri Web cu un volum mare de continut sau pentru aplicatiile de afaceri destinate organizatiilor.
Exista numeroase functii PHP bine documentate pe care pe puteti folosi pentru MySQL. Veti avea insa nevoie doar de cateva dintre acestea pentru a realiza o simpla legatura si pentru a extrage data:
mysql_connect – realizeaza o conexiune la serverul MySQL; necesita numele(sau ip-ul) serverului ce gazduieste MySQL, nume de utilizator si parola.
mysql_select_db – selecteaza o baza de date de pe un server MySQL.
mysql_query – realizeaza o cerere SQL.
mysql_fetch_array – pune o inregistrare(un rand) al rezultatul cererii SQL intr-o matrice.
mysql_free_result – elibereaza resursele utilizate de conexiunea curenta.
mysql_close – inchide conexiunea curenta.
Baza de date este coloana vertebrala a unui site dinamic. Pentru pornirea serverului de MySQL din Windows trebuie sa rulati fisierul mysqld.exe aflat (daca sa facut instalarea standard) in c:\mysql\bin\mysqld.exe pe Windows 95/98 sau c:\mysql\bin\mysqldnt.exe pe NT/2000/XP. Daca vreti ca serverul de MySQL sa porneasca automat la fiecare repornire a Windows-ului, puteti adauga un shortcut in Start Menu/Start up. Este recomandat ca pe Windows NT/2000/XP sa setati serviciul MySQL sa porneasca automat. Daca vreti sa verificati daca serverul MySQL este pornit scrieti urmatoarea linie de cod in comand prompt: c:\mysql\bin\mysqladmin version status proc La Windows NT4 trebuie sa aveti instalat Service Pack 3 minim ca sa ruleze MySQL. Mai are nevoie si de protocolul TCP/IP.
Daca atunci cand accesati adresa http://localhost nu se vede o pagina trimisa de server (de obicei contine mesajul „If you can see this, if means that the installation of the Apache web server software on this system was successful.”), verificati intai daca serverul este pornit si daca nu cumva aveti atl server HTTP (PWS, IIS) care ruleaza. Cel mai bun exemplu despre cum arata (virtual) o baza de date este un document Microsoft Excel cu randurile si coloanele aferente. La fel ca si in Excel se pot face calcule, sortari, adunari si chiar mai mult…
MySQL este cel mai popular sistem de management pentru baze de date relationale deoarece este Open Source (gratuit). Intr-o baza de date relationala datele sunt stocate in mai multe tabele separate, fiind astfel imbunatatita viteza si flexibilitatea.
Tabelele pot fi legate intre ele prin relatii definite de noi, fiind astfel posibil sa combinam la cerere datele din mai multe tabele. SQL, acronimul pentru „Structured Query Language”, este limbajul standard pentru comunicarea cu bazele de date. Comenzile SQL sunt folosite pentru a interactiona cu baza de date (de exemplu sa adauge, sa modifice sau sa stearga datele).
Generalitati XHTML:
In primul rand XHTML reprezinta prescurtarea de la EXtensible HyperText Markup Language (denumirea oficiala a standardului). Practic este un inlocuitor modern al mai vechiului limbaj HTML, fiind aproape identic cu standardul HTML 4.01, o versiune imbunatatita, mult mai stricta si mai curata a standardului HTML 4.0. Abstractizand putin, afirmam ca XHTML reprezinta o definire de tip XML a unui document HTML, pe scurt o combinatie intre HTML si XML.
Avantajele unei aplicatii XHTML sunt multiple: pot fi citite de toate dispozitivele XML, in timp ce pastreaza compatibilitatea cu toate browserele de Internet mai vechi sau mai noi fara a necesita specificatii suplimentare.
XHTML + TIME este o extensie a limbajului XHTML, oferind documentelor Web suport pentru temporizare si sincronizare multimedia. Astfel, folosind cateva elemente si atribute noi, unei pagini XHTML i se poate adauga continut grafic, audio sau video, care poate fi sincronizat cu alte elemente de-a lungul unui cadru temporal precizat de autorul acelei pagini.
Versiunea XHTML + TIME 1.0 a fost disponibila pentru prima data in Internet Explorer 5, iar in prezent XHTML + TIME 2.0 este recunoscut de Internet Explorer, versiunile 5.5 si 6.
Beneficii
– Pagini Web care au continut dinamic
XHTML + TIME poate fi utilizat pentru a adauga paginilor Web continut interactiv, dinamic. De exemplu, pot fi create prezentari Web sub forma de slide-show, in cadrul lor fiind sincronizate fluxuri de date textuale, audio, video sau grafice. Aceste prezentari pot fi temporizate, interactive sau combinate.
– Utilizare facila
Facilitatile oferite de XHTML + TIME aduc un set de atribute si elemente noi celor deja existente in limbajul XHTML, astfel ca toate notiunile anterioare de XHTML raman utile pentru proiectarea de pagini Web in XHTML + TIME.
Pentru a permite utilizarea facila a mai multor elemente XHTML, acestea pot fi grupate in relatii ierarhice. Gruparea poate fi utila si pentru a preciza daca obiectele multimedia apar si dispar in mod secvential in cadrul paginii Web, sau fiecare are o temporizare independenta de a celorlalte.
– Suport pentru scripting
Limbajele script JavaScript sau VBScript permit si mai mult extinderea flexibilitatii si interactivitatii elementelor temporale din cadrul paginilor Web. XHTML + TIME ofera un model de obiecte complet, care extinde actualul model DHTML, care consta dintr-un set de proprietati, metode si evenimente pentru adaugarea de trasaturi interactive paginilor Web.
  Elementele XHTML + TIME se comporta in mod diferit la adaugarea atributelor temporale, in functie de tipul elementului respectiv. Astfel, distingem doua tipuri de elemente in limbajul XHTML + TIME: – elemente de continut : toate elementele care descriu continutul ce urmeaza a fi afisat in pagina, inclusiv elementele noi introduse de XHTML + TIME, care se refera la obiecte multimedia (t:animation, t:audio, t:img, t:media si t:video). Cele mai utilizate elemente de continut din XHTML sunt p, div, span, precum si elementele pentru descrierea de tabele.
Prin adaugarea de atribute XHTML + TIME unui element de continut, poate fi definita o aparitie periodica a elementului respectiv.
– elemente de stil : descriu stilul de afisare pentru un element. Dintre cele mai utilizate elemente de stil amintim: b, i si em. Atributele aplicate unui element de stil determina atasarea si inlaturarea unor stiluri de afisare pe parcursul timpului.
Generalitati CSS:
 De ce CSS si nu pur si simplu HTML? Simplu, CSS a fost creeat pentru a separa continutul (HTML) de infatisarea siteului (CSS).
CSS (cascading style sheet – foi de stil in cascada) poate fi folosit in 2 feluri, CSS intern sau CSS extern. Desigur cel extern este folosit mai des pentru simplu fapt ca fisierul CSS poate fi destul de lung. CSS INTERN Daca folositi CSS intern va trebui sa operati modificarile in fiecare pagina. In acest caz codul CSS va fi plasat ca in exemplul urmator:


CSS EXTERN Fisierele CSS se salveaza cu extensia .css .Daca folosim un fisier CSS pentru tot siteul, cand vom face o modificare la o culoare, la un div, modificarea va fi aplicata la toate paginile automat. Introducerea fisierului CSS in codul HTML se face astfel: sau asa:

.
Acest cod se aplica intre si .
Generalitati JAVASRIPT:
JavaScript reprezinta un limbaj de script utilizat la ora actuala de majoritatea paginilor web din Internet pentru a imbunatati design-ul general, valida datele utilizator din formulare, aduga interactiune cu utilizatorul prin efecte speciale aplicabile elementelor de pagina in funtie de evenimentele generate de utilizator. La ora actuala este cel mai important limbaj de script de pe Internet.
Ca tot ceea ce are legătură cu Web-ul, JavaScript este o tehnologie nouă – ai nouă chiar decât însuși limbajul Java. Inițial, JavaScript a fost dezvoltat de Netscape sub denumirea LiveScript, un limbaj de scriptare care intenționa să extindă capacitățile HTML și să ofere o alternativă parțială la utilizarea unui număr mare de scripturi CGI pentru prelucrarea informațiilor din formulare și pentru a adăuga dinamism în paginile utilizatorilor. După lansarea limbajului Java, Netscape a început să lucreze împreună cu firma Sun pentru a oferi un limbaj de scriptare a cărui sintaxă și semantică erau strâns legate de Java – motiv pentru care denumirea a fost schimbată în JavaScript. După finalizarea limbajului, Netscape și Sun l-au lansat împreună.
Una dintre motivațiile care au stat la baza limbajului JavaScript a fost recunoașterea necesității ca logica și inteligența să existe și pe partea de client, nu doar pe partea de server. Dacă toată logica este pe partea de server, întreaga prelucrare este dirijată la server, chiar și pentru sarcini simple, așa cum este validarea datelor. În fapt, lipsit de suport logic pe parte de utilizator, mediul Web ar intra în arhitectura demodată „de la terminal spre calculatorul gazdă”, care a fost înlocuită de revoluția PC din anii ’80. Asigurarea de logică în interiorul browserului îl înzestrează pe client și face ca relația să fie un adevărat sistem client/server.
Java a însemnat un pas în această direcție dar a fost implementat ca auxiliar al HTML în sine și nu se intenționase integrarea sa din punctul de vedere al unui limbaj. Fiind un limbaj strict în privința tipului de date, Java nu este optim ca liant pentru numeroasele tehnologii de care Webmasterii au nevoie în crearea paginilor lor și necesită capacități de programare de nivel redus – ceva ce majoritatea programatorilor HTML preferă să nu exercite exclusiv pentru a oferi logică în spatele elementelor unui formular. Un limbaj de scriptare de nivel ridicat, pe parte de client, părea a fi piesa lipsă din arena instrumentelor de programare pentru Web.
De la lansarea sa, în decembrie 1995, JavaScript și-a atras sprijin din partea principalilor distribuitori din domeniu, printre care Apple, Borland, Sybase, Informix, Oracle, Digital, HP și IBM. A continuat să se dezvolte, obținând recunoaștere nu numai în majoritatea browserelor actuale, ci și în alte aplicații pe care le-au lansat aceste companii, dar și altele.
Situația s-a complicat însă atunci când a intervenit Microsoft. Înțelegând importanța scriptării Web, Microsoft a dorit să ofere suport și pentru JavaScript. Când Netscape a preferat să acorde licența de tehnologie companiei Microsoft în loc să o vândă, Redmond a analizat JavaScript, bazându-se pe documentația publică, și a creat propria sa implementare, JScript, care este recunoscută de Microsoft Internet Explorer versiunile 3.0 și ulterioare. JScript 1.0 este aproximativ compatibil cu JavaScript 1.1, care este recunoscut în Netscape Navigator 3.0 și browserele ulterioare. Totuși, numeroasele versiuni JavaScript și diversele bizarerii specifice platformelor de operare le-au dat dureri de cap programatorilor pentru Web, atunci când au încercat să desfășoare situri Web capabile de JavaScript. (Pentru mai multe informații privind lucrul cu diverse versiuni JavaScript, consultați capitolele 26, „Garantarea funcționării scripturilor dumneavoastră în browserele de la Nestcape și Microsoft „, și 27, „Tehnici de detectare a browserului”.)
Din fericire, ajutorul se îndrepta deja spre programatorii JavaScript frustrați. Netscape, Microsoft și alți distribuitori au acceptat să predea limbajul unei organizații internaționale de standardizare, ECMA. De atunci, ECMA a finalizat o specificație de limbaj, cunoscută ca ECMAScript, pe care o recunosc toți distribuitorii. Deși standardul ECMA este util, atât Netscape cât și Microsoft au propriile lor implementări ale limbajului (JavaScript și JScript) și continuă să extindă limbajul dincolo de standardul de bază.
Pe lângă JScript, Microsoft are propriul său concurent pentru JavaScript, numit VBScript, realizat pentru a ușura pătrunderea pe Web a actualilor programatori VB. În esență, VBScript este un subset al limbajului Visual Basic. Deoarece Netscape nu recunoaște VBScript, principalele sale utilizări sunt pentru intraneturile (sau siturile Internet) unde se înregistrează o abundență de utilizatori de Microsoft Internet Explorer.
Chiar ținând seama de VBScript, JavaScript a devenit cunoscut ca limbajul de scriptare standard pentru Web. Întrucât distribuitorii produc instrumente de dezvoltare Web care necesită un limbaj de scriptare, JavaScript este frecvent folosit în acest scop; astfel, Netscape folosește limbajul cunoscut ca Server-Side JavaScript (SSJS) pe parte de server. Aspectul acesta va fi examinat mai târziu, în capitolul 12, „JavaScript pe parte de server”.
Generalitati APACHE:
Conform unui studiu al Netcraft Web, la sfarsitul anului 2001, Apache Web Server era utilizat de mai mult de 50% din paginile de Internet. Combinarea Linux cu Apache creaza un mediu performant, ieftin si usor implementat de catre aproape orice provider sau departament IT.
Apache este un puternic open source web server dezvoltat de catre Apache Group. Acesta ruleza pe sitemele de operare Unix, Linux, sau Windows; este o aplicatie ca o derivare a originalului server de web NCSA dezvoltat de Universitate Illinois din Urbana-Champaigne. Apache este cel mai polpular server web de pe internet, si mult mai puternic decat Internet Information Server al firmei Microsoft, cel mai apropiat competitor.
Apache este un HTTP server open-source, si deserveste site-ul dvs. „Apache handlers” transmit server-ului informatii despre cum sa manipuleze fisierele web care au nevoie sa fie procesate pe server. De exemplu, Apache este setat sa proceseze fisierele cu extensia .pl, folosind Perl. Totusi, daca dintr-un anumit motiv ati dorit si procesarea unor fisiere de tipul .script, folosing Perl, atunci veti avea nevoie sa setati/instalati un „Apache handler” personalizat pentru site-ul dvs.
Nota: Exista, adesea, o confuzie intre „MIME types” si „Apache handlers”. MIME types spun browser-ului cum sa manipuleze fisierele, in timp ce „Apache handlers” spun server-ului cum sa manipuleze fisierele.
Apache este un server HTTP cu structura publica (open-source) utilizat pentru a administra site-ul dumneavoastra Web. Repartizarile Apache indica serverului modul de tratare a filelor Web ce necesita procesare din partea server-ului.Spre exemplu, Apache este configurat sa proceseze file cu extensia .pl, utilizand limbajul de programare Perl. În cazul in care doriti a procesa si filele cu extensia .script utilizand limbajul de programare Perl, va trebui sa atribuiti o repartizare Apache personalizata pentru site-ul dumneavoastra Web.
Generalitati PHOTOSHOP:
Despre photoshop se spune ca ar fi o unealta grea. Dar pentru aceia care au lucrat o perioada mica cu el, li se pare la un moment dat ca nu mai trebuie sa faca nimic. Photoshopul iti permite sa faci foarte multe, de la efecte nemaipomenite la prelucrare de imagini, la scanare sau tehnoredactare.
Iata cateva reguli importante legate de crearea si optimizarea graficii special pentru web:
– Incercati sa realizati imagini de dimensiuni cat mai mici. Cu cat dimensiunea fisierului imagine este mai mica, cu atat sansele de a fi transferat (de a fi „incarcat” de browser) mai usor sunt mai mari. Dimensiunea se refera in special la spatiul ocupat pe disc (exprimat in kb) si mai putin la dimensiunea fizica a imaginii, desi de cele mai multe ori acestea sunt legate una de alta.
– Rezolutia nu conteaza. Indiferent de valoarea ce corespunde rezolutiei setate in programul de editare grafica pe care il folosim, browserul web afisaza un pixel de imagine pe un pixel ecran (in cazul in care nu este specificata o alta dimensiune in codul html). Prin urmare, ceea ce conteaza este dimensiunea imaginii – inaltimea si latimea acesteia exprimata in pixeli.
– Folositi preponderent „gif” sau „jpg”. Gif si Jpg sunt formatele grafice in care este preferabil sa salvam imaginile destinate afisarii pe web („png” este de asemenea o alternativa, dar inca exista reticente in privinta acesteia, datorita dimensiunii si compatibilitatii). Gif suporta 256 de culori, asadar este mai potrivit pentru imagini contrastante, cu suprafete de culoare plate sau text. Formatul Jpg, prin felul in care aplica compresia este mai potrivit pentru fotografii si pentru imagini cu treceri continue de culoare.
– Realizati indexarea cu atentie. Inainte de a salva o imagine in formatul „gif”, numarul de culori din fisier trebuie redus la 256 sau mai putin. Programe software precum Adobe Photoshop folosesc o tehnica numita indexare, care reatribuie culorile in concordanta cu un index fix de culoare. In Photoshop se pot crea si tabele de culoare personalizate, in asa fel incat sa putem pastra intacte o buna parte din culorile imaginii originale.
– Salvati numai datele esentiale. Prin folosirea optiunii de salvare speciala pentru web (optimizare pentru web), dimensiunea fisierului se reduce, eliminandu-se datele nefolositoare ce pot fi incluse (note incluse, canale alfa, etc).
Structura bazei de date
Proiectul foloseste o baza de date MySQL pentru stocarea informatiilor.
Baza de date contine 13 tabele :


1. Tabelul tadmins:
Este folosit pentru stocarea administratorilor site-ului.


Campuri:
fIdAdmin: Id-ul inregistrarii;
fUsername: numele utilizator al administratorului
fPassword: parola administratorului
2. Tabelul tcategorii:
Este folosit pentru stocarea categoriilor din care fac parte produsele.
Exemple de categorii:
IT;
Electrocasnice;
Mobila;
Auto
Campuri:
fIdCategorie: Id-ul inregistrarii
fNumeCategorie: Numele categoriei


3. Tabelul tcomentarii:
Este folosit pentru stocarea comentariilor adaugate de vizitatorii site-ului pentru diverse produse.
Campuri:
fIdComentariu: Id-ul inregistrarii;
fIdProdus: Id-ul produsului de care apartine comentariul
fIdUtilizator: Id-ul utilizatorului care a adaugat comentariul
fComentariu: Textul comentariului
fData: Data la care a fost adaugat comentariul
fAprobat: Specifica daca comentariul a fost aprobat sau nu. Valori posibile: 0 si 1. Initial comentariul nu este aprobat, iar campul fAprobat este setat pe 0. Comentariile se pot aproba de catre administrator din panoul de administrare.


4. Tabelul tcomenzi:
Este folosit pentru stocarea informatiilor legate de comenzile efectuare de utilizatori.
Campuri:
fIdComanda: Id-ul inregistrarii;
fIdUtilizator: Id-ul utilizatorului ce a efectuat comanda;
fIdCupon: Id-ul cuponului de reduceri. Daca Id-ul este egal cu 0 cuponul nu este luat in considerare;
fNumeCumparator: Numele cumparatorului. Poate fi diferit de numele utilizatorului care a efectuat comanda;
fEmailCumparator: Adresa email a cumparatorului. Poate fi diferita de adresa email a utilizatorului care a efectuat comanda;
fAdresaCumparator: Adresa cumparatorului. Poate fi diferita de adresa utilizatorului care a efectuat comanda;
fDataComanda: Data la care a fost efectuata comanda.


5. Tabelul tcos:
Este folosit pentru stocarea produselor aflate in cosul de cumparaturi.
In momentul autentificarii sau parasirii contului continutul cosului de cumparaturi este golit. De asemenea dupa efectuarea unei comenzi continutul cosului este golit.
Campuri:
fIdItem: Id-ul inregistrarii;
fIdUtilizator: Id-ul utilizatorului care efectueaza cumparaturile;
fIdProdus: Id-ul produsului adaugat in cos;
fCantitate: Cantitatea comandata;
fIdSesiune: Id-ul sesiunii utilizatorului. Acesta este asignat de server si este unic pentru fiecare vizita.


6. Tabelul tcupoane:
Este folosit pentru stocarea informatiilor referitoare la cupoanele de reduceri. Utilizatorul poate insera un cod al unui cupon la finalizarea comenzii si primeste o reducere corespunzatoare codului introdus.
Campuri:
fIdCupon: Id-ul inregistrarii;
fCodCupon: Codul cuponului;
fValoareCupon: Valoarea reducerii corespunzatoare.


6. Tabelul tproducatori:
Este folosit pentru stocarea informatiilor despre producatori.
Campuri:
fIdProducator: Id-ul inregistrarii;
fNumeProducator: Numele producatorului;
fUrl: Adresa web a paginii producatorului;
fDescriere: Descrierea producatorului.


8. Tabelul tproduse:
Este folosit pentru stocarea informatiilor referitoare la produse.
Campuri:
fIdProdus: Id-ul inregistrarii;
fIdSubcategorie: Id-ul subcategoriei din care face parte produsul (ex. Monitoare);
fIdProducator: Id-ul producatorului de care apartine acest produs (ex. Philips);
fNumeProdus: Numele produsului;
fCodProdus: Codul produsului;
fImagine: Calea catre imaginea produsului. Imaginile sunt stocate in directorul “images/produse”;
fDescriere: Descrierea detaliata a produsului;
fSpecificatii: Specificatiile tehnice ale produsului;
fPret: Pretul produsului, exprimat in RON, fara TVA;
fLuniGarantie: Numarul lunilor de garantie oferite de producator/vanzator.


9. Tabelul tprodusecomenzi:
Contine articolele unei comenzi deja efectuate de catre un utilizator.
Este asemanator tabelului tcos.
Campuri:
fIdArticol: Id-ul inregistrarii;
fIdComanda: Id-ul comenzii din care face parte articolul;
fIdProdus: Id-ul produsului comandat;
fCantitate: Cantitatea in care a fost comandat produsul.


10. Tabelul tpromotii:
Contine inregistrari referitoare la promotiile produselor.
Un produs poate avea o singura promotie asociata.
Campuri:
fIdPromotie: Id-ul inregistrarii;
fIdProdus: Id-ul produsului;
fDataInceput: Data de inceput a promotiei;
fDataSfarsit: Data la care promotia ia sfarsit;
fPretRedus: Noul pret (redus) valabil in timpul desfasurarii promotiei.


11. Tabelul tsubcategorii:
Este folosit pentru stocarea informatiilor referitoare la subcategoriile de marfuri (ex. Monitoare).
Campuri:
fIdSubcategorie: Id-ul inregistrarii;
fIdCategorie: Id-ul categoriei de care apartine subcategoria;
fNumeSubcategorie: Numele subcategoriei.


12. Tabelul tutilizatori:
Este folosit pentru stocarea informatiilor referitoare la utilizatorii inregistrati pe site. Inregistrarea este necesara pentru a putea comanda / vota / comenta produse.
Campuri:
fIdUtilizator: Id-ul inregistrarii;
fNumeUtilizator: Numele utilizatorului;
fParola: Parola utilizatorului;
fEmail: Adresa email a utilizatorului;
fAdresa: Adresa utilizatorului;
fDataInregistrare: Data la care utilizatorul s-a inregistrat pe website.


13. Tabelul tvoturi:
Este folosit pentru evidenta voturilor aplicate produselor de catre utilizatorii inregistrati pe site.
Un produs poate fi votat de catre un utilizator o singura data.
Campuri:
fIdVot: Id-ul inregistrarii;
fIdProdusL Id-ul produsului caruia i se aplica votul;
fIdUtilizator: Id-ul utilizatorului care a votat produsul;
fValoareVot: Valoarea votului (un numar intre 1 si 10).


Structura proiectului
Structura fisierelor si directoarelor proiectului este ilustrata in figura urmatoare:

In directorul radacina al aplicatiei se gasesc fisierele principale ale site-ului.
In directorul cronjobs se gasesc fisierele ce stabilesc Id-urile produsului zilei. In prima zi a lunii acest script este rulat, selecteaza cate un ID unic al unui produs pentru fiecare zi. Aceste id-uri sunt salvate intr-un fisier text.

In directorul admin sunt pastrate fisierele panoului de administrare. Acest panou este accesibil numai unui administrator, dupa autentificare.

In directorul images sunt stocate imaginile layout-ului aplicatiei si imaginile produselor (acestea sunt stocate intr-un director separat numit produse).

In directorul css sunt stocate fisierele ce definesc stilurile CSS (Cascading Style Sheets) folosite pentru formatarea layout-ului:

In directorul js sunt pastrate fisierele javascript folosite de aplicatie pentru intractiunea client (in special validari ale formularelor), dar si sursele unui calendar tip pop-up utilizat la definirea datelor de inceput si sfarsit ale promotiilor:


In directorul include sunt pastrate fisierele ce contin functii folosite de majoritatea celorlalte fisiere. Acestea sunt importate la inceputul fisierelor in care urmeaza a fi folosite.

Fisierul adminfunctions.inc.php contine functii folosite de modulul de administrare, ca de exemplu:
verificarea autentificarii administratorului;
afisarea meniului de optiuni al administratorului.
Fisierul mysql.inc.php contine date referitoare la conectarea la baza de date: adresa serverului, numele si parola utilizatorului ce se conecteaza, numele bazei de date.
De asemenea acelasi fisier contine functia de conectare la baza de date, functie ce este apelata in fiecare fisier ce extrage informatii in baza de date.
Fisierul fileupload-class.php contine functii necesare incarcarii imaginilor produselor. Aceste functii sunt folosite in modulul de administrare, in sectiunea de management al produselor.
Fisierul functions.inc.php contine functii referitoare la inserarea diferitelor sectiuni ale layout-ului site-ului, comune mai multor pagini, ca de exemplu afisarea unor meniuri, ale header-ului aplicatiei, ale formularului de cautare, ale produsului zilei, promotiilor, sectiunii de autentificare a utilizatorilor.
De asemenea anumite functii sunt folosite pentru a insera in restul documentelor a altor fisiere ce contin functii javascript sau stiluri CSS. Avantajul consta in posibilitatea de a adauga rapid un alt document CSS la lista celor deja folosite, in cazul in care este necesar, modificarea fiind necesara intr-un singur loc dar propagandu-se in toate fisierele.
De asemenea modificarea unei parti a interfetei site-ului sau doar a aspectului acesteia se poate realiza modificand doar cateva linii de cod
Layout-ul site-ului este practic definit de fisierele CSS, in acestea fiind stocate informatiile referitoare la formatarea textului si a layout-ului, pozitionarea acestora pe ecran, etc.
Doar prin editarea fisierelor CSS se poate obtine un aspect complet diferit al interfetei.
De asemenea, stilurile CSS permit o mult mai detaliata definire a formatului textelor si pozitionarii acestora decat confera limbajele HTML/XHTML.
In plus, stocarea separata a fisierelor javascript si CSS permite o mult mai rapida incarcare a site-ului deoarece aceste functii sunt incarcate o singura data, practic odata cu incarcarea primei pagini a site-ului. Apoi aceste pagini sunt folosite din cache-ul browserului.
Directorul admin, ce contine modulul de administrare este protejat impotriva robotilor de indexare cu ajutorul codului aflat in fisierul robots.txt:
User-agent: *
Disallow: /admin/
Acest cod specifica agentilor de cautare (ca de exemplu GoogleBot, MSN Bot, folosite de motoarele de cautare Google si MSN) ca nu au dreptul de a accesa acest director.
Structura aplicatiei
 Layout-ul aplicatiei este foarte usor de folosit, toate intrumentele aflandu-se la indemana si fiind accesibile din orice pagina.
Structura principala a interfetei este urmatoarea:
In partea de sus este afisat headerul aplicatiei impreuna cu logo-ul magazinului. De asemenea in partea dreapta superioara se afla pozitionata legatura catre cosul de cumparaturi, fiind usor accesibila.
Tot in partea superioara este afisata sectiunea de autentificare.
Aceasta poate avea 2 stari:
1. cand utilizatorul nu este inca autentificat:

Daca utilizatorul nu este autentificat, acesta are la dispozitie formularul de mai sus pentru autentificare. Pentru aceasta trebuiesc completate campurile
Utilizator
Parola
Apoi se poate realiza autentificarea cu ajutorul butonului Autentificare.
In cazul in care utilizatorul este la prima vizita pe site sau inca nu si-a creat cont poate folosi butonul Cont Nou, ce va afisa formularul de inscriere a unui nou utilizator.
Dupa autentificare sectiunea va arata ca in imaginea de mai jos:

Este afisat un mesaj de bun venit, impreuna cu 2 optiuni:
Contul meu;
Iesire
Accesarea optiunii contul meu ofera posibilitatea de a actualiza datele personale ale utilzatorului, cu exceptia numelui de utilizator ce este ales la inscriere si nu mai poate fi schimbat ulterior.
Accesarea optiunii Iesire are ca efect dez-autentificarea utilizatorului si stergerea informatiilor legate de acesta (ex. id-ul utilizatorului pastrat in variabilele sesiune).
Revenind la optiunea de creare a unui nou cont, aceasta se prezinta in felul urmator:

Campurile necesare crearii unui cont nou sunt:
Numele utilizator ce nu mai poate fi schimbat ulterior.
Parola necesara autentificarii. Parola trebuie confirmata deoarece caracterele acesteia nu sunt vizibile fiind mascate de caracterul *
Adresa de email ce poate fi folosita de catre administrator pentru comunicarea cu utilizatorul. Aceasta nu este vizibila celorlalti utilizatori ai site-ului. De asemenea adresa de email trebuie confirmata pentru a evita scrierea unei adrese gresite ce poate face imposibila comunicarea administratorilor siteului cu utilizatorul.
Adresa utilizatorului.
Campurile referitoare la informatiile personale pot fi modificare dupa inregistrare si autentificare, cu exceptia numelui utilizatorului.
Acestea sunt folosite si in procesul comenzii produselor, fiind insa doar sugerate utilizatorului: ele sunt inscrise in formular insa acesta le poate actualiza inainte de confirmarea comenzii, de exemplu pentru a expedia produsele la o alta adresa decat cea personala.
In cele mai multe cazuri insa utilizatorii folosesc aceleasi informatii inscrise la crearea contului si la comanda.
Butonul Anuleaza Modificari reseteaza starea formularului la cea initiala, golind toate campurile formularului.
Butonul Inregistrare trimite datele catre scriptul ce le va insera in baza de date.
In cazul in care utilizatorul nu a completat toate campurile, acesta este atentionat prin mesaje, cu ajutorul functiilor de validate JavaScript.


Dupa autentificarea utilizatorului acesta isi poate modifica informatiile personale, accesand optiunea Contul meu:

Aici are la dispozitie informatiile introduse la inregistrare.
De asemenea are afisata si data inscrierii pe site.
Ca si in ecranul de inregistrare, parola si adresa de email trebuiesc confirmate, pentru a evita folositea unor date gresite ce duc la imposibiliatea autentificarii ulterioare sau la imposibilitatea comunicarii administratorilor siteului cu utilizatorii.
Butonul Anuleaza modificari aduce formularul in starea initiala, adica va afisa informatiile aflate in baza de date, fara insa a reincarca pagina.
Butonul Actualizare salveaza modificarile in baza de date.
Optiunea Iesire are ca efect dez-autentificarea utilizatorului si redirectarea acestuia la pagina principala a siteului.
Sectiunea de cautare este prezentata in figura urmatoare:

Formularul contine 2 campuri (liste):
Categorii
Subcategorii
In cazul in care utilizatorul nu alege o categorie sau o subcategorie vor fi afisate toate produsele.
Lista subcategoriilor contine initial doar optiunea Toate.
In cazul alegerii unei categorii, in cea de-a doua lista vor fi incarcate subcategoriile corespunzatoare categoriei alese.
Apoi utilizatorul poate alege o subcategorie sau poate pastra optiunea Toate, in acest caz cautarea realizandu-se in functie de Categoria aleasa, pentru toate subcategoriile acesteia.
Sectiunea de cautare este disponibila in toate paginile siteului.
In figura de mai jos este prezentata pagina rezultatelor cautarii.
Rezultatele sunt afisate alternand culoarea de fundal pentru a putea fi observate cu o mai mare usurinta:

Pagina de rezultate ofera urmatoarele informatii si optiuni pentru fiecare din produsele returnate de cautare:
Imaginea produsului;
Numele produsului;
O scurta descriere a produsului;
Pretul fara TVA;
Pretul cu TVA;
Un buton pentru adaugarea produsului in cosul de cumparaturi.
In cazul folosirii butonului Adauga in cos, produsul va fi adaugat in cosul de cumparaturi cu cantitatea 1, cu exceptia cazului in care deja exista in cos, caz in care cantitatea deja existenta va fi incrementata cu 1. Aceasta cantitate poate fi modificata ulterior prin accesarea paginii Cosul meu.
Sub sectiunea de cautare se gasesc urmatoarele 3 grupe de optiuni:



Prima grupa afiseaza categoriile de produse definite in baza de date de catre administrator cu ajutorul modulului de administrare. Prin accesarea unei optiuni a acesui meniu se afiseaza produsele din categoria selectata, intr-un mod similar cu rezultatele cautarii, prezentate anterior.
A doua grupa de informatii cuprinde optiuni catre paginile de informatii generale ce contin detalii legate de modul de efectuare a comenzilor, modul si posibilitatile de plata a produselor, informatii referitoare la garantia produselor si la transportul acestora.
Ultima grupa de optiuni cuprinde legaturi catre urmatoarele pagini:
Produsul zilei
Promotii
Cupoane de reduceri.
Produsul zilei afiseaza informatii despre un produs selectat anterior, urmand a fi promovat pe durata unei zile. Acesta este prezentat si intr-o caseta separate in partea dreapta a paginii.

Din aceasta pagina se poate naviga usor catre produse aflate in aceeasi categorie sau subcategories au catre produse ale aceluiasi producator.
De asemenea produsul se poate adauga in cosul de cumparaturi prin accesarea optiunii Adauga in cos.
Pagina ofera o descriere a produsului, specificatiile tehnice, numele si imaginea acestuia, pretul fara TVA si cu TVA si termenul de garantie exprimat in numar de luni.

Tot in partea dreapta a interfetei, sub caseta produsului zilei se afla o caseta pentru afisarea unui produs aleator pentru care exista promotii (reduceri de pret).
Prin accesarea legaturii acestei casete se afiseaza toate produsele aflate in promotie.
De asemenea in aceasta caseta se afla afisat pretul uzual impreuna cu noul pret, redus, afisat intermittent.


Pagina promotiilor afiseaza produsele impreuna cu urmatoarele informatii:
Imaginea produsului;
Descrierea produsului;
Pretul vechi fara TVA;
Pretul vechi cu TVA;
Pretul nou fara TVA;
Pretul nou cu TVA;
Butonul Adauga in cos.
Pagina promotiilor poate fi accesata din mai multe locuri:
meniul superior;
meniul inferior;
meniul din partea stanga a interfetei;
caseta de promotii.
Pagina Cupoane de reduceri prezinta codurile cupoanelor ce ofera posibilitatea obtinerii unor reduceri la pretul total al cumparaturilor:

Codul trebuie introdus in pagina de confirmare a comenzii.
In cazul in care este introdus un cod, pretul total al facturii va fi redus.
Pagina Harta Site afiseaza legaturi spre categoriile de produse existente, subcategoriile acestora si produsele aflate in aceste subcategorii:

Aceasta pagina ajuta atat la navigarea rapida in continutul siteului si identificarea rapida a unor categorii, subcategorii si produse, cat si la indexarea paginilor de catre agentii de cautare, care au la dispozitie legaturi catre toate aceste elemente.
Agentii de cautare nu pot urmari legaturi non-standard ce folosesc cod javascript ci doar legaturi standard de tip href = locatie.
Pagina de contact afiseaza informatii referitoare la contactarea magazinului, ca:
adresa;
numere telefon;
numere fax;
adrese email

Pagina de categorii afiseaza categoriile si subcategoriile acestora, intr-un mod similar paginii Harta site fara a afisa insa legaturi spre produse.

In cazul in care pentru o categorie nu sunt inca definite subcategorii de catre administrator se va afisa mesajul “Nu exista subcategorii”, in caz contrar vor fi afisate legaturi catre subcategoriile existente.
De asemenea, ca si in cazul paginii Rezultatele cautarii, randurile vor avea fundal intermitent pentru usurinta navigarii.
Cosul de cumparaturi.
Acesta este accesibil doar utilizatorilor autentificati.
Accesarea cosului fara autentificare afiseaza urmatorul mesaj:

Dupa autentificare continutul cosului poate fi prezentat in 2 moduri.
Primul mod este afisat in cazul in care cosul nu contine nici un produs:

In cazul in care exista produse in cosul de cumparaturi acestea vor fi afisate impreuna cu urmatoarele informatii:
Nume produs;
Cantitate;
Pret unitar (per bucata);
Pret total (per produs). Acesta este pretul unitary inmultit cu numarul de bucati;
Pretul final al tuturor produselor si cantitatilor.
Alte optiuni disponibile in pagina Cos de cumparaturi:
Sterge produs;
Actualizeaza cantitati;
Goleste cos;
Comanda produse.

Optiunea Goleste cosul sterge toate produsele din cos in cazul in care utilizatorul confirma acest lucru, pentru a preveni stergerea accidentala:

Utilizatorul poate modifica pentru fiecare produs in parte cantitatile. Salvarea noilor cantitati se face cu ajutorul butonului Actualizare.
In cazul in care se introduce cantitatea 0 produsul este sters din cos automat.
In cazul in care utilizatorul introduce caractere non-numerice in caseta de cantitati este afisat un mesaj de eroare si este pastrata vechea valoare:

In cazul in care in cos este adaugat un produs deja existent, se va incrementa cantitatea acestuia cu 1.
Butonul Comanda produsele afiseaza urmatoarea pagina:

Aceasta pagina afiseaza din nou continutul cosului de cumparaturi.
Functionalitatea cosului este identica cu cea din pagina anterioara insa exista o noua sectiune: Informatii despre cumparator si despre cupoanele de reduceri.
Informatiile despre comparator sunt completate din profilul utilizatorului insa acesta le poate modifica.
De exemplu utilizatorul poate alege o alta adresa pentru expedierea produselor decat cea personala.
De asemenea in aceasta pagina utilizatorul poate folosi un cod al unui cupon de reduceri.
In cazul in care informatiile din pagina nu sunt completate corect utilizatorul este atentionat cu ajutorul mesajelor.
Singurul camp optional este cel pentru cod cupon reducere, restul campurilor fiind obligatorii:

Pagina de confirmare a comenzii este afisata mai jos:

Aceasta pagina contine un sumar al comenzii si anume:
produsele aflate in cosul de cumparaturi;
informatiile despre utilizator
Aceasta pagina insa nu permite modificarea parametrilor.
Pentru aceasta trebuie incarcata pagina anterioara.
La alegerea optiunii Comanda produsele utilizatorul trebuie sa confirme trimiterea comenzii.
In cazul in care utilizatorul alege optiunea Cancel poate anula trimiterea comenzii.
In caz contrar comanda este confirmata.

Dupa confirmarea comenzii utilizatorul primeste urmatorul mesaj:

Sectiunea de administrare
In aceasta sectiune administratorul poate configura categoriile de produse, subcategoriile acestora, produsele, producatorii, promotiile, cupoanele de reduceri, comenzi, utilizatori, comentarii ale produselor.
Pagina de inceput este urmatoarea:

Aici administratorul trebuie sa se autentifice pentru a avea acces la optiunile de administrare.
Dupa autentificare administratorul va avea disponibil urmatorul meniu:

Prima optiune este pentru modificarea parolei de acces.
Numele utilizator nu poate fi schimbat, ca si in cazul utilizatorilor standard.
Ecranul pentru modificarea parolei este urmatorul:

Parola trebuie confirmata pentru a preveni schimbarea parolei cu o alta tiparita gresit ce va preveni accesul ulterior la optiunile de administrare.
Urmatoarea grupa de optiuni foloseste definirii producatorilor, categoriilor de produse, subcategoriilor acestora si produselor:
Administrare producatori;
Administrare categorii;
Administrare subcategorii;
Administrare produse.

Optiunea Administrare producatori ofera urmatoarele posibilitati:
afisarea producatorilor existenti;
afisarea detaliilor unui producator;
editarea unui producator;
stergerea unui producator;
afisarea produselor unui producator;
adaugarea unui nou producator.

Producatorii sunt afisati folosind un fundal alternative pentru usurinta navigarii.
Pagina de adaugare a unui producator permite inserarea unei noi inregistrari completand urmatoarele campuri:
nume producator;
site web;
descriere.

Optiunea de editare afiseaza o pagina similara cu mentiunea ca valorile campurilor vor fi deja completate si butonul Adauga va fi inlocuit cu butonul Modifica.
Optiunea de vizualizare detalii afiseaza informatiile despre producator:

Urmatoarea optiune este folosita pentru a defini categoriile de produse.
Informatiile si optiunile acesteia sunt:
afisare nume categorie;
afisare subcategorii continute;
modificare informatii categorie;
stergere categorie;
adaugare categorie noua.

Adaugarea unei noi categorii presupune doar completarea numelui categoriei. De asemenea modificarea unei categorii presupune modificarea numelui categoriei.

Urmatoarea optiune din acest grup foloseste definirii subcategoriilor.
Aceasta functioneaza intr-un mod asemanator definirii categoriilor cu mentiunea ca un cel din urma caz trebuie aleasa si categoria din care face parte subcategoria.
Optiunile acestui caz sunt:
afisare nume subcategorie;
afisare produse continute;
modificare informatii subcategorie;
stergere subcategorie;
adaugare subcategorie noua.

Adaugarea sau editarea unei subcategorii presupun alegerea categoriei parinte si apoi completarea numelui subcategoriei.
Necompletarea acestor campuri duce la afisarea unor mesaje de eroare:

Ultima optiune din acest grup foloseste definirii produselor.
Aceasta afiseaza:
numele produsului;
numele producatorului;
numele categoriei;
numele subcategoriei;
detalii produs;
editare produs;
stergere produs;
adaugare produs nou.

Adaugarea unui produs nou, ca si editarea unui produs presupun completarea obligatorie a urmatoarelor campuri:
categorie;
subcategorie;
producator;
nume produs;
cod produs;
imagine produs;
descriere produs;
specificatii tehnice produs;
pret produs;
garantie.
Imaginile produselor trebuie sa respecte urmatoarele reguli:
-Fisiere acceptate: GIF/JPG
-Marime maxima: 500kb
-Dimensiuni maxime: 200px/200px

Urmatoarea grupa de optiuni permite administrarea utilizatorilor si a comentariilor produselor:

Administrarea utilizatorilor permite doar stergerea acestora, fara a putea adauga sau modifica datele unui utilizator.

De asemenea se pot afisa detaliile utilizatorilor.

Adresa email a unui utilizator este afisata sub forma de link de tip mailto, deci administratorul poate contacta rapid utilizatorii.
Sectiunea de administrare a comentariilor de asemenea ofera posibilitatea de stergere, fara a oferi posibilitatea de adaugare sau modificare.
In plus administratorul poate active sau dezactiva un comentariu.
Initial comentariile sunt adaugate ca dezactivate si nu vor fi afisate decat dupa activarea lor de catre administrator.
De asemenea ofera legaturi si spre profilul utilizatorului care a adaugat comentariul si asupra detaliilor produsului la care este atasat comentariul.

In coloana Aprobat se poate vedea daca comentariul este active si in coloana urmatoare se poate active / dezactiva un comentariu.
Activarea si dezactivarea se realizeaza dupa confirmarea acestei actiuni.
Aceste operatii sunt disponibile si din pagina de afisare detalii comentariu care afiseaza in plus si textul comentariului:

Urmatoarea grupa de optiuni ofera posibilitatea de a administra comenzile, promotiile si cupoanele de reduceri.
Administrarea comenzilor afiseaza informatii despre utilizatorul care a realizat comanda si data comenzii:

Informatii detaliate referitoare la produsele comandate, cupon de reducere, adresa pentru expediat produsele, total pret si cantitati sunt disponibile in pagina de detalii a comenzilor:

Administratorul poate contacta direct utilizatorul ce a realizat comanda prin folosirea comenzii de afisare a adresei de email.
Sectiunea de administrare a promotiilor afiseaza produsul pentru care se aplica promotia, data de inceput a promotiei si data de sfarsit a acesteia precum si noul pret.

De asemenea din aceasta fereastra se poate adauga o noua promotie.
Setarea intervalului de valabilitate a promotiei se poate realiza cu ajutorul unui control de tip calendar :

Dupa alegerea datei de inceput cu ajutorul primului calendar, cel de-al doilea nu permite alegerea unei date mai mica decat prima. De asemenea dupa alegerea datei de sfarsit primul calendar nu permite alegerea unei date superioare celei de sfarsit a promotiei.

Lista Produs / Pret afiseaza doar produsele pentru care nu exista deja promotii definite. Aceasta lista afiseaza atat numele produsului cat si pretul de catalog pentru a usura alegerea noului pret pentru promotie.

In cazul modificarii unei promotii produsul nu poate fi schimbat.
In locul listei de la adaugare se afiseaza numele produsului si pretul acestuia de catalog. Numele produsului este de fapt o legatura catre detaliile acestuia :

Ultima optiune din meniul de administrare se refera la administrarea cupoanelor de reduceri.
Se pot vizualiza codurile cupoanelor, valorile reducerilor associate, modifica si sterge precum si adauga noi cupoane.

In continuare este prezentata fereastra de adaugare a unui nou cupon, care este similara cu cea de modificare a unui cupon existent cu mentiunea ca cea din urma va avea campurile deja completate.
Ca si in celelalte cazuri toate campurile sunt obligatorii, necompletarea acestora ducand la afisarea unor mesaje de eroare.

Cu ajutorul optiunii iesire administratorul se poate dez-autentifica pentru a preveni accesul neautorizat la panoul de administrare al site-ului.
Codul sursa al proiectului
In continuare vor fi prezentate cateva sectiuni de cod mai importante, din codul sursa al aplicatiei.
Aceste sectiuni cuprind atat cod PHP cat si Javascript si CSS.
Functia de conectare la baza de date este prezentata in figura urmatoare:

Se observa ca acest fisier include un alt fisier numit config.inc.php ce contine setarile globale ale aplicatiei.
Parametrii conexiunii sunt:
numele serverului MySQL;
numele bazei de date folosita de aplicatie;
numele utilizatorului ce are acces la baza de date;
parola acestui utilizator.
Cu acesti parametrii se va apela functia PHP mysql_connect ce realizeaza conectarea la baza de date.
In cazul in care conectarea la baza de date nu reuseste se va afisa urmatorul mesaj:
Error while connecting to db
Impreuna cu motivul erorii (de ex. Access denied)
Ultima functie din fisier realizeaza inchiderea conexiunii cu baza de date pentru a elibera resursele:
fDBClose.
Fisierul functions.inc.php contine functii uzuale folosite in majoritatea paginilor siteului ca de exemplu:
– inserarea de atribute si / sau taguri HTML, ca de exemplu META TAGS:

De asemenea aici se afla functii folosite pentru includerea de fisiere in care sunt definite functii JavaScript sau stiluri CSS necesare validarii formularelor sau formatarii si pozitionarii layoutului siteului:

Prin simpla modificare a acestor functii, ca de exemplu adaugarea unui nou fisier ce trebuie inclus, aceasta se va realiza fara a afecta toate fisierele ce folosesc functiile de validare.
Un alt exemplu de functii folosite in fisierele siteului sunt cele ce includ sectiuni din layout, ca de exemplu sectiunea de autentificare sau cea de cautare:

Aceasta functie testeaza daca utilizatorul este autentificat.
In cazul in care este autentificat afiseaza un mesaj de bun venit impreuna cu optiunile Contul meu si Iesire cont.
In caz contrar afiseaza formularul de autentificare precum si optiunea de creare a unui cont nou.
Toate componentele si sectiunile layoutului sunt afisate prin apelarea unor functii din acest fisier ceea ce permite schimbarea rapida a acestuia, ca de exemplu adaugarea / stergerea / modificarea unei optiuni din meniul din partea inferioara a siteului, schimbare ce se va propaga in tot siteul:

Directorul JS contine functii JavaScript necesare in majoritatea cazurilor pentru validari ale formularelor:

Un alt exemplu de functii JavaScript este cel din figura urmatoare, care testeaza daca utilizatorul a introdus in campul corespunzator cantitatilor produselor din cosul de cumparaturi caractere valide (numere, caractere intre 0 si 9):

In continuare se va prezenta o secventa de cod CSS necesar pentru formatarea si pozitionarea elementelor de layout, in acest caz a meniului superior si elementelor acestuia :

Majoritatea actiunilor efectuate de catre utilizatori sunt implementate in fisierul execute.php din directorul radacina al proiectului.
Un fisier similar se afla in directorul admin, unde sunt implementate actiunile realizate de administrator pentru panoul de administrare prezentat anterior.
Structura acestui fisier este urmatoarea:
– la inceputul acestuia se importa fisiere in care sunt definite o serie de functii si setari necesare in implementarile actiunilor, ca de exemplu fisierul ce contine functiile de conectare respective deconectare la / de la baza de date sau cele ce afiseaza meniurile disponibile:

– apoi se verifica daca utilizatorul este autentificat si este de tip administrator pentru a valida accesul la aceste actiuni si se realizeaza conectarea la baza de date:

– in continuare se verifica daca actiunea ceruta se afla in lista actiunilor valide:

– apoi urmeaza implementarea unei actiuni urmata de redirectarea la p pagina ce de obicei listeaza obiectele afectate de actiunea respective (producatori, categorii, promotii, etc) :

In exemplul de mai sus sunt ilustrate cele 3 actiuni ce se pot efectua asupra unui producator :
adaugare;
modificare;
stergere
Bibliografie
Internet si WEB – Ghid complet – SAMS Teach Yourself
Autor: N. Snell B. Temple T.M. Clark
Initiere in PHP 5
Autor: Steven Holzner
PHP5 Si MySQL pentru comert electronic
Autor: Cristian Darie Mihai Bucica
Proiectarea paginilor WEB
Autor: Ionel Simion
Dezvoltarea aplicatiilor WEB folosind XHTML, PHP si MySQL
Autor: Traian Anghel
PHP, MySQL si Apache
Autor: Julie C. Meloni
Optimizarea paginilor Web
Autor: Calin Ioan Acu
Proiectarea siturilor Web – Design si functionalitate
Autor: Sabin Buraga
http://php.net/
http://www.mysql.com/
http://apache.org/
http://www.adobe.com/products/photoshop/
http://www.w3schools.com/css/default.asp
http://www.w3.org/Style/CSS/
http://www.w3.org/MarkUp/
http://www.w3.org/TR/xhtml1/
http://www.w3schools.com/xhtml/
http://en.wikipedia.org/wiki/XHTML
http://javascript.internet.com/
http://www.javascript.com/

Similar Posts