Figura 3. Interogarea unei baze de date MySQL folosind funcția din CodeIgniter [617440]
UNIVERSITATEA “AUREL VLAICU” DIN ARAD FACULTATEA DE ȘTIINȚE EXACTE DOMENIUL DE LICENȚĂ: INFORMATICĂ PROGRAMUL DE STUDIU: INFORMATICĂ FORMA DE ÎNVĂȚĂMÂNT: ZI LUCRARE DE LICENȚĂ ÎNDRUMĂTOR ȘTIINȚIFIC Prof. univ. dr. Mariana Nagy ABSOLVENT: [anonimizat] 2017
UNIVERSITATEA “AUREL VLAICU” DIN ARAD FACULTATEA DE ȘTIINȚE EXACTE DOMENIUL DE LICENȚĂ: INFORMATICĂ PROGRAMUL DE STUDIU: INFORMATICĂ FORMA DE ÎNVĂȚĂMÂNT: ZI DEZVOLTAREA PLATFORMEI HNT CMS ÎNDRUMĂTOR ȘTIINȚIFIC Prof. univ. dr. Mariana Nagy ABSOLVENT: [anonimizat] 2017
Cuprins Introducere…………………………………………………………………………………………………………………. Capitolul 1. Comerțul electronic…………………………………………………………………………………… 1.1. Repere în definirea comerțului electronic…………………………………………………….. 1.2. Beneficiile comerțului electronic…………………………………………………………………. 1.3. Sisteme de plăți on-line……………………………………………………………………………….. Capitolul 2. Principii și instrumente pentru dezvoltarea platformei HNT CMS………………. 2.1. Patternul MVC…………………………………………………………………………………………… 2.2. CodeIgniter………………………………………………………………………………………………… 2.3. HTML, JavaScript și PHP…………………………………………………………………………… Capitolul 3. Prezentarea sistemului de administrare HNT CMS…………………………………….. 3.1. Pagina de administrare – panoul de statistici……………………………………………….. 3.2. Logarea administratorului………………………………………………………………………….. 3.3. Categorii, produse și clienți – scurtă prezentare a proiectării………………………. 3.4. Proiectarea de ansamblu – Diagrama bazei de date (mySQL) ……………………… Capitolul 4. Ghid de utilizare al panoului de administrare HNT CMS………………………….. 4.1. Pagina de administrare……………………………………………………………………………… 4.2. Categorii………………………………………………………………………………………………….. 4.3. Produse……………………………………………………………………………………………………. 4.4. Producători………………………………………………………………………………………………. 4.5. Comenzi……………………………………………………………………………………………………. 4.6. Rapoarte vânzări………………………………………………………………………………………. Concluzii…………………………………………………………………………………………………………………….. Bibliografie…………………………………………………………………………………………………………………
INTRODUCERE Într-o lume în continuă mișcare, în plină epocă a vitezei și a consumerismului, dezvoltarea comerțului este o consecință normală și foarte la îndemână deopotrivă pentru comercianți și pentru consumatorii finali. La momentul acesta există o cerere din ce în ce mai mare de simplificare și totodată de dezvoltare a modalităților unui consumator de a beneficia de produse și servicii în mijlocul confortului de acasă, de la serviciu sau din locații publice. Firmele se confruntă cu o cerere sporită din partea clienților, existând o competiție la nivel mondial din cauza creșterii permanente a așteptărilor acestora. Ca să întâmpine aceste cerințe, întreprinderile sunt în plin proces de transformare organizațională și a modului lor de funcționare. Comerțul electronic devine astfel calea prin care se sprijină și se facilitează aceste schimbări. Pe măsură ce web-ul s-a răspândit și o masă critică de utilizatori a fost atinsă, specialiștii în marketing, analiștii și mai ales firmele cu activitate de comerț au hotărât că merită investiția în punerea la punct a tehnologiei care să conducă la transformarea persoanelor care fac surf pe web în potențiali clienți. Înainte de această noutate inovatoare și soluție de creștere a profitului și de dezvoltare a comerțului ca întreg, site-urile web ale firmelor conțineau informații succinte, cum ar fi date de contact, oferte promoționale sau chiar cataloage de produse sub forma unor pagini HTML statice. Pentru a comanda, puteai folosi faxul, telefonul sau emailul. Timpul prelungit de așteptare și procedura incomodă de a depune banii la bancă pentru a intra în posesia produselor cumpărate au adus în atenția tuturor celor implicați în comerț nevoia unor soluții ajutătoare. Treptat, aceste soluții s-au concretizat în forma comerțului electronic, care oferă oportunitatea de a comercializa produse în întreaga lume, sporind numărul de potențiali clienți în primul rând prin eliminarea barierelor geografice ce apăreau între clienți și comercianți. Cum interconectivitatea calculatoarelor în Internet a crescut formidabil, în toate segmentele societății, companiile au urmat tendința tot mai evidentă de a utiliza aceste rețele în aria acestui nou tip de comerț, comerțul electronic în internet, care să apeleze la servicii noi, mai cuprinzătoare, care să răspundă pe deplin cerinței cumpărătorilor. Cu toate că acest domeniu este în continuă dezvoltare, fiind testate zilnic noi soluții pentru îmbunătățirea funcționalității comerțului electronic, există deja câteva repere și date de
bază de la care se poate porni în elaborarea unui magazin electronic. Fie că este vorba de bănci, firme de publicitate, producători de bunuri și servicii, magazine reale sau rețele de magazine, internet-magazinul trebuie conceput pentru a reda cât mai fidel scopul și a întâmpina așteptările clienților pentru a crește fidelizarea acestora și a spori profitul. Lucrarea de față își propune să privească în detaliu scheletul și funcționalitatea unei platforme CMS (Content management system), pornind de la încadrarea acesteia în contextul dezvoltării curente a comerțului electronic și a importanței masive a rolului ei în crearea unui magazin electronic de succes. Lucrarea de licență cuprinde patru capitole: primul capitol urmărește o introducere în lumea comerțului electronic, a beneficiilor acestuia, precum și a sistemelor de plată online prin care este posibilă funcționarea sa. Al doilea capitol cuprinde punerea în antiteză a unor elemente în ceea ce privește principiile și instrumentele pentru dezvoltarea platformei CMS: Patternul MVC; CodeIgniter; HTML, JavaScript și PHP. În al treilea capitol se descrie proiectarea pe scurt a sistemului de administrare al conținutului platformei CMS, cu denumirea HNT CMS: Sunt descrise: pagina de administrare, logarea administratorului, categoriile – cu adaugare, ștergere, listare, produse- cu adaugare, ștergere și listare, prelucrarea comenzilor și a clienților, structura backend a platformei și structura bazei de date (mySQL). Al patrulea capitol cuprinde prezentarea succintă a panoului de administrare al platformei, a paginii de administrare, al adăugării și ștergerii de categorii și produse, comenzi și rapoarte de vânzări. Lucrarea se încheie prin formularea unor concluzii.
CAPITOLUL 1. COMERȚUL ELECTRONIC 1.4. Repere în definirea comerțului electronic La ora actuală termenul de comerț electronic se înțelege în câteva moduri și anume: orice tranzacție financiară care utilizează tehnologia informatică; o noțiune care acoperă circuitul complet de vânzări, incluzând vânzarea propriu-zisă și marketingul. Viziunea generală a comerțului electronic este că acesta reprezintă orice tranzacție comercială condusă electronic pentru cumpărarea unor produse cum ar fi cosmetice, CD-uri, bilete de călătorie, cărți, etc. În sens larg, acesta trebuie privit ca o noutate care are un impact mult mai profund asupra evoluției afacerilor, care cuprinde nu doar noile achiziții comerciale ci și toate activitățile care susțin obiectivele de marketing ale unei firme, incluzând publicitate, plăți, vânzări, activități post-vânzare, servicii, etc. Comerțul electronic vizează utilizarea transferului de documente cum ar fi contractele, comenzile pro forma sau imagini și înregistrări vocale. Acesta presupunea utilizarea în rețele cu valoare adaugată a unor aplicații de tipul transferului electronic de documente (EDI- Electronic Data Interchange ), a codurilor de bare, transferului de fișiere și a poștei electronice. Transferul electronic care are la bază sistemul EDI transmitea datele folosind un format standard, motiv pentru care a fost posibilă trecerea lor în format electronic. Aceste rețele aveau însă un cost ridicat și multe firme utilizau linii închiriate sau foloseau serviciile unor firme care aveau conexiuni și servicii de transmisie celor angajați în EDI (VAN- Value Added Network). Metoda aceasta de transferare a datelor a ajutat la micșorarea costurilor pentru completarea formularelor, printarea, trimiterea sau stocarea din nou într-un sistem informatic de cum ajungeau la destinatar. De asemenea, au putut fi evitate erorile existente din cauza introducerii repetate a datelor. Pe măsură ce Internetul a evoluat, comerțul elecronic s-a bazat pe acesta, deoarece folosirea lui este mai puțin costisitoare. Există câteva etape ale comerțului bazat pe Internet: 1. Etapa inițială, de utilizare a email-ului de transferare a datelor. 2. Etapa numită “www” apărută în același timp cu primul browser web, denumit Mosaic. 3. Etapa de interactivitate client-furnizor, în care au fost introduse protocoale de securitate de comunicație în websiteuri, cuprinzând formulare și aplicații software pe partea de server și client.
4. Etapa de introducere a web-ului în intranetul organizației, folosirea extranet-ului între organizații, utilizarea capacităților multimedia ale web-ului, transformându-se într-un canal valoros de reclamă publicitară și utilizarea tehnologiei Python. Pentru a da o definiție cuprinzătoare acestui termen putem spune că E-commerce sau Comerțul electronic este acea manieră de a conduce activitățile de comerț folosind echipamente electronice pentru a mări aria de acoperire a zonelor unde se află potențialii clienți și viteza cu care este livrată informația. Comerțul electronic are următoarele caracteristici: accesibilitate și anume- posibilitatea de a construi propria afacere în domeniul comerțului electronic o poate primi fiecare individ indiferent de studii, vârstă, loc de trai; lipsa riscului investițional – se investește mult mai puțin decât pentru un magazin tradițional; scara largă – afaceri de tipul e-commerce pot fi construite în orice țară. Există mai multe tipuri de comerț electronic: – Comerț business-to-business (B2B), format din companii sau alte organizații; – Comerț business-to-consumer (B2C), companiile vând unor cumpărătoi persoane fizice; – Comerț consumer-to-business (C2B), persoane fizice vând produse sau servicii firmelor; – Comerț consumer-to-consumer (C2C), consumatorii vând altor consumatori; – Comerț mobil (m-commerce), în care sunt realizate activități și tranzacții de comerț electronic conduse prin mediu electromagnetic; – Comerț e-government: Government-to business (G2B), o instituție guvernamentală cumpără sau vinde bunuri, servicii sau informații de la persoane juridice; – Comerț government-to-consumer (G2C), activități între guvern și persoane fizice sub forma de acordare de informații sau prestare de servicii. 1.2. Beneficiile comerțului electronic Noua economie se bazează pe comerțul electronic, iar Internetul a devenit principala cale prin care acesta se evidențiază. Odată cu acesta există apariția unor avantaje ale tuturor părților implicate: firma, cumpărătorul și societatea.
Dorința de simplificare a costurilor, a procesului de cumpărare, de micșorare a timpului consumat cu deplasarea către magazine vine în întâmpinarea comerțului electronic, făcând din acesta o soluție potrivită nevoilor întregilor participanți ai societății. Clientul magazinelor virtuale este lipsit de stresul cauzat de aglomerație și lipsa timpului și are posibilitatea de a alege dintr-o mare varietate de produse la prețuri similare celor practicate în marketurile clasice. Din punct de vedere al costurilor, amenajarea unui magazin virtual este mai puțin costisitoare, costurile de întreținere fiind mai reduse, iar aria de acoperire este nelimitată, cu un program non-stop, livrarea fiind realizată prin intermediul serviciilor de curierat. Astfel, o firmă care investește în crearea unui magazin on-line reușește să-și extindă zona de activitate pentru piața națională și internațională, folosindu-se de un capital minim. Ea poate să-și găsească repede și fără greutate clienții, furnizorii și cei mai buni parteneri de afaceri din întreaga lume. Alte avantaje sunt: eficiența crește, viteza de comunicare crește, se reduce timpul acordat inventarului și a managementului stocurilor, precum și cel dintre cheltuiala capitalului și primirea produselor. Se reduc costurile de creare, procesare, distribuție, stocare, regăsire a informațiilor printate, oferindu-se în același timp date despre companie într-un mod rapid și interactiv, modernizat, întărind relațiile cu furnizorii și clienții și găsind noi canale alternative de vânzare on-line. Pentru consumatori există de asemenea avantaje, cum ar fi realizarea cumpărăturilor în orice moment al zilei, 24/7, comoditatea, alegând prețurile cele mai mici, posibilități multiple de alegere, cu o livrare rapidă a produselor sau serviciilor. Din ce în ce mai multe magazine on-line sporesc competiția care conduce la scăderea prețurilor, de acestea beneficiind cumpărătorii. Prin intermediul comerțului electronic, consumatorii primesc informații relevante instant, permițându-le să interacționeze cu alți cumpărători, comparându-și experiențele. Comerțul electronic elimină un aspect agasant al comerțului clasic, în care vânzătorii exercită presiuni psihologice asupra cumpărătorului, acesta fiind lăsat să își aleagă produsele în liniște, luându-și la dispoziție atâta timp cât are nevoie pentru a se hotărî asupra a ceea ce dorește să achiziționeze. Există, de asemenea, niște beneficii și pentru societate, prin crearea unor posibilități de lucru de acasă a mai multor persoane și de comandare a produselor acasă, astfel evitându-se poluarea și traficul din orașe. Sunt vizate ca beneficiari și persoanele din societate care au venituri mai mici, deoarece paleta de oferte în continuă creștere a magazinelor on-line face ca
reducerile să fie dese și constante la unele mărfuri, pentru atragerea clientelei și loializarea acesteia. Însumând beneficiile de care se bucură toate părțile implicate în procesul de comerț electronic, concluzionăm că putem clasifica niște avantaje generale: comerțul electronic este accesibil printr-o gamă largă de tehnologii, care prin natura lor modernă ajută la reducerea timpului dedicat cumpărăturilor, realizate pe baza schemelor de plăți prin card, nefiind limitate geografic, eliminând intermediarii și astfel micșorând prețurile finale. Privind în ansamblu, comerțul electronic are și niște aspecte critice ca orice altă noutate în plină dezvoltare și anume securitatea, introducerea unor noi modalități de plată, banii electronici, protecția datelor consumatorilor, prețul internetului, ca mijloc de interacționare cu acest tip de comerț, fiind scump pentru unii clienți. Un alt aspect de luat în considerare este acela care privește costurile de investiție și de mentenanță ale unui magazin on-line. Acesta se amortizează destul de repede, odată ce activitatea este începută. Există unele discuții și cu privire la dreptul asupra proprietății, cadru legal și normativ: cadru fiscal, aspecte lingvistice și culturale, cât și dificultatea de integrare a internet-ului și a software-ului de comerț electronic cu unele aplicații și baze de date. Unele sisteme de operare și sisteme hardware nu sunt compatibile cu unele produse de software de comerț electronic, aducând un impas în activitatea unor firme doritoare de a-și lărgi activitatea și în mediul on-line. Un alt aspect critic este cel al posibilității demonstrării produselor în acțiune. Acest aspect este adus în atenție de cumpărătorii care găsesc imposibilă achiziționarea unor produse fără a le vedea fizic și fără a le atinge, pe când comercianții cu domenii de activitate mai speciale se găsesc în situația de a avea insuficiente operații profitabile de comerț electronic. Pe măsură ce comerțul electronic se dezvoltă, apar noi probleme de rezolvat, cum ar fi stabilirea bazelor legislative care reglementează obligațiile vânzătorului la efectuarea cumpărăturilor electronice, dar și stabilirea unor certitudini cu privire la impozitele pentru acesta activitate. 1.3. Sisteme de plăți on-line Atunci când vine vorba de plata produselor cumpărate este necesar un nivel de încredere sporit al consumatorului participant în procesul de comerț electronic și de asemenea de o bună credință a furnizorului de produse și servicii. De aceea, o mare provocare a comercianților este
de a implementa un sistem de comerț electronic prin furnizarea unui mecanism de plată comod, care să fie perceput ca destul de sigur și de ușor de integrat într-un sistem de tranzacții comerciale pe internet. Pentru a întâmpina această problemă, s-au căutat și dezvoltat mai multe soluții care să ajute la fluidizarea plăților on-line, care să se asemene din punct de vedere al siguranței cât de cât cu plata cu banii jos. Întotdeauna bacnotele și monezile vor fi prima opțiune a consumatorilor, dar se dorește o educare în această privință, pentru a ajuta evoluția comerțului electronic dincolo de un anumit nivel. Pentru ca plata prin Internet să fie posibilă în realitate, firmele care optează pentru activitatea on-line sprijinită pe magazinele electronice trebuie să se asigure că sistemul informatic implementat în site este disponibil non-stop, 27/7, timp în care vor opera gestiunea comenzilor, facturarea, remiterea banilor și procesarea plăților. Odată ce sistemul de vânzări on-line este pus în funcțiune de comerciant, acesta va putea să se facă auzit și cunoscut oriunde internetul este accesibil, oferindu-le informații despre produse, servicii, prețuri și disponibilitatea lor pe stoc. Firmele vor oferi atât soluții de plată în timp real, cât și metode de plată off-line. Intrarea în posesia banilor rezultați în urma unei vânzări on-line are mai mulți pași de interacționare cu bănci sau alte instituții financiare. Principalele metode de plată utilizate în comerțul electronic sunt plățile cu cardul, prin sistemul de plată Mobil pay 3D secure sau Paypal. Acestea pot fi integrate în sistemul informatic al firmei sau în regim outsource de către un furnizor de servicii de comerț (CSP- Commerce Service Provider) care va transmite plățile de la terți. Deși privită cu scepticism la început, plata cu cardul a devenit printre cele mai folosite modalități de plată la acest moment. Multe dintre cele mai populare siteuri de comerț electronic acceptă doar acestă modalitate de plată, cu cardul de credit. Aceste tranzacții sunt protejate criptografic, modalitatea de criptare asigurând o bună apărare împotriva rău-voitorilor. Numai banca sau furnizorul de servicii pentru card va putea să vadă numărul acestuia, nu și firma vânzătoare. Posibilitatea unei astfel de plăți are loc în urma realizării cerințelor pe două planuri: financiar și tehnologic. Astfel, se încheie contract cu instituțiile bancare dorite, folosind tehnologii avansate de criptare și autentificare pentru o securizare corespunzătoare. După deschiderea unui cont la o bancă ce utilizează servicii de tranzacționare on-line bazate pe carduri, comerciantul va trebui să achiziționeze sau să închirieze echipamentele și softul aferent comunicării securizate cu banca, plătind niște comisioane acesteia. Banca are impus și un volum minim de tranzacții pe lună, comerciantul fiind nevoit să plătească suma minimă
indiferent de numărul de tranzacții derulate on-line. De aceea, este de dorit colaborarea cu o agenție de carduri care oferă servicii de acest gen. Agențiile care se ocupă cu activitățile de tranzacționare în mediul on-line pot obține discounturi semnificative de la bănci, având oferte mai tentante pentru firmele doritoare să activeze în spațiul virtual, tocmai datorită volumului mare de cereri de pe piață. Acești furnizori de servicii de plată (PSP) sau de servicii de comerț (CSP), beneficiază de conexiuni integrate on-line cu băncile care autorizează plățile și tranferul banilor automat. Agențiile acestea negociază cei mai buni termeni contractuali pentru firme, furnizându-le API-ul necesar integrării cu ușurință în site-ul web a funcțiilor de procesare a cardurilor de credit și implicit a plății on-line. Clienții au astfel statutul de comercianți web, preluând credibilitatea financiară a furnizorilor de servicii de plată, putând beneficia de pachete integrale de servicii multi-card, multi-bancare și multi-monedă, ducând până la comisioane mai mici decât cele oferite inițial de bancă. Cele mai des întânite carduri bancare sunt Visa și MasterCard. Pentru asigurarea confidențialității informațiilor bancare, Visa și MasterCard au convenit în anul 1996 să aducă toate standardele de plăți electronice într-unul singur, cu denumirea de SET (Secure Electronic Transaction). Acesta are următoarele obiective de securitate în comerțul electronic: să asigure odată cu informațiile de plată și confidențialitatea instricțiunilor de plată și a informațiilor de cerere; să asigure autentificarea cumpărătorului și faptul că el este utilizatorul legitim al unei mărci de card; să ofere garanția integrității datelor transmise; să asigure autentificarea vânzătorului și a apartenenței acestuia la o bancă utilizatoare de tranzacții electronice; să utilizeze cele mai bune metode de securitate; să nu depindă de niște mecanisme de securitate a transportului; să înlesnească relația dintre furnizorii de soft și cei de rețea. Tranzacția de plată de la vânzător la cumpărător urmărește niște pași exacți, cuprinzând informații de cerere, date personale și instrucțiuni de plată. Dacă se modifică una din aceste infromații, tranzacția va fi incorectă. Protocololul SET folosește semnătura digitală pentru integritatea datelor și certificatele cumpărătorului și ale vânzătorului pentru autentificare și mesaje și protocoale specifice, pentru interoperabilitate. Noua aplicație a semnăturilor digitale se numește semnătura duală, realizând tranzacția prin semnătura digitală a ambelor mesaje într-o singură operație. Această semnătură duală este folosită în cadrul protocolului SET pentru a face legătura dintre un mesaj de comandă trimis vânzătorului și instrucțiunile de plată cuprinzând informații de cont trimise achizitorului. S-a observat implementarea a tot mai multe astfel de protocoale SET de către firme, ceea ce oferă securitatea plăților pe internet cu cardul, prin mijloace criptografice.
Protocolul SSL (Secure Socket Layer) este un alt protocol folosit care protejează datele transmise de către un server de Internet în cadrul adreselor paginilor de internet care încep cu http. Acest sistem se folosește astăzi în tranzacțiile codificate în comerțul electronic, prin intermediul cărților de credit, având ca funcții de bază confirmarea serverului pentru clienții că accesează paginile dorite, creând un canal sigur de comunicație, ascunzându-se informațiile confidențiale ale utilizatorilor de terțe persoane rău-voitoare. Un alt protocol, SNPP (Simple Network Payment Protocol) se derulează în următoarele etape: comercianții și cumpărătorii își deschid un cont la o bancă dorită, depunând o sumă de bani, obținând o cheie de criptare, care este transmisă acestora. O tranzacție de plată cuprinde valoarea plății, banca, identificatorii de cont și un termen de efectuare a acesteia care sunt înregistrate în sistemul băncii. Banca înregistrează cantitatea și tipul valutei din cont, transferurile efectuate, cheia de criptare, numărul celei mai recente tranzacții, cât și lista numerelor de tranzacții neutilizate. Un utilizator poate avea conturi multiple pentru vânzare și cumpărare. Protocolul IBS (Internet Billing Server) utilizează un sistem cu chei private și facturi batch pentru asigurarea siguranței serviciilor de vânzare-cumpărare. Protocolul OTP (Open Trading Protocol) vine în întâmpinarea proceselor de afaceri, aducând reguli pentru desfășurarea negocierilor comerciale, metodelor de vanzare și de cumpărare, invocând unele protocoale de plată suport. Astfel acest protocol vizează dezvoltarea unui mediu de comerț online, care protejează participanții față de falsificarea facturilor proforme, facturilor finale, certificatelor de garanție, documentelor de însoțire a mărfii, documentelor de plată. CAPITOLUL 2 : PRINCIPII ȘI INSTRUMENTE PENTRU DEZVOLTAREA PLATFORMEI HNT CMS 2.1 Patternul MVC Ingineria software se folosește de modelul arhitectural numit Model View Controller (MVC) care a avut succes și încă are datorită izolării logicii de business față de ceea ce presupune interfața cu utilizatorul, de unde rezultă o aplicație unde aspectul vizual și nivelele inferioare ale regulilor aplicate în afaceri se pot modifica mai ușor, fără a interfera cu alte
nivele. MVC este un mijloc de organizare a unui site dinamic. Acesta a fost inițiat de către norvegianul Trygve Reenskaub în anul 1979 și a devenit arhitectura de bază folosită în dezvoltarea siteurilor. MVC a devenit prima variantă de model arhitectural în dezvoltarea siteurilor spre care se îndreaptă programatorii datorită stabilității, predictabilității și dinamismului de care dă dovadă în crearea acestora. Acest model structural este creat în jurul interconectării a trei tipuri de componente, într-un limbaj de programare cum ar fi PHP, de cele mai multe ori concentrat pe programarea orientată pe obiect (OOP). Cele trei componente au denumiri fără legătură între ele, după cum urmează: model, view și controller. Model – se ocupă de formularea unui rezultat cu o formă cât mai ușoară de înțeles, manipulând operațiunile logice și de utilizare a informației trimise de către un rang superior. View – se ocupă cu reprezentarea grafică, interacționând cu utilizatorii finali, cu ultima formă a datelor, evidențiind informația obținută până ce ajunge la controller. Pot fi HTML views sau adaptate pentru diferite device-uri electronice, cum ar fi tabletele sau telefoanele. Controller – permite accesul la aplicație prin intermediul unor fișiere, programe sau scripturi, astfel conținutul putând fi diversificat, dinamicizat. Comerțul on-line aduce deopotrivă firme mai mici și mai mari, care prin intermediul web-ului pot coexista fără a se exclude reciproc și acest lucru este posibil prin construirea unui site de magazin online care să fie coerent, bine organizat și atrăgător din punct de vedere estetic. Aplicația acestui model structural în crearea siteurilor aduce un mare avantaj programatorilor, evitând producerea unui haos în liniile de cod ale siteurilor și în întregul schelet al magazinului, atunci când se produc modificări în vreunul din componentele MVC. Astfel, atunci când compania se hotărăște să introducă o nouă linie de produse sau își schimbă brandul cu totul, partea de programare poate deveni foarte încâlcită atunci când nu există o aplicație cu o structură bine construită, cum este MVC. Modificările unei mici secțiuni din cod din Model nu vor afecta partea de cod din View și Controllers. Figura 1 – Patternul MVC
2.2. CodeIgniter Există multe structuri importante folosite în PHP care sunt la dispoziția programatorilor în dezvoltarea siteurilor. Una dintre ele, despre care vom vorbi mai departe este CodeIgniter, o unealtă importantă în folosirea cu ușurință a PHP-ului. Astfel, se va reduce cantitatea de linii de cod, scripturile vor deveni mai ușor de updatat și scris, aducând o structură coerentă siteurilor. CodeIgniter aduce un plus de disciplină în codarea scripturilor, făcându-le mai trainice cu ușurință. CodeIgniter folosește procedura Model-View-Controller, care permite separarea clară între logică și prezentare. Acest aspect este important mai ales pentru proiectele în care designerii lucrează cu template-uri customizate. În următorul paragraf avem la dispoziție un exemplu de reducere a codului cu ajutorul a CodeIgniter comparat cu programarea standard pentru interogarea unei baze de date. Codul standard pentru interogarea unei baze de date MySQL folosind limbajul PHP arată astfel:
Figura 2. Interogarea unei baze de date MySQL folosind limbajul PHP Prin comparație, codul folosind funcția din CodeIgniter pentru a efectua aceeași interogare este următorul:
Figura 3. Interogarea unei baze de date MySQL folosind funcția din CodeIgniter
Se poate observa faptul că această funcție a înjumătățit numărul de rânduri de cod, ușurând munca programatorului. Micșorând cantitatea de muncă în scrierea codului, CodeIgniter lasă programatorul să se concentreze pe partea creativă a muncii. CodeIgniter este o unealtă importantă pentru programatorii care scriu codul de la zero, fiind ușor de folosit prin punerea la dispoziție a unui set bogat de librării necesare pentru sarcini, care se încarcă în mod dinamic, a unei interfațe simple și a unei structuri logice de accesare a librăriilor. Astfel, prin intermediul unor multiplelor librării cuprinzătoare se pot desfășura acțiuni cum ar fi: accesarea bazelor de date, trimiterea de email-uri, validarea informațiilor din formulare, menținerea sesiunilor, manipularea imaginilor și multe altele. Această structură aplicată poate fi extensibilă, prin adăugarea unor noi librării, extensii de clase sau ajutoare. 2.3. HTML – HyperText Markup Language În crearea siteurilor se folosesc instrumente ajutătoare, dintre care cel mai important amintit este limbajul în care se scriu codurile. HTML provine din limbajul SGML, utilizat în dezvoltarea de documente hiper-text accesibile prin Internet. Acesta este un standard de definire și prezentare a paginilor web. Atunci când vorbim de limbajele folosite, în acest caz, vorbind despre HTML, trebuie să facem referire și la WWW (World-Wide Web), unul dintre numeroasele servicii și aplicații informatice ale rețelei Internet, creat la CERN (Centrul European de Cercetări Nucleare), în Geneva, anul 1989. Treaptat, acesta a fost furnizat gratuit, evoluând până la forma de astăzi, când este cunoscut drept un serviciu multimedia integrativ, cu suport fizic, Internetul, funcționând în mod client-server. Datorită facilităților puse la îndemână de numeroasele versiuni ale limbajului HTML, WWW include documente multimedia, cum ar fi imaginile (GIF sau JPG) , fișiere video și audio, gestionând poșta electronică. În cadrul limbajului HTML se pot realiza formulare pentru introducerea datelor în mod interactiv ( liste, texte, meniuri, butoane de selectare, etc. ) și apoi pot fi trimise către server pentru procesare. Web-ul este un spațiu interactiv unde limbajele se îmbină.
Componentele principale ale serviciului web cuprind: protocolul HTTP (de intercomunicație), limbajul de descriere a hipertextului HTML pentru afișarea acestuia în browser, serverul de web și browserul. Protocolul HTTP (HyperText Transfer Protocol) reprezintă o modalitate de dialogare între browserele clienților și serverele WWW. Acest protocol este o stivă de protocoale de comunicație ierarhic (OSI) între servere, ajutând utilizatorii Internetului să navigheze în rețeaua formată astfel ca într-o rețea web a ciber-spațiului, pentru accesarea informațiilor din Internet. HTTP este de tip text și este protocolul implicit al WWW, prin intermediul căruia paginile web se pot transmite de la un computer aflat la distanță spre propriul computer. Acest protocol presupune că pe calculatorul destinație rulează un program care înțelege protocolul, fișierul trimis la destinație fiind un document HTML, fișier de sunet, animație sau video, fișier grafic, program executabil sau editor de text. Protocolul HTTP are drept coordonator W3C (World Wide Web Consortium). Funcționarea acestui protocol presupune transferul prin protocolul TCP pe portul standard 80 al serverului HTTP, ca răspuns la cererea HTTP-GET a paginilor web apelate (index.html) prin convertirea numelui adresei siteului într-o adresă IP de către protocolul DNS. Răspunsul serverului cu datele cerute cum ar fi: fișiere de stil (CSS), pagini în HTML, cu fișiere atașate ca imagini, scripturi (Javascript), dar și imagini generate dinamic (JSP, SSI, PHP și ASP.NET). Atunci când există un motiv pentru care datele cerute nu pot fi afișate, răspunsul serverului vine sub forma unui mesaj de eroare. Această modalitate de desfășurare a funcționării protocolului HTTP de tip cerere-răspuns este stabilită în specificațiile de bază, cuprinzând mesaje inteligibile de om, formate din cuvinte. Unul dintre cele mai simple mesaje este "GET url". Un astfel de exemplu de mesaj de interschimb prin HTTP 1.0 va fi arătat în cele ce urmează:
Figura 4. Mesaj de interschimb prin HTTP 1.0 de tip “GET”
Alte tipuri de mesaje de tip cerere sunt HEAD și POST. Cererea POST este folosită pentru operații care se realizează prin transmiterea către transfer a blocurilor de date. 2.4. JavaScript Javascript este un limbaj de programare folosit cu ușurință în crearea unor pagini web în mod interactiv. Comparându-l cu HTML, obsevăm că există diferențe majore. HTML este folosit pentru a crea conținut static de pagini Web, pe când JavaScript este folosit în realizarea unor sarcini dinamice. În prezent, JavaScript este cel mai popular limbaj de programare din Web, costând în linii de cod executabile pe computer care pot fi inserate direct în paginile HTML. Acest limbaj este un limbaj interpretat, codarea fiind executată fără compilare preliminară și are ca avantaj faptul că nu necesită cumpărarea sau licență ori un editor special. Cele mai des întâlnite editoare pentru coduri folosite pentru acest limbaj sunt Notepad sau Notepad++, Eclipse, Microsoft Expression, Komodo IDE, NetBeans IDE, WebStorm sau Dreamweaver. JavaScript este singurul limbaj de programare suportat de toate browserele Web care suportă scripting pe client (client-side scripting), aceasta însemnând că este orientat pe client mai mult decât pe server, facând acțiunile userilor rapide și un mediu interactiv. Codul scris în acest limbaj este rulat după ce paginile accesate sunt încărcate, nefiind realizat pentru scriptingul pe server și nici folosit pentru stocarea datelor, recuperarea lor sau actualizare. Alte alternative de limbaje care suportă scriptingul pe client sunt VBScript și Perl. Cele care suportă scripting pe server (client-side scripting) sunt limbajele PHP, JSP, ASP.NET sau Java. Ca orice altă unealtă folosită în scrierea de coduri, JavaScript are și avantaje și dezavantaje. Ca avantaje amintim: este ușor de învățat; este un limbaj interpretat; rezultă într-un timp de răspundere rapid; folosește resurse orientate pe client, mai degrabă decât resurse distribuite pe server; rulează pe orice browser care permite scriptingul pe client; este unul dintre cele mai populare limbaje de codare, cu resurse multiple disponibile; se poate insera ușor în paginile de HTML; este gratuit; independent de platformă; poate fi ușor integrat pentru utilizarea alături de alte limbaje.
Ca dezavantaje amintim: este dependent de browser; depinde de setările userilor făcute browserului utilizat pentru a permite scripturilor să ruleze; codul sursă este vizibil utilizatorilor; nu permite updatarea informațiilor. JavaScript a fost modelat în sintaxa limbajului Java. Acesta este un limbaj case-sensitive. Toate cuvintele, variabilele, numele funcțiilor trebuie scrise cu litere mici întotdeauna. Toate operațiunile îndeplinite în JavaScript sunt acțiunile asupra obiectelor cunoscute și înțelese, aparținând de Netscape Navigator și limbajul HTML, prin orientarea pe obiect. Obiectele care au un set de funcții asupra obiectelor sunt denumite metode. În JavaScript există și evenimente sau întreruperile de programe care sunt orientate asupra lucrului cu Web-ul, cum ar fi la încărcarea unei pagini în Navigator sau alegerea referinței hipertextuale. Metodele cele mai importante sunt cele ce permit redefinirea obiectelor. Operatorii susținuți de limbajele de programare de obicei sunt realizați în JavaScript (+, -, *, /, %, >>, <<, +=, -=,…). De exemplu, operatorul adunării ,,+,, în cadrul relaționării cu stringurile are valoare de concatinare a ultimilor stringuri ce urmează primelor: s=,,string1,, + ,,string2,,. În JavaScript mai există și alte comenzi de dirijare cu fluxul de determinări: de exemplu, – break înseamnă ieșirea forțată din ciclu: while(i < 7) { if (i==2) break} – continue înseamnă trecerea la sfârșitul ciclului: while (i< 9) {if(i==5) continue} – for înseamnă ciclu: for(i=0; i<11< i++) { … } – for mai înseamnă ciclul proprietăților obiectului: for(i in obj) { str = obj[i] } – if …else este un operator condiționat: if(i>0) { … } else { … } – while este un ciclu condiționat: while(i==k) { j++; k–; } – var este un operator de anunțare a variabilei: var apple = ”apple”. Evenimentele sunt întrebuințate de programatori pentru a îndeplini părți ale scriptului de program, de exemplu, acțiunile determinate în momentul încărcării paginii în Navigator. Avem câteva dintre cele mai folosite evenimente: onLoad ( îndeplinirea scriptului sau a funcției la încărcare); onCharge (la schimbarea valorii elementelor formei); onClick ( la alegerea
obiectului – button, checkbox, etc.) onSelect (la alegerea obiectului textual ); onSubmit ( la apăsarea butonului Submit); onLoad (trecerea pe altă pagină). În continuare vom vorbi despre un nou tip de obiect și anume AREA, element al containerului MAP, prin care referințele hipertextuale care sunt determinate în el pot fi redefinite. Acesta determină client-site imagemap. Atunci când vorbim despre trecerea pe referință hipertextuală în JavaScript, în mod normal parametrul HREF trebuie să aibă o anumită valoare. În cadrul evenimentului onClick se deschide o fereastră nouă și astfel URL-ului îi trebuie atribuit o valoare pentru ca această fereastră să nu fie goală, dacă HREF=” “. Pentru a evita această situație, în versiunea nouă JavaScript s-a introdus funcția void, fără valoare. Pentru a nu supraîncărca paginile vechi, se folosește următoarea construcție în parametrul HREF atunci când mouse-ul trece pe deasupra referinței hipertextuale: <A HREF=”javascript:void(0)”>platforma</A>. Scriptul se implementează în corpul documentului HTML prin intermediul SCRIPT. Avem următorul exemplu:
Figura 5. Corpul documentului HTML prin intermediul SCRIPT Pentru a evita apariția greșelilor în reflectarea paginilor, în titlul documentului HTML trebuie pus atributul LANGUAGE, care până la apariția VBSCRIPT nu era necesar. Comentariul trebuie să aibă la început și la sfârșit: <!– Început comentariu JavaScript și //Sfârșit comentariu JavaScript –>
Metoda open este reflectată în script prin funcțiile: help_win() și main_menu(), care sunt orientate către obiectul window. Sunt folosite pentru a deschide o fereastră nouă Netscape Navigator și pentru încărcarea de documente prin apăsarea butonului (help_call). Schema JavaScript se poate folosi în orice script HTML, unde folosim URL. Arată astfel: <a href="javascript:…;">…</a> <form action="javascript:…"> Singura dată când schema nu poate fi folosită sunt containerele IMG, în care se folosește în atributul src cu apelarea la proprietatea img. Spre exemplu: Figura 6. Atribut referință simplă Se poate executa o operație analogică și asupra unei imagini:
Figura 7. Schimbare sursă imagine prin JavaScript într-un atribut de referință Pentru trasmiterea datelor pe server are loc evenimentul submit prin următoarele acțiuni de apăsare a butoanelor: Submità Buton Graficà tasta Enter, metoda Submit. În cazul butonului Submit, programarea scripturilor este identică celei a butoanelor grafice:
Figura 8. Codul butonului „submit” Un interes pentru programatori îl poartă butonul click (onClick), care oferă posibilitatea de interceptare a evenimentului submit și de executare a evenimentelor diferit față de standard: Figura 9. Codul butonului “onClick” Prin folosirea acestui buton în script, reîncărcarea paginii nu se execută și transmiterea datelor pe server este anulată. Un alt exemplu de prelucrare a evenimentului submit este următorul: Figura 10. Prelucrarea evenimentului “submit” folosind funcția “my submit” Atunci când această funcție de prelucrare va avea valoarea true, datele se vor transmite pe server și vor fi oprite în caz contrar (valoare false). Operațiunea va fi posibilă în cazul prelucrării evenimentului submit în containerul FORM. Frame-urile sunt o categorie aparte de ferestre, diferite prin ierarhia frame-urilor, denumirea lor și transmiterea datelor în frame-uri, care apar în ferestre deschise. Următorul exemplu împarte ecranul în două coloane: Figura 11. Exemplu de împărțire a ecranului în două coloane
Left(stânga) Right(dreapta) Figura 12. Rezultatul codului din figura 11 Împărțind frame-ul din dreapta în două linii obținem:
Figura 13. Exemplu de împărțire a ecranului din dreapta în două linii Left(stânga) Top(sus) Bottom(jos) Figura 14. Rezultatul codului din figura 13 Frame-urile pot avea nume, ca în exemplul următor:
Figura 15. Exemplu de numire a ecranelor
Atunci când pe o pagină avem două imagini, se schimbă proprietățile src într-unul din modurile: Figura 16. Moduri de schimbare a proprietății src Când vorbim despre trasmiterea datelor în frame-uri, trebuie să ținem seama de drumul parcurs de acestea. Atunci când drumul este fixat, se folosește atributul target. Dacă ele vor fi încărcate în diferite frame-uri, trebuie urmărite drumurile fiecăreia și butonul aferent. Exemplu:
Figura 17. Codul sursă al funcției load() Pentru funcția load() se aplică aceeași schemă logică de la submit, permițând încărcarea documentului dacă este întoarsă valoarea true. 2.5. PHP – PHP: Hypertext Preprocessor PHP ( PHP: Hypertext Preprocessor) este un limbaj de scripting de uz general, care se folosește pentru dezvoltarea paginilor web dinamice și este open source ( cod-sursă deschis). PHP poate fi integrat în HTML sau se poate utiliza și în crearea unor aplicații independente, fiind unul dintre cele mai importante limbaje de programare web. PHP este un limbaj de programare structurat, sintaxa limbajului fiind o combinație între C, Perl și Java, care poate să ruleze pe majoritatea sistemelor de operare, interacționând cu
majoritatea serverelor web. Acesta diferă față de JavaScript prin faptul că codul său este executat pe server, generând astfel HTML care este trimis către client. Clientul nu va putea cunoaște codul-sursă ce stă la baza rulării scriptului, primind doar rezultatul. În continuare avem un exemplu introductiv:
Figura 18. Exemplu de script PHP într-un conținut HTML În mod diferit față de alte limbaje, în PHP pentru afișarea HTML, nu se folosesc o mulțime de comenzi, ci paginile PHP conțin HTML cu cod-sursă încoprorat, afișând un mesaj care este încadrat între <?php și ?> , permițând intrarea și ieșirea din modul PHP. Printre caracteristicile care fac din PHP unul dintre cele mai populare limbaje folosite la nivel mondial regăsim: este gratuit, ceea ce l-a plasat în atenția programatorilor de pretutindeni; are o sintaxa simplă și liberă; este eficient, alocând resursele într-un mod inteligent; se bucură de securitate sporită, programatorul având la dispoziție un set de măsuri de siguranță; este un limbaj flexibil, modularizat pentru întâmpinarea nevoilor unui web în continuă dezvoltare.
CAPITOLUL 3 : PROIECTAREA SISTEMULUI DE ADMINISTRARE HNT 3.1. Pagina de administrare – Panoul de statistici HNT CMS este o aplicație construită pe framework-ul CodeIgniter și are la bază structura CMS-ului opensource, OpenCart. Framework-ul folosește design patternul MVC (Module View Controller). În primul rând, structura folderelor este următoarea: • admin – calea către codul folosit în back-end. Este complet separat de front-end-ul aplicației și poate fi stocat chiar și pe un host separat; • catalog – folderul catalog stochează tot codul și ce ține de front-end-ul aplicației; • image – calea folderului image este locul unde sunt stocate toate imaginile produselor precum și fișierele de tip cache pentru o încărcare mai rapidă a front-end-ului; • download – directorul/folderul download reprezintă calea unde sunt stocate toate fișierele ce pot fi descărcate din front-end-ul platformei și sunt încărcate prin intermediul back-end admin; • system – calea folderului system conține toate librariile și engine code-ul. Atât folderul admin cât și catalog se folosesc de librăriile și codul din acest folder. În folderele catalog și admin există o structură bazată pe arhitectura MVC și este format din: Model – stratul pentru baza de date (Database layer) – toate apelurile (calls) către baza de date sunt făcute de aici prin referința către controller. Scopul unui model este de a avea întotdeauna apeluri structurate către baza de date astfel încât celelalte fișiere să aibă access la aceleași interogări ale bazei de date. View – Template display – aici este locul unde fișierele HTML sau partea designului este construită. Controller – main controlling code base – aici este locul unde codul logic este procesat la fel unde și variabilele pentru front-end sunt construite. Language – partea de localizare/limbă – aici este locul unde constantele pot fi traduse în text pur ca și exemplu: titluri, legături statice, etc. Aceasta nu reprezintă o parte din structura MVC, este doar un layer de variabile ce este folosit pentru partea multilingvistă a platformei.
Majoritatea fișierelor folosesc un "naming pattern" al controler-ului principal. Exemplu: pentru pagina produselor de pe interfața publică (front-end) sunt patru fișiere principale: Model > catalog\model\catalog\product.php View > catalog\view\theme\default\template\product\product.tpl Controller > \catalog\controller\product\product.php Language: \catalog\language\english\product\product.php În mod similar, pentru administrator există la fel patru fișiere principale: Model: \admin\model\catalog\product.php View: \admin\view\template\catalog\product_form.tpl Controller: \admin\controller\catalog\product.php Language: \admin\language\english\catalog\product.php Pentru a creea pagina de administrare am folosit următoarele librării de tip OpenSource (cod deschis): – Partea de stil și responsivitate a fost făcută folosind bootrstrap; – pentru statistici am folosit librăria flot iar în PHP metoda chart pentru a extrage valorile din baza de date și a le converti prin JSON. Pentru a afișa statisticile în funcție de zi/lună sau an, am folosit declarația switch în metoda chart, astfel: – pentru cazul afișării statisticilor pe zi ('day'): case 'day' Dacă numărul de ore este mai mic de 24, se face interogare în baza de date pentru a afișa numărul total de comenzi pe zi, astfel rezultatul este sortat în funcție de timpul și ora adăugării comenzii grupat pe ora în ordine ascendentă a comenzii adăugate în funcție de dată. Figura 19.1 Afișarea statisticilor pe zi Dacă în intervalul orar 0-24 s-a efectuat un număr de comenzi, atunci numărul respectiv va fi afișat pe axă. Dacă nu există vreo comandă în intervarul orar 0-24, atunci nu va fi afișat nici o comandă pe axa de statistici. Cazul final pentru comenzile pe zi este următorul:
Figura 19.2 Afișarea statisticilor pe zi Pentru cazul afișării statisticilor pe săptămână: Folosind funcția din PHP “strtotime”, aceasta va traduce aproape orice descriere textuală în limba engleză a datei și orei într-o perioadă de timp Unix. (conform http://php.net/manual/ro/function.strtotime.php ). Astfel cazul pentru “săptămână” (“week”) va fi următorul:
Figura 20. Afișarea statisticilor pe săptămână Pentru cazul “month” (comenzile pe lună) și “year” (comenzile sortate pe an), am folosit următoarele declarații și interogari: – case 'month':
Figura 21. Afișarea statisticilor pe lună – case 'year': Figura 22. Afișarea statisticilor pe an Astfel rezultatul final fiind cel de mai jos pentru întreaga metodă publică “chart”:
Figura 23.1 Declaratia “switch” în metoda “chart”
Figura 23.2 Declaratia “switch” în metoda “chart”
Figura 23.3. Declaratia “switch” în metoda “chart”
Figura 23.4. Declaratia “switch” în metoda “chart” Răspunsul final fiind convertit în JSON (JavaScript Object Notation) și preluat de librăria flot, rezultatul fiind secțiunea de statistici interactive.
Figura 24. Secțiunea de statistici interactive
3.2 Logarea administratorului Pentru pagina de logare a administratorului au fost create următoarele fișiere: – în folderul “common” aflat în calea /admin/controller/common a fost creat fișierul login.php – în folderul “common” aflat în calea /admin/view/template/common a fost creat fișierul login.tpl Am creat următorul cotroller numit Login în interiorul folderului common aflat în calea directoarelor /admin/controller/common. Folosind un template de bază au fost create cele două metode folosite în controllerul Login și anume Metoda publică index și Metoda protejată validate pentru validarea datelor.
Figura 25. Controllerul Login Prin funcția de bază isLogged verificăm dacă token-ul de autentificare este valid, astfel sesiunea devine validă, în caz contrar autentificarea nu este posibilă, deoarece sesiunea nu este validă.
Figura 26. Funcția index din controllerul Login Metoda protejată “validate” este folosită pentru validarea credențialelor, astfel dacă numele utilizatorului și parola sunt valide, logara este acceptată, în caz contrar utilizatorul primește o eroare de autentificare.
Figura 27. Metoda protejată “validate” Pentru partea de front-end / afișare, am creat fișierul login.tpl în calea directoarelor /admin/view/template/common. Astfel, am creat un formular standard de validare a datelor introduse, format dintr-un câmp denumit Nume utilizator și câmpul de tip password, denumit Parola.
Figura 28. Formular standard de validare a datelor pentru nume utilizator și parolă 3.3 Categorii, Produse și clienți – scurtă prezentare a proiectării Modulul de categorii și produse l-am gândit ca fiind un modul de tip CRUD ( Crează, Citește, Actualizează și Șterge), astfel voi explica pe scurt cum am realizat aceste două module la un mod general, principiul fiind același și pentru restul modulelor de tip CRUD.
Am realizat controllerul Category și am adăugat următorul template pentru dezvoltarea lui:
Figura 29. Controllerul Category După realizarea unui template pentru controller, am făcut un template pentru Model și partea de front-end, View. Astfel, conținutul standard realizat pentru Modelul Category este următorul:
Figura 30. Modelul Category Conținutul pentru partea de front-end l-am împărțit în două fișiere importante și anume un fișier pentru listarea conținutului, iar celălalt a fost făcut sub forma unui formular și este folosit pentru adăugarea datelor. Astfel, partea de listare am denumit-o category_list, iar partea de adăugare category_form:
Figura 31. Scheletul standard pentru listarea categoriilor – Category list Scheletul standard pentru formularul de adăugare al categoriilor cuprinde formularul pentru inserarea numelui categoriei, descrierea și cuvintele cheie de tip meta, descrierea categoriei, tipul categoriei (dacă este categorie Părinte sau categorie Copil, numele categoriei, imaginea categoriei, poziționarea ei, numărul de coloane pentru subcategorii, dacă aceasta este o categorie Părinte, ordinea categoriei și statusul categoriei (activat sau dezactivat), precum și locația de afișare a modulului. Mai jos se află prima parte a scheletului pentru category_form.
Figura 32. Scheletul pentru category_form Aceste template-uri au fost aplicate și pentru modulul pentru produse, doar câmpurile de listare și adăugare diferă, principiul fiind același.
Figura 33. Controlerul pentru produse Crearea fișierului lingvistic pentru modulul client Fisierele lingvistice sunt create folosind tiparul Numemodul, la care se adaugă extensia php, fișierul rezultat fiind Numemodul.php. De exemplu, pentru a crea un fișier lingvistic pentru modulul Clienți, trebuie creeat fișierul clienti.php Fișierele lingvistice folosesc modelul: constanta = valoare, unde numele constantei este folosit în cod și care nu se schimbă niciodată. Doar valoarea costantei se va schimba în fișierul creat, dacă necesită o schimbare. Dacă limba Română este activă, atunci modulul arată constanta din fișierul respectiv aflat în folderul Română, iar dacă o altă limbă este activă, atunci va arăta valoarea din folderul limbii respective din fișierul modulului. De exemplu, pentru limba română, constanta este preluată din folderul limba Română, în formatul următor:
Figura 34. Fișierului lingvistic pentru modulul client
Dacă dorim ca acest modul să fie folosit și pentru o altă limbă, atunci tot ce trebuie făcut este sa creăm un nou folder cu numele limbii respective, să mutăm fișierul deja creat și să adăugăm traducerea în locul valorilor, nemodificând nici o constantă. În cadrul fișierului, vom aloca fiecare linie de text unei variabile ca $ _ ['numevariabila']. Același nume de variabilă va fi utilizat în controller pentru a accesa textul sau mesajele variabilei. Crearea fișierului de tip controller pentru modulul clienți: Controller-ul controlează logica și datele modelului în care variabilele pentru valori și limbi sunt setate și transmise stratului de prezentare pentru afișare. Un controler este pur și simplu un fișier de clasă care este denumit într-un mod care poate fi asociat unui URI (sau identificator uniform de resurse) link : https://ro.wikipedia.org/wiki/Identificator_uniform_de_resurse ). De exemplu, în URI http://hteo.net/licenta/admin/index.php?route=module/customer, platforma va încerca să găsească un fișier de controller numit customer.php în dosarul modulului cu clasa ControllerModuleCustomer. Numele claselor controllerului trebuie să înceapă cu numele controllerului și folderul în care este localizat modulul și numele fișierului fără extensie. De exemplu, în modulul Customer, numele clasei pentru controller este ControllerModuleCustomer, așa cum se află în dosarul modulului și numele fișierului customer.php Întotdeauna în dezvoltarea unui controller trebuie să avem următorul tipar:
Figura 35. Tipar standard pentru Controller Astfel ori de câte ori este apelat controllerul, în mod implicit metoda index () este executată, iar odată cu ea sunt executate și fișierele pe care le includem în interiorul ei. Pentru controllerul clienți (customer) am inclus fișierul model și fișierul lingvistic folosind următoarele linii de cod:
Figura 36. Tipar metoda index pentru clasa clienți În continuare, am adăugat metodele standard pentru creare, citire, actualizare și ștergere. Fișierul arată astfel:
Figura 37. Metodele standard pentru creare, citire, actualizare și ștergere pentru Controllerul clienți Pentru modelul clienți am creat metodele:
Figura 38. Metodele standard pentru creare, citire, actualizare, total clienți și ștergere pentru Modelul clienți
Iar cele mai importante interogări pentru baza de date sunt cele folosite în metodele de adăugare, ștergere și modificare date client. Pentru adăugare date am folosit: Figura 39. Inserarea datelor în tabela “customer” din baza de date Pentru ștergere date client am folosit: Figura 40. Ștergere date client din baza de date Pentru modifcare: Figura 41. Modificare date client din baza de date La final, creând partea vizuală și anume formularul pentru adăugare sau modificare de clienți. Pentru acest formular am folosit limbajul HTML și variabilele din controller, în figura următoare fiind începutul acestui formular:
Figura 42. Formular pentru modulul clienți pentru introducerea datelor în baza de date 3.4 Diagrama bazei de date (mySQL) Înainte de a începe să dezvolt acest proiect am fost plăcut impresionat de platformele opensource Magento, Prestashop și Opencart, care au stat la bază ca model în dezvoltarea
HNT CMS, folosind framework-ul Code Igniter. Am început prin dezvoltarea schemei pentru baza de date și realizarea ei pe baza următoarelor șapte categorii importante, și anume: – Magazinul Online sau Webstore. Acesta conține tabelele pentru configurația magazinului, date despre layout sau partea de front-end, detalii despre magazine și alte setări generale.
Figura 43.1. Diagrama Webstore
Figura 43.2. Diagrama Webstore
– Clienții sau Customers – cuprinde informații despre clienți și istoricul clienților, grupuri și detalii despre client precum tranzacții și adresa IP și tipul de browser folosit.
Figura 44. Diagrama Customers – Produsele sau Products – informații despre produse, atributele produselor, categoria și opțiunile produselor.
Figura 45.1. Diagrama Products
Figura 45.2. Diagrama Products – Comenzile sau Orders (detalii despre comenzile efectuate și istoricul comenzilor).
Figura 46. Diagrama Orders
– Localizarea sau Location – detalii despre adresa clienților și zonele geografice.
Figura 47. Diagrama Location – Clasele de Taxa sau Tax – detalii despre cotele TVA și alte reguli de taxare pe produse.
Figura 48. Diagrama Tax – Retur produse sau Returns – conține detalii despre retururile produselor, istorice, motive și statusul returului.
Figura 49. Diagrama Returns CAPITOLUL 4 : PREZENTAREA PANOULUI DE ADMINISTRARE 4.1. Pagina de administrare Pagina de administrare este pagina principală din panou. Pe această pagină ne sunt prezentate statistici despre comenzi și rapoarte de vânzări.
Figura 50. Dashboard sau panoul de administrare
Dupa cum putem observa, în partea stangă se află meniul de administrare de unde putem adauga, edita și șterge produse, categorii, clienți. 4.2. Categorii În meniul Catalog produse avem submeniul Categorii, unde adăugăm categoriile de care aparțin produsele ce urmează să fie adăugate pe site. Figura 51. Submeniul Categorii Adăugarea unei categorii se face în felul următor: 1. Apăsăm pe butonul “Inserare”: Figura 52. Butonul Inserare 2. Urmează să completăm câmpurile necesare petru a salva noua categorie:
Figura 53. Câmpuri categorie
După ce au fost completate câmpurile, tot ce trebuie să mai facem este să apăsăm butonul “Salvare”. Figura 54. Butonul salvare categorie Ștergerea unei categorii se face în felul următor: – Selectăm categoria pe care dorim să o ștergem; Figura 55. Câmp selectare categorie – Apăsăm butonul ștergere; Figura 56. Butonul ștergere categorie Acum o să primim un mesaj de tip pop-up:
Figura 57. Mesaj confirmare ștergere Imediat după ce am apăsat ok, vom primi și mesajul de confirmare: Figura 58. Mesaj de realizare cu succes a modificării
4.3. Produse Adăugarea unui produs se realizează astfel: Figura 59. Butonul Inserare Apăsăm pe butonul “Inserare” pentru a începe adăugarea unui nou produs. Apoi mergem la secțiunea “General”. Figura 60. Butonul general Figura 61. Câmp nume produs În această secțiune adăugăm numele produsului. Următorul pas este să adăugăm descrierea produsului respectiv.
Figura 62. Câmp descriere produs Următoarea secțiune cuprinde date de identificare a produsului și un câmp unde trebuie să punem codul produsului. Figura 63. Buton Date
Figura 64. Câmp cod produs Urmează adăugarea prețului produsului: Figura 65. Câmp preț produs Următoarea secțiune este încadrarea produsului la o clasă de taxe. În cazul în care prețul este deja calculat cu TVA 24% trebuie să lăsăm selectat –Nimic– , iar dacă produsul are prețul fără TVA 24%, selectam din listă TVA 24%. Figura 66. Câmp selectare clasa de taxe Trebuie stabilită cantitatea de produse existente pe stoc prin inserarea numărului în secțiunea “Cantitate”. Figura 67. Câmp inserare cantitatea produsului pe stoc
Figura 68. Câmpuri selectare date cu privire la stocuri
În continuare există câteva setări care trebuie făcute: Figura 69. Butonul Legături
Figura 70. Câmp selectarea categoriei produselor Vom selecta categoria / categoriile din care face parte produsul adăugat. Trebuie doar să scriem câteva litere din categoria pe care o căutăm și aceasta va apărea într-un drop-down pentru selecție.
Figura 71. Câmp selectare produse asemănătoare În cazul în care există produse asemăntoare / din aceeași gamă deja adăugate, trebuie să le scriem numele și să le selectăm din listă. La secțiunea “Preț special”, modificăm doar în momentul când avem reduceri. Figura 72. Butonul preț special
Pentru a adăuga un preț redus, trebuie să apăsăm pe butonul "adăugare preț special": Figura 73. Butonul adăugare preț special Urmează să scriem noul preț al produsului și perioada în care va fi valabil produsul la acest preț. Figura 74. Câmp date preț cu reducere și perioada reducerii După ce am făcut setările necesare, trebuie să apăsăm pe butonul Salvare. Figura 75. Butonul salvare Editarea unui produs se face apăsand pe butonul “Editare”: Figura 76. Butonul editare Ștergerea unui produs se face în felul următor: – Selectăm produsul pe care dorim să îl ștergem: Figura 77. Câmp selectare produs – Apăsăm butonul ștergere: Figura 78. Butonul Ștergere
Acum o să primim un mesaj de tip pop-up: Figura 79. Mesaj confirmare ștergere Imediat după ce am apăsat ok, vom primi și mesajul de confirmare: Figura 80. Mesaj de confirmare a realizării modificării 4.4. Producători Adăugarea unui producător se realizează astfel: Figura 81. Butonul Inserare. Imediat se va deschide fereastra cu câmpurile care trebuie completate. În imaginea de mai jos se află un exemplu:
Figura 82. Câmpuri adăugare a unui producător ( nume, cuvânt cheie, logo) Completăm numele producătorului, alegem un cuvânt cheie pentru optimizarea în motoarele de căutare și inserăm o imagine sau logo-ul producătorului.
Ștergerea unui producător se face în felul următor: – Selectăm producătorul pe care dorim să îl ștergem: Figura 83. Câmp selectare producător – Apăsăm butonul ștergere: Figura 84. Butonul ștergere Acum o să primim un mesaj de tip pop-up:
Figura 85. Mesaj confirmare ștergere Imediat după ce am apăsat ok, vom primi și mesajul de confirmare: Figura 86. Mesaj de confirmare a realizării modificării 4.5. Comenzi Pentru a vizualiza o comandă vom apăsa pe butonul “Vedeți”. Aici vor fi afișate detalii despre comandă. Figura 87. Butonul Vedeți
Figura 88. Secțiunea Detalii comandă Pentru a vedea ce produse au fost comandate vom apăsa pe butonul “Produse”:
Figura 89. Butonul Produse Modificarea satusului unei comenzi se face din meniul “Istoric”, vom selecta statusul dorit pentru comandă:
Figura 90. Meniul Istoric
Bifăm “Notificare client” dacă dorim ca el să primească un email cu noul status. Figura 91. Câmp bifare notificare client Tot ce mai avem de făcut este să apăsam pe butonul: Figura 92. Butonul Adăugare istoric Figura 93. Mesaj modificare cu succes Imediat clientul va fi înștiintat prin email:
Figura 94. Notificare comandă primită 4.6. Rapoarte vanzari Aici putem vizualiza un raport cu vânzările efectuate în anumite perioade, putem stabili anumite filtre după data și statusurile comenzilor din perioada setată. Figura 95. Raport vânzări
CONCLUZII Pornind de la contextul necesității dezvoltării comerțului electronic în zilele noastre, lucrarea de față a urmărit mai întâi punerea bazelor de la care se pornește în construirea unei platforme CMS, încadrând-o între elementele de maximă importanță din punct de vedere al rolului în crearea unui magazin electronic. Astfel, în primele două capitole ale lucrării s-a descris pe scurt partea teoretică a acestui context, pășind în lumea comerțului electronic de la începuturi până în prezent, urmărind beneficii, dezavantaje, sistemele de plată utilizate, dar și uneltele necesare realizării părții nevăzute a magazinului online, codurile și structurile folosite cu ajutorul principiilor și instrumentelor pentru dezvoltarea platformei CMS: Patternul MVC, CodeIgniter, HTML, limbajele JavaScript și PHP. După ce s-au adus în discuție elementele necesare existenței și funcționării unui magazin online, era momentul părții practice a lucrării. În capitolele următoare, respectiv capitolul trei și patru, s-a urmărit descrierea succintă a sistemului de administrare al conținutului platformei CMS HNT, cu elementele cuprinse: pagina de admnistrare, categorii și produse, comenzi și clienți, structura de back-end a platformei și structura bazei de date (mySQL), comenzi și rapoarte de vânzări. Înainte de a începe să dezvolt acest proiect am fost plăcut impresionat de platformele opensource Magento, Prestashop și Opencart, care au stat la bază ca model în dezvoltarea HNT CMS, folosind framework-ul Code Igniter. HNT CMS este o aplicație construită pe framework-ul CodeIgniter și are la bază module opensource (sursă deschisă) folosite în platforme e-commerce ca și OpenCart, Magento, Prestashop. Framework-ul folosește design patternul MVC (Module View Controller). Dezvoltarea acestui proiect mi-a permis să descopăr complexitatea limbajului de programare PHP, standardele de programare folosite în frameworkul CodeIgniter, precum și folosirea limbajului de marcare HTML, versiunea 5.0. Deși în realizarea unei soluții e-commerce complete și complexe se urmăresc atât partea de front-end a platformei cât și partea de back-end a acesteia, lucrarea de față a pus accentul doar pe partea complexă a structurii back-end și anume, panoul de administrare.
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: Figura 3. Interogarea unei baze de date MySQL folosind funcția din CodeIgniter [617440] (ID: 617440)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
