Documente Academic
Documente Profesional
Documente Cultură
Parfume Ria
Parfume Ria
BIBLIOGRAFIE ....................................................................................................... 48
3
Capitolul 1. Introducere
1.1. Generalităţi
Una dintre activităţile care se dezvoltă din ce în ce mai mult în ultimii ani este
comerţul electronic sau e-commerce, termen care denumeşte activitatea de cumpărare
sau vânzare prin intermediul transmiterii de date la distanță. Ideea a fost lansată în anii
’90 de către compania IBM.
Un magazin virtual, magazin online sau magazin electronic (e-shop), este un
website de comerț electronic destinat vânzării de produse și servicii. În cele mai multe
dintre cazuri, magazinul online reprezintă o platformă pe care sunt adăugate produse.
Aceste produse pot fi accesate și cumpărate prin intermediul mai multor modalităţi de
plată și sunt livrate cumpărătorului care alege modalitatea de transport: poștă, curier,
etc.
Scopul acestei aplicaţii este realizarea unui site interactiv de tip magazin online
prin intermediul căruia se pot comanda diferite produse, în acest caz parfumuri.
Site-ul permite vizualizarea infrmațiilor despre produse şi comandarea acestora.
Pentru a putea accesa site-ul, vizitatorii trebuie să se înregistreze şi să se logheze cu o
adresă de e-mail validă şi o parolă:
- Vizitatorii au acces la vizualizarea produselor şi la catalogul din care pot face
comenzi. De asemenea pot căuta produse după un cuvânt cheie, acesta fiind
căutat atât în numele produsului cât şi în descrierea acesteia. Fiecărui membru i
se deschide, la logarea pe site, un coş de cumpărături în care poate să adauge
produsele pe care dorește să le comande. Coşul de cumpărături poate fi vizualizat
şi vizitatorul poate modifica oricând conţinutul acestuia până în momentul în
care dă confirmarea finală a comenzii.
- Administratorul site-ului are acces la toate facilităţile anterioare dar poate de
asemenea să adăuge produse noi şi să proceseze comenzile făcute de vizitatori pe
site.
Adăugarea de produse noi şi procesarea comenzilor se face direct din meniul site-
ului de către membrii care au aceste drepturi.
4
1.3. Prezentarea capitolelor
5
2.2. Sistemul de gestiune al bazelor de date relaționale
MySQL
PHP este un limbaj de programare. Numele PHP provine din limba engleză și
este un acronim recursiv : Php: Hypertext Preprocessor. Folosit inițial pentru a produce
pagini web dinamice, este folosit pe scară largă în dezvoltarea paginilor și aplicațiilor
web. Se folosește în principal înglobat în codul HTML, dar începând de la versiunea
4.3.0 se poate folosi și în mod „linie de comandă” (CLI), permițând crearea de aplicații
independente. Este unul din cele mai importante limbaje de programare web[2] open-
source și server-side, existând versiuni disponibile pentru majoritatea web serverelor și
pentru toate sistemele de operare. Conform statisticilor este instalat pe 20 de milioane
de site-uri web și pe 1 milion de servere web[3]. Este disponibil sub Licenṭa PHP ṣi Free
Software Foundation îl consideră a fi un software liber.
Baza de date este folosită în cadrul aplicaţiei pentru a stoca informaţii referitoare
la vizitatorii înscrişi, picturile disponibile şi a informaţiilor despre acestea.
Baza de date folosită de site conţine 5 tabele după cum se poate vedea în imaginea
următoare[6].
7
Baza de date a site-ului
Tabelul „clienti”
Acest tabel are ca şi cheie primară câmpul “id_client” dar are de asemenea alte
două index-uri care se sunt câmpurile “email” și “parola”.
Următorul tabel este „comenzi”, de tip InnoDB, care conţine datele de identificare
ale comenzilor.
9
Tabelul „comenzi”
Acest tabel are ca şi cheie primară câmpul “id_ccomanda” dar are de asemenea
încă două index-uri, câmpurile “id_client” şi “data_comanda”.
10
Tabelul “comenzi” poate fi creat cu următoarea secvenţă de istrucţiuni SQL[6]:
Tabelul „continut_comanda”
11
– id_cc– de tip “int” (număr întreg), fără semn, cu lungimea de 10 caractere
şi proprietatea “AUTO_INCREMENT”, ceea ce duce la incrementarea sa
automată de fiecare dată cînd se introduce o nouă inregistrare in tabel.
Acest cîmp conţine numărul de identificare al listei continutului comenzii.
– id_comanda – de tip “int” (număr întreg), fără semn şi lungimea de 10
caractere. Acest cîmp conţine numărul de identificare al comenzii la care
se referă lista. De asemenea nu accepta valoarea NULL, ceea ce înseamnă
că acest câmp trebuie să conţină obligatoriu o valoare.
– id_produs – de tip “int” (număr întreg) cu lungimea de 4 caractere. De
asemenea nu accepta valoarea NULL, ceea ce înseamnă că acest câmp
trebuie să conţină obligatoriu o valoare. Acest camp conține numărul de
identificare al produsului prezent în comandă.
– cantitate – de tip “tinyint” (număr întreg de valoare mică) cu lunguimea de
3 caractere. Acest câmp va conţine numărul de bucăți din același produs
care au fost comandate.
– pret – de tip “decimal(6,2)” (număr zecimal) care conține un număr cu 6
caractere înainte de virgule și două caractere zecimale. Acest camp va
conține prețul total al numărului de bucăți de produs din comandă.
Acest tabel are ca şi cheie primară câmpul “id_cc” dar are de asemenea încă două
index-uri, câmpurile “id_comanda” şi “id_produs”.
Următorul tabel este „producatori”, de tip InnoDB, care conţine datele despre
producătorii produselor prezente pe site.
12
Tabelul “producatori”.
Cheia primară a tabelului este câmpul “id_producator” dar are de asemenea încă
un index și anume câmpul “denumire”.
13
denumire VARCHAR(50) DEFAULT NULL,
informatii TEXT,
PRIMARY KEY (id_producator),
INDEX (denumire)
);
Următorul tabel este „produs”, de tip InnoDB, care conţine datele despre
produsele disponibile pe site.
Tabelul „produs”.
14
ceea ce înseamnă că acest câmp trebuie să conţină obligatoriu o valoare.
Acest camp conține denumirea produsului.
– pret – de tip “decimal (6,2)” (număr zecimal cu 6 cifre înainte de virgulă şi
2 zecimale). De asemenea nu accepta valoarea NULL, ceea ce înseamnă că
acest câmp trebuie să conţină obligatoriu o valoare. Conţine preţul
produsului.
– descriere – de tip “varchar” (şir de caractere) şi lungimea de 255 de
caractere, interclasare UTF-8. Acest câmp accepătă valoarea NULL, deci
informaţiile despre descrierea produsului pot să lipsească.
– imagine – de tip “varchar” (şir de caractere) şi lungimea de 60 de
caractere, interclasare UTF-8. Acest câmp nu accepta valoarea NULL, ceea
ce înseamnă că acest câmp trebuie să conţină obligatoriu o valoare. Aici se
va stoca un şir de caractere care indică calea spre imaginea produsului care
trebuie afişată pe site.
Cheia primară a tabelului este câmpul “id_produs” dar are de asemenea încă trei
index-uri, câmpurile “id_producator”,”nume_produs” şi “pret”.
15
3.2 Realizarea scripturilor site-ului cu ajutorul limbajului
PHP
Începutul script-ului:
Iniţializăm sesiunea.
session_start(); // Iniţializăm sesiunea.
?>
<!doctype html>
<html lang="ro">
<head>
<meta charset="utf-8" />
<title><?php echo (isset($page_title)) ? $page_title : 'Bun Venit!';
?></title>
</head>
16
<body>
<style type="text/css">
body {
background-image: url(imagini/stones-background.jpg);
}
</style>
<table cellspacing="0" cellpadding="0" border="0" align="center"
width="600">
<tr>
<td align="center" colspan="6"><img src="imagini/title.jpg" width="900"
height="125" border="0" alt="title" /></td>
</tr>
<tr>
<td align="center" bgcolor="#FD97B4"><a href="index.php">Pagina
principala</a></td>
17
Sfârşitul scriptului.
Această pagină este foarte simplă şi serveşte doar la golirea buffer-ului de afişare,
afişarea unei informaţii de copyright şi închiderea tag-urilor HTML ale paginilor.
Începutul script-ului:
Golim buffer-ul.
<tr>
<?php ob_end_flush();
?>
Sfârşitul scriptului.
Începutul script-ului:
18
// și selectează baza de date.
?>
Sfârşitul scriptului.
19
Începutul script-ului:
Verificăm dacă utilizatorul are rang de administrator şi dacă da, afişăm link-ul
spre pagina de adăugare a unor postere noi şi datele legate de ultimele comenzi ne-
procesate[5][6].:
if (isset($_SESSION['id_client']) && $_SESSION['rang'] == 'admin')
{
echo '<p align="center">Bun venit admin!</p>';
echo '<p align="center"><a href="adauga_produs.php">Adaugă produse
noi</a></p>';
echo '<h4 align="center">Lista comenzilor neprocesate:</h4>';
$v = (int)0;
$q = "SELECT id_comanda, id_client, total, data_comanda FROM comenzi WHERE
procesat = $v";
echo '<table border="0" width="100%" cellspacing="3" cellpadding="3"
align="left">';
$r = mysqli_query ($dbc, $q);
while ($row = mysqli_fetch_array ($r, MYSQLI_ASSOC)) {
$idc = $row['id_client'];
$q2 = "SELECT nume_client, adresa_client, email FROM clienti WHERE id_client
= $idc";
$r2 = mysqli_query ($dbc, $q2);
$row2 = mysqli_fetch_array ($r2, MYSQLI_ASSOC);
$idp = $row3['id_produs'];
$q4 = "SELECT nume_produs FROM produs WHERE id_produs = $idp";
$r4 = mysqli_query ($dbc, $q4);
$row4 = mysqli_fetch_array ($r4, MYSQLI_ASSOC);
// Display each record:
echo "<td align=\"left\">- {$row4['nume_produs']}</td>
<td align=\"center\">buc {$row3['cantitate']}</td>
<td align=\"right\">RON/buc {$row3['pret']}</td>
</tr>\n";
}
} // End of while loop.
Sfârşitul scriptului.
21
3.3.5. Pagina „ adauga_produs.php”
Începutul script-ului:
<!doctype html>
<html lang="ro">
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>Adaugă un produs</title>
</head>
<body>
<?php # Script - adauga_produs.php
// Acest script permite adăugarea unui produs si a datelor referitoare la el.
Validăm datele...
$errors = array();
22
$i = $_FILES['image']['name'];
Validăm producătorul...
if (isset($_POST['producator']) && ($_POST['producator'] == 'new') ) {
// Validăm denumirea:
$den = (!empty($_POST['denumire'])) ? trim($_POST['denumire']) : NULL;
// Verificăm rezultatele....
if (mysqli_stmt_affected_rows($stmt) == 1) {
echo "<p>Producătorul a fost adăugat.</p>";
$a = mysqli_stmt_insert_id($stmt); // Obţinem ID-ul producatorului.
Verificăm rezultatele...
if (mysqli_stmt_affected_rows($stmt) == 1) {
Afişăm un mesaj:
echo "<p>Produsul a fost adăugat.</p>";
Redenumim imaginea:
$id = mysqli_stmt_insert_id($stmt); // Obţinem ID-ul produsului.
rename ($temp, "../uploads/$id");
24
Închidem declaraţia predefinită
mysqli_stmt_close($stmt);
Afişăm formularul...
<h1>Adaugă un produs</h1>
<form enctype="multipart/form-data" action="adauga_produs.php" method="post">
<div><b>Producător:</b>
<p><input type="radio" name="producator" value="existing" <?php if
(isset($_POST['producator']) && ($_POST['producator'] == 'existing') ) echo '
checked="checked"'; ?>/> Existent =>
<select name="existing"><option>Selectează</option>
25
if (isset($_POST['existing']) && ($_POST['existing'] == $row[0]) ) echo "
selected='selected' ";
echo ">$row[1]</option>\n";
}
} else {
echo "<option>Adăugaţi un producator nou.</option>";
}
mysqli_close($dbc); // Închidem conexiunea cu baza de date.
?>
</select></p>
<p><input type="radio" name="producator" value="new" <?php if
(isset($_POST['producator']) && ($_POST['producator'] == 'new') ) echo "
checked='checked'"; ?>/> Nou =>
Denumire: <input type="text" name="denumire" size="10" maxlength="20"
value="<?php if (isset($_POST['denumire'])) echo $_POST['denumire']; ?>" />
</p>
</div>
</fieldset>
</form>
<a href="index.php">Înapoi la pagina principală</a>
</body>
</html>
Sfârşitul scriptului.
Pagina „adauga_produs.php”.
26
3.3.6. Pagina „inregistrare.php”
Este pagina unde se înregistrează vizitatorii care ajung pentru prima oară pe site.
Pentru a se înregistra, vizitatorul trebuie să introducă o adresă de e-mail validă şi o
parolă, care vor fi stocate în baza de date[3][4][5][6]..
<?php # Script - inregistrare.php
// Acesta este scriptul de inregistrare pe site.
$page_title = 'Înregistrare';
include ('include/header.html');
require_once ('mysqli_connect.php');
Iniţializăm variabilele:
$n = $ad = $e = $p = FALSE;
27
Verificăm dacă adresa de e-mail există deja in baza noastră de date:
$q = "SELECT id_client FROM clienti WHERE email='$e'";
$r = mysqli_query ($dbc, $q) or trigger_error("Query: $q\n<br />MySQL Error:
" . mysqli_error($dbc));
Trimitem un e-mail:
echo "Vă mulţumim pentru că v-aţi înregistrat la magazinul nostru.";
Finalizăm pagina:
include ('includes/footer.html'); // Includem subsolul paginii.
exit(); // Ieşim din script.
mysqli_close($dbc);
28
} // Sfârşitul instrucţiunilor condiţionale.
?>
Se efișează formularul.
<h1>Înregistrare</h1>
<form action="inregistrare.php" method="post">
<fieldset>
</form>
Sfârşitul scriptului.
3.3.7.Pagina „login.php”
Începutul script-ului:
29
Verificăm dacă formularul a fost trimis.
if (isset($_POST['submitted'])) {
Verificăm dacă a fost introdusă parola și dacă nu, se afișeayă un mesaj de eroare.
if (!empty($_POST['pass'])) {
$p = mysqli_real_escape_string ($dbc, $_POST['pass']);
} else {
$p = FALSE;
echo '<p class="error">Vă rugăm să introduceţi parola!</p>';
}
if (@mysqli_num_rows($r) == 1) {
mysqli_close($dbc);
Se afișează formularul.
<h1>Login</h1>
<p>Browserul dvs. trebuie să accepte cookies pentru a vă putea loga.</p>
<form action="login.php" method="post">
<fieldset>
<p><b>Adresa e-mail:</b> <input type="text" name="email" size="20"
maxlength="40" /></p>
<p><b>Parola:</b> <input type="password" name="pass" size="20" maxlength="20"
/></p>
<div align="center"><input type="submit" name="submit" value="Login" /></div>
<input type="hidden" name="submitted" value="TRUE" />
</fieldset>
</form>
Sfârşitul scriptului
Începutul script-ului:
31
Verificăm dacă există un client logat şi există datele de identificare în sesiune:
if (isset($_SESSION['id_client']) && $_SESSION['id_client'] >null)
Afişăm înregistrările:
echo "\t<tr> <td align=\"left\"><a
href=\"rasfoieste_produse.php?aid={$row['id_producator']}\">{$row['denumire']
}</a></td>
<td align=\"left\"><a
href=\"vezi_produs.php?pid={$row['id_produs']}\">{$row['nume_produs']}</td>
<td align=\"left\">{$row['descriere']}</td>
<td align=\"right\">\RON - {$row['pret']}</td>
</tr>\n";} // Sfârşitul buclei while.
echo '</table>';
mysqli_close($dbc);
}else{
echo "<h1>Trebuie să fiţi logat pe site pentru a vedea catalogul!</h1>";}
include ('include/footer.html');
?>
Sfârşitul scriptului.
32
3.3.9. Pagina „cautare.php”
Această pagină permite căutarea după un anumit cuvânt cheie atât în numele
imaginii cât şi în descrierea acesteia. Este util ca la introducerea unui produs nou, să se
adauge o scurtă descriere care să conţină câteva cuvinte cheie după care acesta să poată
fi căutat.
Începutul script-ului:
if (isset($_POST['submitted'])) {
33
</tr>\n";
}
?>
Afișarea formularului.
<h1>Căutare</h1>
<p>Căutaţi produsele care conţin în nume sau în descriere un cuvânt
cheie.</p>
<form action="cautare.php" method="post">
<fieldset>
<p><b>Cuvânt cheie:</b> <input type="text" name="cuvant" size="20"
maxlength="40" /></p>
<div align="center"><input type="submit" name="cauta" value="Cauta" /></div>
<input type="hidden" name="submitted" value="TRUE" />
</fieldset>
</form>
<?php
include ('include/footer.html');
?>
Sfârşitul scriptului.
Această pagină afişează produsul selectat din catalog. Pentru aceasta foloseşte şi
scriptul „show_image.php” care va fi descris în amănunt după descrierea paginii
„vezi_produs.php”.
Începutul script-ului:
34
if (isset($_GET['pid']) && is_numeric($_GET['pid']) ) {
$pid = (int) $_GET['pid'];
Iniţializăm pagina:
$page_title = $row['nume_produs'];
include ('include/header.html');
Afişăm un antet:
echo "<div align=\'center\'><b>{$row["nume_produs"]}</b> produs de
{$row["denumire"]}<br />";
mysqli_close($dbc);}
Sfârşitul scriptului.
35
3.3.11. Scriptul „show_image.php”
Începutul script-ului:
Iniţializăm variabilele care vor conține calea către imaginea ce va trebui afișată și
numele acesteia:
$image = FALSE;
$name = (!empty($_GET['name'])) ? $_GET['name'] : 'print image';
Trimitem fişierul:
readfile ($image);
?>
Sfârşitul scriptului
36
3.3.12. Scriptul „adauga_cos.php”
Începutul script-ului:
Verificăm dacă coşul conţine deja acest produs. Dacă da, mărim cantitatea:
if (isset($_SESSION['cart'][$pid])) {
$_SESSION['cart'][$pid]['cantitate'] ++;
// Afişăm un mesaj.
echo "<p>Încă o unitate de produs a fost adăugată în coşul de dvs. de
cumpărături.</p>";
Obţinem informaţiile.
list($price) = mysqli_fetch_array ($r, MYSQLI_NUM);
Adăugăm în coş:
$_SESSION['cart'][$pid] = array ('cantitate' => 1, 'pret' => $price);
Afişăm un mesaj:
echo '<p>Produsul a fost adăugat în coşul de cumpărături.</p>';
Dacă nu avem un ID valid afișăm un mesaj de eroare.
} else { echo '<div align="center">A apărut o eroare în această
pagină!</div>';
}
37
mysqli_close($dbc);
include ('include/footer.html');
?>
Sfârşitul scriptului
Începutul script-ului:
Schimbarea catităţilor:
foreach ($_POST['qty'] as $k => $v) {
38
} // Sfârşitul buclei FOREACH.
} // Sfârşitul buclei SUBMITTED IF.
Afişăm informaţia.
echo "\t<tr>
<td align=\"left\">{$row['denumire']}</td>
<td align=\"left\">{$row['nume_produs']}</td>
<td align=\"right\">RON: {$_SESSION ['cart'][$row['id_produs']]['pret']}</td>
<td align=\"center\"><input type=\"text\" size=\"3\"
name=\"qty[{$row['id_produs']}]\" value=\"{$_SESSION['cart'][$row
['id_produs']]['cantitate']}\" /></td>
<td align=\"right\">RON: " . number_format ($subtotal, 2) . "</td>
</tr>\n";
} // Sfârşitul buclei WHILE.
$_SESSION['total'] = $total;
39
Închidem conexiunea cu baza de date.
mysqli_close($dbc);
} else {
echo '<p>Coşul dvs de cumpărături este gol.</p>';
}
}else{
echo "<h1>Trebuie să fiţi logat pe site pentru a accesa coşul de
cumpărături!</h1>";
}
include ('./include/footer.html');
?>
Sfârşitul scriptului
Este scriptul prin care se confirmă comanda şi care scrie datele comenzii în baza
de date. Este accesat prin link-ul „Confirmă comanda” din pagina „vezi_cos.php”.
Începutul script-ului:
40
Obţinem valoarea totală a comenzii.
$total = $_SESSION['total']; // Temporary.
}
// Pregătim interogarea:
$q = "INSERT INTO continut_comanda (id_comanda, id_produs, cantitate, pret)
VALUES (?, ?, ?, ?)";
$stmt = mysqli_prepare($dbc, $q);
mysqli_stmt_bind_param($stmt, 'iiid', $oid, $pid, $qty, $price);
41
Dacă apar erori, anulăm tranzacţia şi afişăm un mesaj.
} else {
mysqli_rollback($dbc);
echo '<p>Ne cerem scuze. Comanda dvs. nu a putut fi procesată datorită unei
erori de sistem. Veţi fi contactat pentru rezolvarea problemei.</p>';
} else {
mysqli_rollback($dbc);
echo '<p>Ne cerem scuze. Comanda dvs. nu a putut fi procesată datorită unei
erori de sistem. Veţi fi contactat pentru rezolvarea problemei.</p>';
mysqli_close($dbc);
include ("include/footer.html");
?>
Sfârşitul scriptului
Este scriptul prin care se deloghează vizitatorul care părăseşte site-ul. Este
accesat din meniu.
Începutul script-ului:
$page_title = 'Logout';
include ('include/header.html');
Distrugem sesiunea.
session_destroy();
// Afişăm un mesaj:
echo '<h3>Vă mulţumim pentru vizită.</h3>';
//Includem subsolul paginii
include ('include/footer.html');
?>
În această pagină se poate face schimbarea unei parole existente cu o altă parolă
nouă. Pagina este accesată din meniu în cazul în care vizitatorul este deja logat pe site.
Începutul script-ului:
43
if (!isset($_SESSION['id_client'])) {
Dacă apar erori, parola nouă este identică cu cea veche sau nu respect cerințele,
afișăm un mesaj de eroare și procesul se repeat.
} else {
} else {
44
echo '<p class="error">Încercaţi din nou.</p>';
}
?>
Afișarea formularului
<h1>Schimbă parola</h1>
<form action="schimbare_parola.php" method="post">
<fieldset>
<p><b>Parola nouă:</b> <input type="password" name="password1" size="20"
maxlength="20" /> <small>Folosiţi doar litere, cifre şi underscore. Lungimea
trebuie să fie între 4 şi 20 de caractere.</small></p>
<p><b>Confirmă parola nouă:</b> <input type="password" name="password2"
size="20" maxlength="20" /></p>
</fieldset>
<div align="center"><input type="submit" name="submit" value="Schimbă parola"
/></div>
<input type="hidden" name="submitted" value="TRUE" />
</form>
<?php
include ('include/footer.html');
?>
Sfârşitul scriptului
Această pagină permite unui vizitator să reseteze o parolă uitată. Acesta va primi
prin intermediul adresei de e-mail cu care s-a înregistrat o parolă temporară generată
aleeatoriu cu care se poate loga pe site şi poate după aceea să o schimbe cu altă parolă
mai uşor de ţinut minte. Această pagină poate fi accesată din meniul care apare dacă
vizitatorul nu este logat pe site.
Începutul script-ului:
<?php # Script - recuperare_parola.php
// Acest script permite unui utilizator sa reseteze parola în caz că a uitat-
o.
45
if (isset($_POST['submitted'])) {
require_once ('mysqli_connect.php');
// Afişăm un mesaj:
echo '<h3>Parola dvs. a fost schimbată. Veţi primi o nouă parolă temporară pe
adresa de e-mail cu care v-aţi îmregistrat.</h3>';
mysqli_close($dbc);
include ('includes/footer.html');
exit(); // Ieşim din script.
mysqli_close($dbc);
} // Sfârşitul buclei.
?>
<h1>Resetarea parolei</h1>
<p>Introduceţi mai jos adresa de e-mail cu care v-aţi înregistrat.Parola va
fi resetată.</p>
<form action="recuperare_parola.php" method="post">
<fieldset>
<p><b>Adresa e-mail:</b> <input type="text" name="email" size="20"
maxlength="40" value="<?php if (isset($_POST['email'])) echo $_POST['email'];
?>" /></p>
</fieldset>
<div align="center"><input type="submit" name="submit" value="Resetează
parola" /></div>
<input type="hidden" name="submitted" value="TRUE" />
</form>
<?php
include ('include/footer.html');
?>
Sfârşitul scriptului
Capitolul 4. Concluzii
Magazinul virtual este un tip de afacere care ofera facilităti atât clientilor cât și
ofertantilor. El asigură accesul la bunuri și servicii indiferent de localizarea geografică,
fiind disponibil 24 de ore din 24. În funcție de modul în care este construit și întreținut
magazinul virtual, beneficiile aduse firmei care furnizează bunurile sau prestează
serviciile sunt semnificative față de efortul prestat pentru actualizarea și întreținerea
acestuia.
De cele mai multe ori cea mai mare provocare pentru un magazin online este
câștigarea încrederii clienților, de aceea este necesară colaborarea strânsă între vânzător
și curier, pentru a nu avea probleme de livrare care s-ar răsfrânge negativ asupra
credibilității site-ului.
Cu siguranță nu există caracteristici universale sau opțiuni de design care să
garanteze succesul unui magazin online, însă există numeroase elemenete esențiale de
care trebuie ținut cont la crearea unui magazin online.
47
Bibliografie
1. Instrumente WEB 2.0 utilizate in educatie, Traian Anghel, Editura Albastra, Cluj
Napoca, 2009.
2. Crearea paginilor WEB, Sabin Buraga, Ed. Polirom Iaşi, 2002
3. Aplicaţii WEB la cheie: studii de caz implementate în PHP, volum coordonat de
Sabin Buraga, Ed. Polirom Iaşi, 2003
4. PHP pentru World Wide Web, Larry Ullman ED. Teora SRL Bucureşti, 2004
5. www.php.net/manual/
6. www.mysql.com/docs/
7. www.apache.org/docs/
48