Crearea Unei Aplicatii Web cu Utilizarea Noilor Posibilitati a Limbajului Php

Teză de Licență

Crearea unei aplicații web cu utilizarea noilor posibilități a limbajului PHP

Chișinău, 2014

Cuprins:

Introducere

CAPITOLUL 1: Fundamente teoretice

1.1 Limbajul PHP

1.1.1 Ce este PHP?

1.1.2 Crearea blocurilor PHP

1.1.3 Variabile

1.1.4 Operatori și funcții

1.1.4 Instrucțiunea IF-ELSE

1.1.5 Scrierea instrucțiunilor switch, break și default

1.1.6 Scrierea instrucțiunilor for

1.1.7 Instrucțiunile while și do while

1.1.8 Tablouri în PHP

1.1.9 Formulare HTML (GET și POST)

1.1.10 Includerea fisierelor PHP.

1.1.11 Lucru cu sesiuni.

1.1.12 Crearea sesiunii

1.1.13 Protejarea informațiilor din sesiune

1.1.14 Ștergerea sesiunii

1.2 Sistemul de gestiune a bazelor de date MySQL

1.2.1 Ce este MySQL ?

1.2.2 Tipuri de date utilizate de MySQL

1.2.3 Conectarea la baza de date.21

1.2.5 Instrucțiunea SELECT

1.2.6 Instrucțiunea UPDATE,INSERT și DELETE

1.3 Serverul Apache

1.3 Noile tehndințe în dezvoltarea limbajuui PHP

CAPITOLUL 2

2.1 Prezentarea generală.

2.2 Pagini de acces.

2.3 Crearea bazei de date a aplicatiei

2.3.1 Crearea unei baze date folosind XAMPP

2.3.2 Crearea unui tabel al bazei de date

2.3.3 Conectarea la baza de date

2.3.4 Crearea interpelarilor și afișarea datelor în pagină.

2.4 Efectuarea comenzii

2.4.1 Înregistrarea

2.4.2 Logarea

2.4.3 Adăugarea în coș

2.4.3 Efectuarea comenzii

Concluzii

Bibliografie

ANEXA

Introducere

Rădăcinile spațiului World Wide Web se regăsesc în inceputurile Internetului, cu peste 25 de ani în urmă.

Internetul este de fapt o rețea de rețele, prin care utilizatorii unui calculator sau ai unei rețele pot accesa diverse sisteme aparținând altor rețele. Serviciile tradiționale ale Internetului se rezumau în anii ’80 la poștă electronică (e-mail), accesul la grupuri de știri (usenet),conectare la distanță (telnet) și transfer de fișiere (FTP).

World-Wide Web-ul (pe scurt Web-ul), a fost instituit la CERN (Centrul European de Cercetări Nucleare de la Geneva) în anul 1989, scopul principal urmărit fiind facilitareaaccesului rapid la informațiile tehnice cuprinse în manualele Din punct de vedere tehnic, spațiul Web pune la dispoziție un sistem global și standardizat de comunicare multimedia, informațiile fiindorganizate asociativ și fiind distribuite în funcție de cererile utilizatorilor, funcționând conform modelului client-server.Web-ul, cu toată dezvoltarea lui spectaculoasă, nu trebuie confundat cu Internetul, ci poate fi văzut drept cea mai dinamică componentă software a acestuia, neputând exista fară infrastructura hardware a rețelelor mondiale interconectate. PHP este una dintre cele mai interesante tehnologii existente în prezent.

Deoarece îmbină caracteristici dintre cele mai complexe cu simplitatea în utilizare, PHP a devenit rapid uninstrument de frunte pentru dezvoltarea aplicațiilor în Web. Totuși, spre deosebire de alteinstrumente populare pentru dezvoltarea aplicațiilor Web, cum este Perl, PHP este un limbaj de programare comod pentru incepători, chiar și pentru cei care nu au mai desfășurat activități de programare în trecut.Dacă sunteți un cunoscător al limbajului HTML, dar nu aveți experiență în materie de programare, vă puteți pune intrebarea: care sunt funcționalitățile suplimentare pe care le poateasigura cunoașterea limbajului PHP? Ca și alte limbaje de scripting pentru Web, PHP vă permite săfurnizați un conținut Web dinamic, adică un conținut Web care se modifică automat de la o zi la alta sau chiar de la un minut la altul. Conținutul Web este un element important în susținerea traficului unui site Web; de regulă, vizitatorii nu vor mai reveni la o pagină Web care conține aceleași informații ca și cele prezentate la ultima vizită. Pe de altă parte, siturile Web frecvent actualizate pot atrage cantități enorme de trafic.Mai mult, spre deosebire de limbajele de scripting, precum JavaScript, PHP rulează pe serverul Web, nu în browserul Web. în consecință, PHP poate obține accesul la fișiere, baze de date și alte resurse inaccesibile programului JavaScript. Acestea constituie bogate surse de conținut dinamic, care atrag vizitatorii.

CAPITOLUL 1: Fundamente teoretice

1.1 Limbajul PHP

1.1.1 Ce este PHP?

PHP-este un limbaj de programare ce ruleaza server. proiectat special pentru WEB. Intr-o pagină HTML puteți ingloba cod PHP care va fi executat la fiecare vizită a paginii.

Codul PHP este interpretat pe serverul WEB și generează un cod HTML care va fi văzut de User .

PHP a fost conceput în anul 1994 și a fost inițial munca unui singur om, Rasmus Lerdorf. Inițial, PHP era acronimul de la Personal Home Page, dar a fost modificat pentru a se alinia la conversia de numire recursivă GNU (GNU = Gnu`s Not Unix) și acum este acronimul pentru PHP Hypertext Preprocessor.

După o perioadă de timp acest limbaj a fost adoptat de alti programatori care l-au trecut prin trei rescrieri importante pentru a ajunge la produsul clar și matur de astăzi. în octombrie 2002, era în uz de mai mult de nouă milioane de domenii din lumea intreagă, iar acest număr este intr-o continuă crețtere. Numărul actual al acestora îl puteți vedea la adresa http://www.php.net/usage.php.

PHP este un produs Open Source, cu acces la codul sursă. Il puteți folosi, modifica și redistribui, toate acestea în mod gratuit.

1.1.2 Crearea blocurilor PHP.

Un bloc php se scrie în felul urmator:

In interiorul simbolurilor”<?php ?>” poate fi inclus orice cod php care se executa în browser.

1.1.3 Variabile.

In PHP variabilele nu se declară cu tipul sau de date,adică o variabila poate lua valori de diferite tipuri. Pentru a atribui o valoare unei variabile se foloseste operatorul de atribuire.In PHP operatorul de atribuire este semnul “=” care nu trebuie confundat cu operatorul de egalitate care este reprezentat în felul următor: ”==”.

Exemplu:

Din exemplu de mai sus observăm ca pentru a declara o variabilă se folosește semnul $ care și arată ca urmează o variabilă.

1.1.4 Operatori și funcții

Pentru a ușura efectuarea de calcule și prelucrări ale datelor, PHP include o diversitate de operatori și funcții utile. Când se combină valorile literale și variabilele cu operatori și funcții, se construiește ceea ce este cunoscut sub numele de expresii.

Operatori

PHP include operatorii familiari folosiți pentru executarea operațiilor aritmetice:

+ Adunare

– Scădere

* Inmulțire

/ Împărțire

Utilizarea asteriscului (*) ca simbol al inmulțirii poate părea neobișnuită; totuși, este un simbol frecvent folosit în limbajele de programare, deoarece previne con¬fuzia care poate apărea dacă în locul acestuia ar fi fost folosită litera x.

Iată câteva exemple simple care demonstrează utilizarea operatorilor pentru a efectua calcule și pentru a atribui valori variabilelor:

$profit = $vânzări + $cheltuieli;

$arie = $inălțime * $lățime;

$circumferință = 3.14159 * $diametru

$rata_impozit = $impozit / $venit_impozabil;

Variabilele sau valorile literale asociate cu un operator se numesc operanzi. De exemplu, operanzii operatorului de scădere din prima instrucțiune prezentată ca exemplu sunt variabilele $vânzări și $cheltuieli.

O proprietate interesantă a operatorului de împărțire este aceea că returnează o valoare intreagă dacă ambii săi operanzi sunt intregi, iar rezultatul este un intreg; în caz contrar, returnează o valoare cu virgulă mobilă. Astfel, instrucțiunea de atribuire

$x = 10 / 3;

atribuie valorii $x valoarea cu virgulă mobilă 3.3333333333333, chiar dacă operanzii operatorului de împărțire sunt ambii intregi.

In afară de acești operatori aritmetici familiari, PHP include numeroși operatori mai puțin cunoscuți:

% Modulo

++ Incrementare

– Decrementare

. Concatenare

Similar operatorului de împărțire, operatorul modulo execută o împărțire; cu toate acestea, operatorul modulo returnează restul, nu câtul împărțirii. De exemplu, prin împărțirea lui 10 la 3 se obține câtul 3 și restul 1. Deci, instrucțiunea de atribuire

$x = 10 % 3;

atribuie variabilei $x valoarea 1.

In programare, operațiile de adăugare, respectiv de scădere a unei unități dintr-o valoare sunt frecvent intâlnite. Pentru comoditate, PHP include operatori care execută aceste operații. Operatorul de incrementare adaugă o unitate la valoarea unei variabile, iar operatorul de decrementare scade o unitate din valoarea unei variabile. Operatorii sunt utilizați astfel:

++$x;

–$y;

Rețineți că acești operatori au nevoie de un singur operand, în timp ce majori¬tatea operatorilor necesită doi operanzi. Prima instrucțiune adaugă o unitate la valoarea variabilei $x, în timp ce a doua instrucțiune scade o unitate din valoarea variabilei $y. Dacă preferați, puteți folosi acești operatori în instrucțiuni de atribuire, după cum urmează:

$x = ++$y;

Această instrucțiune adaugă o unitate la valoarea variabilei $y și' atribuie valoarea rezultantă variabilei $x.

In afară de acești operatori numerici, PHP include un operator de concatenare a șirurilor, denumit uneori operator cat sau operator de unire, deoarece funcția sa constă în unirea șirurilor. De exemplu, să considerăm următoarele instrucțiuni de atribuire:

$nume_botez=„Radu”;

$nume_familie=„Vasilescu”;

$nume=$nume_botez.„ ”.$nume_familie;

Primele două instrucțiuni de atribuire alocă valori șir unor variabile scalare. Ultima instrucțiune de atribuire folosește operatorul de unire pentru a uni numele de botez cu numele de familie și pentru a insera un spațiu intre acestea. Valoarea atribuită variabilei $nume este "Radu Vasilescu".

Ca în matematică, PHP evaluează operatorii de inmulțire și de împărțire anterior operatorilor de adunare, respectiv scădere. Această caracteristică se numește prece¬dență. Datorită precedenței, instrucțiunea

$x=1+2*3;

atribuie variabilei $x valoarea 7, chiar dacă operatorul de adunare apare inaintea celui de inmulțire. Dacă se dorește controlarea precedenței unei expresii, se pot folosi paranteze. De exemplu, instrucțiunea

$x=(1+2)*3;

atribuie variabilei $x valoarea 9, deoarece partea inclusă intre paranteze a expresiei este evaluată prima, așa cum se procedează în algebră.

Funcții

In afară de operatori, PHP include funcții care execută operații utile. Iată unele exemple de funcții:

abs(x) Returnează valoarea absolută a lui x

ceil(x) Returnează valoarea x, rotunjită la intregul imediat superior

floor(x) Returnează valoarea x, rotunjită la intregul imediat inferior

max(x,y,…) Returnează valoarea maximă a unui set de valori

min(x,y,…) Returnează valoarea minimă a unui set de valori

pow(x,n) Returnează numărul x, ridicat la puterea specificată n

sqrt(x) Returnează rădăcina pătrată a lui x

In afară de acestea, PHP include multe alte funcții.

Majoritatea funcțiilor necesită una sau mai multe valori de intrare, cunoscute sub numele de argumente. De exemplu, funcția sqrt necesită un argument care specifică valoarea a cărei rădăcină pătrată trebuie calculată.

1.1.4 Instrucțiunea IF-ELSE

Expresiile condiționale nu sunt deosebit de interesante sau utile ca atare. Aceste expresii sunt insă esențiale pentru scrierea instrucțiunilor condiționale, prin care se iau decizii. Cea mai simplă instrucțiune condițională este instrucțiunea if, care execută două operații. Mai intâi, evaluează o expresie condițională. Apoi, dacă și numai dacă valoarea expresiei condiționale este true, instrucțiunea if execută o instrucțiune specificată.

If ($număr > 10)

Echo „ Acesta este un număr mare „;

Cind se dorește să executăm nu una, ci două instrucțiuni în cazul în care o anumită expresie condițională este adevărată. Se pot scrie două instrucțiuni if, câte una pentru fiecare dintre instrucțiunile pe care dorim să le executăm. Alternativ, putem crea un grup de instrucțiuni, prin includerea unei serii de instrucțiuni intre paranteze acolade. Un grup de instrucțiuni se comportă ca o singură instrucțiune și se poate asocia cu o instrucțiune if. Se consideră următorul exemplu:

if ($numar > 10 )

{

echo ea, PHP include multe alte funcții.

Majoritatea funcțiilor necesită una sau mai multe valori de intrare, cunoscute sub numele de argumente. De exemplu, funcția sqrt necesită un argument care specifică valoarea a cărei rădăcină pătrată trebuie calculată.

1.1.4 Instrucțiunea IF-ELSE

Expresiile condiționale nu sunt deosebit de interesante sau utile ca atare. Aceste expresii sunt insă esențiale pentru scrierea instrucțiunilor condiționale, prin care se iau decizii. Cea mai simplă instrucțiune condițională este instrucțiunea if, care execută două operații. Mai intâi, evaluează o expresie condițională. Apoi, dacă și numai dacă valoarea expresiei condiționale este true, instrucțiunea if execută o instrucțiune specificată.

If ($număr > 10)

Echo „ Acesta este un număr mare „;

Cind se dorește să executăm nu una, ci două instrucțiuni în cazul în care o anumită expresie condițională este adevărată. Se pot scrie două instrucțiuni if, câte una pentru fiecare dintre instrucțiunile pe care dorim să le executăm. Alternativ, putem crea un grup de instrucțiuni, prin includerea unei serii de instrucțiuni intre paranteze acolade. Un grup de instrucțiuni se comportă ca o singură instrucțiune și se poate asocia cu o instrucțiune if. Se consideră următorul exemplu:

if ($numar > 10 )

{

echo „<BR>Numarul este mai mare decăt 10.”;

echo „<BR>Deci, acesta este un număr mare.”;

}

In cazul în care expresia condițională are valoarea true, sunt executate ambele instrucțiuni din cadrul grupului de instrucțiuni.

Se dorește să executăm o instrucțiune atunci când o condiție este adevărată și o altă instrucțiune când condiția este falsă. Instrucțiunea else ne permite să procedăm astfel. Se ia în considerare următorul exemplu:

if ($numar > 10 )

echo „<BR>Acesta este un numa mare .”;

else

echo „<BR>Acesta este un numa mic.”;

1.1.5 Scrierea instrucțiunilor switch, break și default

Instrucțiunea if ne permite să luam o decizie în două sensuri. Pentru a putea lua o decizie în mai multe sensuri, puteți folosi mai multe instrucțiuni if , else sau elseif. Cu toate acestea, când dorim ca programul nostru să aleagă dintr-un set de alternative care pot fi reprezentate prin valori intregi, instrucțiunea switch este o opțiune mai convenabilă.

De exemplu, presupunem că valoarea variabilei $numar este l, 2 sau 3, reprezentând respectiv dimensiunile mică, medie și mare. Iată un mic program care afișează dimensiunile asociate valorilor variabilei $numar:

Switch($numar)

{

case(1):

echo „ mic”;

break;

case(2):

echo „mediu”;

break;

case(3):

echo „mare”;

break;

default:

echo „Acesta nu este un cod valabil”;

}

Acțiunea unei instrucțiuni switch este determinată de valoarea unei expresii intregi, nu de valoarea unei expresii condiționale. Numele variabilei este dat intre parantezele care urmează după cuvântul cheie switch. Parantezele acolade delimi¬tează o serie de instrucțiuni case și o instrucțiune default opțională, fiecare dintre instrucțiunile cuprinse intre paranteze putând avea instrucțiuni asociate. Când este executată, instrucțiunea switch incearcă să stabilească o identitate intre valoarea variabilei sale asociate și valoarea asociată unei instrucțiuni case. Se vor executa instrucțiunile asociate primei instrucțiuni case pentru care identitatea respectivă este valabilă. Dacă valoarea variabilei din instrucțiunea switch nu corespunde nici uneia din valorile asociate instrucțiunilor case, se vor executa instrucțiunile asociate instrucțiunii default, dacă există o asemenea instrucțiune.

Un procedeu de programare indicat constă în aceea ca fiecare instrucțiune case din cadrul unei instrucțiuni switch să se incheie cu o instrucțiune break. Instrucțiunea break determină incheierea execuției instrucțiunii switch, transferând controlul următoarei instrucțiuni secvențiale care succede instrucțiunii switch. în absența instrucțiunii break, execuția trece la următoarea instrucțiune case sau default, fapt nedorit în majoritatea cazurilor.

1.1.6 Scrierea instrucțiunilor for

Instrucțiunea for este o instrucțiune buclă sau o instrucțiune iterativă; cu alte cuvinte, o instrucțiune care execută în mod repetat instrucțiunile asociate. Iată un exemplu de utilizare a unei instrucțiuni for:

$suma = 0

for ($n =1; $n<=3; $n++)

$suma += $n;

echo !<BR>Suma intregilor de la 1 la $numa este $suma.”;

In exemplu se calculează suma intregilor cuprinși intre l și 3. Pentru aceasta, mai intâi se inițializează variabila $suma la valoarea 0. Apoi, se execută o instrucțiune for care incrementează în mod repetat valoarea variabilei $suma.

Pentru a vedea cum funcționează mecanismul acestei instrucțiuni, examinăm componentele instrucțiunilor for. Instrucțiunea for include trei expresii, care apar intre paranteze; fiecare expresie este separată de vecina sa printr-un caracter punct și virgulă. De asemenea, instrucțiunea for include o instrucțiune sau un grup de instrucțiuni, cunoscute sub numele de corpul instrucțiunii for. în exemplul de mai sus, instrucțiunea $suma += $n este corpul instrucțiunii for.

Examinăm mai amănunțit cele trei expresii:

• Prima expresie este expresia de inițializare. Aceasta se execută atunci când PHP ajunge la instrucțiunea for. în exemplu, expresia de inițializare atribuie valoarea variabilei $n, variabilă denumită variabilă de ciclare sau index.

• A doua expresie este expresia de test. Aceasta este o expresie condițională care indică dacă se execută sau nu corpul instrucțiunii, în general, face referire la variabila de ciclare. în cadrul exemplului, expresia de test compară valoarea variabilei $n cu valoarea 3. Expresia de test este evaluată pentru prima dată imediat după evaluarea expresiei de inițializare.

• Cea de-a treia expresie este expresia pas. în general, aceasta modifică una sau mai multe variabile la care se face referire în expresia test. în cadrul exemplului, expresia pas incrementează valoarea variabilei $n.

Secvența de execuție a unei instrucțiuni for este următoarea:

Se evaluează expresia de inițializare.

Se evaluează expresia test.

Dacă rezultatul evaluării expresiei test este false, se execută etapa 7.

Se execută corpul buclei.

Se evaluează expresia pas.

Se trece la etapa 2.

Se incheie execuția instrucțiunii for, prin executarea următoarei instrucțiuni secvențiale.

1.1.7 Instrucțiunile while și do while

Practic, instrucțiunile while și do while reprezintă versiuni „manuale" ale instrucțiunii for. Dacă o instrucțiune for are trei expresii, o instrucțiune while sau do while una singură, și anume expresia de test. Așa cum se intâmplă de obicei, expresiile unei instrucțiuni for sunt opționale; fără o expresie de inițializare sau o expresie pas. Instrucțiune for operează în același mod ca o instrucțiune while. în consecință, următoarele două instrucțiuni sunt echivalente:

for ( ; $i<= 3; ) $suma += $i;

while ($i <= 3) $suma ++ $i;

Când folosim o instrucțiune while, trebuie să furnizați un mecanism oarecare, analog expresiei de incrementare a instrucțiunii for, care actualizează variabilele la care se face referire în expresia de test. De asemenea, suntem responsabili cu inițializarea tuturor valorilor folosite în expresia de test.

Secvența de execuție a unei instrucțiuni while este următoarea:

Se evaluează expresia test.

Dacă rezultatul este false, se trece la etapa 5.

Se execută corpul buclei.

Se trece la-etapa 1.

Se părăsește bucla, prin executarea următoarei instrucțiuni secvențiale.

Un exemplu care utilizează instrucțiunea while:

$n = 0;

$suma = 0;

while ($n <= 3)

{

$suma = $suma +$n;

$n++;

}

echo „Suma este $suma.”

Se remarcă că instrucțiunea $n = 0; inițializează bucla și că instrucțiunea n++; incrementează valoarea variabilei buclă $n.

Instrucțiunea do while este oarecum asemănătoare instrucțiunii while. Diferența este aceea că instrucțiunea do while își execută corpul inainte de a-și evalua expresia de test. Astfel, corpul buclei unei instrucțiuni do while este intotdeauna executat cel puțin o dată; corpul unei instrucțiuni while este omis dacă expresia de test are inițial valoarea false.

Secvența de execuție a unei instrucțiuni do while este următoarea:

Se execută corpul buclei.

Se evaluează expresia de test

Dacă rezultatul este adevărat, se trece la etapa 1.

Se incheie execuția buclei, prin executarea următoarei instrucțiuni secvențiale.

Iată un exemplu care folosește o instrucțiune do while.

$suma = 0;

$n = 1;

do

{

$suma += $n;

$n++;

}

while ($n <= $numar);

echo „<BR>Suma intregilor cuprinși intre 1 și $numar este $suma.”;

1.1.8 Tablouri în PHP

Tipul tablou se referă la colecții de date indexate, numite elements, care pot fi utilizate împreună.Acest tip este foarte puternic și des folosit în PHP. Astfel, tablourile se dovedesc a fi cele mai potrivite containere pentru stocarea datelor în scopul manipulării acestora (sortare).

Un element al unui tablou este precizat indicind numele tabloului și cheia (numit și indexul elementului).

Cheile pot fi:

– numere intregi (tabloul corespunzător este de tip numeric)

– șiruri de caractere (tabloul corespunzător este de tip asociativ)

Cheile avind ultimul tip precizat trebuie incluse intre ghilimele sau apostrofuri.

Exemple:

$mașina['ford'] = "albastră"

$mașina["ford"]= "albastră"

Exista urmatoarele 3 modalitați de creare a unui tablou:

a) Prin atribuire directă

Utilizarea acestei modalități presupune precizarea numelui tabloului, precum și a cheilor și valorilor fiecărui element. în cazul în care se dorește utilizarea unei chei de tip șir de caractere, se procedează ca în exemplul următor:

$student["facultate"] ="Titulescu";

$student["an"]=2;

$student["varsta"]=19;

Pentru crearea unui tablou prin atribuire directă, pot fi precizate și chei numerice, ca în exemplul următor: $orașe[0]="Chișinău";

$orașe[1]="Criuleni";

$orașe[2]="Bălți";

Este posibil să nu se precizeze nici o cheie, ca în exemplul următor:

$țăriUE[ ]="Italia";

$țăriUE[ ]="Germania";

$țăriUE[ ]="România";

in acest exemplu, PHP creează automat tabloul $țăriUE, atribuind elementelor acestuia chei numerice succesive, incepind cu valoarea 0 (adică 0, 1 și 2).

b) Folosind funcția array()

Pentru a crea un tablou nevid, valorile elementelor acestuia trebuie precizate ca argumente, sub forma unei liste ale cărei componente sunt separate prin caracterul virgula, ca în exemplul prezentat în continuare: $orașe=array("Chișinău", "Criuleni", "Bălți"); Valorile precizate ca argumente ale funcției vor fi stocate ca elemente în tabloul $orașe, în ordinea precizării lor, cheile acestora avind valori intregi succesive incepind cu 0.

c) precizind cheile odată cu utilizarea funcției array()

PHP oferă posibilitatea de a preciza cheile elementelor odată cu crearea unui tablou prin intermediul funcției array().

Exemplu în care cheile sunt numerice:

$orașe=array(0=>"Chișinau", 1=>"Criuleni", 2=>"Bălți");

Dacă se doreste precizarea unor chei de tip șir de caractere, se procedează astfel:

$orașe2=array (

"Capitala"=>"Chișinău",

"Moldova"=>"Criuleni",

"Moldovaa"=>"Bălți");

Parcurgerea tablourilor ( Array )

Există diverse modalități pentru a parcurge elementele unui tablou (operație cunoscută și sub denumirea de traversarea tabloului), cea mai elegantă dintre acestea constind în utilizarea instrucțiunii foreach, cu urmatoarea sintaxă:

foreach($tablou as [$cheie=>] [&] $valoare) {

grup de instrucțiuni

}

Variabila $cheie este opțională și, atunci cand este specificată, conține cheia elementului curent.

De asemenea, caracterul „&" este opțional și, atunci cind este prezent, permite modificarea explicită a valorii elementului $valoare prin intermediul instrucțiunilor incluse în grupul grup) și transmiterea automată a valorii către tablou ($tablou).

In cele mai multe cazuri, nu se dorește modificarea valorii elementelor, astfel incît caracterul „&" nu se folosește.

Exemplu

<?php

$orase=array("Chișinău", "Criuleni", "Bălți");

echo "Orașe moldovenești:<br />";

foreach($orase as $cheie=>$valoare) {

echo "$cheie=$valoare<br />";

}

/* Se va afisa:

Orașe moldovenești:

0=Chișinău

1=Criuleni

2=Bălți*/

?>

O altă modalitate de parcurgere a elementelor unui tablou constă în utilizarea funcțiilor list() și each(), ca în exemplul următor:

<?php

$orașe=array("Chișinău", "Criuleni", "Bălți");

echo "Orașe moldovenești:<br />";

reset($orașe);

while (list($cheie, $valoare) = each($orașe)) {

echo "$cheie=$valoare<br />";

}

?>

! Funcția list() permite atribuirea simultană de valori mai multor variabile utilizind elementele unui tablou: list(Svariabila1, $variabila2, …) = $tablou;

! Funcția each() intoarce perechea cheie valoarea curentă a tabloului primit ca argument și deplasează pointerul intern la urmatorul element.

! Dacă se folosește funcția each() pentru parcurgerea unui tablou, spre deosebire de instrucțiunea foreach, este necesar ca – în prealabil – să se apeleze funcția reset(), care va muta pointerul intern la inceputul tabloului.

Sortarea tablourilor ( Array )

1. sort() – sortează ascendent un tablou în funcție de valoarea elementelor

2. rsort() – sortează descendent un tablou în funcție de valoarea elementelor

3. asort() – sortează ascendent un tablou asociativ în funcție de valoarea elementelor

4. arsort() – sortează descendent un tablou asociativ în funcție de valoarea elementelor

5. ksort() – sortează ascendent un tablou în funcție de cheie

6. krsort() – sortează descendent un tablou în funcție de cheie

1.1.9 Formulare HTML (GET și POST)

$_GET – Reprezintă variabilele oferite scritpt-ului direct prin HTTP GET. Analog vechiului șir $HTTP_GET_VARS (care incă este valabil, dar depreciat).

$_POST – Reprezintă variabilele oferite scritpului direct prin HTTP POST. Analog vechiului șir $HTTP_POST_VARS (care incă este valabil, dar depreciat).

Când un formular este trimis unui scrip PHP, informațiile din acel formular sunt automat transmise scriptului PHP. Sunt mai multe modalități de a accesa informația, de exemplu:

<form action="foo.php" method="POST">

Name: <input type="text" name="username"><br>

Email: <input type="text" name="email"><br>

<input type="submit" name="submit" value="Submit me!">

</form>

In funcție de setările și preferințele particulare, sunt multe modalități de a accesa datele din formulare HTML. Câteva exemple:

<?php

// Available since PHP 4.1.0

print $_POST['username'];

print $_REQUEST['username'];

import_request_variables('p', 'p_');

print $p_username;

// Available since PHP 3. As of PHP 5.0.0, these long predefined

// variables can be disabled with the register_long_arrays directive.

print $HTTP_POST_VARS['username'];

// Available if the PHP directive register_globals = on. As of

// PHP 4.2.0 the default value of register_globals = off.

// Using/relying on this method is not preferred.

print $username;

?>

Folosirea unui formular de tip GET este similară, cu deosebirea că se va folosi variabila predefinită GET în schimb. GET se poate folosi și pentru extragerea informțiilor din QUERY_STRING (informațiile de după semnul ? din URL). De exemplu, URL-ul http://www.example.com/test.php?id=3 conține date GET care sunt accesibile prin $_GET['id'].

1.1.10 Includerea fisierelor PHP.

Functiile PHP va permit sa obtineri accesul la programe PHP scrise anterior, create intr-un alt fisier extern.

Pentru aceasta puteti folosi funcția require(), care are urmatoarea forma:

require("nume_fisier")

Când este incarcat un script PHP care contine o instrucțiune require, continutul fisierului specificat este inserat și executat în script, inlocuind instrucțiunea require.

De exemplu, sa presupunem ca realizam un site în PHP care este alcatuita din mai multe pagini, iar fiecare pagina contine în partea de sus acelasi cod HTML. în loc sa scriem de fiecare data, pentru fiecare pagina, acelasi cod HTML, il scriem o singura data intr-un fisier separat (de exemplu "antet.php") iar în paginile unde vrem sa fie inclus codul HTML folosim funcția require().

Prin insertia instructiunii la inceputul scriptului din fiecare pagina PHP, ca în exemplu urmator:

<?php

require("antet.php");

?>

– cu aceasta determinati programul PHP sa includa continutul fisierului "antet.php" ca și cum continutul respectiv ar face parte din acel script.

Acest procedeu poate simplifica intretinerea site-ului, deoarece informatiile standard pot fi tinute intr-un singur fisier, ceea ce le face usor de localizat și de modificat.

O alta funcție, similara instructiunii require este funcția include(). Spre deosebire de funcția require() care introduce datele din fisierul extern intocmai cum sunt scrise, funcția include() este o instrucțiune executabila ce determina evaluarea scriptului PHP din fisierul extern și codul acestuia este executat ca și cum ar fi aparut în textul scriptului unde este inclus.

Sintaxa funcției include() este urmatoarea:

include("nume_fisier.php");

1.1.11 Lucru cu sesiuni.

Sesiunea este o modalitate de a salva careva parametri de la o pagină la alta. Cu alte cuvinte dacă sunt înregistrate ceva informații în una din pagini și avem nevoie ca acestea să fie salvate atît timp cît ne aflăm pe acest site creem o sesiune care păstrează aceste informații sub formă de variabile.

Sesiunile sunt foarte utilizate la moment deoarece cu ajutorul acestora se efectuează logarea pe site pe de care cea mai mare parte din site-uri o folosesc. Astfel la logare se verifică dacă numele de utilizator și parolă sunt identice cu cele din baza de date și se creează sesiunea cu o variabilă de sesiune $_SESSION[nume] cu ajutorul acestei variabile este identificată sesiunea utilizatorului dat, și astfel pot fi posibile multe acțiuni care de obicei fără de logare nu pot fi făcute și de asemenea înregistrate acțiuni efectuate de acest utilizator pe site.

1.1.12 Crearea sesiunii.

Pentru a crea o sesiune este necesar ca la începutul fiecarei pagini de scris functia session_start() înainte de a trimite orice altă informație către browser. Se crează aceste sesiune la momentul cînd undei variabile a sesiunii îi atribuim o oarecare valoare. Sintaxă:

$_SESSION[‘nume_variabilă’]=’valoare variabilă’

Nume_variabilă este numele sessiunii iar valoare_variabilă reprezintă valoarea pe care aceasta o va lua. Pentru a înțelege mai bine mai jos este reprezentat un exemplu de creare a sesiunii în care se afișează un mesaj după ce sa făcut logarea și s-a salvat nnumele de sesiune folosind sintaxa de mai sus și s-a utilizat funcția isset() pentru a verifica dacă sesiunea respectivă a fost creată și respectiv numai în cazul în care aceasta este diferită de NULL se afișează textul respectiv.

Exemplu:

1.1.13 Protejarea informațiilor din sesiune.

Pentru ca oricare altă persoană să nu aibă acces la datele utilizatorului sau chiar daca are să nu le poată descifra este nevoie de criptarea datelor în special a parolei fără de care nu se poate efectua logarea. Pentru aceasta sunt utilizate funcțiile de criptare a parolei cum ar fi md5() și sha1() ș.a.. În momentul în care se verifică datele din formularul de logare și datele din baza de date se verifică deja valorile criptate în același algoritm ale parolei pentru a fi identice valorile acestora. Exemplu:

Acesta este cel mai simplu exemplu de criptare a unor date cu ajutorul funcției de criptare md5(), însă ea poate fi utilizată pentru oricare alta valoare în dependență de dorințele și complexitate.

1.1.14 Ștergerea sesiunii.

Variabila $_SESSION reprezinta de fapt o matrice în care pot fi înregistrate mai multe valori în dependență de necessitate. Respectiv $_SESSION[”nume_sesiune”] este unul din elementele acestui masiv. Pentru a șterge toate elementele acestui masiv este necesar de utilizat funcția unset($_SESSION) care imediat va șterge toate datele sesiunii ceea c ear fi echivalent cu un click pe butonul de delogare.

De asemenea pentru a șterge toate datele de salvate de sesiune în fișierele temporare se poate de utilizat funcția session_dstroy();

1.2 Sistemul de gestiune a bazelor de date MySQL

1.2.1 Ce este MySQL ?

MySQL este un system de gestionare a bazelor de date, foarte rapid și robust. O baza de date va permite sa stocati,sa cautati, sa sortati și sa va regasiti datele în mod efficient.Serverul MySQL controleaza accesul la date pentru a garanta ca mai multi utilizatori pot lucra simultant cu aceasta.

Deci, MySQL este un server multi-user(mai multi utilizatori) și multi-thread (mai multe fire de executie).Utilizeaza SQL (Structured Query Language),limbajul standard de interogare a bazelor de date din intreaga lume.

MySQL este disponibil în mod public din 1996, dar istoria dezvoltarii sale incepe în 1979 și este disponibil sub licenta Open Source , dar dacă este nevoie sunt disponibile și licente comerciale.

Versiunea actuala a MySQL este 5.6 iar pagina de baza pentru MySQL este: http://www.mysql.com

1.2.2 Tipuri de date utilizate de MySQL

Tipurile de date care apar în coloanele MySQL sunt diferite în funcție de tipul lor. MySQL alocă spațiu pe disc în funcție de tipul de date specificat de utilizator. Iată și tipurile de date, spațiul pe care îl ocupă precum și valorile minime și maxime pe care le pot avea:

Tipul de câmp TIMESTAMP oferă posibilitatea de a data automat operațiile de tip INSERT și UPDATE. El este compus implicit din 14 caractere pentru formatul 'YYYYMMDDhhmmss' dar putem să specificăm la crearea unui tabel că dorim să conțină mai puține caractere.

Tipurile de string-uri în MySQL sunt BLOB, TEXT, CHAR, VARCHAR, ENUM și SET. în tabelul următor puteți vedea marimea maximă admisă pentru cele mai folosite dintre ele precum și spațiul alocat pe disc pentru fiecare:

Câmpul de tip BLOB poate conține o cantitate variabilă de informație, similar cu TEXT insa diferit printr-un singur aspect: căutarea intr-un câmp BLOB este case sensitive (se face diferență intre majuscule și minuscule), iar intr-un câmp TEXT nu este. Tipul VARCHAR este similar tipului TEXT cu deosebirea ca intr-o coloană de tip VARCHAR putem specifica numărul maxim de caractere admise.

1.2.3 Conectarea la baza de date.

Conectarea la baza de date se face cu ajutorul funcției mysql_connect():
mysql_connect(adresa, utilizator, parola);

Ca și parametri vom folosi adresa care reprezinta IP-ul sau hostname-ul calculatorului pe care am instalat baza de date MySQL. Acesta poate fi acelasi cu cel pe care ruleaza serverul de web (de obicei Apache sau IIS) sau un alt calculator. în cazul în care se gaseste pe acelasi calculator cu serverul de web, putem folosi la adresa și localhost. Numele de utilizator și parola vor fi cele setate pentru MySQL. Implicit acestea sunt nume de utilizator: root și fara parola. Este recomandat ca aceste setari implicite sa fie modificate.

Funcția mysql_connect returneaza un numar de identificare a conexiuni în caz de succes sau false în caz de eroare

<?php

$id = mysql_connect("localhost", "root", "")

or die("Nu ma pot conecta la MySQL!");

print ("Conectare reusita");

mysql_close($id);

?>

în cazul în care nu ne putem conecta la baza de date funcția mysql_connect va returna false, iar în acest caz se va trece la executarea funcției die care va afisa mesajul din paranteza și va termina executia scriptului.

Urmatorul pas il reprezinta alegerea bazei de date care se face cu ajutorul funcției mysql_select_db():

mysql_select_db(baza_de_date, identificatorul_conexiunii);

Parametrii folositi în acest caz vor fi numele bazei de date ales și identificatorul returnat de catre mysql_connect.

<?php

$id = mysql_connect("localhost", "root", "")

or die("Nu ma pot conecta la MySQL!");

$db = mysql_select_db("curs", $id)

or die("Nu gasesc o baza de date cu numele curs!");

mysql_close($id);

?>

Operatori, expresii și funcții SQL

Operatorii SQL: pot fi reprezentați prin unul sau mai multe caractere speciale (+, <,…) sau prin cuvinte cheie (AND, OR, NOT, UNION).

Operatorii pot fi clasificați:

– operatori binari: au nevoie de doi operanzi;

– operatori unari: se aplică unui singur operand și pot fi postfixe sau prefixe.

– aritmetici: +, -, <, <=, <> (!=);

– logici: AND, OR, NOT.

Operatorii logici se aplica asupra unor valori ternare (o valoare ce reprezintă un operand ce poate avea valoare TRUE (1), FALSE (0) și NULL (lipsă de informație)).

Nu există tipul de date boolean asupra caruia să se aplice operatorii logici dar operatorii de comparație returnează o valoare booleana.

Operatorii de comparație evaluează orice expresie la o valoare logica (bool): TRUE, FALSE. Tipul boolean există insa incepând din SQL3. Operatorii de comparație pot fi:

• aritmetici: <, >, <=, >=, =, != (<>);

• relaționali

A BETWEEN val_min val_max;

A LIKE model_șir -> A șir;

A IS NULL sau A IS NOT NULL;

A în lista_valori.

O expresie SQL este o expresie formată din operanzi, operatori și paranteze. Operatorii, în general, sunt nume de coloane (se va folosi valoare atributului definit de acea coloană) sau o constantă.

Orice expresie se evaluează la o valoare care poate fi apoi folosită în alte operații.

1.2.5 Instrucțiunea SELECT

Este cea mai des utilizata instrucțiune din MySQL și are ca scop extragerea datelor din baza de date.Instrucțiunea SELECT are urmatoarea sintaxa:

1.2.6 Instrucțiunea UPDATE,INSERT și DELETE

Aceste instructiuni sunt utilizate pentru modificarea,adaugarea și stergerea datelor din baza de date. Instructiunile de manipulare au urmatoarele sintaxe:

INSERT – insereaza un articol intr-o tabela

UPDATE – actualizeaza un set de articole

DELETE – sterge un set de articole

1.3 Serverul Apache

Apache este un server HTTP de tip open source cu o contribuție notabilă la dezvoltatea Internetului (world wide web), a reprezentat prima alternativă viabilă la Netscape Communications Corporation, și a evoluat rapid în funcționalitate și performanță ca un rival competitiv pentru alte servere web bazate pe Unix.

Apache este dezvoltat de o comunitate deschisă de programatori sub emblema Apache Software Foundation. Aplicația este disponibilă pentru o mare varietate de sisteme de operare incluzând Unix, FreeBSD, Linux, Solaris, Novell NetWare, Mac OS X, Microsoft Windows și OS/2.

Serverul Apache este caracterizat ca fiind un software gratuit și open source, acesta făcând ca, incepând din aprile 1996, el să fie cel mai popular server HTTP. Cu toate că în noiembrie 2005 a inceput să piardă din cota de piață, în aprilie 2008 Apache stătea incă la baza a peste 50 % din siturile web.

Apache suportă o mare varietate de module care îi extind funcționalitatea, acestea variază de la server side programming și până la scheme de autentificare. Câteva limbaje suportate sunt: mod_perl, mod_python, Tcl și PHP. Ca alte module putem enumera : SSL și TLS support (mod_ssl), un modul proxyun, modul de rescriere URL (cunoscut ca un motor de rescriere mod_rewrite), custom log files (mod_log_config) și suport de filtrare (mod_include și mod_ext_filter). O altă calitate a serverului Apache este virtual hosting (găzduirea virtuală), care constă în posibilitatea de a găzdui mai multe situri simultan pe același server.

Principalul competitor al serverului Apache este Microsoft Internet Information Services (IIS), urmat de Sun Java System Web Server al companiei Sun Microsystems și multe altele, cum ar fi Zeus Web Server.

Apache este folosit de unele din cele mai mari situri din lume. Astfel, motorul de căutare folosit de Google folosește o versiune modificată de Apache numită Google Web Server (GWS); și proiectele Wikimedia inclusiv Wikipedia rulează tot pe un server Apache.

Noile tehndințe în dezvoltarea limbajuui PHP

Conform unui studiu efectuat de Necraft în aprilie 2002 PHP-ul în acea perioadă devenise unul din cele mai utilizate limbaje de programare server-side. Astfel PHP-ul bucurînduse de o mare popularitate în rîndurile programtorilor web a început o dezvoltare foarte rapidă în următorii ani datorită avantajelor sale (familiaritate, simplitatea, eficiența, securitatea, flexibilitatea, gratuitatea) și rapiditatea de dezvoltare a acestuia. Rapiditate creșterii popularității acestui limbaj este reprezentat în imaginea de mai jos care a fost preluată de pe site-ul oficial:

După cum observăm din imaginea de mai sus PHP-ul începînd cu anul 2002 a fost într-o continuă creștere păstrînduși poziția de lider în limbajele de programare server-side pînă la ziua de azi. Astfel pe lîngă toate avantajele pe care le avem la moment urmează să apară urmatoarea versiune a PHP-ului îmbunătățită și revăzută. Aceasta versiune care se presupune a fi PHP 6 va avea următoarele modificări:

Suportul Unicode va fi îmbunătățit, dezvoltatorii au decis să facă setarea pentru Unicode pe tot serverul dar nu doar la cerere.

Se vor retrage funcțiile ca register_globals și magic_quotes, de asemenea și variabilele de tip $HTTP_*_VARS .

var va devein un alias pentru cuvîntul rezervat public, astfel la utilizarea lui va apărea o atenționare E_STRICT.

Va apărea support pentru tipul de date in pe 64 de biți.

Codul FastCGI va fi "optimizat", și va fi activată în mod implicit pentru CGI SAPI. Mai mult decât atât, suportul pentru FastCGI nu va fi dezactivat.

Vor fi retrase definitive tagurile de tip ASP dar vor ramîne taguri scurte PHP.

Clasele XMLReader, Fileinfo și XMLWriter vor face parte din distribuția principală dar vor fi eliminate pachetele ca Freetype, GD1, mime_magic.

Nu va mai fi disponibilă funcția ereg() care lucrează cu expresiile regulate.

Erorile de tip E_STRICT vor fi incluse în pachetul E_ALL.

Va fi introdusă instrucșiunea goto care va permite salturi la alte blocuri de comenzi.

Apar noi cuvinte rezervate cum ar fi : namespace, import, goto.

Operatorul {} care permite acesarea caracterelor într-un șir va fi înlocuit cu operatorul [] care va avea aceeași funcție.

Va fi posibilă utilizarea constantelor FILE_BNARY și FILE_TEXT în funcțiile de citire/scriere în fișiere.

Foreach va putea suporta array-uri multidimensionale.

Safe Mode va fi înlăturată și va duce la apariția E_CORE_ERROR.

Va fi înlăturat operatorul ȘI (AND).

Funcția microtime( ) va returna float în loc de string.

Astfel dezvolatorii PHP implementînd aceste modificări tind să ușureze și să standartizeze limbajul PHP pentru a rămăne în topul celor mai utilizate limabaje de programare de tip server-side care de obicei este utilizat împreună cu cel mai utilizat framework Zend Studio.

CAPITOLUL 2

2.1 Prezentarea generală.

Un magazin virtual este în principiu un site web orientat catre prezentarea detaliata de produse sau servicii, în scopul vanzarii prin intermediul siteului. Spun prin intermediul siteului, pentru ca un site care prezinta produse dar nu permite cumpararea acestora prin intermediul siteului nu este un magazin virtual, ci cel mult un catalog de produse, util, dar din punctul meu de vedere, de multe ori incomplet.

Magazinele virtuale prezinta de obicei produsele intr-o forma organizata, pe categorii și subcategorii, permitand gasirea usoara a produsului dorit, permit de asemenea prezentarea de informatii despre produs, permit de multe ori compararea produselor, prezentarea unor imagini ale produsului si, foarte important, a unui pret de achizitie.

Un site de acest gen, dupa cum am spus, permite vizitatorului sa lanseze comanda de cumparare a produsul de pe internet, plata acestuia putand fi facuta online, prin intermediul cardului sau a unui SMS, sau prin modalitati clasice, precum plata ramburs sau prin banca. în aceste ultime doua cazuri de obicei, în momentul efectuarii comenzii, clientul primeste o factura proforma ce permite achitarea ulterioara a produsului achizitionat.

Ca o concluzie, modalitatea de plata a produsului nu schimba caracterul siteului, putem vorbi despre site ca despre un magazin virtual, fie ca permite achitarea produselor prin plata directa cu cardul sau nu, plata prin intermediul cardului fiind mai intalnita în anumite domenii de activitate și mai putin populara în altele, unde sumele mari precum și traditia afacerii conduc catre alte modalitati de plata.

De exemplu, în cazul unui site ce vinde produse prelucrate de metal, fier forjat, etc, este destul de probabil ca magazinul sa permita plata la termen, prin factura, excluzand plata online prin intermediul cardului, acest lucru, dupa cum am spus, neschimbandu-i caracterul de magazin online.

Siteurile de acest gen sunt foarte populare în anumite domenii de activitate precum vînzarea de flori, bijuterii, haine, papetarie, computere și accesorii IT, produse de larg consum în general, dar nu numai, comertul online fiind deschis oricarui tip de activitate comerciala, de aceea putem gasi magazine virtuale în domenii mult mai putin cunoscute, care la prima vedere nu s-ar preta atat de usor comertului online.

De retinut ca imbogatirea afacerii dvs prin deschiderea unui magazin virtual este benefica, oferindu-i afacerii dvs accesul la o piată emergentă, practic nelimitată ca spațiu, limitele internetului fiind practic inexistente.

2.2 Pagini de acces.

Fișierul predefinit pentru directorul web catalog este index.php, deci inseamnă că atunci când accesăm serverul prin linkul: http://gritco.orgfree.com/ serverul va trimite fișierul de bază, adică prima pagină a site-ului (index.php) ce va fi afișat în browser (Fig 2.1).Din pagina principală putem accesa orice pagină adițională a site-ului.

Fig.1. Pagina principală.

După cum observăm pagina principal este alcătuită din mai multe părți cum ar fi:header-ul (partea de sus în care sunt indicate cîteva date generale despre site),meniul de navigare (aici sunt incluse date despre cum funcionează site-ul,contacte,diferite servicii prestate de către web-magazin și alte informaii utile),sidebarL (partea din stinga în care sunt incluse categoriile de telefoane din care putem selecta oricare brand dorim noi),sidebarR (reprezinta partea din dreapta în care sunt incluse 3 blocuri: Newsletterul nostru , Curs valutar și formularul de autentificare iar în paginile unde se arată detailat fiecare telefon am mai introdus un bloc care arată și alte telefoane de acest tip),content(este partea din mijloc care este este împărită în două părți; în prima parte este afișată publicitate iar în a doua parte telefoanele cele mai des vândute ) și ultima parte a paginii principale este footer-ul (fig.2) care reprezinta partea de jos a site-ul și în care ca și în header sunt incluse careva date generale despre site și magazine și de asemenea drepturile de autor și datele acestuia.

Fig.2. Footer

In așa mod este alcătuită pagina principală, de asemenea și celelalte pagini au la bază aceeași structură.Pentru ca toate paginile să posede aceeași structură fiecare parte a fost inclusă în blocuri și plasată intr-o mapă comună blocks. Din figura 3 observăm toate blocurile care sunt utilizate în site pe fiecare pagină și care au fost descrise mai sus. Observăm ca este un bloc nou bd.php care dacă este inclus în pagină face posibilă conectarea la baza de date. De asemenea un bloc nou reprezintă și publicitatea din content care a fost inclusă intr-un bloc nou deoarece poate fi modificata în orice moment sau exclusă din pagină.

Fig.3. Blocuri

Unica modificare care se efecuteaza în celelate pagini este modificarea titlului și content-ului.De exemplu pentru pagina care afișează toate detalilele despre un produs anumit content-ul se schimbă în felul urmator:

Dispare publicitatea

In sidebar apare o listă cu produse asemanatoare

Sunt afișate detailat datele despre produs.

Spre deosebire de HTML,PHP ne permite sa construim un site dinamic alcatuit doar din cîteva pagini iar datorita bazelor de date în aceste pagini în dependentă de modului de transmitere a datelor POST sau GET pot fi afișate informații diferite.De exemplu pagina categories.php în dependent de datele care sunt transmise prin metoda GET,poate afisa date despre produse din categorii diferite,adica atunci cind transmitem variabilei $brand o anumită valoare aceasta pagina ne afiseaza date dintr-o categorie anumită în dependent de brand.

Din fig.4 și fig.5 observam ca intr-adevar cind variabila brand ia valoarea apple în content se afiseaza produsele Apple,iar cind ia valoarea nokia se afisează produsele Nokia.

Fig.4. euroconnect.orgfree.com/categories.php?brand=’apple’

Fig.5 euroconnect.orgfree.com/categories.php?brand=’nokia’

2.3 Crearea bazei de date a aplicatiei

2.3.1 Crearea unei baze date folosind XAMPP

Baza de date a fost realizată cu aplicația XAMPP folosind phpMyAdmin.

Pentru deschiderea aplicației phpMyAdmin se pornește XAMPP și se tastează în caseta de text pentru adrese a aplicației Internet Explorer adresa http://gritco.orgfree.com/pma

După apasarea tastei enter va aparea o formă de logare care ne permite sa ne conectăm la baza de date a site-ului(fig.6).

fig.6 Logarea în baza de date.

După logare se va deschide pagina principală a bazei de date.In colțul stîng de sus ne va aparea lista bazelor de date care pot fi utilizate pentru site-ul nostru.Deoarece site-ul este plasat pe un server gratuit ni s-a oferit o singură baza de date cu un nume prestabilit (534757).

fig.7.

Pentru a intra în baza de date și vizualiza tabelele se face click pe denumirea bazei de date și în partea din stinga de sus va aparea arborele cu tabelele bazei de date.

2.3.2 Crearea unui tabel al bazei de date

* Crearea tabelului settings.

În aceast tabel vor fi incluse datele care sunt afișate în paginele statice ca de exemplu:news.php,

Contacts.php, faq.php ș.a.

Fig.8.

După cum observăm în fig.8 tabelul settings este alcătuit din 6 cîmpuri:

id de tip integer care va indica indentificatorul paginii și care are proprietățile AUTO_INCREMENT care indică modul de formare a valorilor cîmpului id și proprietatea PRIMARY care indică ca id este cheie primară;

Page de tip varchar care va indica numele paginii;

Title de tip varchar care va indica titlul paginii;

Meta_k de tip varchar care va indica cuvintele cheie;

Meta_d care va indica descrierea paginii;

Text de tip text în care va fi inclus textul static al paginii;

Crearea tabelului newsletter

Tabelul newletter va inregistra toate persoanele care doresc să primeascș prin e-mail noutăți despre produsele noi,oferte sau alte informatii utile despre web-magazin.Acest tabel va coține următoarele cîmpuri:

Id de tip integer care va indica indentificatorul persoanei inscrise și care are proprietățile AUTO_INCREMENT care indică modul de formare a valorilor cîmpului id și proprietatea PRIMARY care indică ca id este cheie primară;

Name care va indica numele persoanei înscrise ;

E-mail care va indica e-mailul persoanei înscrise;

Crearea tabelului telefoane

Acest tabel va include în sine 43 de cîmpuri în care vor fi inscrise date generale despre produse. Cîmpurile tabelului dat sunt reprezentate în fig.9 și fig.10

fig.9 fig.10

Crearea tabelului comenzi

In tabelul dat va fi inclus fiecare comandă efectuată de utilizatorul site-ului.Tabelul dat conține următoarele cîmpuri:

Id de tip integer care va indica indentificatorul comenzii și care are proprietățile AUTO_INCREMENT care indică modul de formare a valorilor cîmpului id și proprietatea PRIMARY care indică ca id este cheie primară;

Nume_client de tip varchar care va indica numele cumpărătorului;

Telefon de tip varchar care indică telefonul de contact a cumpărătorului;

Adresa de tip varchar care va indica adresa cumpărătorului;

Coment de tip varchar în care vor fi înscrise comentarii despre produse;

Tip_plată de tip varchar care va indica modul de plată (cash sau prin transfer)

Id_produs de tip int care indică indentificatorul produsului comandat;

Data de tip date care indică data cind a fost efectuată comada;

Stare de tip varchar care indică starea produsului la moment (a fost livrat sau nu);

Crearea tabelului clienti.

În tabelul dat vor fi incluși toți clienții care se vor înregistra pe site-ul dat. Acest table conține următoarele 12 cîmpuri(fig.11).

Fig.11 Tabelul Clienti

Crearea tabelului cos.

În tabelul cos vor fi introduce toate produsele care se află în cos sau care deja au fost cumpărate de către client (fig.12).

Fig. 12 Tabelul cos.

Tabelul dat conține următoarele cîmpuri idClient care reprezintă identificatorul clientului logat la acest moment, idProdusului care se ia din tabelul telefoane, denumirea produsului, cantitatea(la moment se utilizeaza doar un singur produs), pretul total și am utilizat un cîmp de tip Boolean care indica daca produsul este în coș sau deja a fost cumpărat(în caz că produsul este în coș cumparat=’false’ iar dacă a fost cumpărat cumparat=’true’)

2.3.3 Conectarea la baza de date

Conectarea la baza de date se efectueaza cu ajutorul blocului bd.php care este inclus în fiecare dintre paginile care citește careva date din baza de date cu ajutorul funcției include():

Fig. 13 Includerea blocului de conectare la baza de date.

Insuși blocul conține urmatorul cod:

Fig.14 Codul de conectare la baza de date.

Din codul de mai sus se observa ca pagina dată se conectează la baza de date cu numele ”534757” și parola ”*************” cu ajutorul funcției mysql_connect().In caz că nu se poate realiza conectarea se afișează un mesaj de eroare ”nu ma pot conecta”.

2.3.4 Crearea interpelarilor și afișarea datelor în pagină.

Interpelările sunt efectuate cu ajutorul funcției mysql_query() după care are loc transmiterea datelor care au fost selectate intr-un tablou unidimensional cu ajutorul funcției mysql_fetch_array() care este atribuită unei variabile.

Fig.15 Includerea datelor din interpelare intr-un masiv și utilizarea acestuia.

Din exemplul de mai sus se observă cum a avut loc conectarea la baza de date după care sa efectuat interpelarea în tabelul settings în care sunt incluse date generale despre fiecare pagină iar datele returnate se transmit în variabila $myrow.Aceasta variabilă după ce a fost inițializată a fost utilizată pentru a defini în pagina dată cuvintele cheie, descrierea paginii precum și titlul acesteia cu ajutorul funcției echo.

2.4 Efectuarea comenzii.

2.4.1 Înregistrarea

Pentru a putea procura un oarecare produs din magazinul virtual mai întîi de toate este necesar ca clientul sa fie logat iar pentru a se putea loga este necesar de a se înregistra. Înregistrarea se face foarte simplu facînd click în partea dreapta a paginii unde este linkul către înregistrare (fig 16).

Fig.16. Formularul de înregistrare logare.

Acest link ne duce la o pagină care ne duce la o anchetă care trebuie de îndeplinit cu date personale(fig. 17).

Fig. 17 Formularul de înregistrare.

În formularul dat doar primele 6 cîmpuri sunt obligatorii deoarece la efectuarea oricărei comenzi este practice necesar in primul rind telefonul clientului deoarece mai întîi de de toate este sunat pentru confirmarea comenzii și respective adresa poate sa fie modificată sau nuîn dependență de preferințele clientului. După ce se completează aceste cîmpuri clientul dat este introdus în baza de date și doar atunci poate sa facă careva comenzi după o eventual logare.

2.4.2 Logarea.

Pentru logare este necesar doar de e-mail-ul clientului și parolă și îndată ce s-a logat se creează o sesiune pentru clientul dat. O data cu logarea se modifică si blocul care răspunde de autentificarea clienților(). Astfel în acest bloc dispare formularul de logare și apare numele clientului, coșul și cumpărăturile efectuate de către acesta (fig.18).

Fig. 18 Blocul de autentificare după logare.

2.4.3 Adăugarea în coș.

După logare deja avem posibilitatea de a adăuga careva produse în coș printr-un singur click pe imaginea ”Pune în coș” (fig. 19) care automat adaugă produsul în coș și trecem în coș unde sunt toate produsele adăugate de pînă acuma.

Fig. 19 Imaginea link ce adauga produsele în coș.

Mai jos avem pagina în care sunt indicate toate produsele care au fost adăugate de noi pînă acuma în coș și respective putem efectua careva acțiuni cu acestea cum ar fi ștergerea din coș, vizualizarea acestora și efectuarea comenzii(fig.20).

Fig. 20 Coșul.

La fel arată și pagina cu cumpărături numai că cumpărăturile nu pot fi șterse sau cumpărate din nou(fig. 21).

Fig. 21 Cumparaturi.

2.4.3 Efectuarea comenzii .

După ce produsul a fost adăugat în coș în tabelul cu produse la coloana cu opțiuni putem face clic pe ”Cumpără” si trecem la pagina unde se îndeplinește formularul cu datele personale. Cu toate că clientul deja este logat și cunoaștem datele sale personale noi cerem din nou aceste date deoarece multe peroane nu se înregistrează cu datele personale corecte, ceea ce este foarte important la momentul cînd se livrează produsele.Mai jos este reprezentat formularul care se completează la efectuarea comenzii.

Fig.22 Formele de inregistrare a comenzii

După ce apasăm pe butonul ”Achiziționează” datele sunt introduse în baza de date unde pot fi vizualizate de către administratorul site-ului.După ce sa primit comanda clientul este sunat și sunt concretizate toate detaliile despre comandă și livrare. În cazul cînd se alege modul de plată prin transfer bancar clientul este nevoit ca să transfere mai întîi banii și după confirmarea de primire a banilor i se livrează produsul iar în cazul cind se achită cash banii sunt dați curierului care va livra produsul dat în maxim 5 ore de la primirea comenzii.

Concluzii

In lucrarea dată am studiat crearea aplicațiilor web cu ajutorul tehnologiilor LAMP(Linux, Apache, MySQL, PHP).

Bibliografie:

[Thom2004], Dezvoltarea aplicatiilor WEB cu PHP și MySQL; Editura Teora 2004.

[Melo2005], INVATA SINGUR PHP, MYSQL ȘI APACHE; Editura Corint 2005.

PHP si MySQL pentru site-uri WEB dinamice; Larry Ullman

Beginning PHP 5.3; Matt Doyle

Crearea paginilor Web; Ned Snell.

http://www.phpromania.ro

http://www.oscommerce.com

http://www.w3schools.com/asp/default.asp

http://etutoriale.ro/articles/80/1/in-PHP/

http://www.webdesign.info.ro/web-design/funcția-list/66/funcția-list.html

http://www.pro-tutoriale.ro/tutoriale-php-tablouri-in-PHP.php

http://ro.wikipedia.org/wiki/GNU/Linux

ANEXA

Pagina care afișează produsele în dependență de un parametru transmis prin metoda GET:

<?php

session_start();

// Seteaza utilizarea formatului UTF-8 in pagina

header("Content-type: text/html; charset=utf-8");

echo $_SESSION['username'];

if (isset($_SESSION['username'])&& isset($_SESSION['password']))

{

include("blocks/bd.php");

$username=$_SESSION['username'];

$password=$_SESSION['password'];

$sql=mysql_query("SELECT * FROM clienti WHERE email='$username' AND password='$password'");

if(mysql_num_rows($sql))

{

echo "Sunteti logat $username";

}

else echo "Datele din sesiune nu corespund!";

}

else echo "Nu sunteti logat $username!";

include("blocks/bd.php");

$result=mysql_query("SELECT * FROM settings where page='categories.php'",$db);

$myrow=mysql_fetch_array($result);

if (isset($_GET['brand'])) {$brand=$_GET['brand'];}

else echo"nu este asa variabila";

$result_brand=mysql_query("SELECT * FROM telefoane where brand=$brand",$db);

$myrow_b=mysql_fetch_array($result_brand);

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<link href="style/style.css" rel="stylesheet" type="text/css">

<link href="style/reset.css" rel="stylesheet" type="text/css">

<link rel="icon" href="images/mobile_icon.ico" type="image/x-icon">

<meta name="description" content="<?php echo $myrow['meta_d']; echo $myrow_b['brand']; ?>">

<meta name="keywords" content="<?php echo $myrow['meta_k'];echo $myrow_b['brand']; ?>">

<script src="js/jquery-1.5.min.js" type="text/javascript"></script>

<script src="js/equalHeight.js" type="text/javascript"></script>

<title><?php echo $myrow['title']; echo $myrow_b['brand'];?></title>

</head>

<body id="body">

<!– <div id="wrapper">–>

<div id="menu">

</div>

<div id="header">

<?php include("blocks/header.php");?>

</div>

<div id="nav" class="clear">

<div id="nav2">

<?php include("blocks/navigare.php");?>

</div>

</div>

<div id="content_t">

<div id="sidebarL">

<?php include("blocks/sidebareL.php");?>

</div>

<div id="content">

<div id="cale_tel">

<p><a href="index.php">Acasa</a> > <?php echo $myrow_b['brand']; ?></p>

</div>

<div id="nume_categorie_tel">

<p class="font_cat"><?php echo $myrow_b['brand']; ?></p>

</div>

<div id="elements">

<? $result=mysql_query("SELECT * FROM telefoane where brand=$brand",$db);

$myrow=mysql_fetch_array($result);

do{

printf("<div id='details'>

<div id='images'>

<img src='%s' width='100' height='100' id='image'/>

</div>

<div id='detalii'>

<a id='link_produs' href='products2.php?id=%s'> <h1>%s</h1></a>

<h4>Tipul ecranului:</h4><p>%s</p>

<h4>Camera:</h4><p>%s</p>

<h4>Tipul bateriei:</h4><p>%s</p>

<h4>Lansat: </h4><p>%s</p>

<h4 class='stare_m'>In stoc</h4>

<h5>Pre?:</h5><h6 class='pret'>%s MDL</h6>

</div>

<div class='clear' id='options'>

<img src='images/sageata_d.gif' id='sageata'/> <a id='detalii_link' href='products2.php?id=%s'>Detalii</a>

<img src='images/cos_m.gif' id='cos_m'/><a id='cumpara_link' href='comanda.php?id=%s'>Cumpara</a>

</div></div>

", $myrow['img'],$myrow['id'],$myrow['denumire_produs'],$myrow['tip_ecran'],$myrow['camera'],$myrow['tip_baterie'],$myrow['lansare'],$myrow['pret'],$myrow['id'],$myrow['id']);}

while( $myrow=mysql_fetch_array($result));?>

</div>

</div>

<div id="sidebarR" >

<? include("blocks/sidebareR.php");?>

</div>

</div>

<div id="footer" class="clear">

<? include("blocks/footer.php");?>

</div>

</body>

</html>

Logare:

<?php

session_start();

include("blocks/bd.php");

if(isset($_POST['username'])&& isset($_POST['password']))

{

$username=$_POST['username'];

$password=$_POST['password'];

$sql=mysql_query("SELECT * FROM Clienti WHERE email='$username' AND password='$password'");

if (mysql_num_rows($sql)==1)

{

echo "Felicitari sunteti logat!";

$_SESSION['username']=$username;

$_SESSION['password']=$password;

}

else

echo "Datele nu corespund!";

$_SESSION['username']=$username;

$_SESSION['password']=$password;

}

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

?>

Delogare:

<?php

session_start();

session_destroy();

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

?>

Îregistrare:

<?php

header("Content-type: text/html; charset=utf-8");

if(isset($_POST['nume'])&& isset($_POST['prenume'])&& isset($_POST['password'])&& isset($_POST['email']))

{

$email=$_POST['email'];

$prenume=$_POST['prenume'];

$nume=$_POST['nume'];

$password_r=$_POST['password'];

$password_confirm=$_POST['password_confirm'];

$telefon=$_POST['telefon'];

$regiune=$_POST['regiune'];

$localitate=$_POST['localitate'];

$strada=$_POST['strada'];

$numar=$_POST['numar'];

$bloc=$_POST['bloc'];

$apartament=$_POST['apartament'];

include("blocks/bd.php");

$sql=mysql_query("INSERT INTO clienti(nume,prenume,email,password,telefon,regiune,localitate,strada,nr_strada,bloc,apartament)

Values('$nume','$prenume','$email','$password_r','$telefon','$regiune','$localitate','$strada','$numar','$bloc','$apartament')");

$rinduri=mysql_num_rows($sql);

if (mysql_num_rows($sql)==1)

{

echo "A fost inregistrat!";

}

else

{

die('Error: ');

echo $rinduri;

}

}

header("Location:index.php");

?>

SideBar dreapta:

<?php

if(!isset($_SESSION['username'])&& !isset($_SESSION['password']))

printf("

<!– Logare /inregistrare –>

<div class='tel'><p align='center'> Autentificare&nbsp;&nbsp;&nbsp; </p></div>

<form action='login.php' method='post' name='name_pers'>

<table id='lista' border='1'>

<tr>

<td align='center' valign='middle'><p class='abonez' align='center'>Introduceți e-mailul &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></td>

</tr>

<tr>

<td align='center' valign='middle'><input id='username' name='username' type='email' size='25' maxlength='20'/></td>

</tr>

<tr>

<td align='center' valign='middle'><p class='abonez' align='center'>Introduceți parola &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p></td>

</tr>

<tr>

<td align='center' valign='middle'><input class='abonez' id='password' name='password' type='password' size='25' maxlength='20'/></td>

</tr>

<tr>

<td align='center' valign='middle'><span id='btn_abonez'>

<button class='abonez_btn' type='submit' align='center'>Intrare!</button></span> </form>

</td>

</tr>

<tr>

<td><a align='center' href='inregistrare.php' id='registr'>Inregistrare!&nbsp;&nbsp;&nbsp;&nbsp;</a></td>

</tr>

</table>

<div class='tel_jos'></div>

<div id='separator'></div>

");

else

{

$email_reg=$_SESSION['username'];

include("blocks/bd.php");

$sql=mysql_query("SELECT * FROM clienti WHERE email = '$email_reg'",$db);

$user=mysql_fetch_array($sql);

$idClient = $user['id'];

/// Selecteaza numarul de produse in cos

$sqlForCart=mysql_query("SELECT COUNT(idProdus) FROM cos WHERE idClient = '$idClient' AND cumparat='0'",$db);

$resultForCart=mysql_fetch_array($sqlForCart);

/// Selecteaza numarul de cumparaturi efectuate de catre utilizatorul curent

$sqlForCart_=mysql_query("SELECT COUNT(idProdus) FROM cos WHERE idClient = '$idClient' AND cumparat='1'",$db);

$resultForCart_=mysql_fetch_array($sqlForCart_);

printf("

<!– Logare /inregistrare –>

<div class='tel'><p align='center'> Autentificare&nbsp;&nbsp;&nbsp; </p></div>

<table id='lista' border='1'>

<tr>

<td ><a align='center' href='#'>Salut,%s&nbsp;&nbsp;</a></td>

</tr>

<tr>

<td><a align='center' href='cos.php'>Coș(%s)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></td>

</tr>

<tr>

<td><a align='center' href='cumparaturi.php'>Cumpărături(%s)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></td>

</tr>

<tr>

<td><a align='center' href='logout.php' id='registr'>Iesire!&nbsp;&nbsp;&nbsp;&nbsp;</a></td>

</tr>

</table>

<div class='tel_jos'></div>

<div id='separator'></div>",$user[2],$resultForCart[0],$resultForCart_[0]);

}

?>

<div class="tel"><p align="center"> Newsletterul nostru!&nbsp;&nbsp;&nbsp; </p></div>

<form action="abonare.php" method="post" onsubmit="VerificareDateNewsletter()" name="name_pers">

<table id="lista" border="1">

<tr>

<td align="center" valign="middle"><p class="abonez" align="center">Introduceți numele &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></td>

</tr>

<tr>

<td align="center" valign="middle"><input name="register_name" type="text" size="25" maxlength="20"/></td>

</tr>

<tr>

<td align="center" valign="middle"><p class="abonez" align="center">Introduceți e-mailul &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p></td>

</tr>

<tr>

<td align="center" valign="middle"><input class="abonez" name="email" type="email" size="25" maxlength="20"/></td>

</tr>

<tr>

<td align="center" valign="middle"><span id="btn_2">

<button class="btn_2" type="submit" align="center">Mă abonez!</button></span> </form>

</td>

</tr>

</table>

<div class="tel_jos"></div>

<div id="separator"></div>

<SCRIPT language='JavaScript'>

<!–

infop_color_title = '000000';

infop_color_border = 'B4B4B4';

infop_color_bg_title = 'C3C2C2';

infop_border_width = '1';

infop_color_bg = 'E4E4E4';

infop_color_link = '585858';

infop_color_text = '585858';

infop_font_family = 'Tahoma';

infop_font_size = '11';

–>

</script>

<NOSCRIPT><a href="http://www.infoportal.md/currency">curs valutar</a></NOSCRIPT>

<SCRIPT language='JavaScript' src='http://www.infoportal.md/get_data/?tip=cursvalutar&display=featured'></SCRIPT>

<!– SFARSIT COD CURS VALUTAR INFOPORTAL.MD –>

<div class="tel_jos"></div>

Bibliografie:

[Thom2004], Dezvoltarea aplicatiilor WEB cu PHP și MySQL; Editura Teora 2004.

[Melo2005], INVATA SINGUR PHP, MYSQL ȘI APACHE; Editura Corint 2005.

PHP si MySQL pentru site-uri WEB dinamice; Larry Ullman

Beginning PHP 5.3; Matt Doyle

Crearea paginilor Web; Ned Snell.

http://www.phpromania.ro

http://www.oscommerce.com

http://www.w3schools.com/asp/default.asp

http://etutoriale.ro/articles/80/1/in-PHP/

http://www.webdesign.info.ro/web-design/funcția-list/66/funcția-list.html

http://www.pro-tutoriale.ro/tutoriale-php-tablouri-in-PHP.php

http://ro.wikipedia.org/wiki/GNU/Linux

ANEXA

Pagina care afișează produsele în dependență de un parametru transmis prin metoda GET:

<?php

session_start();

// Seteaza utilizarea formatului UTF-8 in pagina

header("Content-type: text/html; charset=utf-8");

echo $_SESSION['username'];

if (isset($_SESSION['username'])&& isset($_SESSION['password']))

{

include("blocks/bd.php");

$username=$_SESSION['username'];

$password=$_SESSION['password'];

$sql=mysql_query("SELECT * FROM clienti WHERE email='$username' AND password='$password'");

if(mysql_num_rows($sql))

{

echo "Sunteti logat $username";

}

else echo "Datele din sesiune nu corespund!";

}

else echo "Nu sunteti logat $username!";

include("blocks/bd.php");

$result=mysql_query("SELECT * FROM settings where page='categories.php'",$db);

$myrow=mysql_fetch_array($result);

if (isset($_GET['brand'])) {$brand=$_GET['brand'];}

else echo"nu este asa variabila";

$result_brand=mysql_query("SELECT * FROM telefoane where brand=$brand",$db);

$myrow_b=mysql_fetch_array($result_brand);

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

<link href="style/style.css" rel="stylesheet" type="text/css">

<link href="style/reset.css" rel="stylesheet" type="text/css">

<link rel="icon" href="images/mobile_icon.ico" type="image/x-icon">

<meta name="description" content="<?php echo $myrow['meta_d']; echo $myrow_b['brand']; ?>">

<meta name="keywords" content="<?php echo $myrow['meta_k'];echo $myrow_b['brand']; ?>">

<script src="js/jquery-1.5.min.js" type="text/javascript"></script>

<script src="js/equalHeight.js" type="text/javascript"></script>

<title><?php echo $myrow['title']; echo $myrow_b['brand'];?></title>

</head>

<body id="body">

<!– <div id="wrapper">–>

<div id="menu">

</div>

<div id="header">

<?php include("blocks/header.php");?>

</div>

<div id="nav" class="clear">

<div id="nav2">

<?php include("blocks/navigare.php");?>

</div>

</div>

<div id="content_t">

<div id="sidebarL">

<?php include("blocks/sidebareL.php");?>

</div>

<div id="content">

<div id="cale_tel">

<p><a href="index.php">Acasa</a> > <?php echo $myrow_b['brand']; ?></p>

</div>

<div id="nume_categorie_tel">

<p class="font_cat"><?php echo $myrow_b['brand']; ?></p>

</div>

<div id="elements">

<? $result=mysql_query("SELECT * FROM telefoane where brand=$brand",$db);

$myrow=mysql_fetch_array($result);

do{

printf("<div id='details'>

<div id='images'>

<img src='%s' width='100' height='100' id='image'/>

</div>

<div id='detalii'>

<a id='link_produs' href='products2.php?id=%s'> <h1>%s</h1></a>

<h4>Tipul ecranului:</h4><p>%s</p>

<h4>Camera:</h4><p>%s</p>

<h4>Tipul bateriei:</h4><p>%s</p>

<h4>Lansat: </h4><p>%s</p>

<h4 class='stare_m'>In stoc</h4>

<h5>Pre?:</h5><h6 class='pret'>%s MDL</h6>

</div>

<div class='clear' id='options'>

<img src='images/sageata_d.gif' id='sageata'/> <a id='detalii_link' href='products2.php?id=%s'>Detalii</a>

<img src='images/cos_m.gif' id='cos_m'/><a id='cumpara_link' href='comanda.php?id=%s'>Cumpara</a>

</div></div>

", $myrow['img'],$myrow['id'],$myrow['denumire_produs'],$myrow['tip_ecran'],$myrow['camera'],$myrow['tip_baterie'],$myrow['lansare'],$myrow['pret'],$myrow['id'],$myrow['id']);}

while( $myrow=mysql_fetch_array($result));?>

</div>

</div>

<div id="sidebarR" >

<? include("blocks/sidebareR.php");?>

</div>

</div>

<div id="footer" class="clear">

<? include("blocks/footer.php");?>

</div>

</body>

</html>

Logare:

<?php

session_start();

include("blocks/bd.php");

if(isset($_POST['username'])&& isset($_POST['password']))

{

$username=$_POST['username'];

$password=$_POST['password'];

$sql=mysql_query("SELECT * FROM Clienti WHERE email='$username' AND password='$password'");

if (mysql_num_rows($sql)==1)

{

echo "Felicitari sunteti logat!";

$_SESSION['username']=$username;

$_SESSION['password']=$password;

}

else

echo "Datele nu corespund!";

$_SESSION['username']=$username;

$_SESSION['password']=$password;

}

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

?>

Delogare:

<?php

session_start();

session_destroy();

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

?>

Îregistrare:

<?php

header("Content-type: text/html; charset=utf-8");

if(isset($_POST['nume'])&& isset($_POST['prenume'])&& isset($_POST['password'])&& isset($_POST['email']))

{

$email=$_POST['email'];

$prenume=$_POST['prenume'];

$nume=$_POST['nume'];

$password_r=$_POST['password'];

$password_confirm=$_POST['password_confirm'];

$telefon=$_POST['telefon'];

$regiune=$_POST['regiune'];

$localitate=$_POST['localitate'];

$strada=$_POST['strada'];

$numar=$_POST['numar'];

$bloc=$_POST['bloc'];

$apartament=$_POST['apartament'];

include("blocks/bd.php");

$sql=mysql_query("INSERT INTO clienti(nume,prenume,email,password,telefon,regiune,localitate,strada,nr_strada,bloc,apartament)

Values('$nume','$prenume','$email','$password_r','$telefon','$regiune','$localitate','$strada','$numar','$bloc','$apartament')");

$rinduri=mysql_num_rows($sql);

if (mysql_num_rows($sql)==1)

{

echo "A fost inregistrat!";

}

else

{

die('Error: ');

echo $rinduri;

}

}

header("Location:index.php");

?>

SideBar dreapta:

<?php

if(!isset($_SESSION['username'])&& !isset($_SESSION['password']))

printf("

<!– Logare /inregistrare –>

<div class='tel'><p align='center'> Autentificare&nbsp;&nbsp;&nbsp; </p></div>

<form action='login.php' method='post' name='name_pers'>

<table id='lista' border='1'>

<tr>

<td align='center' valign='middle'><p class='abonez' align='center'>Introduceți e-mailul &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></td>

</tr>

<tr>

<td align='center' valign='middle'><input id='username' name='username' type='email' size='25' maxlength='20'/></td>

</tr>

<tr>

<td align='center' valign='middle'><p class='abonez' align='center'>Introduceți parola &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p></td>

</tr>

<tr>

<td align='center' valign='middle'><input class='abonez' id='password' name='password' type='password' size='25' maxlength='20'/></td>

</tr>

<tr>

<td align='center' valign='middle'><span id='btn_abonez'>

<button class='abonez_btn' type='submit' align='center'>Intrare!</button></span> </form>

</td>

</tr>

<tr>

<td><a align='center' href='inregistrare.php' id='registr'>Inregistrare!&nbsp;&nbsp;&nbsp;&nbsp;</a></td>

</tr>

</table>

<div class='tel_jos'></div>

<div id='separator'></div>

");

else

{

$email_reg=$_SESSION['username'];

include("blocks/bd.php");

$sql=mysql_query("SELECT * FROM clienti WHERE email = '$email_reg'",$db);

$user=mysql_fetch_array($sql);

$idClient = $user['id'];

/// Selecteaza numarul de produse in cos

$sqlForCart=mysql_query("SELECT COUNT(idProdus) FROM cos WHERE idClient = '$idClient' AND cumparat='0'",$db);

$resultForCart=mysql_fetch_array($sqlForCart);

/// Selecteaza numarul de cumparaturi efectuate de catre utilizatorul curent

$sqlForCart_=mysql_query("SELECT COUNT(idProdus) FROM cos WHERE idClient = '$idClient' AND cumparat='1'",$db);

$resultForCart_=mysql_fetch_array($sqlForCart_);

printf("

<!– Logare /inregistrare –>

<div class='tel'><p align='center'> Autentificare&nbsp;&nbsp;&nbsp; </p></div>

<table id='lista' border='1'>

<tr>

<td ><a align='center' href='#'>Salut,%s&nbsp;&nbsp;</a></td>

</tr>

<tr>

<td><a align='center' href='cos.php'>Coș(%s)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></td>

</tr>

<tr>

<td><a align='center' href='cumparaturi.php'>Cumpărături(%s)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</a></td>

</tr>

<tr>

<td><a align='center' href='logout.php' id='registr'>Iesire!&nbsp;&nbsp;&nbsp;&nbsp;</a></td>

</tr>

</table>

<div class='tel_jos'></div>

<div id='separator'></div>",$user[2],$resultForCart[0],$resultForCart_[0]);

}

?>

<div class="tel"><p align="center"> Newsletterul nostru!&nbsp;&nbsp;&nbsp; </p></div>

<form action="abonare.php" method="post" onsubmit="VerificareDateNewsletter()" name="name_pers">

<table id="lista" border="1">

<tr>

<td align="center" valign="middle"><p class="abonez" align="center">Introduceți numele &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p></td>

</tr>

<tr>

<td align="center" valign="middle"><input name="register_name" type="text" size="25" maxlength="20"/></td>

</tr>

<tr>

<td align="center" valign="middle"><p class="abonez" align="center">Introduceți e-mailul &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p></td>

</tr>

<tr>

<td align="center" valign="middle"><input class="abonez" name="email" type="email" size="25" maxlength="20"/></td>

</tr>

<tr>

<td align="center" valign="middle"><span id="btn_2">

<button class="btn_2" type="submit" align="center">Mă abonez!</button></span> </form>

</td>

</tr>

</table>

<div class="tel_jos"></div>

<div id="separator"></div>

<SCRIPT language='JavaScript'>

<!–

infop_color_title = '000000';

infop_color_border = 'B4B4B4';

infop_color_bg_title = 'C3C2C2';

infop_border_width = '1';

infop_color_bg = 'E4E4E4';

infop_color_link = '585858';

infop_color_text = '585858';

infop_font_family = 'Tahoma';

infop_font_size = '11';

–>

</script>

<NOSCRIPT><a href="http://www.infoportal.md/currency">curs valutar</a></NOSCRIPT>

<SCRIPT language='JavaScript' src='http://www.infoportal.md/get_data/?tip=cursvalutar&display=featured'></SCRIPT>

<!– SFARSIT COD CURS VALUTAR INFOPORTAL.MD –>

<div class="tel_jos"></div>

Similar Posts