Proiectarea Unei Aplicatii Magazin Online Folosind Php Si Mysql

Cuprins

Capitolul 1. Introducere

1.1. Tehnologia in ziua de azi…………………………………………………………………..2

1.2. Site-uri si aplicații web………………………………………………………………………….3

1.3. Introducere a conținutului lucrării……………………………………………..7

Capitolul 2. Prezentarea tehnologiilor utilizate

2.1. Internet…………………………………………………………………………………………………9

2.2. World Wide Web…………………………………………………………………………………..11

2.3. HTML…………………………………………………………………………………………………..12

2.4. JavaScript……………………………………………………………………………………………..18

2.5. CSS……………………………………………………………………………………………………….22

2.6. XAMPP…………………………………………………………………………………………………25

2.7. PHP……………………………………………………………………………………………………….26

2.8.MySql……………………………………………………………………………………………………..31

2.9. Apache……………………………………………………………………………………………………40

Capitolul 3. Proiectarea și Implementarea aplicației

3.1. Baza de date utilizată………………………………………………………………………………42

3.2. Prezentarea aplicației………………………………………………………………………………44

Capitolul 4. Concluzii……………………………………………………………………………………………….50

Bibliografie………………………………………………………………………………………………………………51

Anexe……………………………………………………………………………………………………………………….56

Capitolul 1. Introducere

1.1. Tehnologia in zilele noastre

În secolul vitezei, unde totul avansează într-un ritm alert, schimbările din

jurul nostru sunt mai mult decât justificate. În istoria tehnologiei, dezvoltarea mașinii de calcul este unică si revolutionara. Nici o altă realizare tehnică nu a înregistrat progrese asa de rapide după inventare. De la Blasie Pascal, Gotfried Wilhelm Leibnitz ,John Napier, până la Bill Gates, Steve Jobs o mulțime de creatori tehnici au contribuit la conceperea si dezvoltarea mașinilor de calcul, ajungand la nivele de evoluție de neconceput cu numai cativa ani in urmă[18]. Calculatoarele influențeaza viața noastra de zi cu zi din ce in ce mai intens, astfel le găsim peste tot: la birou, în școli, în spitale,acasă si în bănci, etc.

Comparația primului calculator (ENIAC) cu cele de ultima generatie confirmă si intareste afirmația făcută. Cu o generație in urmă nu puteam vorbi despre, mașini automate bancare, CD-uri, calculatoarele fiind niște mașini de dimensiunile dulapurilor și trebuiau să lucreze în spațiu climatizat.

Dezvoltarea tehnologiei informației si a comunicațiilor, cea mai dinamica ramură a revoluției științei , nu ar fi fost posibilă fără descoperirile din domeniile fizicii semiconductorilor si microelectronicii. În aceste condții apare firesc că aceia care au pus bazele școlilor românești de electronică și de inginerie a dispozitivelor la semiconductoare sa fie si inițiatorii si promotorii revolutiei informatice în țara noastră .Ne referim aici profesorii Tudor Tănăsescu si Mihail Drăgănescu si multi altii. În 1953, a inceput epopeea calculatoarelor electronice romanești, prin lansarea de catre dr. Vasile Toma a proiectului primului calculator românesc cu tuburi. Acest proiect care a fost apoi sa numit CIFA -1 s sa lansat la Institutul de Fizică Atomica la București. Proiectul logic al calculatorului CIFA 1 a fost prezentat la Simpozionul International de la Dresden in 1955 și echipat cu 1500 de tuburi electronice, a fost pus in funcțiune in anul 1957.

Daele Eurostat indica faptul ca populatia Romaniei a avut contact in procentul cel mai mic cu computerul, din Europa.

Astfel, 61 % dintre românii care locuiesc in regiunile de dezvoltare , spre exemplu cei din Centru si Sud – Muntenia nu au folosit niciodată un calculator[23]. Cifra este similară cu cea întâlnită in regiunile Sud-Vest si Sud- Est (60%), procentajul cel mai mica fiind in regiunile Nord Vest(54%) si Vest (48%) .

1.3. Site-uri și aplicații web

Noțiunea si termenul de site web provine din expresia engleza web site și indica o grupă de pagini web multimedia (conținând texte, animații ș.a.m.d.), disponibile pe Internet tuturor, de obicei pe o temă anume, care sunt conectate între ele prin așa-numitele hyperlink-uri.

La începutul Internetului aceste web site-uri se accesau prin introducerea adresei sale numerice specifice ( adica adresa IP), de ex. 156.285.476.355. Ulterior pentru web site-uri s-au introdus și numele de domenii, care permit introducerea adresei respective mult mai usor, prin cuvinte,termeni sau nume ușor de reținut, spre exemplu 'www.google.com'. Adresele de site-uri web trebuie să fie clar stabilite, unice în lume și garantate pentru posesorul fiecareia.

Subiectul unui web site poate fi: un blog, un portal web, bancă, o universitate virtuală, o bibliotecă, o enciclopedie virtuală, un catalog web, un magazin virtual ,o revistă web, un ziar web și aproape orice altceva.[1]

Un web site este alcătuit de regulă din mai multe pagini web. O pagină web este un document creat cu ajutorul limbajului de marcare HTML și (opțional) limbaje de programare cum ar fi PhP, ASP etc fiind accesibil vizitatorilor prin intermediul protocolul HTTP, care transferă informația de la server la browser.

Modul de acces la resurse se datorează protocolului de comunicație implementat numit HyperText Transport Protocol, prescurtat HTTP. O sesiune de transfer se desfășoară prin pasii urmatori :

Se realizează prin o conexiune client-server:

Prima oara clientul lansează o cerere ( un request)

Apoi serverul furnizează clientului răspunsul la cererea formulată supa care serverul încheie conexiunea.

Prima etapă si anume cea de conectare, este vizibila prin apariția în bara de start a browser-ului , si aparitia mesajului "Connecting to HTTP server".

Dacă conexiunea nu poate fi realizata, apare mesajul de eroare "Can't connect to server", însoțit de motivul acestei erori.

Odată ce conexiunea la un server HTTP a fost stabilită, clientul lansează cererea. Aceasta specifica tipul de protocol folosit, resursele solicitate (fișierul sau grupul de fișiere) și în ce fel trebuie sa răspundă server-ul (metoda)[7].

Protocolul împreună cu resursa alcătuiesc un Uniform Resource Locator adica un URL. Tipul protocolului este cea mai importanta parte a unui URL. Fără acesta browser-ul nu ar ști cum să foloseasca resursa respectivă.

Proiectarea web ca disciplină știintifică este influențată de dezvoltarea dar si evolutia aplicațiilor web. Orientarea în domeniul dezvoltării aplicațiilor web este foarte des caracterizată printr-o abordare spontana si o lipsa a metodelor de dezvoltare. Datorită complexității si polivalenței dar și a ritmului reproducerii aplicațiilor web, această abordare poate avea un impact negativ asupra calității. Aplicațiile web reprezintă o nou ramura de aplicații cu propriile sale provocări asupra dezvoltării si amplificarii software-ului.

Este necesară alcătuirea unui nou ciclu de viața a aplicațiilor web, prezentarea conceptelor, tehnicilor, metodelor si utilitarelor pentru evolutia si cresterea sistematică a aplicațiilor web.

Web-ul cat si aplicațiile web și comunitatea web în ansamblu s-au dezvoltat de la apariția Internet-ului la Web 2.0 și la viziunea web-ului semantic, din acest motiv fiind elementară renunțarea la tratarea de tip ad-hoc și optrarea principiilor proiectării web.[2]

La nivel de baza , web-ul este un spațiu creat prin mijloacele unor protocoale si limbaje determinate formal. Chiar daca noi suntem implicați în realizarea paginilor si utilizarea conexiunilor dintre acestea, interacțiunea acestora formează un model web la scara macroscopicăi. Evolutia aplicatiilor web este consecinta unei proceduri complexe si este important ca proiectarea care sustine aceasta dezvoltare sa fie bine facuta. Acest lucru va da voie atat studenților cat si specialistilor din domneiu, să proiecteze aplicații web de calitate pe baza normelor de proiectare software experimentate .

Aplicațiile web din ziua de azi sunt sisteme software complexe, si dezvoltarea acestora necesită o tratare metodologică a proiectării lor. Proiectarea web presupune utilizarea unei abordari sistematice si cuantificabile , asemanator cu proiectarea aplicațiilor software , pentru realizarea Daca urmarim dezvoltarea si complexitatea distingem diferite feluri de aplicații web; aplicațiile web pot fi indreptate spre documente , spre aplicatii interactive, tranzacționale.Cerințele specifice ale proiectării aplicațiilor web reiese din caracteristicile lor specifice categoria produselor software, utilizării si dezvoltării acestora. Evoluția este o caracteristică care cuprinde cele trei categorii mentionate.(1)

Aplicațiile web actuale constituie sisteme software complexe care oferă servicii accesibile prin intermediul diferitelor dispozitive interactive si personalizate ,si sunt foarte rapide. Ele pot oferii șansa efectuarii tranzacțiilor între useri si deobicei depoziteaza datele într-o baza de date. Factorul tipic al aplicațiilor web, in comparatie cu aplicațiile software, este modul în care v-a fi utilizat web-ul.

Standardele si tehnologiile sale sunt folosite ca o platforma de dezvoltare si în acelasi timp ca platforma pentru utilizator.

  Din perspectiva proiectării soft-ului, dezvoltarea aplicațiilor este un nou domeniu al acestora.

Contrar anumitor asemanari cu aplicatiile de pana acuma, trasaturile speciale ale aplicațiilor web au nevoie de o adaptare a multiplelor abordări ale proiectării softu-lui ba chiar a dezvoltării de abordări complete ,fata de cele de pana acuma.

            Elementele fundamentale ale unei proiectării web sunt ca descriere similare cu cele ale proiectării software:

            – obiectivele cat si cerințele trebuie sa fie clar definite;

            – evolutia sistematică, treptata, a aplicațiilor web;

            – cat si o planificare atenta a acestor etape;

auditul pe intreaga perioada a procesului de dezvoltare.

Categorii de aplicatii web:

Figura 1.2: Categorii de aplicatii web

     Aplicațiile web se deosebesc de aplicațiile tradiționale (non-web), insusirile acestora fiind prezentate ulterior. Ele sunt intrun fel trasaturile de care aplicațiile tradiționale nu are nevoie (navigarea non-liniară) dar și trasaturile care prezintă o importanță trasatura a procesului (frecvența actualizărilor)

    Si daca o trasatura este prezentă și aceasta depinde de  tipul de aplicație web, dezvoltarea aplicațiilor web tranzacționale ,aceste necesita o atentie sporita fata de actualizării si consistenței conținutului fata de sistemele informaționale pure (prezentările virtuale).

Aceste caracteristici sunt motivul pentru care numeroase concepte, metode, tehnici si utilitare ale proiectării softului tradiționale trebuiesc adaptate la cerințele proiectarii web, chiar daca în unele cazuri acestea pot fi în totalitate neadecvate. Figura 1.3 ne oferă o imagine a acestor caracteristici și trasaturi și le împarte în trei categorii: "produs", "utilizare" si "dezvoltare", împreună cu "evoluția" vazută ca o dimensiune atotcuprinzatoare.

Figura 1.3

1.3. Scurtă introducere a conținutului lucrării.

Tema lucrării este aceea de a implementa un magazin on-line folosind PHP și MySQL. Am dorit sa creez un magazin online destinat vânzărilor de tractoare, fiind un utilaj de nelipsit din ferme, agricultura fiind și un domeniu care s-a dezvolatat foarte mult in Romania in ultimii ani. Vizitatorii site-ului pot vizualiza și cumpăra produse expuse pe site.

Magazinul on-line este din ce in ce mai folosit, fiind un mijloc ieftin și eficient pentru dezvoltarea unei afaceri. Numărul tot mai mare de internauți, gradele de securitate din ce in ce mai sporite, accesarea de oriunde prin tehnologii moderne de wireless, sunt doar câteva dintre motivele pentru care magazinul virtual on-line este aproape de nelipsit în strategia de marketing a oricărui producător sau intermediar, care vinde diverse produse sau servicii. Deasemena și utilizatori sunt avantajați, ei au acces instant la întreg catalogul de produse, și pot comanda un produs la cel mai bun preț și calitate din confortul casei lor.

În această secțiune am făcut un rezumat despre fiecare capitol în parte și am extras ideile principale, pentru ca vizitatorul să-și poată face o viziune generală asupra magazinului. Am o secțiune ce se ocupă cu afișarea tractoarelor disponibile, fiecare vizitator poate vizualiza produsul unde sunt prezentate caracteristiciile din mai multe puncte de vedere și prețul modelului. Dacă vizitatorul dorește să vadă ofertele speciale poate vizita secțiunea de oferte. Există deasemenea secțiunea de ajutor, ca utilizatorul sa poată invăța cum se cumpără de pe acest site. Dacă un vizitator dorește să contacteze proprietarul site-ului, o poate face la secțiunea special dedicată pentru acest scop. Desigur cea mai importantă secțiune este aceea în care vizitatorul comandă produsul ales.

Acestea ar fi cele mai importante părți ale site-ului, care oferă pentru fiecare vizitator o viziune detaliată asupra IT&C-ului.

Am utilizat PHP, MySQL, JavaScript, CSS, HTML. Partea de programare a site-ului a fost asigurată și implementată cu PHP un limbaj de programare orientat pe obiecte. Pe parcurs am modificat anumite părți din site și am utilizat cât mai multe funcții și clase pentru ca la momentul finalizării paginii web aceasta să fie cât mai rapidă. Pentru stocarea informațiilor am utilizat baza de date MySQL, deoarece este cea mai răspândită și oferă o înaltă securitate. Prin CSS și HTML am realizat partea de interfață a site-ului ca să se vadă la fel în cele mai răspândite browsere cum ar fi Firefox, Opera, Chrome, Safari, Internet Explorer.

Dinamismul a fost realizat de JavaScript, și aici am utilizat o librărie nou dezvoltată Jquery, care oferă o mulțime de plugin-uri.

Capitolul 2. Prezentarea tehnologiilor utilizate in lucrare.

2.1. Internet

Odată cu creșterea numărului de utilizatori de calculator crește si numărul utilizatorilor de internet. Potrivit InternetWorldStats in 30 iunie 2012 erau 9,642,383 de utilizatori de internet în Romania

Figura 1.1. Primele 10 țări din Europa ca număr de utilizatori de Internet

Numarul românilor care folosesc Internetul a crescut in 2012, față de 2010. 

Rezultatele studiului realizat de GFK Romania și remis Ziare.com arata ca incidenta in randul persoanelor cu varsta de peste 15 ani a fost de 48,7% in 2012, in crestere cu 8,4% fata de anul 2010.

Și mediul rural înregistrează o dinamica bună, cu o creștere mai mare in 2012 față de 2010 – cu aproximativ 11% mai multe persoane au apelat la acest canal de comunicare anul trecut, atingând 33% din populația rurală.

Este interesant de semnalat faptul că cel mai mult utilizarea Internetului a crescut în rândul persoanelor mature, 35-44 ani (mai mult cu 15% comparativ cu 2010)[24].

Punctul de pornire în dezvoltarea Internetului a fost rivalitatea între cele două mari puteri ale secolului al XX-lea: Statele Unite ale Americii și Uniunea Sovietică. În 1957, URSS (Uniunea Republicilor Sovietice Socialiste) lansează în spațiul cosmic primul satelit artificial al Pământului denumit Sputnik. Acest fapt a declanșat o îngrijorare deosebită în Statele Unite ale Americii, astfel președintele Eisenhower înființează o agenție specială subordonată Pentagonului: Advanced Research Projects Agency (www.darpa.mil). Această agenție a Ministerului de Apărare (Department of Defense, prescurtat DOD) este condusă de oameni de știință

Internetul este o rețea de calculatoare accesibilă publicului, care conectează foarte multe rețele mai mici din întreaga lume. S-a dezvoltat dintr-un program al Departamentul Apărării din SUA numit ARPANET (Advanced Research Projects Agency Network), înființat în 1969 care conectează calculatoare de la Universitatea din California – Los Angeles, Stanford Research Institute, Universitatea din California – Santa Barbara și Universitatea din Utah.

Scopul ARPANET a fost de a desfășura activități de cercetare în rețelele de calculatoare, cu scopul de a oferi un sistem de comunicații sigur în caz de război. Pe măsură ce rețeaua sa extins rapid, academicieni și cercetători din alte domenii au început să o folosească.

Termenii Internet și internet provin din împreunarea artificială și parțială a două cuvinte englezești: interconnected = interconectat și network = rețea. Substantivul propriu „Internet” (scris cu majusculă) desemnează o rețea mondială unitară de calculatoare și alte aparate cu adrese computerizate, interconectate conform protocoalelor (regulilor) de comunicare „Transmission Control Protocol” și „Internet Protocol”, numite împreună „stiva TCP/IP”. Substantivul comun „internet” (scris cu minusculă) desemnează rețele speciale ce interconectează două sau mai multe rețele autonome aflate la mare depărtare unele față de altele.

În 1986, Fundația Națională de Știință ( National Science Foundation ) a pus bazele NSFNET – National Science Foundation Network, o rețea distribuită de rețele capabile să suporte un trafic mult mai mare, iar anul următor mai mult de 10.000 de gazde au fost conectate la Internet. În 1988 a devenit posibilă comunicarea în timp real cu ajutorul protocoalelor IRC ( Internet Relay Chat ).

În anul 1990, ARPANET a încetat să mai existe, lăsând în urmă NSFNET, și tot in 1990 primul mod de acces ( dial-up ) comercial la Internet a devenit disponibil. În 1991, World Wide Web a fost lansat către public.

2.2. World Wide Web

Principala atracție a Internetului o reprezintă World Wide Web-ul. A fost creat de Tim Berners-Lee si colegii săi de la CERN și a introdus în lume în 1991. Acesta a constituit partea cu dezvoltarea cea mai rapidă și cea mai populară a Internetului (cu excepția, probabil, a fluxului voluminos de e-mail de pe tot globul). Din punct de vedere tehnic Web-ul, nu este decât o parte a Internetului sau mai corect spus, o componentă, care permite navigarea prin Internet.

Termenul World Wide Web este un sistem de documente și informații de tip hipertext legate ele între ele care pot fi accesate prin rețeaua mondială de Internet.

Un pas important în evoluția Web-ului a fost dezvoltarea browsererelor grafice, care puteau fi rulate pe un PC desktop sau pe un Macintosh, permițând utilizatorului să folosească tehnicile familiare disponibile și în alte programe, încorporând formate de text și grafică în ecranul de navigare etc.

Web-ul funcționează în cadrul arhitecturii de bază client-server a Internet-ului.

La baza funcționării webului stau 3 standarde, și anume:

(HTTP) – Hypertext Transfer Protocol, stiva de protocoale OSI prin care serverul web și browserul clientului (utilizatorului) comunică între ele;

(HTML) – Hypertext Markup Language, standard de definire și prezentare a paginilor web.

(URI) – Uniform Resource Identifier, sistem universal de identificare a resurselor din web, folosit pentru a identifica și regăsi paginile web;

Următoarele standarde sunt definite mai târziu:

Cascading Style Sheets (CSS)

JavaScript

Hypertext Transfer Protocol Secure – HTTPS.

Pentru a accede la web, utilizatorul trebuie să aibă instalat pe computerul său un browser.

Browser-ul este o aplicație cu trei funcții principale: accesul la informații, formatare și afișarea informațiilor[18]. Utilizatorul furnizează browser-ului adresa paginii dorite (URL-ul). Browser-ul solicită conectarea la server-ul web, pe baza protocolului HTTP. O dată conectarea acceptată, server-ul transmite browser-ului fișierul cerut. Browser-ul formatează pagina și o afișează pe monitorul utilizatorului.

2.3. HTML

Marcaje

HTML e un limbaj bazat pe SGML (Standard Generalized Murkup Language = ”Limbaj Standard Generalizat de Marcare”) care este un standard internațional ce a fost aprobat în 1986 și care permite crearea de documente hipertext pentru paginile Web. Numim tag un asemenea marcaj. [9]Un tag se introduce în text sub forma <nume_tag>, unde parantezele unghiulare sunt elementele care indică prezența unui tag. Principalele caracteristici ale limbajului SGML sunt:

Descrierea structurii documentului;

Nu este descrisă aranjarea în pagină;

Permite fiecărui navigator să aibă propria prezentare;

Un document HTML poate fi reutilizabil.

Standardul oficial HTML este dat de World Wide Web Consortium (W3C) care este afiliat la Internet Engineering Task Force (IETF). W3C a enunțat câteva versiuni ale specificației HTML, printre care și HTML 2.0, HTML 3.0, HTML 3.2, HTML 4.0 și, cel mai recent, HTML 4.01. Fiecare din aceste standarde este mai mult sau mai puțin suportat de către toate sau o parte din browsere.

Numele marcajelor poate fi scris oricum, limbajul nefiind senzitiv la litere mari/litere mici. Există două tipuri de marcaje:

individuale;

perechi (containere).

Secțiunea HEAD si BODY

Secțiunea HEAD este conținută în containerul <HEAD>marcaje specifice pentru HEAD</HEAD>

Marcajele din această secțiune au doar rolul să descrie documentul curent pentru programe (cum ar fi browser-e), pentru alte documente HTML sau pentru documentare. Informațiile prezentate în această secțiune nu vor fi vizibile în pagina afișată de browser, cu excepția titlului ce va apare pe linia titlu a browser-ului. Nici vizionarea codului sursă al documentului nu va arăta, în general, informațiile din această secțiune. Dintre tag-urile care pot fi în această secțiune amintim <TITLE> și <META>.

<TITLE>textul titlului</TITLE>

are scopul să fixeze titlul documentului curent. Textul este bine să se limiteze la 64 de caractere (inclusiv spațiile) și să aibă înțeles în sine.

<META [ NAME=“nume”] [ CONTENT=“continut”]

[ HTTP-EQUIV=“nume-camp-antet-HTTP”]> text [</META>]

conține descrierea și cuvintele cheie atașate documentului curent, informații care vor fi interpretate de programele de căutare (nu există standarde asupra utilizării de către server-ele HTTP a informației din META).[8]

NAME este numele, descrierea sau identificarea documentului curent sau a textului care este în META.

CONTENT este conținutul tag-ului META, în general va conține cuvintele cheie atașate documentului curent.

HTTP-EQUIV arată că informația META va fi dată unui antet HTTP.

Secțiunea BODY este determinată de containerul

<BODY [ BACKGROUND=“adresa_imagine”]

[ BGCOLOR=“#rrggbb”|”culoare”]

[ TEXT=“#rrggbb”|”culoare”]

[ LINK=“#rrggbb”|”culoare”]

[ VLINK=“#rrggbb”|”culoare”]

[ ALINK=“#rrggbb”|”culoare”]

[ LEFTMARGIN=marg_st]

[ TOPMARGIN=marg_top]

[ BGPROPERTIES=“fixed”] >

conținut document

</BODY>

și conține, practic, tot ceea ce este vizibil pentru un vizitator al paginii create.

Cu excepția tag-urilor enumerate la secțiunea HEAD, toate celelalte tag-uri ale setului HTML sunt specifice secțiunii BODY.

LEFTMARGIN precizează, în pixeli, marginea stângă a documentului (distanța dintre fereastră și conținutul documentului).

TOPMARGIN precizează, în pixeli, marginea de sus a documentului (distanța dintre fereastră și conținutul documentului).

Legături în documente HTML

Printr-o legătură într-un document HTML înțelegem marcajul locului de unde se poate efectua trecerea (cuplarea, conectarea) la un alt document sau la o nouă locație din documentul curent. Un loc marcat mai este denumit ancorare.[8]

Marcajele pot fi de două tipuri:

legături către alte locații: caracterizate prin textul legăturii (vizibil în documentul afișat pe ecran) și prin adresa la care se poate efectua un salt; textul legăturii va apărea pe ecran subliniat, într-o culoare diferită de cea a textului adiacent; adresa țintă a legăturii apare (dacă nu s-a indicat alt text) pe linia de stare a ferestrei browser-ului atunci când pointerul mouse-ului este pe textul legăturii;

definiri de nume care au doar rolul de a introduce ținte pentru legături; nu sunt diferențiate în documentul afișat pe ecran.

Marcajul utilizat pentru ambele tipuri de legături este <A> </A>, A provenind de la anchor.

Principalele forme ale tag-ului sunt:

a) legătura la un URL

<A HREF=“link-url”

[REL=“tip-rel”][REV=“tip-rev”][TITLE=“title-name”]

[TARGET=window|_blank|_parent|_self|_top]>

text_legatură </A>

unde:
link-url este adresa (absolută sau relativă) a documentului țintă;

tip-rel precizează tipul de relație care leagă documentul;

tip-rev precizează tipul de relație care leagă documentul referit de documentul prezent (relația inversă decât tip-rel);

title-name descrie legătura, descriere afișată de unele browsere când mouse-ul se mișcă peste ancoră;

TARGET este utilizat pentru a preciza unde va fi afișat documentul referit; valorile posibile fiind:

“nume fereastră” – indicând exact fereastra de afișare; dacă nu există este creată;

_blank – o fereastră nouă;

_parent – fereastra părinte (cea anterioară);

_self – în aceeași fereastră ca și documentul curent (valoarea implicită);

_top – în fereastra inițială.

text_legatură poate fi orice text (care poate să conțină imagini), formatat sau nu, dar care nu mai poate conține alte legături. Pentru proiectarea modului de afișare sunt disponibile trei atribute ale tag-ului BODY care definesc culoarea textului și chenarului pentru legăturile respectiv

LINK=“#rrggbb”|”culoare” – link-uri care nu au fost vizitate;

VLINK=“#rrggbb”|”culoare” – link-uri care au fost vizitate;

ALINK=“#rrggbb”|”culoare” – link-uri care tocmai au fost activate.

În cazul când se utilizează o imagine drept text-legătură, chenarul este chenar al imaginii; dacă text-legătură este doar text, atunci chenarul este doar inferior (subliniere).

b) legătura la o secțiune

Pentru a putea naviga în cadrul documentului activ este nevoie de două etape:

marcarea locului unde se poate efectua saltul, locația denumită (ținta);

marcarea locului de unde se poate efectua saltul (ancorarea).

Ambele etape se efectueaza prin tag-ul A și sunt explicate în continuare:

<A NAME=“denumire”>[text-denumire]</A>

unde:

denumire este numele sub care locația poate fi referită în legături hipertext;

text-denumire este textul care apare în pagina vizualizată.

<A HREF=“#denumire”>text_legătură</A>

unde:

denumire este numele unei locații denumite din același document; de remarcat că este necesar caracterul # în fața denumirii;

text_legătură este textul care va apărea în document sub aspectul uzual al unui punct de salt posibil.

c) legătura hipertext la o locație denumită din alt document

Marcarea ancorării se face tot printr-un tag A în care referința are un conținut mai complex:

<A HREF=“link-url#denumire”>text_legătură</A>

unde:

link-url este adresa documentului către care se poate efectua saltul (relativă sau absolută);

denumire este numele unei locații denumite din documentul referit; de remarcat că este necesar caracterul # în fața denumirii;

text_legătură este textul care va apărea în document sub aspectul uzual al unui punct de salt posibil.

Multimedia. Elemente de grafică

În această secțiune se discută probleme care țin efectiv de multimedia, cum ar fi legături către înregistrări audio/video, grafică fixă/animată etc., dar nu numai. Sunt prezente și probleme care țin de estetica prezentării, considerându-se că introducerea unor elemente grafice de atracție se încadrează mai mult în această secțiune și nu în cea dedicată formatării textului.

Elemente de grafică

a) Culori, fundaluri.

S-a văzut, la formatarea textului (tag-ul FONT), că un text poate fi scos în evidență, față de textul înconjurător, și prin utilizarea unei alte culori. Apare atunci întrebarea dacă nu se poate fixa o culoare dorită pentru tot textul unui document.[3] Aceeași întrebare se poate ridica asupra culorii hârtiei (deci a fondului pe care apare scrisul). Aceste întrebări își găsesc răspunsul în atribute ale tag-ului BODY:

BACKGROUND=“adresa-imagine”

BGCOLOR=“#rrggbb”|”culoare”

TEXT=“#rrggbb”|”culoare”

BGPROPERTIES=“FIXED”

b) Linii.

Pentru a trasa linii care să separe sau să evidențieze secțiuni de text sunt posibile două soluții:

linii trasate prin tag-ul dedicat HR;

linii trasate ca imagini înglobate.

<HR [WIDTH=nnn|nnn%] [ALIGN=left|center|right] [COLOR=“#rrggbb”|”culoare”] [SIZE=mm] [NOSHADE]>

c) Imagini grafice.

Imaginile care pot fi încărcate în documentul curent trebuie să fie sub format JPG sau GIF.

<IMG SRC=“URL-imagine” [ALIGN=left|right|top|middle|bottom] [ALT=“text-alternativ”] [BORDER=nn] [DYNSRC=“URL-dinamic”] [LOWSRC=“URL-rez-slaba”] [LOOP=nr-repet] [CONTROLS] [HEIGHT=mm] [WIDTH=ww] [HSPACE=hh] [VSPACE=vv] [ISMAP] [USEMAP]> [text]

Imagini cu legături hipertext

O facilitate a documentelor hipertext foarte utilizată în ultimul timp, atât pentru atractivitatea ei, cât și pentru posibilitățile sporite de sugerare și transmitere de informații, este crearea imaginilor care cuprind legături hipertext, legături care se activează prin click pe diferite regiuni ale imaginii. O asemenea imagine, datorită segmentării în regiuni, fiecare regiune fiind ancorarea unei legături hipertext, este numită hartă grafică (image map în engleză):

<IMG SRC=“fișier-imagine” USEMAP=“#nume-map”>

unde se remarcă trimiterea prin USEMAP la URL-ul care conține specificarea hărții. Este similar unei legături la o locație numită (începe cu #) dar numirea locației se face cu tag-ul MAP, descris în continuare, tag care introduce și specificarea regiunilor hărții.

<MAP NAME=“nume-map”>

descriere arie-1 [descriere arie-2 … [descriere arie-k]</MAP>

Descrierea unei arii cuprinde forma, coordonatele și legătura hipertext atașată. Toate acestea se marchează cu tag-ul AREA:

<AREA [SHAPE=“RECT”|“RECTANGLE”| “CIRC”| “CIRCLE”| “POLY”| “POLYGON”|“DEFAULT”] [COORDS=“coordonatele”] [HREF=“adresa URL”] [NOHREF] [ALT=“text-alternativ”] [TARGET=“nume-fereastra|_blank|_parent|_self|_top]>

Tabelarea datelor

Prezentarea datelor sub formă de tabele are importante avantaje atât prin claritate și sistematizare cât și prin posibilitățile de comparare oferite.[21] Deși tabelele pot fi construite în HTML și prin aranjarea directă a datelor, din tastatură și utilizarea unui font neproporțional (sau formatul PRE), există tag-uri dedicate cu ajutorul cărora tabelele pot fi formatate aproape la nivelul similar din procesoarele de texte.

Marcarea unui tabel se efectuează printr-un tag de introducere a tabelului și definire a atributelor globale, tag-ul TABLE, containerul respectiv conținând, apoi, definițiile pentru liniile și coloanele tabelului. Se va vedea că, de fapt, definiția elementară este asupra unei celule a tabelului, restul definițiilor precizând doar gruparea lor în linii/coloane.

2.4. JavaScript

Ce este JavaScript?

JavaScript este un limbaj de programare orientat pe obiecte, care vă permite să oferiți paginilor dumneavoastră un caracter mai dinamic și interactiv.

JavaScript a fost dezvoltat de Netscape Corporation pentru a fi utilizat în browserul Netscape Navigator. Un script JavaScript poate fi plasat direct în pagina Web, fiind executat de browser împreună cu documentul Web care-l conține.[16] Browserul Internet Explorer (versiunile mai noi decât IE 3.0) execută și el corect scripturile JavaScript.

JavaScript este un limbaj interpretat, ca și Perl, dar în cazul său nu trebuie să vă mai faceți griji în privința instalării unui interpretor deoarece acesta este inclus în browser. Codul sursă poate fi inclus în pagina Web sau poate fi pus într-un fișier separat care este referit din pagină.

Cum poate fi inclus un script în pagină?

Scripturile JavaScript pot fi incluse în pagina Web în două moduri:

prin intermediul etichetei <SCRIPT> </SCRIPT>

prin intermediul unei proceduri eveniment

Iată un exemplu foarte simplu în care în document este inclus un script care afișează în pagină textul "Buna ziua!" prin intermediul etichetei <SCRIPT>.

Unul dintre atributele etichetei <SCRIPT> este language prin care este specificat limbajul în care este scris scriptul, în cazul acesta valoarea atributului fiind "JavaScript".

O altă modalitate de a include de a include un script în pagină este salvarea acestuia ca un fișier extern și apelarea sa prin intermediul atributului src al etichetei <SCRIPT>.

Modul de execuție al scriptului

Scripturile integrate în cadrul paginilor sunt evaluate după ce încărcarea paginii s-a încheiat dar înainte ca aceasta să fie afișată. Pe de altă parte, scripturile stocate ca fișiere separate sunt evaluate înaintea tuturor scripturilor in-line (adică a celor incluse în pagină). Funcțiile definite în cadrul scripturilor nu sunt executate automat la încărcarea paginilor ci abia atunci când acestea sunt apelate, fie prin eticheta <SCRIPT> fie printr-o procedură eveniment.

Motivul este faptul că există browsere care nu recunosc și nu pot executa scripturile JavaScript. Dacă un document Web care conține cod JavaScript este încărcat într-un asemenea browser, în loc ca scriptul să fie executat, este afișat în pagină întregul cod, ceea ce nu este de dorit. Așa după cum știți, comentariile sunt ignorate de browser, astfel că includerea codului JavaScript între etichetele de comentariu va duce la ignorarea acestei părți a documentului.[12] Excepție fac browserele care recunosc JavaScript și care vor identifica prezența JavaScript și vor executa scriptul.

Am învățat până acum cum poate fi inclus codul JavaScript într-un document HTML. Să vedem, mai departe, cum putem folosi scripturile JavaScript pentru a face paginile mai atractive și a le îmbunătăți funcționalitatea.

Librăria JQuery

jQuery este o platformă de dezvoltare javascript, concepută pentru a ușura și îmbunătăți procese precum traversarea arborelui DOM în HTML, managementul inter-browser al evenimentelor, animații și cereri tip AJAX. jQuery a fost gândit să fie cât mai mic posibil, disponibil în toate versiunile de browsere importante existente, și să respecte filosofia "Unobtrusive JavaScript".[17] Librăria a fost lansată in 2006 de către John Resig.

Dar totuși apare întrebarea, care este cel mai rapid framework? La momentul în care a apărut JQuery toată lumea a început să-l compare cu Mootools, care a fost realizat de Massachusetts Institute of Technology. Mai există platforme foarte bune în următoarele două diagrame, am reprezentat cinci dintre ele, cele mai cunoscute. Dacă nu am utilizat nicio platformă până în momentul respectiv dar dorim să optăm pentru una, următoarele diagrame ne vor ajuta cu siguranță să alegem calea cea bună.

Prima diagramă reprezintă cât de rapide sunt framework-urile în browsere diferite:

După cum s-a putut observa din diagrama de mai sus Jquery și Mootools sunt pe primele locuri iar celălalte au rămas în urmă cu mult.

A doua diagramă reprezintă viteza framework-urilor:

În această ultimă diagramă Dojo a ieșit pe primul loc cu o viteză excepțională. În site-ul meu am optat pentru JQuery din mai multe considerente, în ultima vreme a ajuns la un nivel de dezvoltare foarte înalt și a devenit extrem de rapid, apar în fiecare zi plugin-uri noi care ușureză mult lucrul programatorilor, oferă tutoriale online cu exemple și ne oferă și sursa acestora. [22]Pentru noi rămâne doar implentarea în mod corect. Evident cei care sau obișnuit cu o altă platformă nu trebuie să renunțe la ea, fiecare are avantajul ei și dacă într-un anumit moment se pare că este destul de lentă față de alte platforme, ea poate deveni în viitor rapidă. Problema apare atunci când timpul de încărcare a paginii a crescut, acest lucru se datărează faptului că site-ul nostru este prea complex sau că au fost utilizate prea multe pluginuri. Eu am încercat să evit acest lucru.

2.5. CSS

Foile de stiluri HTML (Cascading Style Sheets) reprezintă o inovație în dezvoltarea World Wide Web, în ciuda faptului că ideea grupării elementelor de formatare a documentelor a apărut ceva mai demult. [3]Aplicarea stilurilor reprezintă o extindere importantă a posibilităților de design, evitând utilizarea de fișiere grafice mari ce determină încetinirea încărcării paginilor și manipularea lor greoaie.

Ce este un stil?

Un stil reprezintă o colecție de atribute ale textului și ale modului de aranjare a documentului care pot fi aplicate în mod selectiv unui document sau doar unei părți din acesta. Aceste atribute pot fi tipul de font, mărimea și grosimea acestuia, marginile, paragrafele și orice altceva ce poate influența aspectul textului în pagină. Gruparea lor în stiluri permite autorului să aplice aceeași colecție de atribute la diferite părți ale unui document.

Stilurile aplicate unui document HTML au multe avantaje pentru creatorii de pagini Web:

Oferă control crescut asupra aspectului și plasării textului în pagină

Reduc "învălmășeala" produsă de multitudinea de deschideri și închideri ale etichetelor care descriu elementele individuale ale textului

Procesul de modificare a diferitelor elemente din pagină se simplifică

De exemplu, dacă doriți ca titlurile dumneavoastră să aibă un alt tip de font decât textul obișnuit, să fie de dimensiune mai mare și scrise cu caractere îngroșate și italice, ar trebui să definiți aceste atribute de formatare pentru fiecare titlu în parte.[12] Folosind stilurile nu aveți nevoie decât să creați o singură definiție de stil care să conțină atributele de formatare dorite, pe care să o aplicați la fiecare titlu.

În plus, folosirea stilurilor reduce considerabil efortul depus atunci când doriți să aduceți modificări aspectului și aranjării elementelor din paginile dumneavoastră. În loc să parcurgeți fiecare document în parte și să faceți modificări asupra fiecărui element, nu mai este necesar să operați modificări decât asupra foii de stiluri care controlează aceste elemente.

Tipuri de foi de stiluri

Stilurile HTML pot fi aplicate într-o pagină Web în trei moduri:

Încapsulate (embedded): stilurile sunt incluse în documentul asupra căruia se aplică, și anume în secțiunea <HEAD> a documentului. Prin includerea lor în antetul documentului, stilurile rămân invizibile pentru vizitatorul paginii.

Legate (linked): stilurile sunt definite în fișiere separate de documentul HTML. Documentul face apel la foaia de stiluri prin intermediul etichetei <LINK>. Folosirea acestui tip de stiluri face posibilă utilizarea aceleiași foi de stil pentru documente diferite. De asemenea, este posibilă aplicarea mai multor foi de stiluri pentru același document.

In-line: stilurile sunt incluse ca atribute în cadrul etichetelor HTML din document. Aceasta înseamnă că ele vor afecta doar elementul asupra căruia sunt aplicate. Este o modalitate mai puțin utilizată deoarece contrazice principiul general al stilurilor, acela de a simplifica și de a face mai lizibil codul documentului HTML.

Sintaxa definițiilor de stil este, în general, aceeași, indiferent de modul cum sunt ele aplicate. Cele trei tipuri de stiluri pot fi, de asemenea, combinate în cadrul aceluiași document. Relațiile dintre diferitele tipuri de stiluri realizează efectul de cascadă care dă numele acestei metode.

Stiluri încapsulate

Crearea unui astfel de stil se realizează folosind eticheta

<STYLE> </STYLE>. Eticheta <STYLE> este o etichetă container, deci este obligatorie prezența etichetei de închidere </STYLE>. Între cele două etichete se introduc definițiile de stil. Eticheta de stil este plasată în antetul documentului adică în secțiunea <HEAD>.

Stiluri legate – foi de stiluri externe

Stilurile incluse în pagină se aplică elementelor prezente în respectivul document HTML, reducând dimensiunea codului și efortul de a defini fiecare element în parte. Această idee se poate extinde la nivelul mai multor documente care pot beneficia, toate, de aceleași stiluri, reunite într-o foaie de stiluri externă.

Avantajul folosirii foilor de stiluri externe este dublu. Pe de-o parte ele se pot aplica la nivelul mai multor documente HTML, realizând astfel o legătură de stil între ele, lucru deosebit de util la construirea unui site. Pe de altă parte, același document poate folosi foi de stiluri diferite, oferind vizitatorului posibilitatea de a opta pentru unul sau altul dintre ele, în funcție de propriile preferințe.

O foaie de stiluri este un fișier text care conține regulile de stil definite în aceeași manieră folosită la stilurile incluse în pagină. Odată creată o foaie de stiluri, ea trebuie salvată cu extensia .css. Foile de stiluri pot fi stocate într-un folder separat sau în același folder în care sunt plasate și documentele HTML.

Stiluri in-line

Spre deosebire de stilurile încapsulate și de foile de stiluri externe, stilurile in-line fac parte chiar din corpul documentului HTML. Ele se aplică prin folosirea atributului style în asociere cu etichetele HTML standard. Rețineți, deci, că style poate fi atât etichetă în sine cât și atribut al altor etichete.

Definițiile de stil in-line se aplică numai asupra elementelor incluse între etichetele care au asociat atributul style. Din acest motiv, dacă dorim să repetăm în alt loc din cuprinsul documentului aceleași definiții de stil, ele vor trebui repetate, încărcând astfel documentul HTML. Totuși, utilitatea stilurilor in-line este aceea că fiind definite chiar în cuprinsul documentului, definițiile lor sunt mai puternice decât cele din stilurile încapsulate sau externe. Dacă, de exemplu, am creat o foaie de stiluri pe care dorim să o aplicăm unui document, și dacă în cadrul acestui document avem un anumit element particular căruia dorim să-i dăm un alt aspect decât cel prevăzut în foaia externă, putem aplica acelui element un stil in-line care se va referi strict la el.

Observați că la stilurile in-line definițiile de stil sunt incluse între apostrofuri și nu între acolade, ca la celelalte tipuri de stiluri.

Atunci când lucrați cu documente HTML deja existente cărora doriți să le aplicați stiluri in-line, este recomandat să folosiți etichetele <DIV> și <SPAN>. Acestea vă permit să aplicați stilurile fără a afecta codul HTML deja existent sau aspectul paginii în browserele care nu suportă stiluri.

2.6. XAMPP

XAMP (Windows/Apache/MySQL/PHP, Python, (and/or) PERL) este o aplicatie open-source folosita ca si mediu de dezvoltare a aplicatiilor web care folosesc PHP si MySql. WAMP cuprinde: un server web(Apache), procesor de script(PHP), server de baze de date(Mysql).

Apache

Apache este un server HTTP (Hyper Text Transfer Protocol) multiplatforma. Rolul prinicipal al lui Apache este acela de a asculta cererile de resurse care ajung din rețea și de a răspunde acestora în conformitate cu cele prevăzute de protocolul HTTP. [13]Alegerea de web server s-a centrat pe Apache deoarece acesta este stabil, bogat în funcționalități, răspândit, precum și gratuit. În evaluare au fost luate în considerare caracteristicile în creștere pe care Apache le implementează.

Un alt motiv pentru care Apache este preferatul majorității utilizatorilor, este stabilitatea sa ieșită din comun. De asemenea, Apache este relativ rapid, însă această caracteristică depinde în mare parte de destinația sa. Dacă este folosit pentru a “servi” pagini statice (HTML), atunci Apache este un adevărat „glonț”. Dacă are de prelucrat sute de scripturi CGI, cu fiecare script interogând baza de date în mod sincron, serverul pierde puțin din viteză, ca orice alt server web. Mare parte din încetinire vine de la scripturi și nu de la serverul Apache.

Apache este principalul tip de server folosit pe Internet la ora actuala, constituind o componenta cheie a infrastructurii acestuia. Cea mai importanta caracteristica a unui server web este de traduce un URL intr-un nume de fisier si apoi sa-l trimita inapoi prin Internet, sau intr-un nume de program, apoi sa ruleze programul si sa transmita datele de iesire catre calculatorul sursa.

Apache este un server web foarte complex, in principal datorita numeroaselor facilitati pe care le ofera: fiabilitate (fiind un program open-source este permanent testat si imbunatatit), rapiditate, consum mic de resurse hardware, multitasking, virtual hosts, securitate sporita, ruleaza pe diferite platforme, usor de configurat. Printre tehnologiile suportate de Apache sunt: protocolul HTTP 1.0, autentificare HTTP, CGI, Perl, PHP, JSP, SSI, SSL.

2.7. PHP

PHP este un limbaj de programare destinat în primul rând Internetului, aducând dinamică unei pagini de web. Este unul din cele mai importante limbaje de programare web open-source și server-side. Numele PHP provine din limba engleză și este un acronim recursiv : Php: Hypertext Preprocessor. [4]Exemple faimoase de utilizare a acestui limbaj sunt PhpBB (forum), PhpNuke(CMS), chiar și MediaWiki, software-ul din spatele Wikipedia. Folosirea PHP poate fi văzută ca o alternativă gratuită la utilizarea unor limbaje comerciale cum sunt ASP de la Microsoft, ColdFusion de la Macromedia, sau chiar JSP de la Sun Microsystems.

Istoric

PHP a fost început în 1994 ca o extensie a limbajului server-side Perl, și apoi de o serie de CGI-uri compilate de către Rasmus Lerdorf, pentru a genera un curriculum vitae și pentru a urmări numărul de vizitatori ai unui site. Apoi a evoluat în PHP/FI 2.0, dar proiectul open-source a început să ia amploare după ce Zeev Suraski și Andi Gutmans, de la Technion au lansat o nouă versiune a interpretorului PHP în vara anului 1998, această versiune primind numele de PHP 3.0. Tot ei au schimbat și numele în acronimul recursiv de acum, până atunci PHP fiind cunoscut ca Personal Home Page Tools. Apoi Suraski și Gutmans au rescris baza limbajului, producând astfel și Zend Engine în 1999. În mai 2000 a fost lansat PHP 4.0, având la bază Zend Engine 1.0. Pe 13 iulie 2004 a fost lansat PHP 5, cu Zend Engine II, ce a adus și o orientare obiect mai pronunțată și suportând mai multe caracteristici ale acestui tip de programare.

Popularitate

PHP-ul este unul din cele mai folosite limbaje de programare server-side, conform unui studiu efectuat de Netcraft în aprilie 2002, apărând pe 9 din cele 37 milioane de domenii cercetate în studiu. De asemenea, există un grafic al creșterii folosirii PHP-ului pe site-ul oficial. Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor caracteristici:

Familiaritatea: sintaxa limbajului este foarte ușoară combinând sintaxele unora din cele mai populare limbaje Perl sau C;

Simplitatea: sintaxa limbajului este destul de liberă. Nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus într-un document executându-se între marcajele speciale;

Eficiența: PHP-ul se folosește de mecanisme de alocare a resurselor, foarte necesare unui mediu multiuser, așa cum este Web-ul;

Securitatea: PHP-ul pune la dispoziția programatorului un set flexibil și eficient de măsuri de siguranță;

Flexibilitatea: fiind apărut din necesitatea dezvoltării Web-ului, PHP a fost modularizat pentru a ține pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web, PHP-ul a fost integrat pentru numeroasele servere web existente: Apache, IIS, Zeus, server, etc.;

Gratuitatea: este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licența open-source a determinat adaptarea rapidă PHP-ului la nevoile Web-ului, eficientizarea și securizarea codului.

Utilizare

PHP este simplu de utilizat, fiind un limbaj de programare structurat, ca și C-ul, Perl-ul sau începând de la versiunea 5 chiar Java, sintaxa limbajului fiind o combinație a celor trei. Datorită modularității sale poate fi folosit și pentru a dezvolta aplicații de sine stătătorare, de exemplu în combinație cu PHP-GTK sau poate fi folosit ca Perl sau Python în linia de comandă. Probabil una din cele mai importante facilități ale limbajului este conlucrarea cu majoritatea bazelor de date relaționale, de la MySQL și până la Oracle, trecând prin MS Sql Server, PostgreSQL, sau DB2.

PHP poate rula pe majoritatea sistemelor de operare, de la UNIX, Linux, Windows, sau Mac OS X și poate interacționa cu majoritatea servereler web. Codul dumneavoastră PHP este interpretat de serverul WEB și generează un cod HTML care va fi văzut de utilizator (clientului -browserului- fiindu-i transmis numai cod HTML).

Ce reprezintă PHP ?

Numele de Hypertext Preprocessor sau PHP nu spune prea multe despre ce este. Este un limbaj asemănător cu C sau Perl, cu variabile, constante, șiruri, string-uri și alte tipuri de date, cu instrucțiuni de control și funcții, cu obiecte și alte lucruri necesare oricărui limbaj, care interpretează cod scris pe server și returnează cod HTML pentru pagini web. HTML este un format static, care este salvat în fișiere apelate din browsere pentru a fi vizualizate. Insa atunci când se dorește crearea dinamica a fișierului HTML trebuie folosit pe server un limbaj de scripting: PHP, Perl, ASP sau altele. Din paginile respective se pot interoga baze de date, folosi informații din alte fișiere sau chiar de pe alte site-uri, folosi emailuri sau alte date stocate în diverse modalități, iar în final se construiește o pagina HTML pasata și vizualizata în browser. PHP este transparent pentru vizitatori, ceea ce rezulta fiind HTML.[4]

Nu exista compilare în PHP, codul rămâne sub forma de sursa pe server fiind interpretat la fiecare cerere. [15]Se instalează librăriile PHP-ului care știu sa funcționeze cu serverul web oricare e acela, iar la cererea unui fișier cu extensia .php (de obicei, pentru ca pot fi folosite și alte extensii) va fi chemat PHP-ul care interpretează codul specific, dintre tagurile PHP-ului, rezultând HTML. Iar în browser-ul clientului nu ajunge deloc cod PHP ci doar HTML. Așa ca parolele sau codul dvs. rămâne de nemodificat sau nevăzut pe server. Principiul este la fel și cu alte limbaje pentru Internet, server-side: ASP, Perl, ColdFusion, etc.

PHP se executa doar pe server și nu interacționează cu user-ului decât sub forma de HTML sau JavaScript. Codul PHP este marcat cu câteva tag-uri speciale. Cel mai adesea este folosit:

<?php … cod PHP … ?>

Dar se poate scrie și doar

<? … cod PHP … ?>

sau <script language="php"> … cod PHP … </script>

sau chiar <% … cod PHP … %> la fel cu ASP.

Codul PHP poate fi amestecat oriunde în pagina HTML, doar trebuie sa rezulte cod HTML, cu structura unui document HTML.

Securitatea în PHP

PHP este un limbaj de programare web puternic, iar interpretorul său, fie că este inclus în serverul web ca un modul, sau executat separat ca binar CGI, este capabil să acceseze fișiere, să execute comenzi sau să deschidă conexiuni în rețea pe server. Aceste proprietăți fac ca totul ce este rulat pe server să fie implicit nesecurizat. PHP a fost proiectat în mod specific pentru ca să fie un limbaj mai securizat pentru scrierea programelor CGI decât Perl sau C, și cu o selectare corectă a opțiunilor de configurare la compilare și la rulare, dublate de o tehnică de programare corespunzătoare, PHP vă poate oferi combinația perfectă de libertate și securitate de care aveți nevoie.

Deoarece există multe modalități diferite de a utiliza PHP, există și multe opțiuni de configurare care îi controlează comportamentul. O gamă largă de opțiuni de configurare garantează posibilitatea utilizării PHP pentru o întreagă suită de întrebuințări, dar aceasta totodată înseamnă că pot exista combinații ale acestor opțiuni și ale configurațiilor de servere, care vor duce la crearea unui mediu de execuție nesecurizat.

Flexibilitatea configurațiilor în PHP este egală și rivalizează cu flexibilitatea codului-sursă. PHP poate fi utilizat pentru a construi aplicații complete pentru servere, cu toate avantajele unui utilizator shell, sau poate fi utilizat ca o simplă incluziune de partea serverului cu grad de risc redus, într-un mediu bine controlat. [19]Modul de construire a acestui mediu și cât de securizat este el depinde în mare măsură de programatorul PHP.

Folosind PHP ca pe un binar CGI este o opțiune pe care setup-urile, dintr-un anume motiv, nu doresc sa o configureze și sa o integreze în PHP ca pe un modul în serverul software (precum Apache), sau vor folosi PHP cu ajutorul diferitelor metode de CGI wrap pentru a crea medii securizate chroot și setuid pentru scripturi. Acest setup implica de obicei instalarea binarului PHP executabil în directorul cgi-bin din serverul web. Îndrumarul CERT » CA-96.11 nu recomanda plasarea oricărui tip de interpretor de acest gen în directorul cgi-bin. Chiar daca binarul PHP poate fi folosit ca un interpretor de sine stătător, PHP a fost conceput în așa fel încât sa anticipeze atacuri generate de un asemenea setup:

Accesarea fișierelor din sistem: http://host.ext/cgi-bin/php?/etc/passwd

Informația din URL de după semnul de întrebare (?) este pasata liniei de comanda ca argumente și interpretată de interfața CGI. De obicei interpretoarele deschid și executa fișierul specificat ca prim argument în linia de comanda.

Când este apelat ca un binar CGI, PHP refuza sa interpreteze argumentele din linia de comanda.

Putem accesa orice document de pe server: http://host.ext/cgi-bin/php/secret/doc.html

Informațiile introduse în URL după numele binarului PHP, /secret/doc.html sunt de obicei utilizate pentru a specifica numele și calea câtre fișierul care trebuie deschis de către interpretorul CGI. De obicei directivele din configurația unui server web (Apache: Action) sunt folosite pentru a redirecta cererile câtre documente ca http://www.host_victima.ro/secret/script.php câtre interpretorul PHP. Cu acest setup, serverul web verifica mai întâi permisiile de acces câtre directorul /secret, și după aceea creaza cererea de redirecționare câtre http://www.host.ro/cgi-bin/php/secret/script.php. Din păcate, daca cererea originala se face sub aceasta forma nu sunt făcute nici un fel de verificări de câtre serverul web câtre fișierul /secret/script.php, ci numai pentru fișierul /cgi-bin/php. In acest fel, orice utilizator care poate executa /cgi-bin/php, poate accesa automat orice director sau fișier protejat de pe server.

Când PHP este utilizat ca modul în Apache, el moștenește permisiile default Apache (de obicei acelea ale utilizatorului "nobody"). Acest fapt are un impact mare asupra securității sistemului. De exemplu, daca folosiți PHP pentru a accesa o baza de date, și aceasta nu are management de acces inclus, va trebui sa faceți în așa fel încât aceasta sa fie accesibila utilizatorului "nobody". Aceasta înseamnă ca oricine cu drepturi default "nobody" poate acționa și modifica baza de date, fără sa fie nevoit sa introducă username sau parola. Este posibil ca un robot de indexare web sa acceseze accidental panoul de administrare al bazei de date (ex. phpMyAdmin) și sa modifice sau sa șteargă toate datele. Va puteți proteja cu ajutorul sistemului de autorizație folosit de Apache, sau printr-un model de acces personalizat folosind LDAP, fișiere tip .htaccess , etc. pe care sa le introduceți în scripturile PHP create.

Adesea, după ce politica de securitate a fost stabilita, iar utilizatorul PHP (in acest caz, utilizatorul Apache) prezintă risc redus fata de sistem, iese la iveala faptul ca PHP este restricționat în a scrie în fișierele și directoarele utilizatorilor, sau nu poate accesa și schimba anumite baze de date. De asemenea, a fost securizat asemănător în a scrie fișiere bune și rele, sau inserarea de tranzacții benefice sau dăunătoare bazelor de date.

O greșeală de securitate frecventa este ca atunci când se ajunge în acest moment, sa se dea permisii de root serverului Apache, sau sa se escaladeze voit privilegiile din acesta, pentru a facilita anumite acțiuni.

Escaladarea privilegiilor utilizatorilor Apache câtre root este deosebit de periculoasa și poate duce la compromiterea întregului sistem, așa ca sudo'ing, chroot'ing, sau alte modalități de a rula root nu ar trebui luate în considerare de câtre administratorii de sistem.

Exista și soluții mai simple. Utilizând open_basedir puteți controla și restricționa ce directorii doriți, în care poate avea acces PHP. In plus puteți seta zone apache-only, pentru a restricționa toate activitățile non-user, sau non-system, fișiere venite via web.4

2.8. MySQL

Istoric

Un sistem de gestiune a bazelor de date relaționale (SGBDR) este un instrument esențial în numeroase medii, de la utilizările mai tradiționale în contexte de afaceri, cercetare și învățământ și până la aplicațiile mai recente, cum ar fi operarea motoarelor de căutare din Internet. Totuși, în ciuda importanței unei baze de date performante pentru gestiunea și accesul la resursele informaționale, aceasta s-a dovedit a fi dincolo de resursele financiare a numeroase instituții. Din punct de vedere istoric, sistemele de baze de date au constituit o propunere costisitoare, firmele distribuitoare percepând onorarii substanțiale atât pentru program cât și pentru asistența necesara, iar deoarece motoarele de baze de date prezentau frecvent cerințe hardware substanțiale pentru a putea rula cu performanțe câț de cât rezonabile, costurile erau și mai mari.

În ultimii anii, situația s-a schimbat, atât din punct de vedere al echipamentelor; cât și din acela al programelor. Calculatoarele personale au devenit necostisitoare, dar puternice; pe de altă parte, a apărut o întreagă mișcare în direcția scriem unor sisteme de operare cu performanțe ridicate pentru aceste calculatoare, sisteme disponibile la prețul unui compact disc ieftin, sau chiar gratuit, prin Internet.[18] Acestea includ numeroase sisteme derivate din BSD UNIX (FreeBSD, NetBSD, OpenBSD), precum și diferite forme de Linux (RedHat, Caldera, LinuxPPC, pentru a numi doar câteva).

Producția de sisteme de operare gratuite care să permită utilizarea calculatoarelor personale la maximum de capacitate s-a desfășurat în mod concertat cu dezvoltarea unor
instrumente disponibile gratuit, cum ar fi gcc, compilatorul GNU de C, fiind în mare
măsură posibilă datorita acestora din urmă. Aceste eforturi de a pune programele la dispoziția oricărui doritor au avut ca rezultat ceea ce se numește acum mișcarea Open
Source și au generat multe programe importante. Cel mai solicitat site FTP din lume, și
anume ftp.cdrom.com, rulează FreeBSD. Apache este cel mai folosit server Web de
Internet, Alte succese ale inițiativei Open Source sunt limbajul de scripting de uz general Perl și PHP, un limbaj a cărui popularitate este într-o creștere rapidă, datorita ușurinței cu care permite scrierea paginilor Web dinamice. Toate acestea contrastează cu soluțiile „de firmă", care vă obligă sa folosiți produse costisitoare, create de fabricanți care nici măcar nu furnizează codul sursă.

Programele de baze de date au devenit și ele mai accesibile. Sistemele de baze de date pre-cum Postgres și mSQL au devenit disponibile gratuit sau la un preț scăzut. Mai recent,
producătorii comerciali, precum Informix și Oracle, au început să-și ofere programele
gratuit pentru sisteme de operare precum Linux. (Totuși, aceste din urmă produse sunt
livrate, în general, numai în formă binară, fără suport, ceea ce le limitează utilitatea.)

Unul din noii veniți în domeniul bazelor de date cu preț scăzut sau gratuite este MySQL, un sistem client/server de gestiune a bazelor de date relaționale originar din Scandinavia. MySQL include un server SQL, programe client pentru accesul la server, instrumente administrative și o interfață de programare pentru scrierea propriilor dumneavoastră programe.

Bazele sistemului MySQL au fost puse în 1979, o dată cu instrumentul pentru baze de date UNIREG, creat de Michael "Monty" Widenius pentru compania suedeză TcX. In 1994, TcX a început să caute un server SQL pentru a-1 utiliza la dezvoltarea aplicațiilor Web. Compania a testat unele servere comerciale, dar toate s-au dovedit a fi prea lente pentru tabelele de mari dimensiuni ale firmei. De asemenea, compania a examinat mSQL, dar acestuia îi lipseau anumite caracteristici obligatorii pentru TcX. În consecință, Monty a început să programeze un server nou. Interfața de programare era proiectată în mod explicit pentru a fi similară celei folosite de mSQL, deoarece pentru mSQL erau disponibile numeroase instrumente gratuite, iar prin utilizarea unei interfețe similare aceleași instrumente puteau fi folosite pentru MySQL, cu un efort de portare minim.

In 1995, David Axmark de la Detron HB a început să facă presiuni pentru ca TcX să lanseze MySQL pe Internet. De asemenea, David lucra la documentație și la a determina MySQL să construiască folosind utilitarul GNU Configure. MySQL 3.11.1 a fost dat lumii întregi în 1996, sub formă de distribuție binară pentru Linux și Solaris. In prezent, MySQL funcționează pe mult mai multe platforme și este disponibil atât în formă binară, cât și sursă.

MySQL nu este un proiect Open Source, deoarece este necesară o licență în anumite condiții. Totuși, MySQL se bucură de o amplă popularitate în comunitatea Open Source, deoarece termenii de licență nu sunt foarte restrictivi. (în esență, MySQL este în general gratuit, dacă nu doriți să obțineți profit prin vânzarea sistemului sau a unor servicii care necesită utilizarea acestuia.)

Popularitatea sistemului MySQL nu este limitată la comunitatea Open Source. Da, rulează pe calculatoare personale (într-adevăr, o bună parte din programarea cu MySQL are loc pe sisteme Linux ieftine). Dar MySQL este portabil și rulează pe sisteme de operare comerciale (precum Solaris, Irix și Windows) și pe echipamente care merg până la servere de întreprindere. În plus, performanțele sale rivalizează cu acelea ale oricărui sistem de baze de date cu care doriți să îl comparați și poate manipula baze de date de mari dimensiuni, cu milioane de înregistrări.

MySQL apare foarte clar în imaginea care se desfășoară dinaintea ochilor noștri: sisteme de operare disponibile gratuit, care rulează pe echipamente puternice, dar necostisitoare, punând la dispoziția unui număr de oameni mai mare ca oricând o putere substanțială de prelucrare a datelor și alte caracteristici, pe o varietate de sisteme mai largă ca oricând. Această „coborâre" a barierelor economice în ceea ce privește prelucrarea automata a datelor pune soluții puternice pentru baze de date la dispoziția unui număr fără precedent de mare de persoane și instituții. Instituții care în trecut se mărgineau să viseze la a exploata în folos propriu puterea unui SGBDR cu performanțe ridicate au acum această posibilitate, la un preț foarte redus. Utilizarea bazelor de date este tot mai frecventă și la nivel individual. Oameni care nu se gândeau niciodată că vor folosi baze de date încep să ia în considerare tot felul de utilizări ale acestora, din moment ce procurarea unui sistem de baze de date este facilă – de exemplu, stocarea și accesul la rezultatele unor cercetări genealogice, urmărirea și întreținerea colecțiilor de diferite tipuri (fluturi, mărci poștale, cărți de joc cu jucători de baseball etc.), asistența în demararea unei afaceri sau furnizarea de posibilități de căutare pentru situri Web personale.

Securitatea bazelor de date

In zilele noastre, bazele de date sunt componente esențiale ale aplicațiilor web, dând posibilitatea acestora de a servi conținut dinamic. Datorita faptului ca informații secrete sau cu caracter confidențial se stochează adesea intr-o baza de date, va trebui sa luați în considerare protejarea bazelor de date.

Pentru a primi sau trimite orice informație, trebuie sa te conectezi la baza de date, sa trimiți un query valid, sa iei rezultatele, și sa închizi conexiunea. Recent, cel mai folosit limbaj query pentru asemenea tip de interacțiune este Structured Query Language (SQL). Vezi cum un atacator poate sa manipuleze un query SQL.

După cum probabil ați presupus, PHP nu va poate proteja bazele de date în sine. Următoarele secțiuni tind sa fie o introducere în noțiunile de baza ale accesării și manipulării bazelor de date, cu scripturi PHP.

Păstrați în minte următoarea regula: securitate maxima. Cu cat creșteți masurile de protecție asupra bazelor de date, cu atât mai putina este probabilitatea ca un atacator sa reușească sa sustragă date importante sau sa abuzeze de ele. Încercați ca structura și designul bazei de date sa fie cat mai eficient, după care va puteți pune problemele legate de securitate.

Designul bazelor de date

Primul pas este întotdeauna crearea bazei de date, numai în cazul în care nu doriți sa folosiți alta de pe alt server. Când o baza de date este creata, ea este desemnata unui anume utilizator, care a executat comanda de creare. In general numai proprietarul (sau superuserul) pot face orice cu obiectele din acea baza de date, iar pentru a lăsa și alți utilizatori sa o folosească, ei trebuie sa aibă privilegii.

Aplicațiile pe care le construiți nu ar trebui sa se conecteze niciodată la o baza de date cu privilegii de administrator sau superuser, pentru ca acești utilizatori pot executa orice fel de query, de exemplu, modificarea schemei (ștergerea tabelelor) sau ștergerea întregului conținut.

Se pot crea diferiți useri de baze de date pentru fiecare aspect al aplicației, cu drepturi limitate, în funcție de task-urile pe care le îndeplinesc. Se pot da numai privilegiile strict necesare, și evitați ca același user sa interacționeze cu mai multe baze de date. [2]Aceasta înseamnă ca daca un intrus va avea privilegii la baza de date, acesta va avea privilegii limitate și nu va putea sa facă decât schimbări cu impact asupra aplicație dumneavoastră.

Este bine sa nu implementați toate soluțiile prin prisma scriptului web, în schimb încercați sa creați o schema de baza de date cat mai competitiva, din care sa extrageți simplu informația. Daca sistemul evoluează, noi porturi vor fi folosite pentru a manipula bazele de date, și va trebui sa re-implementați scripturile pentru fiecare baza de date în parte.

Se poate sa doriți sa va conectați la baza de date folosind encripția SSL pentru a spori siguranța datelor, sau puteți folosi ssh pentru a cripta datele dintre clienții din rețea și serverul de baze de date. Daca este folosita una dintre aceste metode atunci monitorizarea traficului și accesul la informațiile sensibile despre bazele de date ar fi foarte dificila pentru un atacator.

Motivul alegerii MySQL

Dacă suntem în căutarea unui sistem gratuit sau necostisitor de gestiune a bazelor de date, puteți alege din mai multe opțiuni: MySQL, mSQL, Postgres, unui din motoarele gratuite (dar fără suport) furnizate de producătorii comerciali și așa mai departe. Când comparam MySQL cu alte sisteme de baze de date, ne gândim la ceea ce este cei mai important pentru noi. Performanță, suport, caracteristici (conformitate cu SQL, extensii etc.), condiții și restricții de licențiere, preț; toate acestea constituie factori care trebuie luați în considerare. Date fiind aceste considerații, MySQL are de oferit numeroase caracteristici atractive:

• Viteza. MySQL este rapid. Programatorii pretind că MySQL este cel mai rapid sistem de baze de date pe care îl puteți găsi. Putem verifica această afirmație vizitând http://www.mysql.com/benchmark.html, o pagina de comparație a performanțelor din șirul Web MySQL.

• Ușurință în utilizare. MySQL este un sistem de baze de date cu performanțe ridicate, dar relativ simplu, a cărui configurare și administrare sunt mult mai simple decât în cazul sistemelor mai mari.

• Cost. MySQL este gratuit pentru majoritatea utilizărilor interne.

• Suport pentru limbaje de interogare. MySQL înțelege SQL (Structured Query Language – limbaj de interogare structurat), limbajul preferat al tuturor sistemelor moderne de baze de date. De asemenea, puteți avea acces la MySQL folosind aplicații care acceptă ODBC (Open Database Connectivity), un protocol de comunicație cu bazele de date creat de Microsoft.

• Caracteristici. La server se pot conecta mai mulți clienți simultan. Clienții pot folosi mai multe baze de date simultan. Puteți obține acces Ia MySQL în mod interactiv, folosind numeroase interfețe care vă permit sa introduceți interogări și să vizualizați rezultate: clienți în linie de comandă, browsere Web sau clienți X Window System. De asemenea, este disponibila o varietate de interfețe de programare pentru limbaje precum C, Perl, Java, PHP și Python. Astfel, avem opțiunea de a folosi programe client preambalate sau de a scrie propriile programe client pentru aplicații personalizate.

• Conectivitate și securitate. MySQL poate fi folosit integral în rețele, iar bazele de date sunt accesibile de oriunde din Internet, deci putem partaja datele cu oricine, oriunde. Dar MySQL are controlul accesului, astfel încât persoanele care nu au dreptul să ne citească datele nu vor avea această posibilitate.

• Portabilitate. MySQL rulează pe numeroase varietăți de UNIX, precum și pe alte sisteme non-UNIX, ca Windows și OS/2. MySQL rulează pe echipamente de la calculatoare de birou la servere cu performanțe ridicate.

• Distribuție liberă. MySQL este ușor de obținut; pentru aceasta, folosim browserul de Web. Dacă nu înțelegem funcționarea unei componente sau suntem curioși cu privire la un algoritm, putem procura codul sursă și îl putem examina. Dacă nu ne place modul de funcționare a unei componente, îl putem modifica.[13]

Baze de date în MySQL și PHP

Mai înainte de a porni construcția unor script-uri pentru baze de date, ar trebui să avem o bază de date în care să plasăm informații și din care să citim. In această lecție vom vedea cum cream o bază de date în MySQL și cum o pregătim pentru date. Ca un exemplu, vom crea o bază de date de tip carte de adrese de contact.

Bazele de date MySQL au un sistem de inițializare standard (un setup). Este vorba de o bază de date, compusă din tabele, oarecum separate, conținând diferite câmpuri, etc. chiar dacă sunt parte dintr-o bază de date. Fiecare tabelă conține înregistrări care sunt făcute din câmpuri.

Procesul de instalare a unei baze de date MySQL diferă de la o platformă la alta. In esență este vorba peste tot de un nume al bazei de date, un nume de utilizator (cont) și o parolă. Aceste informații sunt cerute pentru conectarea la baza de date.

Dacă aveți pachetul PHPMyAdmin (sau un program similar) instalat, atunci puteți să intrați acolo și să vă conectați introducând contul (numele de utilizator) și parola. Dacă nu aveți așa ceva, atunci trebuie să faceți întreaga administrare a bazelor de date folosind script-uri PHP (și o puteți face).

Crearea unei Tabele

Mai înainte de orice altceva cu baza de date, trebuie să vă creați o tabelă. O tabelă este o secțiune a bazei de date pentru memorarea unor informații structurate (legate). Intr-o tabelă vom defini diferite câmpuri care vor fi folosite în acea tabelă. Din cauza acestei construcții, aproape toate centrele cu baze de date trebuie să fie satisfăcute folosind doar o bază de date.

Crearea unei tabele în PHPMyAdmin este simplă, scrieți numele, selectați numărul de câmpuri și &Quot;apăsați" butonul (click).[21] Ajungeți atunci la un ecran setup în care trebuie să creați câmpurile pentru baza de date. Dacă folosiți un script PHP pentru a crea propria bază de date, iar completa creere și inițializarea vor fi făcute îtr-o singură comandă.

Câmpuri

Există o largă varietate de câmpuri și de atribute disponibile în MySQL și vom discuta doar câteva din ele:

Tipul câmpului Descriere

TINYINT Număr Intreg mic

SMALLINT Număr Intreg mic

MEDIUMINT Număr Intreg

INT Număr Intreg

VARCHAR Text (maximum 256 caractere)

TEXT Text

Acestea sunt doar câteva dintre câmpurile disponibile. O căutare pe Internet ne poate furniza lista cu toate tipurile de câmpuri permise.

Crearea unei Tabele cu PHP

Să creăm o tabelă din PHP este ceva mai dificil decât cu MySQL. Avem de parcurs următorii pași:

CREATE TABLE nume_tabel {

Fields}

Câmpurile sunt definite după cum urmează:

fieldname type(length) extra info,

Ultimul câmp introdus nu poate include nici o virgulă.

Conectarea la o bază de date

Primul lucru care trebuie făcut, mai înainte de a putea face ceva, este conectare la baza de date MySQL. Acesta este un pas foarte important, pentru că, dacă nu suntem conectați, comenzile către baza de date vor eșua.

Practic, pentru a folosi o bază de date trebuie să precizăm numele de utilizator (username), parola (password) și numele bazei de date :

$username="nume_utilizator";

$password="parola";

$database="numele_bazei_de_date";

Desigur, aici s-ar putea discuta dacă nu-i riscant să păstrăm parola într-un fișier. Nu trebuie să vă alarmați, însă, deoarece sursa PHP este prelucrată de server înainte de a fi trimisă navigatorului, astfel încacirc;t este imposibil pentru orice utilizator să vadă scriptul.

Avem nevoie de o comandă care să lanseze conexiunea la baza de date:

mysql_connect(localhost,$username,$password);

Această linie spune PHP-ului să se conecteze la serverul de baze de date MySQL la 'localhost' (localhost se numește serverul pe care rulează PHP-ul. In afara cazului în care gazda Web indică altceva, vom folosi localhost) folosind numele de cont memorat în $username și parola din $password.

Mai înainte de a discuta cum lucrăm cu baza de date, vom vedea încă o comandă:

mysql_close();

Aceasta este o comandă foarte importantă care închide conexiunea cu serverul de baze de date. Scriptul va rula încă, dacă nu includem această comandă, iar prea multe conexiuni MySQL deschise pot cauza probleme serverului web. Este un obicei bun să includem comanda de închidere de mai sus după ce am introdus toate comenzile către baza de date, pentru a menține platforma în bună stare.

Selectarea bazei de date

După ce ne-am conectat la severul de baze de date, trebie să selectăm baza de date pe care vrem s-o folosim. Trebuie să fie o bază de date la care avem acces, cu respectivul nume de utilizator. Se folosește următoarea comandă:

@mysql_select_db($database) or die( "Baza de date nu poate fi selectata");

Aceasta spune PHP-ului să selecteze baza de date specificată în variabila $database (pe care am definit-o mai înainte). Dacă conexiunea nu se poate realiza procesul (execuția script-ului) se oprește afișând textul: “Baza de date nu poate fi selectata”

Această parte suplimentară 'or die' este bună pentru ieșire, chiar dacă nu asigură decât un minim control al erorii.

Execuția comenzilor

După conectarea la server și selecția bazei de date dorite, putem începe execuția comenzilor pe server. Există două moduri de a executa o comandă. Prima revine pur și simplu la introducerea comenzii în PHP. Asta merge atunci când nu apar rezultate ca urmare a execuției comenzii. Cea de a doua variantă este să definim comanda ca o variabilă. Asta va atribui variabilei rezultatele operației.

În această lecție vom folosi prima cale, deoarece nu așteptăm răspuns de la baze de date. Comanda va arăta cam așa:

mysql_query($query);

Folosirea acestei forme a comenzii este utilă pentru că repetăm pur și simplu aceiași comandă iarăși și iarăși fără a fi nevoie să memorăm altele. Tot ce avem de făcut este să schimbăm variabila.

2.9. APACHE

Apache HTTP Server este un web server pentru sisteme ca și Unix, Microsoft Windows, Novell NetWare și alte sisteme de operare . Apache este remarcabil pentru ca joaca un rol cheie în creșterea inițială a Internetului din lumea întreagă. Când a fost pentru prima data eliberat, Apache a fost singura sursa alternativa viabila la Netscape Communications Corporation web server ( în mod curent cunoscut ca și Sun Java System Web Server ). De atunci a evoluat la rivalul Unix – servere web în termeni de funcționalitate și performanta. Din Aprilie 1996 Apache a fost cel mai popular server HTTP din întreaga lume a internetului, servind ca platforma de referință împotriva căreia alte server web sunt intenționate și apreciate; ca și în Ianuarie 2007, Apache a servit la 60% din toate website-urile. Apache continua sa fie cel mai popular server web care este utilizat.

Apache este dezvoltat și menținut de o comunitate deschisa de dezvoltatori de aplicații sub auspiciile Fundației Apache Software . Eliberata sub licența Apache, serverul Apache HTTP este un program gratis .

Prima versiune a web serverului Apache a fost creată de Robert McCool, care a fost serios implicat în Centru Național pentru Supercomputing Applications web server, cunoscut simplu ca și NCSA HTTPd . Când Rob a părăsit NCSA la mijlocul anului 1994 a lăsat o varietate de modele pentru a îmbunătăți circulația prin email. Rob McCool nu a fost singur în eforturile sale. Mulți alți dezvoltatori de aplicații au ajutat la formarea originalului "Apache Group": Brian Behlendorf, Roy T. Fielding, Rob Hartill, David Robinson, Cliff Skolnick, Randy Terbush, Robert S. Thau, Andrew Wilson, Eric Hagberg, Frank Peters, și Nicolas Pioch. FAQ afirma pe site-ul oficial al proiectului: “Numele Apache a fost ales din respect pentru Tribul nativ indian American al apașilor“, bine cunoscut pentru îndemânările superioare în strategia lor și inepuizabila anduranță. Cea mai răspândită interpretare este aceea ca numele provine din faptul ca atunci când a apărut la începutul anului 1995, web serverul a constat intr-un set de patch-uri la codul de baza al NCSA HTTPd 1.3 și de aceea a fost "a patchy" server .Aceasta a fost explicația inițială a website-ului acestui proiect.

Versiunea 2 a serverului Apache a fost o rescriere substanțială din codul Apache 1.x, cu o mare concentrare asupra ulterioarei modulații și dezvoltarea unei rețele portabile ,Apache Portable Runtime. Partea centrala din Apache 2 x are mai multe intensificări majore fata de Apache 1.x . Acestea include filetarea UNIX, suport mai bun pentru platforme non-UNIX , (cum ar fi Microsoft Windows), un nou Apache API, și suport IPv6 . Prima eliberare a Apache 2 a fost în Martie 2000 cu prima disponibilitate generala în Mai 2002.

Capitolul 3. Prezentarea si implementarea aplicației

3.1 Baza de date utilizată

Baza de date folosită este MySQL. Pentru o mai ușoară manipulare a bazei de date, utilitarul MySQL face o treabă bună, putând gestiona rapid și eficient datele, tabelele și întreaga bază de date.[10] Pentru conectarea la baze de date mysql, un fișier .php ce conține funcțile necesare conectării și care se numește config.php a fost folosit.

În cele ce urmează o sa va prezint câteva dintre tabelele utilizate obesrvându-se si proprietațile câmpurilor:

Tabelul „User” – useri care se conectaează la admin

Tabelul „Produse” – produsele care sunt introduse din admin

Tabelul “Orders” – comenzile care se fac de pe site

Tabelul “Poduct Images” – imaginile de la fiecare produs

Tabelul “Category” – categoriile de produse

Tabelul “Ratings” – rainting-urile puse de vizitatori

Tabelul “Templates” – template-urile pentru structura site-ului

Tabelul “Formmails” – mail-urile care se trimit de pe formularul de contact

3.2 Prezentarea aplicației

Aplicația este alactuită din 2 module

Modulul de administrare – în acest modul se fac toate setările aplicație, se introduc produsele, se gestionează paginile, se vizualizează comenzile, se introduce continutul.

Interfața utilizator în această secțiune se vizualizează produsele, continutul, se efectuează comanda, se poate contacta propritarul.

În cele ce urmează o sa prezint cele 2 module dupa cum urmează:

Modulul de administrare

Se acesează în browserul dumneavoastră urmatoarea adresa: http://catalog-licenta.co.nf/admin

La introducerea aceste adrese va apare modulul de logare:

Modulul de logare la sectiunea admin

După introducerea user-ului si parolei se deschide pagina principală a modulului admin:

Pagina principală de admin

În partea dreaptă se află structura navigațională a site-ului, de unde se editează si adaugă pagini noi la meniul de pe site.

În partea stângă se află lista cu module active din site: modulul de produse, modulul de comenzii, modulul de formulare de contact si cel de șabloane.

Pentru a edita o pagină din structura navigațională se selectează pagina dorită, iar apoi se selectează Editează / vizualizează pagina, iar pe ecran o sa apară modulul de editare:

Pagina de administare a unei pagini din meniu

Modulul de Șabloane este acela unde se editează html-ul si css-ul, se accesează selectând modulul “Șabloane” din meniul principal:

Modulul Șabloane

Modulul Formmail este acela în care se contorizează si vizualizează mail-urile trimise de catre vizitatori propritarului site-ului:

Interfața utilizator

În această pagină se prezintă site-ul. De aici se pot accesa celelalte meniuri, dând click pe fiecare dintre acestea.

În meniul din stânga sunt afișate categoriile de laptopuri disponibile.

În meniul „Tractoare” sunt afișate toate tractoarele disponible pe site, alături de titlu, descriere si prețul acestora:

Pagina de oferte afișeaza acele tractoare care sut setate din admin ca fiind produse la ofertă:

Pagina “Cum cumpar”, este o pagină cu continut, in care se explică utilizatorului cum se cumpara pe acest site:

Pagina de contact, in acestă pagină există un form cu ajutorul caruia utilizatorul poate lua legătura cu proprietarul:

Cap 4 CONCLUZII

O aplicație online (sau aplicație web) este accesibilă printr-un browser pe internet sau într-o rețea locală (un intranet). Punctul forte al unei aplicații web este ca poate fi folosită de un număr infinit de utilizatori, fara ca acestia sa trebuiască sa o instaleze și configureze pe propriul calculator. Un exemplu de aplicație online este webmailul sau de ce nu, aplicația implementată de mine ca lucrare de finalizare a studiilor.

Prin intermediul unei aplicații online se pot stoca, gestiona, modifica, trimite, primi și procesa informația folosind conectivitatea internerului, folosind mai mulți utilizatori, mai multe stații de lucru și mai multe procese în același timp. Deoarecere aplicația este bazată pe internet nu există incompatibilitați hardware, viruși, aplicația si informația fiind stocate pe un server securizat.

ANEXE

ANEXA I config.php

<?php

// PATHS

$_CONFIG["site_root_path"] = "/";

$_CONFIG["site_root_dir"] = dirname(__FILE__) . "/";

$_CONFIG["host"] = "http://catalogonline.weblogic.ro";

$_CONFIG["site_root_url"]=$_CONFIG["host"].$_CONFIG["site_root_path];

$_CONFIG["include_dir"] = "include/";

$_CONFIG["modules_dir"] = "modules/";

$_CONFIG["user_dir"] = "user_files/";

$_CONFIG["lang_dir"] = "lang/";

$_CONFIG["error_pages_dir"] = "error_pages/";

$_CONFIG["temp_dir"] = "tmp/";

// DATABASE CONNECTION

$_CONFIG["db_host"] = "localhost";

$_CONFIG["db_port"] = "3306";

$_CONFIG["db_name"] = "catalogo_main";

$_CONFIG["db_user"] = "catalogo_user";

$_CONFIG["db_password"] = "********";

// DEBUG

$_CONFIG["debug"] = true;

$_CONFIG["log_dir"] = dirname(__FILE__) . "/logs/";

$_CONFIG["debug_log_file"] = "debug.log";

$_CONFIG["log_file"] = "site.log";

// LANGUAGE

$_CONFIG["lang"] = "ro";

$_CONFIG["lang_site"] = "ro";

$_CONFIG["display_language_prefix_when_single_language"] = false;

// PRIVATE VARIABLES PREFIX

$_CONFIG["private_prefix"] = "_wm_";

$_CONFIG["admin_skin"] = "webmotor";

$_CONFIG["admin_skin"] = "webmotor";

$_CONFIG["modules_order"] = "productcatalog,imagegallery,afis,filemanager,users,templates,cache,edit,formmail,imglib,languages,menu,navigation,records,orders";

$_CONFIG["top_menu_limit"] = 8;

require_once( $_CONFIG["site_root_dir"] . "prepend.php" ); // DO NOT DELETE THIS LINE

?>

ANEXA II upload_aid.php – functia de resize a pozelor

<?php

require_once( api_get_include_dir() . "file_aid.php" );

class FileUploadException extends Exception

{

public function __construct( $message, $code = 0 )

{

parent::__construct( $message, $code );

}

public function __toString()

{

return __CLASS__ . ": [{$this->code}]: {$this->message} \n";

}

}

class FileUpload

{

public $files_dir; // must end with a "/"

public $form_varname;

public $max_filesize = 0; // in bytes

public $required = false; // throw on no-file ?

public $allowed_extensions = array(); // dot is included in extension

public $image_files_extensions = array( ".bmp", ".png", ".gif", ".jpg", ".jpeg", ".ico" );

public $video_files_extensions = array( ".avi", ".mov", ".mpg", ".mpeg", ".rv", ".asx", ".wmv" );

public $office_files_extensions = array( ".txt", ".doc", ".dot", ".xls", ".xlt", ".ppt", ".pot", ".rtf", ".mdb" );

public $audio_files_extension = array( ".wav", ".mp3", ".mid", ".mod", ".wma", ".ra", ".ram", ".ogg" );

public $file_rename_method; // options:

// "same_as_original": if not available, will overwrite

// "increment_counter": e.g. if uploaded 'file.txt' is not available, rename to 'file (1).txt'

// "random": but keeps extension. e.g.: 98237ad398d.jpg

// "custom": use filename from $custom_filename variable

public $custom_filename;

private $original_filename;

private $original_filesize;

private $uploaded_filename;

public function __construct( $files_dir, $form_varname )

{

$this->files_dir = $files_dir;

$this->form_varname = $form_varname;

$this->file_rename_method = "same_as_original";

}

public function process()

{

if( isset( $_FILES[$this->form_varname] ) && $_FILES[$this->form_varname]["name"] != "" )

{

$this->original_filename = $_FILES[$this->form_varname]["name"];

$this->original_filesize = $_FILES[$this->form_varname]["size"];

$tmp_filepath = $_FILES[$this->form_varname]["tmp_name"];

$ext = get_extension( $this->original_filename );

if( count( $this->allowed_extensions ) > 0 )

{

// check for extension validity

if( !in_array( strtolower( $ext ), $this->allowed_extensions ) )

throw new FileUploadException( /*!*/"Uploaded file type is not allowed" );

}

if( $this->max_filesize > 0 )

{

// check for filesize validity

if( $this->original_filesize > $this->max_filesize )

throw new FileUploadExceptioin( /*!*/"Uploaded file is too large" );

}

switch( $this->file_rename_method )

{

case "same_as_original":

$new_filename = $this->original_filename;

break;

case "increment_counter":

$new_filename = $this->generate_filename_incremental( $this->files_dir, $this->original_filename );

break;

case "random":

$new_filename = $this->generate_filename_random( $this->original_filename );

break;

case "custom":

$new_filename = $this->custom_filename;

break;

}

$dest_filepath = $this->files_dir . $new_filename;

if( !move_uploaded_file( $tmp_filepath, $dest_filepath ) )

{

throw new FileUploadException( /*!*/"Error while moving uploaded file" );

}

$this->uploaded_filename = $new_filename;

return true;

}

else

{

if( $this->required )

throw new FileUploadException( /*!*/"No input file" );

return false;

}

}

public function get_uploaded_filename() // output data

{

return $this->uploaded_filename;

}

public function get_uploaded_filepath() // output data

{

return $this->files_dir . $this->uploaded_filename;

}

private function generate_filename_random( $original_filename )

{

$ext = get_extension( $original_filename );

return md5( time() . $original_filename ) . $ext;

}

private function generate_filename_incremental( $files_dir, $original_filename )

{

return make_unique_filename( $original_filename, $files_dir );

}

}

?>

ANEXA III main.css – css-ul folosit pentru creearea meniului

.menu{float:right;}

.menu ul{

margin:0;

padding:0;

list-style:none;

}

.menu ul li{float:left;}

.menu ul li a{

text-decoration:none;

font-weight:bold;

color:#fff;

padding:0 15px;

height:30px;

font-size:20px;

display:block;

line-height:30px;

}

.menu ul li b{

font-weight:bold;

color:#48B3EA;

background-color:#fff;

padding:0 15px;

height:30px;

font-size:20px;

display:block;

line-height:30px;

}

.menu ul li a:hover{

font-weight:bold;

color:#48B3EA;

background-color:#fff;

padding:0 15px;

height:30px;

font-size:20px;

display:block;

line-height:30px;

}

Bibliografie

[1] „Proiectarea interfețelor utilizator”, Gianina Gabor

[2] „Baze de date relaționale: Concepte avansate”, Cornelia Győrődi, Robert Győrődi, Editura Treira, 2000

[3] „HTML, CSS si XML prin EXEMPLE” , Teodoru Gugoiu, Editura Teora 2005

[4] „PHP si MySQL pentru site-uri web dinamice”, Larry Ullman, Editura Teora 2006

[5] „Introducere in Ajax” – Traian Anghel, Editura Polirom 2006

[6] “Proiectarea siturilor web. Design și funcționalitate. (Ediția a II-a)”, Sabin Buraga, Editura Polirom

[7] “Situri web la cheie. Soluții profesionale de implementare.”, Sabin Buraga, Editura Polirom, 2004

[8] “Totul despre HTML 4”, Rick Darnel, Editura Teora

[9] “HTML pentru World Wide Web – Ghid de învățare rapidă prin imagini.”, Elizabeth Castro, Editura Corint, 2003

[10] “Sisteme de gestiune a bazelor de date.”, M. Velicanu, C. Bodea, I. Lungu, C. Ioniță, G. Bădescu, Editura Petrion.

[11] “Optimizarea paginilor WEB “, Acu, Ioan Calin , Polirom, Iasi 2003

[12] “Pagini Web Dinamice”, Anghel Traian , Scorpion , Galati , 2002.

[13] “Dezvoltarea aplicatiilor WEB folosind XHTML , PHP, MYSQL”, Anghel Traian, Polirom, Iasi, 2005.

[14] “Programarea în WEB”, Kris Jamsa, Suleiman Lalani, Steve Weakley, Editura ALL, București, 1997.

[15] “PHP4”, Bill McCarty, Editura Teora, București, 2003.

[16] “JavaScript”, Richard Wagner, R. Allen Wyke, Editura Teora, București, 2001.

[17] “Learning JQuery 1.3”, Jonathan Chaffer, Karl Swedberg, Editura Packt, 2009.

[18] http://ro.wikipedia.org/

[19] http://www.php.net/

[20] http://www.programare.org/

[21] http://www.w3schools.com/

[22] http://www.jquery.com/

[23] www.eurostats.com

[24] www.internetworldstats.com

Similar Posts

  • Magazin Virtual Folosind Limbajele De Programare Php,xhtml, Css, Js, Serverul Web Apache, Serverul My

    CUPRINS: Tema Proiectului ………………………………………pag. Implementare………………………………………….pag. Generalitati 3.1. Generalitati PHP………………………………….pag. 3.2. Generalitati MySQL……………………………..pag. 3.3. Generalitati APACHE……………………………pag. 3.4. Generalitati XHTML……………………………..pag. 3.5. Generalitati CSS………………………………….pag. 3.6. Generalitati JavaSript.……………………………pag. 3.7. Generalitati PHOTOSHOP……………………….pag. 4. Structura bazei de date …………………………………….pag. 5. Structura proiectului …..…………………………………..pag. 6. Structura aplicatiei ………………………………………..pag. 7. Codul Sursa ……………………………………………….pag. Contine Aplicatia si baza de date a aplicatiei === l…

  • Implementarea Unui Server Securizat de Transferat Fisiere Sub Linux

    Cuprins Descrierea proiectului Proiectul de față urmărește să ofere o soluție simplă pentru transferul de fișiere atât între diferiți utilizatori cât și între diferite locații fizice ale aceluiași utilizator folosind un server de FTP care îndeplinește criteriile necesare, când vine vorba de transferul unor fișiere în mediul digital. Securitatea datelor și fiabilitatea implementată, recomandă această…

  • Securitatea In Cloud Utilizand Un Sistem de Criptare Hibrid

    CUPRINS Introducere …………………………………………………………………………………………………………. 1. Criptografie ……………………………………………………………………………………………….. 1.1. Etimologia cuvântului ………………………………………………………………………. 1.2. Noțiuni generale …………………………………………………………………….. 2. Istoricul criptografiei …………………………………………………………………………….. 2.1. Egiptul Antic …………………………………………………………………….. 2.2. Grecia Antică ……………………………………………………………………. 2.3. Roma Antică ……………………………………………………………………… 2.4. Cifrul Alberti-Vigenere ………………………………………………………… 2.5. Cifrul roată al lui Jefferson ………………………………………………….. 2.6. Criptografia în timpul Războaielor …………………………………………………. 3. Stadiul actual al criptografiei ………………………………………………………………… 3.1. Sisteme…

  • . Sistem Informatic Pentru Contabilitatea Financiara

    CUPRINS Cap. I ÎNTREPRINDEREA- LOCUL ȘI ROLUL INFORMAȚIONAL I.1 Dezvoltarea tehnicii de calcul și creșterea nevoii de informații I.2 Sistemul informațional și Întreprinderea I.3 Contabilitatea și sistemul informațional al întreprinderii I.3.1 Introducere în problemațica contabilității I.3.2 Contabilitatea financiară în România I.3.3 Perspective în dezvoltarea contabilității in România I.3.4 Sistemul informațional contabil I.4 Necesitatea automatizării fluxurilor…

  • Analiza Ciclului DE Viata AL Unui Sistem Informatic

    ANALIZA CICLULUI DE VIAȚĂ AL UNUI SISTEM INFORMATIC INTRODUCERE În ultima perioadă de timp, s-au înregistrat câteva fenomene îngrijorătoare, datorită apariției unei noi concepții în abordarea sistemelor informatice: orientarea-obiect. Cele mai semnificative fenomene sunt: Sfidarea sau omiterea multor realizări anterioare pe plan procedural și științific; Supralicitarea tuturor teoriilor lansate în anii ’90, în jurul noului…