Comert Electronic

Introducere

Comerțul electronic este privit ca o arie nouă a comerțului, cu un mare avantaj pentru consumatorul privat deoarece acesta nu mai este nevoit să se deplaseze pentru a achiziționa produsele dorite.

Acesta cuprinde diverse activități, incluzând comercializarea electronică a produselor și serviciilor, livrarea prin rețea a bunurilor, transferul electronic de capital, comerțul electronic cu acțiuni, trimiterea electronică a foilor de expediție, marketing-ul direct și service-ul în garanție și post-garanție.

În momentul de față există o mulțime de firme ce utilizează comerțul electronic, în diverse domenii ca marketingul direct, vânzări, servicii pentru clienți, servicii bancare etc.

Lucrarea este formată din cinci capitole Comerțul electronic, Proiectarea aplicației, Prezentarea aplicației, Punerea în funcțiune și utilizarea sistemului și Concluzii.

Primul capitol definește termenul de comerț electronic, în concepția Organizației pentru Cooperare și Dezvoltare Economică, prezintă noțiuni generale despre comerțul electronic și descrie principalele tipuri de comerț electronic. Pentru a construi un sistem de comerț electronic, din punct de vedere arhitectural este nevoie de patru componente principale: Client, comeciant, Sistem tranzacțional și Dispecerat de plăți .Aceste componente sunt detaliate în subcapitol I.2 Arhitectura unui comerț electronic.

Subcapitolul următor I.3 Magazin electronic, ne introduce în domeniul aplicațiilor virtuale, a magazinelor online.

În ceea ce privește avantajele,dar și aspectele critice ale dezvoltării comerțului electronic, acestea sunt prezentate pe larg în subcapitolul I.5 Avantaje și dezavantaje ale comerțului electronic.

Capitolul II Proiectarea aplicației începe printr-o descriere succintă a limbajul de programare PHP și a sistemul de gestiunea a bazelor de date MySQL. Tot în prima parte a acestui capitol este prezentat și pachetul de programe open source XAMPP folosit pentru implementarea magazinului virtual E-shop.

În cea de-a doua parte a capitolului doi sunt analizate diferite scenarii în ceea ce privește efectuarea și procesarea unei comenzi folosind limbajul de modelare UML.

Capitolul III Prezentarea aplicației este dedicat în întregime aplicației – un magazin online ce se ocupă cu vânzarea de electronice și componente IT. În deschiderea capitolului este prezentată arhitectura bazei de date, urmată apoi de descrierea tabelelor generale și relațiile dintre acestea. Tot în prima parte a capitolului trei este reprezentată diagrama E-R (Entitate-Relație) pentru aplicația magazinului online.

În partea a doua a acestui capitol III.2 Descrierea modulelor și funcționalitățile aplicației sunt explicate în detaliu modulele aplicației și principale funcționalități ale magazinului virtual. O mare importanță o are Modulul de Autentificare-Înregistrare, deoarece prin intermediul acestuia se asigură securitatea procesului de comercializare a produselor. Un alt modul fără de care această aplicație nu poate fi completă o reprezintă Modulul Catalog, un fel de meniu secundar în care sunt listate toate categoriile de produse. Această pagina este punctul de pornire pentru vizualizarea și cumpărarea produselor.

Modulul Coș de cumpărături este nucleul oricărui magazin virtual, fără existența acestuia nici un utilizator nu poate lansa nici o comandă.

Capitolul IV Punerea în funcțiune și utilizarea sistemului informează cititorul în ceea ce privește instalarea, utilizarea și metodele de testare și verificare a magazinului virtual.

Capitolul V Concluzii este constuit din concluziile ce reies din analiza, proiectarea și implementarea unui magazin vitual.

I. Comerțul electronic
I.1 Comerțul electronic – prezentare generală

I.1.1 Comerț electronic

Pentru unele firme, comerțul electronic înseamnă orice tranzacție financiară care utilizează tehnologia informatică. Pentru altele, noțiunea de comerț electronic acoperă circuitul complet de vânzări – inclusiv marketingul și vânzarea propriu-zisă. Mulți oameni consideră comerțul electronic ca fiind orice tranzacție comercială condusă electronic pentru cumpărarea unor produse. Dar, comerțul electronic are, în sens larg, un impact mult mai profund asupra evoluției afacerilor și cuprinde, în fapt, nu numai noile achiziții comerciale ci și totalitatea activităților care susțin obiectivele de marketing ale unei firme și care pot include, spre exemplu, publicitate, vânzări, plăți, activități post-vânzare, servicii către clienți, etc.

Comerțul electronic, în concepția Organizației pentru Cooperare și Dezvoltare Economică, reprezintă desfășurarea unei afaceri prin intermediul Internetului și se referă, în general, la toate tipurile de tranzacții ce au legătură cu activitățile comerciale, derulate la nivel de firmă, sau alți cumpărători și care se bazează pe procesarea și transmiterea de informații sub formă digitală ce includ text, sunet și imagini.

În figura de mai jos este prezentat modul în care se reflectă aceste patru etape în cazul comerțului electronic:

Figura 1. Etape ale comerțului

O altă definiție succintă și larg acceptată a comerțului electronic este următoarea: Comerțul electronic (e-commerce) este acea manieră de a conduce activitățile de comerț care folosesc echipamente electronice pentru a mări aria de acoperire (locul în care se pot afla potențialii clienți) și viteza cu care este livrată informația. [1]

Comerțul electronic înseamnă mai mult decât existența unui site web, putând să includă home banking, cumpărături on-line din magazine și mall-uri virtuale, cumpărări de acțiuni, căutări de job-uri, achiziții prin licitații, colaborări electronice în cercetare, dezvoltare de proiecte. Toate acestea reprezintă aplicații ale comerțului electronic, care necesită susținere informațională, sisteme și infrastructuri organizaționale.

Comerțul electronic dă posibilitatea firmelor, indiferent de mărimea acestora, să devină mai eficiente și flexibile în modul intern de funcționare, să conlucreze mai strâns cu furnizorii și să devină mai atente față de nevoile și așteptările clienților. Permite companiilor să selecteze cei mai buni furnizori, indiferent de localizarea lor geografică și să vândă unei piețe globale.

Această evoluție are un impact major asupra economiei, în ceea ce privește crearea de noi întreprinderi, diversificarea celor existente și, în special, asupra potențialului pieței forței de muncă și a gradului de ocupare a acesteia în viitor.

I.1.2 Tipuri de comerț electronic

În cadrul comerțului electronic pot aparea diferite tipuri de tranzacții, însă sunt două mecanisme de bază în cadrul afacerilor electronice, respectiv:

business-to-consumer (B2C), care include toate interacțiunile dintre comercianți și cumpărătorii de produse și servicii;

business-to-business (B2B), care include toate interacțiunile dintre entitățile economice, incluzând furnziorii și ceilalți parteneri comerciali;

Pe lângă cele două tipuri de comerț electronic enumerate mai sus, foarte des întâlnite în realitatea economică și literatura de specialitate sunt și:

business-to-government (B2G), prin care o firmă oferă servicii solicitate de guvern sau alte instituții ale sale;

government-to-business (G2B), prin care guvernul interacționează cu firmele (sau cetățenii) prin intermediul portalurilor guvernamentale (legislația din 2002 privind achizițiile pentru instituțiile publice prin Internet);

employee-to-employee (E2E), salariații fiind considerați un tip distinct de consumatori, care folosesc, în special, Intranetul și Extranetul pentru cererea și transmiterea informațiilor fie în interiorul organizațiilor din care fac parte, fie pentu stabilirea legăturilor cu angajații firmelor cu care se află într-un parteneriat strategic;

e-consortium, reprezintă o nouă modalitate prin care diferite firme oferă împreună servicii altor firme sau consumatorilor, deși acest tip de mecanism este considerat mai mult o formă de realizare a comerțului electronic pe Internet, așa cum se va vedea din descrierile ulterioare.

Comerțul online, e-business, nu mai este folosit doar de marile companii. Tot mai multe firme de marime medie și chiar mică, au înțeles avantajele afacerilor online și potentialul uriaș pe care îl oferă internetul. În timp, conducerea afacerilor din fața calculatorului va deveni o rutină.

Figura 2. Aplicații ale e-business

I.1.3 Cadrul legislativ al afacerilor electronice din România

Guvernul României a elaborat și înaintat spre aprobare legi electronice și a lansat o serie de proiecte pentru care se vor organiza licitații, proiecte care accelerează introducerea informatizării în toate domeniile.

Legile e-business sunt următoarele:

Legea 455/2001 privind semnătura electronică;

Legea 677/2001 pentru protecția persoanelor privind prelucrarea datelor cu carcter personal și libera circulație a acestor date;

Legea 365/2002 privind comerțul electronic.

Legea semnăturii electronice este cheia comerțului electronic. Până acum orice act autentic era legalizat de către un notar public, dar având în vedere această lege a semnăturii electronice, autentificarea actului o va face semnătura electronică. La baza semnăturii stau certificatele de identitate. Termenul de valabilitate a certificatului este de trei ani de zile, data și ora eliberării lui, precum data și ora expirării fiind disponibile prin intermediul unui registru electronic de certificate menținut de firma care eliberează certificatele. Acest registru se poate consulta prin intermediul Internetului sau prin alte mijloace de comunicare.

I.2 Arhitectura unui sistem de comerț electronic

Rețelele de calculatoare au o extindere rapidă într-o multitudine de domenii cum ar fi sistemul bancar, administrația publică, alocarea temporară de resurse în hoteluri, rezervarea biletelor de avion, rezervarea biletelor de tren etc. Aplicațiile moderne iau în considerare accesul unui numar cât mai mare de utilizatori, mai ales de când se prevede extinderea folosirii cardurilor și crește numărul persoanelor care utilizează Internetul.

Aplicațiile distribuite constau în mai multe componente ce rulează pe mașini diferite, acestea aplicații integrând acțiunile componentelor lor. Proiectarea aplicațiilor distribuite se axează numai pe detaliile părților individuale, ci și pe realizarea unei integrări a componentelor distribuite, astfel încât acestea să coopereze foarte bine între ele.

Principalele cerințe pentru aplicațiile distribuite sunt:

interfețe puternice

fiabilitate foarte mare

securitate ridicată

viteza ridicată de prelucrare și transmitere a datelor.

În mod tradițional, aplicațiile software distribuite se bazează pe arhitectura client/server sau pe arhitectura multi-strat.

Figura 3. Arhitectura client/server

Arhitectura client/server presupune existența unui server de baze de date (server) și a unui modul software specific aplicației sau clientului care prelucrează datele și prezintă rezultatele. În acest sistem nu există noțiunea de obiecte, partea client lucrează direct cu tabelele de date și procedurile stocate din baza de date.

Aceste sisteme se bazează și pe arhitectura Web, ce conferă acestora o fiabilitate, scalabilitate și flexibilitate ridicate. Arhitectura Web, diferă față de arhitectura client/server prin două aspecte:

aplicația client are o complexitate redus[, este un simplu navigator Web

nivelul regulilor aplicației e-business este bazat pe componente și nu este un singur sistem ce implementează întreaga logică.

Pentru a construi un sistem de comerț electronic, din punct de vedere arhitectural este nevoie de existența a patru componente răspunzătoare următoarelor roluri [1]:

Client – un echipament, de obicei un calculator, conectat direct sau la Internet. Cumpărătorul folosește acest echipament pentru a naviga și a face cumpărături;

Comerciant – un sistem informatic hardware și software, situat de regulă la sediul comerciantului, care găzduiește și actualizează catalogul elecitectura client/server

Arhitectura client/server presupune existența unui server de baze de date (server) și a unui modul software specific aplicației sau clientului care prelucrează datele și prezintă rezultatele. În acest sistem nu există noțiunea de obiecte, partea client lucrează direct cu tabelele de date și procedurile stocate din baza de date.

Aceste sisteme se bazează și pe arhitectura Web, ce conferă acestora o fiabilitate, scalabilitate și flexibilitate ridicate. Arhitectura Web, diferă față de arhitectura client/server prin două aspecte:

aplicația client are o complexitate redus[, este un simplu navigator Web

nivelul regulilor aplicației e-business este bazat pe componente și nu este un singur sistem ce implementează întreaga logică.

Pentru a construi un sistem de comerț electronic, din punct de vedere arhitectural este nevoie de existența a patru componente răspunzătoare următoarelor roluri [1]:

Client – un echipament, de obicei un calculator, conectat direct sau la Internet. Cumpărătorul folosește acest echipament pentru a naviga și a face cumpărături;

Comerciant – un sistem informatic hardware și software, situat de regulă la sediul comerciantului, care găzduiește și actualizează catalogul electronic de produse disponibile pentru a fi comandate on-line;

Sistemul tranzacțional – un sistem informatic hardware si software ce este responsabil cu procesarea comenzilor, inițierea plăților, evidența înregistrărilor și a altor aspecte implicate în procesul de tranzacționare.

Dispecer plăți – un sistem informatic responsabil cu rularea instrucțiunilor de plată în interiorul rețelelor financiar-bancare, cu verificarea cărților de credit și autorizarea plăților. Acest sistem joacă rolul unei porți care face legătura dintre rețeaua globală Internet și subrețeaua financiar-bancară fiind supusă unor cerințe de securitate.

Figura 4. Arhitectura sistemelor de comerț electronic

Pentru a asigura succesul pe termen lung al unui proiect de e-commerce, arhitectura acestuia trebuie proiectată cu grijă ținand cont de toate aspectele de business cu care se va confrunta sistemul, lăsand totodată portițe care să permită adaptarea sa în timp, pe măsură ce apar noi provocări iar tehnologiile evoluează.

În acest sens, aplicația implementată, vine în sprijinul celor prezentate mai sus, fiind un sistem complex de shopping cart, implementat prin mai multe module funcționale – care asigură o arhitectură flexibilă și o prelucrare facilă a datelor.

I.3 Magazin electronic

Magazinul online este un tip de comunitate online și reprezintă corespondentul virtual al unei entității reale care asigură desfacerea produselor și serviciilor, precum și interacțiunea dintre ofertant și client. Magazinul online a cunoscut o dezvoltare rapidă încă de la apariția acestui concept și a reușit, în scurt timp, să pătrundă pe întreaga piață de desfacere de bunuri și servicii.

Dezvoltarea în paralel a tehnologiilor care permit securizarea tranzacțiilor pe Internet a făcut ca acest tip de comunitate virtuală să fie din ce în ce mai populară.

Un magazin online este de fapt orice locație fixă pe Internet unde pot fi accesate informații despre o anumită companie și oferind spre vânzare produsele sau serviciile respectivei companii.

Magazinul online se implementează prin intermediul unui site web administrat de aceasta companie, pentru un scop comercial. Catalogul de produse sau servicii cu descrieri tehnice și informații comerciale pentru fiecare item din catalog reprezintă o variantă minimală a acestui tip de comerț electronic. Descrierile tehnice și informațiile sunt gestionate în general de o bază de date care se va ocupa cu stocarea și manipularea datelor precum și cu modalitatea de acces la date (multiple conturi de acces).

Prețurile produselor vândute prin Internet ar trebui să fie mai mici decât cele practicate pentru comenzile clasice. Cărțile, spre exemplu, sunt oferite pe Internet cu o reducere de 10-50% sau, cel puțin, fără a se percepe taxe adiționale de livrare. Serviciile și în special serviciile de informare ar trebui să fie în mare parte gratuite. Serviciile de informare prin publicații periodice sunt oferite gratuit la început, prin acces liber sau abonamente gratuite; ulterior, ofertanții inițiază servicii suplimentare de tipul accesului la arhive și extind posibilitățile de căutare, solicitând utilizatorului să se aboneze și să plătească pentru a beneficia de acestea. S-a constatat că impactul abonamentului online asupra utilizatorilor este foarte mic: majoritatea rămâne fidelă abonamentelor clasice și, în general, numai clienții noi apelează la acest nou sistem de abonament. Cu toate acestea, abonamentele contra cost online pentru accesul la știri de ultimă oră sau la dezbateri cu participare restrictivă de exemplu, suscită interesul doar dacă serviciile oferite sunt de valoare excepțională.

Există diferite variante de găzduire a unui magazin virtual, astfel:

pe un server distinct (un computer proprietatea firmei deținătoare a unui magazin virtual) destinat unor pagini ample și complexe de web; acesta va fi localizat în cadrul firmei dacă frecvența modificărilor ce trebuie făcute este mare (de exemplu știri, prețuri.) sau dacă este necesar un trafic intens între firmă și serverul aferent magazinului;

pe un server virtual (un spațiu deținut de firma proprietară a unui magazin virtual, pe un hard disk al unui computer furnizor de web); in corelație cu un spațiu mai mare de tipul www.yourshop.com, soluție preferată de majoritatea întreprinderilor mici și mijlocii;

în cadrul unui magazin universal electronic (e-mall).

Alegerea variantei optime pentru magazinul electronic virtual depinde de costurile de telecomunicație, grupul țintă, mărimea, structura și obiectivele pe termen mediu ale viitorului magazin.

Un magazin virtual ar trebui să poată fi accesat pe mai multe căi: un link/publicitate permanent pe un site portal, un cuvânt-cheie publicitar în cadrul motoarelor de căutare sau în cadrul prezentării pe Internet a informațiilor generale despre întreaga activitate a firmei sau despre întreaga gamă de produse și o fereastră a acestui site în cadrul unui e-mall – toate acestea fiind prezente în același timp.

I.4 Strategii pentru comerțul electronic

Tipul de software pentru comerț electronic și hardware-ul folosit depinde de mai mulți factori, cel mai important fiind dimensiunea așteptată a afacerii, trafic și vânzări.

În cazurile cele mai complexe, o companie va avea nevoie de un sistem integrat care să realizeze: procesarea online a tranzacțiilor, a plăților, monitorizarea inventarului, contabilitate, păstrarea altor informații rezultate din procese interne ale companiei.

Se poate vorbi în acest sistem de subpărți ale sale:

sisteme front-end – acele aspecte ale afacerii cu care clienții interfațează și asupra cărora aceștia pot exercita un anumit control: site-ul Web și alte elemente pe care clienții le pot utiliza pentru informare și pentru a achiziționa produse și servicii ;

sisteme back-end – acele aspecte ale afacerii care nu sunt direct accesate de clienți: gestiunea contabilă, a producției, a inventarului, a distribuției, urmărirea comenzilor, suport clienți etc.

Sistemele front-end e probabil să partajeze cu cele back-end o porțiune semnificativă din datele companiei: de exemplu prețuri și disponibilitatea produselor.

În plus, eficiența multora dintre procesele de business ale companiei depinde de integrarea reușită a celor două tipuri de sisteme, autentificarea și autorizarea plăților cu cărți de credit, informații referitoare la comenzi în scopul onorării acestora necesită circularea datelor între sistemele front-end și cele back-end sau chiar în afara respectivului sistem de comerț electronic, către furnizori și transporatori de pildă.

În cazul în care compania pentru care se dezvoltă soluția de comerț electronic face vânzare cu amănuntul a unor produse sau servicii , atunci e nevoie să fie construit și menținut un magazin online. Produsele software de tip storefront sunt unelte care pot fi folosite pentru crearea unui astfel de magazin online.

Soluțiile storefront trebuie să ofere minim următoarele caracteristici:

prezentarea unui catalog cu produsele și/sau serviciile disponibile;

funcționalități ale unui coș de cumpărături;

procesarea tranzacțiilor pentru carduri.

Storefront-ul este o platformă flexibilă, ce cuprinde o mulțime de module ce oferă atat companiilor business-to-business (B2B) cat și celor business-to-consumer (B2C) capacitatea de a construi sau a modifica rapid magazinul virtual pe web.

Așadar, pentru un magazin online de succes este nevoie de o platformă care să permită scalabilitatea, extensibilitate și flexibilitate indiferent de limbajul de programare folosit.

Soluțiile storefront realizează de fapt construirea și menținerea paginilor web și a bazelor de date care să implementeze și să suporte aceste funcționalități.

I.5 Avantaje și dezavantaje ale comerțului electronic

Folosirea Internetului duce la scăderea costurilor de comunicare, reduce durata vânzării unui produs, permite livrarea datelor în format digital, reduce costurile de transport și distribuție și permite formarea unor parteneriate integrate și puternice, creând astfel premizele creșterii cifrei de afaceri și a profitului.

Dezvoltarea extrem de accelerată în ultimii ani a comerțului electronic ce folosește Internetul ca mediu de acțiune are la bază o serie de avantaje pe care acest tip de comerț le oferă, atât pentru vânzători cât și pentru cumpărători.

Cele mai importante dinte aceste sunt prezentate în continuare:

Cooperarea între grupurile participante la tranzacțiile comerciale este mult mai ușor de realizat.

Comunicare mai rapidă, marketing cu viteză de reacție mult mai rapidă, inclusiv în relațiile publice;

Eliminarea unor restricții fizice de comunicare între partenerii de afaceri;

Identificarea de noi parteneri, sprijinirea și îmbunătățirea relațiilor cu cei existenți;

Un service mult mai eficient și mult mai eficace oferit clienților;

Gestiune mult mai bună a informațiilor de piață și despre clienți;

Obținerea rapidă a feedback-ului de la clienți cu privire la produse;

Reducerea costului achizițiilor;

Reducerea ciclului activității comerciale;

Costuri de desfacere și ale activității de mrketing mult mai reduse;

Reducerea costurilor specifice lanțului de aprovizionare din: reducerea nivelului stocurilor; creșterea competiției dintre furnizori; reducerea timpului necesar realizării ciclului de aprovizionare;

Noi oportunități de desfacere a produselor;

Reducerea costurilor administrative prin eficientizarea proceselor economice de rutină, cum ar fi recrutarea, plata facturilor și autorizarea zilelor de concediu.

În primul rand comerțul electronic are și avantaje față de comerțul clasic. Fiind pagina de internet înseamnă că este accesibilă 24 de ore din 24 și poate fi accesată de oricine cu acces la internet. Asta spre deosebire de magazinul sau firma care are o adresă fixă și un program mai lung sau mai scurt de funcționare.

Din poziția cumpărătorului, avantajele sunt legate de:

timp: cumpărătorul poate vizita mai multe magazine virtuale într-un timp foarte scurt (mult mai scurt decât timpul pe care îl implică prezența fizică a unei persoane într-un magazin real);

acces non-stop la informațiile despre produs (ex: cantitate stoc);

posibilitatea de a alege: datorită numărului mare de magazine pe care clientul le poate vizita, acesta va avea posibilitatea de a alege un produs în funcție de un număr mult mai mare de opțiuni (preț, data livrării, culoare, etc.);

posibilitatea de a configura produse și de a vedea imediat prețurile reale în comparație cu prețurile mai multor vânzători;

Din punctul de vedere al companiilor ce utilizează comerțul electronic, se disting următoarele avantaje:

accesul la noi segmente de piață (noi clienți) ;

creșterea vitezei de derulare a afacerilor; operativitate crescută în efectuarea tranzacțiilor comerciale ;

reducerea costurilor de aprovizionare, de desfacere, de publicitate etc;

canale alternative de vânzare: desfășurarea afacerilor prin intermediul unui astfel de site;

Un alt avantaj pentru comerțul electronic reprezintă prospectarea pieței. Un comerciant care deține un magazin electronic decent, care se ocupă de el și care vinde produse primește un număr considerabil sau nu de comenzi online. Pe baza acestora poate face o statistică cu cele mai căutate produse, perioadele în care sunt acestea solicitate, tendințe ale cumpărătorilor și altele. Acest lucru se putea face foarte greu în cazul unui magazin folosind doar informații despre vanzările "la punct fix".

Numărul magazinelor virtuale autohtone de comerț electronic este în continuă creștere, cifrele de tranzacționare cresc și ele. Standardele de securitate sunt la nivel internațional, modalitățile de plată sunt aceleași ca peste tot în lume, produsele la fel.

În ceea ce privește aspectele critice ale dezvoltării comerțului electronic putem să menționăm:

securitatea – Internetul a fost conceput ca un mediu deschis, dar nu neapărat și sigur, protocolului TCP/IP lipsindu-i serviciile de securitate de bază. De asemenea în această categorie intră și riscul aplicațiilor client/server, riscul de transfer al datelor și riscul virușilor.

acceptarea noilor modalități de plată (bani electronici/digitali) – apare aici problema urmăririi tranzacților (toate plățile efectuate online se înregistrează);

infrastructura adecvată de telecomunicații – insuficiența lărgimii de bandă – pe masură ce tehnologia avansează apar și alte metode de comunicație, dar și cerințe mai mari;

cadrul legal și normativ – cadrul fiscal, drepturile asupra proprietății, protecția datelor consumatorului. Aceste probleme pot fi rezolvate prin stabilirea unor acorduri, standarde comune la nivelul legislațiilor diferitelor țări, organisme internaționale.

aspecte lingvistice și culturale;

dificultatea de integrare a Internet-ului și a software-ului de comerț electronic cu unele aplicații și baze de date;

unele produse software de comerț electronic nu se potrivesc cu unele sisteme hardware și sisteme de operare;

imposibilitatea clienților de a percepe în totalitate produsul online – nu pot atinge, “mirosi” produsul respectiv.

nesiguranța și lipsa informațiilor – pentru o firmă care nu a mai apelat la mijloace electronice de comunicare cu partenerii de afaceri, Internetul este încă o necunoscută. Măsura în care acesta poate să asigure cunoașterea pieței și a clienților rămâne ascunsă și, uneori, nesigură.

insuficiența suportului de service – de exemplu, experți pentru taxele de comerț electronic sau evaluatori de calitate sunt rari, centre de copyright pentru tranzacțiile de comerț electronic nu există;

start mai lent și acționare prudentă – realizarea afacerilor pe Internet este un fenomen relativ nou, iar implicațiile nu sunt încă pe deplin cunoscute, ceea ce impune firmelor să înceapă acțiunea de implementare a sistemului în mod metodic și cu precauție;

în multe domenii de activitate nu sunt suficienți cumpărători și ofertanți pentru a avea operații profitabile de comerț electronic;

Ca și dezavantaj al comerțului electronic am putea aminti și mentalitatea utilizatorilor – deoarece orice concept nou este privit cu suspiciune, iar mentalitatea unor utilizatori de a profita ilegal de pe urma comerțului electronic nu reprezintă în nici un caz măsura acceptării acestuia ca o formă de comerț concurentă.

Comerțul electronic facilitează cooperarea între firme : reduce costurile de marketing și de livrare, susține strategia de marketing a firmei și oferă acces pe noi piețe. În viitorul apropiat, comerțul electronic va avea un impact puternic asupra competitivității firmelor. Mai mult, comerțul electronic nu este restricționat de frontierele statelor dar depinde de existența sau inexistența rețelelor de computere, a infrastructurii bancare care să permită efectuarea plăților prin Internet.

Comerțul electronic permite chiar și celor mai mici furnizori, indiferent de proveniența lor geografică, să fie omniprezenti și să facă afaceri în întreaga lume Comerțul electronic influențează pozitiv nu numai activitatea întreprinderilor mici și mijlocii, dar vine și in sprijinul clienților, oferindu-le nenumărate opțiuni.

II. Proiectarea aplicației

II.1 PHP și MySQL

II.1.1 Limbajul de programare PHP

PHP (Hypertext Preprocessor), cunoscut în versiunile mai vechi și sub numele de PHP/FI (Personal Homepage/Form Interpreter), inițial a fost gândit a fi o simplă aplicație CGI pentru interpretarea formularelor definte prin HTML și procesate de un program scris într-un limbaj Perl, script shell, executat pe server. În cazul interfeței CGI era necesară permisiunea de a rula programe pe server, ceea ce ducea la lacune în securitate și în plus la disocierea de documentul HTML a programului care procesa datele.

PHP (în versiunea curentă PHP 5) reprezintă un pachet puternic care oferă un limbaj de programare accesibil din cadrul fișierelor HTML, limbaj asemănător cu Perl sau C, plus suport pentru manipularea bazelor de date într-un dialect SQL (dBase, Informix, MySQL, mSQL, Oracle, PostgreSQL, Solid, Sybase, ODBC etc.) și acces la sisteme hipermedia precum Hyperwave.

PHP este un limbaj de script care funcționează alături de un server Web.

Codul PHP este inclus între tag-urile speciale de început și de sfârșit care permit utilizatorului să treacă din "modul HTML" în "modul PHP".

Față de alte limbaje script, precum Javascript, la PHP codul se execută pe serverul Web, nu in navigator(client Web). In consecinta, PHP poate obtine accesul la fisiere , baze de date si alte resurse inaccesibile programului JavaScript. Acestea contin bogate surse de continut dinamic care atrag vizitatorii.

Dacă pe serverul Web se află un script similar, clientul nu va primi deciât rezultatul execuției scriptului, fără a avea nici o posibilitate de acces la codul care a produs rezultatul. Vă puteți configura serverul de Web să prelucreze (analizeze) toate fișierele HTML ca fișiere PHP. Astfel nu există nici un mijloc de a distinge paginile care sunt produse dinamic de paginile statice.

Limbajul PHP posedă aceleași funcții ca alte limbaje permițâind să se scrie scripturi CGI, să colecteze date și să genereze dinamic pagini web sau să trimită și să primească cookies.

Marea calitate și cel mai mare avantaj al limbajului PHP este suportul cu un număr mare de baze de date. A realiza o pagină web dinamic cu o baza de date este extrem de simplu. În urmărotul tabel sunt baze de date suportate de către PHP:

Tabel 1. Baze de date suportate de PHP

II.1.2 Sistemul de gestiunea a bazelor de date MySQL

Dezvoltat de firma suedeză MySQL AB, MySQL este un server de baze de date disponibil gratuit, open-source care oferă fiabilitate și avantaje reale.

Caracteristica fundamentală a serverului MySQL este simplitatea sa. Administrarea bazei de date se face folosind peste o duzină de utilitare în linia de comanda, cel mai important fiind mysql, un shell interactiv pentru controlul și interogarea bazei de date. Utilitarele rulează cel mai bine pe sistemul Linux, platforma pe care MySQL a fost dezvoltat inițial. Alte două utilitare open-source, ce funcționeză pe platforma Windows, care oferă un set de comenzi de administrare sunt MySqlManager, un utilitar de interogare în mod grafic similar cu mysql și WinMySQL admin, o consola pentru administrarea detaliilor configurării lui MySQL.

MySQL realizează cu ușurință importarea diverselor baze de date și exportarea sub forma fișierelor sql. Tranzacțiile nu sunt parte a tabelelor implicite(ISAM) ale lui MySQL, dar sunt incluse două tipuri noi de tabele – Berkley DB(BDB) și InnoDB – care au fost dezvoltate de alte firme.

MySQL operează în baza unui model client/server. Orice mașină care dorește să proceseze interogări asupra unei baze de date MySQL trebuie să ruleze MySQL server(mysqld), care este responsabil de tot traficul de tip intrări/ieșiri(incoming/outgoing) cu baza de date. Ca orice server, mysqld "ascultă" pe un port particular (3306) eventualele cereri de conexiune ale unui "client" – orice aplicație care trimite cereri către o bază de date via mysqld. Acest client poate fi un simplu script PHP care poate trimite o cerere către baza de date prin intermediul serverului MySQL sau chiar clientului mysql. Clientul mysql este o interfață interactivă pentru transmiterea de comenzi către server.

Modelul de securitate folosit de MySQL se bazează pe nume de utilizator, parola, nume server(hostname) sau adresa de IP și privilegii, fiind similar celui generic folosit de sistemele Unix. Prin privilegii se înteleg, în cazul MySQL, operațiunile ce vor fi permise asupra bazei/bazelor de date, tabelelor sau indecșilor, cum sunt de exemplu SELECT, INSERT, UPDATE, DELETE, CREATE, DROP.

Datele sunt obiectul celor mai multe operații de prelucrare, iar sistemele de gestiune a bazelor de date furnizează cele mai complexe și puternice facilități pentru lucrul cu datele. PHP include o bibliotecă de funcții care furnizează o interfață cu sistemul MySQL de gestiune a bazelor de date.

II.1.3 XAMPP

XAMMPP este un pachet de programe open source, cross-platform care constă în Apache, Apache HTTP Server, MySQL database și pentru scripturile scrise în limbajele de programare PHP și Perl.

Am folosit acest pachet deoarece are toate uneltele pentru setarea unui web server și mentenanța acestuia. De mare ajutor mi-a fost phpMyAdmin în care am creat toate tabelele pentru această aplicație.

II.2 Proiectarea generală a aplicației

II.2.1 Mod de implementare – Diagrame UML

UML – Unified Modelling Language este un limbaj vizual de modelare, el nu este încă un limbaj vizual de programare, deoarece nu dispune de întreg sprijinul semantic și vizual pentru a înlocui limbajele de programare. Limbajul este destinat vizualizării, specificării, construirii și documentării sistemelor de aplicații, dar are limitări în ceea ce privește generarea codului. UML reunește cele mai bune tehnici și practici din domeniul ingineriei programării, care și-au dovedit eficiența în construirea sistemelor complexe.

Tipuri de diagramele UML:

Diagrame clasă – descriu clasele, package-urile, proprietățile lor și diferitele relații care pot apărea între acestea.

Diagrame obiect – descriu un anumit scenariu, în loc de clase, ca la Diagramele clase vor apărea obiecte, instanțe ale acestor clase.

Diagrame use-case – descriu scenarii, actorii implicați (cei care interacționează cu sistemul), puși în diferitele relații existente.

Pentru aplicația nostră cu magazinul online putem avea următorul scenariu.

Figura 5. Use case – Utilizator

Diagrame de secvențe și diagrame de colaborare – descriu secvența de mesaje schimbate de obiecte la run-time.

Diagrame de componente – descriu componentele implementate (Ex: source și object files)

Diagrame de stare – prezintă stările pe care le pot avea obiectele în cadrul unui sistem.

Diagramele de activitate – prezintă algoritmi sau data-flow.

În cazul aplicației unui magazine online putem avea următoarele diagrame de activități (figura 6 si figura 7).

Figura 6. Diagrama de activitate – Procesarea unei comenzi

Figura7. Diagrama de activitate – Efectuarea unei comenzi (Online shopping)

III. Prezentarea aplicației

Aplicația este destinată tuturor persoanelor care navighează pe internet și doresc să cumpere produse sau doar să afle informații despre anumite produse și care nu au timp pentru a vizita magazine.

Se dorește crearea unei aplicații care să permită comanda unor produse online; comenzi care sunt verificate de administratorul aplicației și care vor fi livrate în funcție de anumite criterii.

Aplicația are ca și principale funcționalități următoarele:

Posibilitatea de a naviga prin categoriile de produse

Posibilitatea de a vizualiza un produs și mărirea imaginii

Posiblitatea de a alege un produs

Posibilitatea de a vizualiza produsele aflate în coș și suma totală de achitat

Posibilitatea de a modifica cantitatea unui anumit produs deja aflat în coșul de cumpărături, inclusiv de a-l șterge.

Posibilitatea de a goli coșul de cumpărături

Fiecare client are un cont în care poate vedea situația comenzilor sale

Clientul își poate modifica datele personal și schimba parola

Clientul își poate modifica datele de facturare

Clientul poate să-și verifica situația comenzilor sale, și poate fi la curent cu noile produse apărute, cu ofertele promoționale

Clientul poate citi știri și articole despre produsele existente in catalog

Clientul poate căuta un anumit produs după criteriile dorite.

III.1 Prezentarea bazei de date

III.1.1 Arhitectura bazei de date

Pentru o bază de date cel mai important lucru este manipularea datelor conținute în acea bază de date. Această „manipulare” se referă la operațiile care se pot efectua asupra datelor: operații de adăugare a unor date noi, operații de găsire, de modificare, de ștergere a datelor existente (care se realizează cu ajutorul instructiunilor limbajului MySQL).

Aplicația ce se dorește a fi implementată trebuie să permită stocarea unui volum mare de date (categorii, tipuri de produse; produse; informații despre clienți, comenzi etc), la care să existe acces tot timpul. În cazul bazelor de date, accentul este pus pe operațiile de memorare și regăsire, efectuate asupra unor volume mari de date și mai puțin asupra operațiilor de prelucrare a datelor.

Folosind această aplicație utilizatorul va avea posibilitatea să verifice la un moment dat comenzile efectuate la o anumită dată, clienții care au un istoric al comenzilor.

Deoarece sunt implicate sume de bani (pentru achitarea facturilor), securitatea metodelor de calcul trebuie sa fie ridicată, trebuie sa fie eliminată pe cat posibil posibilitatea introducerii de erori în rezultatul final. în acest sens sunt necesare o serie de verificări la introducerea de informații în sistem, care să evite aceste erori(cum ar fi de exemplu verificarea ca la introducerea unui produs în coș să nu poată fi introduse valori negative).

În etapa de proiectare a aplicației se utilizează informațiile obținute la faza de analiză pentru a realiza diagrama Entitate-Relație, pe baza listelor cu entități, atribute și relații dintre acestea, precum și diagrama de funcții, pe baza listei de evenimente și funcții.

Diagrama Entitate-Relație este o formă generalizată și abstractizată a listei de entități și atribute, și este utilizată apoi pentru realizarea schemei bazei de date. Această diagramă este independentă de sistemul de gestiune a bazelor de date utilizat în etapa de implementare.

Tipurile de relații întalnite în aplicație:

1:n (one to many) – la o instanță a unei entități îi corespunde una sau mai multe din cea de-a doua entitate

1:1 (one to one) – la o instanță a unei entități îi corespunde o instanță a celei de-a doua entități

n:n (many to many) – la o instanță a unei entități îi corespunde una sau mai multe din cea de-a doua entitate și reciproc, acesteia din urmă îi corespund una sau mai multe instanțe ale primei entități. În acest caz trebuie introdusă o entitate de legătură pentru implementarea relației.

O relație de legatură este o asociere între două entități și este binară, în sensul că este întotdeauna o asociere exact între două entități sau o entitate cu ea.

Mai jos este reprezentată diagrama E-R pentru aplicația magazinului online.

Figura 8. Diagrama E-R

Tabel Comanda este compusă dintr-un element comandă din tabela comanda_item, astfel legatura este one-to-many.

Fiecare categorie de produse poate fi compusă din unul sau mai multe produse și fiecare produs trebuie să aparțina unei categorii si numai uneia.

Fiecare produs poate fi inclus într-una sau mai multe comenzi și fiecare comandă trebuie să fie compusă din unul sau mai multe produse. Aici relația este many-to-many și a fost nevoie de tabela comanda_item pentru această legatură care nu este directă.

Fiecare produs poate fi inclus într-unul sau mai multe elemente de comandă și fiecare element de comandă trebuie să conțină un produs și numai unul. Relația este one-to-many.

Fiecărei comenzi îi aparține o factură și doar o factură, relația regăsită aici fiind one-to-one.

Fiecărui client îi este asociată una sau mai multe adrese de facturare, așa cum și o adresă poate aparține mai multor clienți (doar în cazul în care clienții sunt persone de contact ale unei firme).

Un producător poate avea mai multe produse, în timp ce un produs poate avea prețul exprimat în mai multe valute.

Un produs poate avea mai multe caracteristici definite, iar aceste caracteristici pot aparține mai multor produse. Relația definită între aceste două tabele produse și caracteristici este many-to-many folosindu-se tabela de legatură caracteristici_produse.

III.1.2 Prezentarea tabelelor generale și relațiile dintre tabele

Mai jos sunt prezentate tabelele generale folosite în aplicație și relațiile dintre ele.

Tabela articole

Figura 9. Tabela articole

Tabela caracteristici

Figura 10. Tabela caracteristici

Tabela caracteristici_produse

Figura 11. Tabela caracteristici_produse

Tabela categorie

Figura 12. Tabela categorie

Tabela clienți

Figura 13. Tabela clienti

Tabela comanda_item

Figura 14. Tabela comanda_item

Tabela comenzi

Figura 15. Tabela comenzi

Tabela date_facturare

Figura 16. Tabela date_facturare

Tabela valuta

Figura 17. Tabela valuta

Tabela facturi

Figura 18. Tabela facturi

Tabela newsletter

Figura 19. Tabela newsletter

Tabela producatori

Figura 20. Tabela producatori

Tabela “coș_cumpărături”

Figura 21. Tabela coș_cumpărături

Tabela produse

Figura 22. Tabela produse

III.2 Descrierea modulelor și funcționalitățile aplicației

Un client care accesează site-ul web al aplicației se asteaptă să vadă o interfață utilizator care să conțină:

Link-uri sau bare de navigare pentru opțiunile comune de navigare.

Un catalog de produse organizat pe categorii și subcategorii.

Un mecanism de căutare avansată a unui produs în funcție de anumite criterii.

O descriere detaliată a unui produs selectat și posibilitatea de adăugare în coșul virtual.

O vedere detaliată a „coșului virtual” care să-i permită modificarea ăi actualizarea conținutului acestuia.

Un mecanism de înregistrare și identificare a clienților pe baza unei parole.

O vedere care permite actualizarea informațiilor din contul creat, precum și un istoric al comenzilor efectuate.

O vedere detaliată a comenzilor înainte ca acestea să fie trimise. Afișarea totalului de plată și posibilitatea de introducere a informațiilor legate de plată și livrare.

O vedere care permite confirmarea comezilor înainte de a fi trimise.

În plus față de aceste cerințe ale interfeței utilizator, aplicația realizată oferă de asemenea și cerințele de securitate necesare, cum ar fi: se permite accesul la anumite functionalități doar utilizatorilor înregistrați, fără a restricționa accesul pentru „vizitatorii” site-ului.

III.2.1 Modulul de interfață al aplicației

Primul lucru pe care un utilizator îl vede la accesarea site-ului este pagina principală a aplicației. Aceasta conține un meniu principal înpartea de sus a magazinului virtual, un meniu secundar ce presupune vizualizarea categoriilor și subcategoriilor in partea stanga. Imediat dedesubt se găsește un modul de Știri și Articole și modulul de Newsletter. În partea dreapa a paginii se găsește modulul de Autentificare-înregistrare a utilizatorului, apoi se continuă modulul Coș cumpărături, urmat de Produsele recomandate.

În mijlocul paginii este reprezentat Conținutul principal al magazinului virtual, unde se vor încărca pe rand paginile site-ului. La prima intrare în site vor fi afișate produsele noi sau la promoție, cu discount dintr-o categorie, al cărui id este luat aleatoriu.

Figura 23. Pagina principală

Pagina principală a site-ului oferă utilizatorilor informații despre categoriile de produse comercializate și prezintă o listă cu produse recomandate, și promoțiile existente.

Meniu principal

În partea de sus a paginii se afla un meniu de navigare care îi oferă utilizatorului posibilitatea să se plimbe printre paginile site-ului. Acesta este format din Acasă – prin intrarea în acest meniu se va afișa lista de produse ale unei categorii, Știri și articole – afișează noutățile site-ului și noutăți din domeniul IT-ului, Oferte speciale – se afișează lista ofertelor promoționale și Contact – datele de contact ale magazinului virtual.

Figura 24. Meniul principal

Știri și articole

În acest modul sunt prezentate câteva articole din lumea IT-ului, cât și noutăți despre site. Aceste informații sunt preluate din tabela articole și sunt afișate ultimele trei articole în ordinea cronologică a introducerii lor.

Figura 25. Componenta Știri și articole

Produse recomandate

În acest modul sunt prezentate produsele recomandate din magazinul virtual. Aceste produse sunt din categorii diferite și nu ține cont de vreun criteriu – promoție sau noutate, ci sunt ultimele produse introduse în baza de date pentru fiecare categorie.

Figura 26. Componenta Produse recomandate

Newsletter

Folosind această opțiune utilizatorul se poate abona sau dezabona de la newsletter-ul magazinului virtual.

Figura 27. Componenta Newsletter

III.2.2 Modulul de înregistrare-autentificare al utilizatorilor

Modulul de login se ocupă de autentificarea utilizatorului, dar și de înregistrarea acestuia. Identificarea utilizatorului se face după un username ales și o parolă tot aleasă de acesta.

Acest modul asigură securitatea procesului de comercializare a produselor, prin utilizarea autentificării utilizatorilor și a altor mecanisme.

De asemenea pune la dispoziția utilizatorului – care a parcurs procesul de autentificare, o serie de opțiuni :

detalii despre cont și posibilitatea modificării datelor personale

modificarea datelor de facturare și reținerea acestora atunci când se efectuează o nouă comandă

schimbarea parolei

verificarea statusului comenzii efectuate

vizualizarea unui istoric al comenzilor

Autentificare

Reprezintă o parte importantă din modulul de înregistrare-autentificare al utilizatorilor. Utilizatorul trebuie să introducă un username cu parola aferentă (alese tot de el în momentul în care s-a înregistrat).

Figura 28. Modul autentificare

O dată introduse aceste date se face interogarea în baza de date și se permite intrarea acestuia în cont (figura 14a), sau în cazul în care autentificarea a eșuat este reîncarcată pagina de logare – in partea de jos a acesteia apărând un mesaj de avertizare corespunzător (după cum se poate vedea în figura 14b) .

Figura 29. Modul autentificare – a) În caz de succes și b) În caz de eroare

În cazul în care logarea s-a făcut cu succes atunci variabilele username și password le va trimite mai departe în site folosind $_SESSION. Este de la sine înțeleasă utilitatea unei asemenea proceduri: în cazul în care un utilizator accesează o pagină ce presupune identificare, scriptul va realiza acest lucru și va verifica identitatea clientului.

De altfel la apăsarea butonului Ieșire această sesiune se av distruge, urmând ca aceste două variabile să își piardă valorile.

Înregistrare

Ca un utilizator să se poată autentificare mai târziu, este nevoie ca mai întâi să se înregistreze. Următorul formular presupune introducerea datelor minim necesare pentru crearea unui cont în magazinul virtual.

Figura 30. Modul de înregistrare

Utilizatorul trebuie să introducă numele, prenumele, emailul, dar și un username și o parolă pe care le va folosi la autentificare. În cazul în care nu au fost introduse datele corespunzător , va apărea mesajul din figura următoare:

Figura 31. Modul înregistrare – mesaj eroare

Contul meu

Ultimul pas din Modulul de înregistrare-autentificare il reprezintă intrarea efectivă în cont a utilizatorului.

Acesta își poate modifica datele personale, își poate schima parola și modifica datele de facturare. Următoarele figuri ilustrează formularele de prelucrare a datelor unui utilizator.

Figura 32. Modifică date personale

Figura 33 Modifică date personale – mesaj eroare

Figura 34. Schimbă parola

Figura 35. Schimbă parola – mesaj de eroare

Figura 36. Modifică date facturare

III.2.3 Modulul Catalog

În partea stângă este un meniu care afișeaza categoriile de produse. Această pagina este punctul de pornire pentru vizualizarea și cumpărarea produselor.

Folosind acest modul, utilizatorul poate naviga prin toate categoriile, subcategoriile și produsele disponibile în magazinul virtual. În figura următoare se ilustrează meniul de categorii cu un nivel de adâncime trei, și anume avem categoriile părinte, apoi subcategoriile si sub-subcategoriile acestora.

Figura 37. Modul Categorii

Alegând una dintre categoriile de mai sus, în partea centrală a paginii se vor lista produsele din această categorie dacă nu au subcategorii asociate.

În următoarea figură sunt prezentate produsele pentru subcategoria Laptopuri.

Figura 38. Lista produse corespunzătoare unei categorii

Dacă în schimb categoria aleasă are asociate alte categorii atunci sunt afișate toate informațiile despre subcategoriile acestei categorii principale. Se vor afișa tabelat numele fiecărei subcategorii însoțită de poza corespunzătoare ce descrie grafic subcategoria respectivă (este imaginea asociată ultimului produs introdus în baza de date).

În interiorul catalogului, fiecare categorie va conține mai multe produse, în funcție de stocul curent aflat în baza de date. Fiecare imagine din categorie va conține un link spre pagina produsului respectiv cât și un buton sub formă de coș prin apăsarea căruia acest produs va fi adăugat în coșul cu cumpărături.

Efectuarea unui click pe numele produsului sau pe imaginea asociatpă acestuia va duce la încărcarea paginii produsului respectiv.

Figura 39. Pagină produs

În cadrul acestei pagini, sunt afișate toate informațiile existente despre produsul respectiv.

După cum se poate vedea în figura de mai sus, în partea de sus a paginii sunt încărcate din baza de date, tabela produse – poza produsului (de dimensiune medie), numele, pretul, dacă produsul este în stoc, dacă este la promoție sau nou și butoanele de Comandă, respectiv de Zoom.

Apăsarea butonului Comandă duce la salvarea produsului în Coșul cu cumpărături. Butonul Zoom permite afișarea pozei de dimensiune mare folosind un script JavaScript.

Urmează apoi Descrierea produsului și listarea Caracteristicilor acestuia.

III.2.4 Modulul Coș de cumpărături

Acest modul este partea cea mai importantă dintr-un magazin virtual, un fel de nucleu în jurul căruia se găsesc Modulul Catalog și Modulul Înregistrare-Autentificare.

Coșul virtual se creează în momentul în care utilizatorul adaugă un produs în coș, folosind opțiunea Comandă din descrierea detaliată a produsului, sau folosind butonul sub forma unui coț de cumpărături – pe care îl regăsim în lista produselor unei categorii.

Modulul Coș de cumpărături este poziționat în aprtea dreaptă a paginii. Acest coș virtual se poate găsi în două stări – coș gol și coș cu produse. Aceste stări sunt ilustrate în figurile 25 și 26.

Figura 40. Modulul Coș de cumpărături – Stare Coș gol

Figura 41. Modulul Coș de cumpărături – Stare Coș cu produse

Pentru administrarea coșului virtual s-a implementat un fascicul de funcții, care ajută la manipularea datelor din coșul virtual.

Acestea sunt folosite pentru a verifica dacă coșul este gol, pentru a returna produsele conținute de coș, precum si pentru adăugarea unui produs în coș, actualizarea unui produs, ștergerea un produs, actualizarea coșului virtual, calcularea totalului coșului și mai ales salvearea în baza de date a produsele din coș.

Coșul virtual de cumpărături este de fapt extras dintr-o variabilă de tip Session. Dacă aceasta există atunci se afișează conținutul lui, iar dacă nu, se afișează un mesaj. Dacă utilizatorul este logat se verifica daca acesta are salvat un coș virtual dintr-o vizită anterioară și i se oferă posibilitatea de a încărca produsele salvate, în coșul curent.

De îndată ce coșul virtual are produse salvate în el, se poate apăsa pe butonul Vizualizează Coș pentru a putea vedea detaliat produsele salvate și mai ales pentru a putea șterge și actualiza cantitățile dorite pentru un anumit produs.

Figura 42. Vizualizare Coș de cumpărături

Înafară de acțiunile de ștergere și actualizare, tot de aici se poate începe lansarea comenzii de către utilizator. Butonul Lanseză comandă trimite către un nou formular pentru introducerea datelor necesare unei comenzi și anume datele de facturare și datele de livrare.

Aceasta este pagina cea mai complexă a aplicației și care conține cea mai multă informație.

Fiind o pagină complexă s-a încercat împărțirea ei în mai multe panouri care alcătuiesc un fel de wizard (asistent). Pentru utilizator este mult mai ușor să-i fie prezentată informația pe rând și nu toată odată.

Astfel efectuarea unei comenzi necesită mai mulți pași. Acești sunt:

Actualizare date facturare utilizator – adresa la care se trimite plata și informațiile referitoare la modul de plată. Datele cumpărătorului sunt completate pe baza informațiilor din baza de date.

Introducere date livrare – în special adresa de livrare este cea mai importantă. Dacă este aceeași adresă ca la pasul anterior utilizatorul are posibilitatea să marcheze o căsuță și automat vor fi completate datele pentru adresa de livrare.

Figura 43. Lansare comandă – Introducere date facturare și livrare

Confirmare comandă – sunt prezentate produsele din coșul virtual selectate de cumpărător, la care se adaugă taxele de livrare și se calculează un total de plată. Îi sunt afișate și informațiile despre livrare și facturare. Clientul verifică dacă aceste date sunt corecte și confirmă acest lucru. În caz contrar se poate apăsa pe butonul Înapoi pentru reditare date de facturare-livrare.

Comanda efectuată – clientul primește un mesaj (de succes sau de eroare) și detalii despre comanda înregistrată în baza de date – data înregistrării, număr comandă, status.

În acest moment toate datele introduse de-a lungul wizardului sunt introduse în baza de date, iar coșul de cumpărături golit (de asemenea și înregistrarea ștearsă din tabela coș_cumpărături).

Apăsând butonul Continuă cumpărăturile se poate lansa o altă comandă fără nici o legătură cu precedenta.

III.3 Securitatea aplicației

Unul dintre cele mai importante aspecte legate de programarea aplicațiilor pentru Web îl reprezintă siguranța aplicațiilor.

Aplicația implementează autentificarea pe bază de formulare care redirectează utilizatorii neautorizați la un formular care le cere un nume de utilizator și o parolă. După ce aplicația verifică datele de autentificare introduse de utilizator, se creează o sesiune de autentificare, pentru a menține informațiile de autentificare pentru utilizatorul curent.

Produsele „orfane” existente în coșul cu cumpărături sunt reținute în tabela coș_cumpărături timp de o zi urmând ca apoi sa fie șterse. Astfel stocul produselor va fi destul de corect afișat în inerfață.

IV. Punerea în funcțiune și utilizarea sistemului

IV.1 Cerințe de instalare

Aplicația dezvoltată reprezintă implementarea unei soluții web pentru un magazin virtual ce folosește comerțul electronic pentru comercializarea produselor sale. Magazinul virtual implementat în cazul de față comercializează atât electronice cât si componente de calculatoare.

Această aplicașie poate rula pe un server de web Apache instalat pe oricare dintre sistemele de operare Linux, Unix sau Windows.

Se recomandă folosirea pe pe serverul de web a unei versiuni noi de PHP și a unei versiuni recente de MySQL ca server de baze de date.

Pentru a instala XAMPP, trebuie descărcat kitul de instalare în unul din formatele zip, tar, 7z sau exe, fără a fi nevoie de modificarea configurării componentelor instalate.

Pentru implementarea acestui magazin virtual s-a instalat pe sistemul de operare Windwos XAMPP versiunea 1.7.4 cu PHP versiune 5.3.5 . Acesta conține următoarele unelte:

phpMyAdmin

Webalizer

MercuryMail

FileZilla FTP

Pe lângă acestea pentru implementarea site-ului web s-au utilizat HTML4, CSS și JavaScript.

IV.2 Utilizare

Partea executabilă a aplicației este constituită de scripturi PHP, ce sunt rulate pe serverul de web și al caror rezultat este vizualizat local de către utilizator client pe calculatorul său, prin intermediul unui browser.

Dacă instalarea pachetului XAMPP s-a efectuat cu succes singurul lucru de care este nevoie pentru rularea aplicației este un browser de Web. Se tastează adresa site-ului, numele directorului virtual al aplicației și opțional pagina principală a aplicației (de exemplu, http://localhost/e-shop/index,php).

Clientul poate naviga printre paginile site-ului pentru a vizualiza produse și pentru a lansa o nouă comandă.

IV.3 Metode de testare si verificare

Aceste tipuri de metode de testare și verificare reprezintă de fapt testarea funcționalității site-ului și a facilităților puse la dispoziție în cadrul acestuia.

Prin testarea acestei aplicații se urmărește comportamentul său și dacă sunt îndeplinite toate obiectivele propuse la proiectarea aplicației.

V. Concluzii

Comerțul electronic reprezintă multitudinea proceselor software și comerciale necesare proceselor business să funcționeze folosind fluxuri digitale de date. Comerțul electronic presupune utilizarea Internetului, comunicații digitale și aplicații software în cadrul proceselor de vânzare/cumparare, el fiind o componentă destul de importantă a procesului de e-business.

În acest momet există o multitudine de firme ce utilizează comerțul electronic, în domenii diverse ca marketing direct, vânzari, servicii pentru clienti, servicii bancare, distribuirea sigura a informatiilor etc.

Avantajele utilizarii noilor tehnologii în activitatile de comert si afaceri are un mare impact asupra afacerilor. De exemplu, se constata ca practicarea marketingului pe Internet este cu 25% mai ieftin decât prin metodele obisnuite.

Însă există și riscuri în ceea ce privește aplicațiile pentru comerț electronic, acestea nu au un control minimal asupra mediului clienților pe de o parte, iar de cealaltă parte nici clineții nu au certitudinea primirii bunurilor din momentul în care efectuează plata .

Comerțul electronic facilitează și cooperarea între firme. Reduce costurile de marketing și de livrare, susține strategia de marketing a firmei și oferă acces pe noi piețe. În viitorul apropiat, comerțul electronic va avea un impact puternic asupra competitivității firmelor. Comerțul electronic nu este restricționat de frontierele statelor dar depinde de existența sau inexistența rețelelor de computere. Comerțul electronic permite chiar și celor mai mici furnizori, indiferent de proveniența lor geografică, să fie omniprezenți și să facă afaceri în întreaga lume.

Lipsa cadrului legal privind securitatea tranzacțiilor, numărul redus de persoane care sunt conectate la Internet, accesul limitat la condițiile hardware și software de bază precum și valoarea ridicată a investițiilor pentru deschiderea unui magazin virtual sunt numai câteva din cauzele pentru care în România comerțul electronic de tip Business-to-Business se află încă la început de drum.

Totuși se observă că în ultimii ani comerțul electronic a cunoscut o dinamică ascendentă datorită unui mediu favorabil atât promovării cât și utilizării comerțului electronic prin sensibilizarea și conștientizarea întreprinzătorilor.

Aplicația dezvoltată indeplinește majoritatea cerințelor unui magazin virtual, aplicația este stabilă, ușor de utilizat și corespunde necesităților unei firme care dorește să-și înceapă o activitate de comerț electronic. O astfel de aplicație de comerț electronic este absolut necesară pentru orice organizație care are o activitate de comerț electronic.

Modularizarea aplicației a condus la o structură flexibilă a site-ului, fiind posibil astfel adăugarea pe parcurs și a altor componente/sectiuni în aplicație.

În aplicație s-au implementat funcțiile de bază pe care trebuie să le ofere orice aplicație de comerț electronic: înregistrarea clienților, consultarea unui catalog de produse, adăugarea produselor în coșul virtual, vizualizarea produselor detaliat, trimiterea unei comenzi. S-a implementat de asemenea un mecanism de menținere a produselor în „coșul virtual de cumpărături”, adăugare/stergere de produse din coș fără a folosi accesul la baza de date.

Anexe

Anexa 1. Coșul de cumpărături

function addToCart(

{

$productId = (int)$_GET['p'];

// verificare daca produsul exista

if (isset($_GET['p']) && (int)$_GET['p'] > 0) {

$productId = (int)$_GET['p'];

} else {

header('Location: index.php');

}

$sql = "SELECT produs_id, stoc

FROM produse

WHERE produs_id = ".$_GET['p'];

$result = mysql_query($sql);

if (mysql_num_rows($result) != 1) {

// daca nu exista

header('Location: cart.php');

}

else {

//cate produse se aflqa in stoc

$row = mysql_fetch_assoc($result);

$currentStock = $row['stoc'];

if ($currentStock == 0) {

header('Location: cart.php');

exit;

}

}

//sesiune curenta

$sid = session_id();

// verificarea daca produsul este deja in cos pentru aceasta sesiune

$sql = "SELECT produs_id

FROM cos_cumparaturi

WHERE produs_id = $productId AND session_id = '$sid'";

$result = mysql_query($sql);

if (mysql_num_rows($result) == 0) {

//daca nu exista acest produs, se pune produsul in cos

$sql = "INSERT INTO cos_cumparaturi (produs_id, cantitate, session_id, data_cart)

VALUES ($productId, 1, '$sid', NOW())";

$result = mysql_query($sql);

} else {

// daca exista atunci se va actualiza cantitatea produsului

$sql = "UPDATE cos_cumparaturi

SET cantitate = cantitate + 1

WHERE session_id = '$sid' AND produs_id = $productId";

$result = mysql_query($sql);

}

// daca sunt cosuri "orfane", adica abandonate atunci se vor sterge

deleteAbandonedCart();

header('Location: ' . $_SERVER['HTTP_REFERER']);

}

//se ia continutul cosului de cumparaturi pentru a putea fi prelucrat

function getCartContent()

{

$cartContent = array();

$sid = session_id();

$sql = "SELECT valuta.denumire,cart.cart_id, cart.produs_id, cart.cantitate, prod.denumire_ro, prod.denumire_en, prod.pret, prod.image_path, cat.categorie_id

FROM cos_cumparaturi as cart, produse as prod, categorie as cat, valuta

WHERE cart.session_id = '$sid' AND cart.produs_id = prod.produs_id AND cat.categorie_id = prod.categorie_id

AND valuta.valuta_id = prod.valuta_id";

$result = mysql_query($sql);

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

if ($row['image_path']) {

$row['image_path'] = WEB_ROOT . 'images/produse/thumb_' . $row['image_path'];

} else {

$row['image_path'] = WEB_ROOT . 'images/produse/no-image-small.png';

}

$cartContent[] = $row;

}

return $cartContent;

}

//stergerea unui produs din cos

function deleteFromCart($cartId = 0)

{

if (!$cartId && isset($_GET['cid']) && (int)$_GET['cid'] > 0) {

$cartId = (int)$_GET['cid'];

}

if ($cartId) {

$sql = "DELETE FROM cos_cumparaturi

WHERE cart_id = $cartId";

$result = mysql_query($sql);

}

header('Location: cart.php');

}

//actualizarea unui produs in cos

function updateCart()

{

$cartId = $_POST['hidCartId'];

$productId = $_POST['hidProductId'];

$itemQty = $_POST['txtQty'];

$numItem = count($itemQty);

$numDeleted = 0;

$notice = '';

for ($i = 0; $i < $numItem; $i++) {

$newQty = (int)$itemQty[$i];

if ($newQty < 1) {

// aici se sterge produsul

deleteFromCart($cartId[$i]);

$numDeleted += 1;

} else {

// check current stock

$sql = "SELECT denumire_ro, denumire_en, stoc

FROM produse

WHERE produs_id = ".$productId[$i];

$result = mysql_query($sql);

$row = mysql_fetch_assoc($result);

if ($newQty > $row['stoc']) {

// doar atat mai avem in stoc

$newQty = $row['stoc'];

// daca clientul introduce o cantitate mai mare decat cea din stoc

if ($row['stoc'] > 0) {

setError('Cantitatea introdusa este mai mare decat stocul pentru acest produs');

} else {

// produsul nu este in stoc

setError('Ne pare rau, produsul pe care il doriti (' . $row['denumire_ro'] . ') nu mai este in stoc');

// stergerea produsului din stoc

deleteFromCart($cartId[$i]);

$numDeleted += 1;

}

}

// actualizare cantitate

$sql = "UPDATE cos_cumparaturi

SET cantitate = $newQty

WHERE cart_id = ".$cartId[$i];

mysql_query($sql);

}

}

if ($numDeleted == $numItem) {

// daca toate produsele au fost sterse

header("Location: $returnUrl" . $_SESSION['shop_return_url']);

} else {

header('Location: cart.php');

}

exit;

}

function isCartEmpty()

{

$isEmpty = false;

$sid = session_id();

$sql = "SELECT cart_id

FROM cos_cumparaturi

WHERE session_id = '$sid'";

$result = mysql_query($sql);

if (mysql_num_rows($result) == 0) {

$isEmpty = true;

}

return $isEmpty;

}

//stergerea sesiunilor mai vechi de o zi

function deleteAbandonedCart()

{

$yesterday = date('Y-m-d H:i:s', mktime(0,0,0, date('m'), date('d') – 1, date('Y')));

$sql = "DELETE FROM cos_cumparaturi

WHERE data_cart < '$yesterday'";

mysql_query($sql);

}

Anexa 2. Fișierul categorie.php

<?

require_once "config.php";

if (isset($_GET["id"]))

{

$products = mysql_query("SELECT * FROM produse inner join valuta on produse.valuta_id = valuta.valuta_id where categorie_id = ".$_GET['id']);

$categorie = mysql_query("SELECT * FROM categorie where categorie_id = ".$_GET['id']);

}

$categorii = mysql_query("SELECT * FROM categorie where parent = 0");

$articole = mysql_query("SELECT * FROM articole order by data_creare desc limit 3");

?>

<? require "header.php";?>

<!– content–>

<div class="clear" style="height:10px;"></div>

<table>

<tr>

<td><a href="index.php"><img src="images/home.jpg" width="25" valign="middle"/></a></td>

<td><img src="images/blue_dotted_arrow.gif" /></td>

<? while($row = mysql_fetch_array($categorie))

{

echo "<td>".$row['denumire_ro']."</td>";

} ?>

</tr>

</table>

<!–<div class="title"><span class="title_icon"><img src="images/bullet1.gif" alt="" title="" /></span>Category books</div>–>

<div class="new_products">

<?

if (mysql_num_rows($products) == 0)

echo "No results!";

else

while($row = mysql_fetch_array($products))

{

?>

<div class="new_prod_box">

<a href="product.php?id=<?=$row['produs_id']?>"><?=$row["denumire_ro"]?></a>

<div class="new_prod_bg">

<? if ($row["promotie"] == 1 || $row["new"] == 1) {?>

<span class="new_icon"><img title="" alt="" src="images/<?=($row["promotie"] == 1) ? "promo" : "new"?>_icon.gif"></span>

<?}?>

<a href="product.php?id=<?=$row['produs_id']?>"><img src="images/produse/thumb_<?=$row['image_path']?>" alt="" title="" class="thumb" border="0" /></a>

</div>

<a href="cart.php?action=add&p=<?=$row['produs_id']?>"><img src="images/cart.gif" width="18">&nbsp;<?=$row["pret"]." ".$row['denumire']?></a>

</div>

<?}?>

</div>

</div>

<!– content–>

<? require "footer.php";?>

Anexa 3. Funcții JavaScript – folosind librăria Jquery

a) Funcția folosită pentru validarea campurilor din formularul date facturare

(la apăsarea pe butonul Salvează date)

$("#update_fac").click(function()

{

$("#date_facturare").show();

err = 0;

if (validate_tf($('#adresa'), $('#adresaInfo'), "", "Campul este obligatoriu", 1, "", "") == false ) err++;

if (validate_tf($('#telefon'), $('#telefonInfo'), "", "Campul este obligatoriu", 1, "", "") == false ) err++;

if ($("#radio_fact1").is(':checked'))

{

if (validate_tf($('#cnp'), $('#cnpInfo'), "", "Campul este obligatoriu", 1, "", "") == false ) err++;

}

if ($("#radio_fact2").is(':checked'))

{

if (validate_tf($('#companie'), $('#companieInfo'), "", "Campul este obligatoriu", 1, "", "") == false ) err++;

if (validate_tf($('#cod_fiscal'), $('#cod_fiscalInfo'), "", "Campul este obligatoriu", 1, "", "") == false ) err++;

}

if (err == 0)

{

return true;

}

return false;

});

b)Funcție folosită pentru delogarea unui utilizator

$("#logout").click(function(){

$.ajax({

type: "POST",

url: "logout.php",

success: function(data)

{

parent.document.getElementById("contFrame").src = "cont.php";

}

});

});

c) Funcție folosită pentru a ascunde/arăta formularul pentru date personale

$("#button_expand_date").click(function(){

$("#date_personale").show('slow');

$("#button_expand_date").hide();

$("#button_collapse_date").show();

});

d)Funcția de verificare confirmare parolă

function validateConfirm(name, confirmtxt, confirmDiv,confirmtxtInfo, text)

{

if( name.val() != confirmtxt.val() )

{

confirmtxtInfo.show();

confirmtxtInfo.text(text);

return false;

}

//are valid

else if (name.val() != "" && confirmtxt.val() != ""){

confirmtxtInfo.text("");

return true;

}

}

e) Functia de validarea a unui camp dintr-un formular

function validate_tf(name, nameInfo, nameDiv, nameText, len, regex, regexText)

{

if(name.val().length < len)

{

nameInfo.show();

nameInfo.text(nameText);

return false;

}

else

{

nameInfo.text("");

if (regex != "")

{

if(regex.test(name.val()))

{

nameInfo.text("");

return true;

}

else

{

nameInfo.show();

nameInfo.text(regexText);

return false;

}

}

else

{

nameInfo.text("");

return true; }

return true;

}

};

Anexa 4.

Funcțiile pentru modificarea informaților unui client

if (isset($_POST["update"]))

{

if (!empty($_POST["nume"]) && !empty($_POST["prenume"]) && !empty($_POST["mail"]))

{

$s = "update clienti set nume='".$_POST['nume']."', prenume = '".$_POST['prenume']."', email = '".$_POST['mail']."' where client_id=".$_SESSION['client'];

$query = mysql_query($s);

if($query)

$message = "<div class='right' style='color:green; font-size:12px;'>Datele au fost salvate cu succes!</div>";

else

$message = "<div class='error'>Datele NU au fost salvate!</div>";

}

}

if (isset($_POST["update_pass"]))

{

if (!empty($_POST["u_parola"]) && !empty($_POST["u_parola_noua"]) && !empty($_POST["conf_u_parola"]))

{

if ($_POST["u_parola"] == $_SESSION["password"])

{

$query = mysql_query("update clienti set password='".$_POST['u_parola_noua']."' where client_id=".$_SESSION['client']);

if($query)

$message_pass = "<div class='right' style='color:green; font-size:12px;'>Datele au fost salvate cu succes!</div>";

else

$message_pass = "<div class='error'>Datele NU au fost salvate!</div>";

}

else $message_pass = "<div class='error'>Parola introdusa nu e corecta!</div>";

}

}

Bibliografie

[1] Lucia Rusu, Robert Buchamann (2003), Proiectarea și realizarea aplicațiilor Web, Editura Risoprint, Cluj Napoca

[2] Luke Welling, Laura Thomson (2003), Dezvoltarea aplicațiilor Web cu PHP și MySQL, Editura Teora, București

[3] Bill McCarty (2002), Dezvoltarea aplicatiilor Web folosind PHP 4 , Editura Teora

[4] Stanciu-Timofte Carmen (2002), Baze de date pentru comerț electronic pe suport Internet, Editura Oscar Print, București

[5] Patriciu V. V, Ene-Pietroșanu M., Bică I., Văduva C., Voicu N. (2001), Securitatea comerțului electronic, Editura All

[6] Răzvan Sorin Șerbu (2004), Comerțul electronic , Editura Continent, Sibiu

[7] Roșca Ion Ghe., Bucur Cristina-Mihaela, Timofte-Stanciu Carmen, Paiu Octavian, Vișean Mirela (2004), Comerțul electronic- Concepte, tehnologii și aplicații, Colecția Societatea Informațională 9, Editura Economică, București

[8] Mircea Cioată, “Plăți electronice”, NET Report Nr. 101 / Februarie 2001

[9] Sinha Gunjan, “Build a Component Architecture for E-Commerce”, E-Business

Advisor Magazine, 1999

[10] Andrei Radu, Claudiu Gămulescu, Bogdan Manolea, Liviu Taloi, Studiu privind dezvoltarea comerțului în România, raport, 2008

[11] “Oportunitățile comerțului electronic în România” , http://ecommerce.shopmania.ro/ecommerce-marketing/oportunitatile-comertului-electronic-in-romania [accesat 04.03.2012]

[11] Site-ul PHP , www.php.net [accesat la 15.04.2012]

[12] Site-ul MySQL, www.mysql.org [accesat la 15.04.2012]

[13] Site-ul http://ro.wikipedia.org/wiki/Xampp [accesat la 15.04.2012]

[14] Ariadna Training, “UML Applied – Object Oriented Analysis and Design Using the UML”

(www.ariadnetraining.co.uk) [accesat la 20.04.2012]

[15] Ștefan Nițchi, “Activități economice pe Internet”, curs 2003 [accesat la 17.03.2012]

[16] www.moldovainomc.org/modules/mydownloads/pdf/2003-02.pdf [accesat la 18.02.2012]

Similar Posts