Sunteți pe pagina 1din 43

Cuprins

1 Bazele unei pagini web 1.1 HTML................................................................................................... 1.1.1 Bazele programrii in HTML 1.1.2 Prelucrarea textelor.................................................................... 1.1.3 Tabele....................................................................................... 1.1.4 Legturi................................................................................. 1.1.5 Imagini...................................................................................... 1.2 MySQL.................................................................................................. 1.2.1 Crearea unei tabele.................................................................... 1.2.2 Inserarea elemtentelor in tabele 1.2.3 Interogarea tabelei..................................................................... 1.2.4 Modificarea datelor din tabele.................................................... 1.2.5 tergerea elementelor................................................................. 1.2.6 Funcii de manipulare a sirurilor................................................ 1.2.7 Funcii folosite pentru date calendaristice si ore 1.3 PHP....................................................................................................... 1.3.1 Bazele programrii in PHP 1.3.2 Functiile in PHP 1.3.3 Sesiuni de utilizator................................................................... 1.3.4 Fisiere si directoare.................................................................... 1.3.5 Formulare................................................................................. 2 Scripturi adiionale 2.1 CSS....................................................................................................... 2.1.1 Introducere................................................................................ 2.1.2 Stiluri pentru elemente............................................................... 2.1.3 Pseudo-clase............................................................................. 2.1.4 Atribute..................................................................................... 2.2 JavaScript.............................................................................................. 2.2.1 Cutii de dialog........................................................................... 2.2.2 Tipuri de date............................................................................ 2 5 5 5 6 9 12 13 15 15 16 16 16 16 16 17 17 17 18 18 19 19 20 20 20 20 20 21 24 24 25

2.2.3 2.2.4 2.2.5 2.2.6 2.2.7

Operatori................................................................................... Instruciuni................................................................................ Functii....................................................................................... Obiecte...................................................................................... Evenimente...............................................................................

25 25 25 25 26 27 27 27 27 28 28 28 28 30 31

3 Aplicaia 3.1 Introducere............................................................................................. 3.2 Serverul.................................................................................................. 3.3 Baza de date........................................................................................... 3.4 Scheletul................................................................................................ 3.5 Algoritmi............................................................................................... 3.5.1 Conectare la baza de date........................................................... 3.5.2 Logare si nregistrare 3.5.3 Spaiul utilizatorului.................................................................. 3.5.4 Spaiul administratorului............................................................

Introducere
Am ales aceast tema de a demonstra cunostina mea ce am acumulat sub anii de facult. Acest proiect este un studiu de caz care imbin elemente de programare, astfel e nevoie s-mi demonstrez talentul de a adapta, a proiecta si de a programa in mai multe limbaje de programare. Proiectul promoveaz arta, literatura mai precis. D posibilitatea unor oameni necunoscu de a-si promova operele literare, fie poezie sau proza. Acest studiu de caz conine o baz de date cu utilizatorii si operele lor. Doar cei nregistrai pot viziona si ncrca. Informaiile sunt salvate n baza de date MySQL. Pagina este realizat n HTML, CSS, PHP si JavaScript.

Capitolul 1 Bazele unei pagini web


1.1
1.1.1

HTM L
Bazele programrii n HTML

n limbajul HTML comenzile descriptive, pe care le vom numi tag-uri sau etichete, se scriu ntre semnele <, >. Majoritate comenzilor au pereche pentru

semnalarea sfrsitului unei segmente de cod. Pentru a crea un fisier HTML, crem un fisier nou gol cu extensia .html sau .htm, Dup care deschidem fisierul ntr-un editor de texte simplu oarecare. Dup ce am deschis fisierul introducem urmtorul cod:

Figura 1.1: Prima pagina HTML Astfel am creat prima pagin HTML. Tag-urile <html> si </html> definesc pagina, ntre aceste dou comenzi se introduc toate comenzile, texte, imagini, scripturi, legturi, etc. pentru a personaliza pagina. ntre tag-urile <head> si </head> este antetul paginei. Aici se definesc 5

titlul paginei pe care browserul ne afiseaz. Aici se introduc elemente ca etichete paginei pentru a usura gsirea paginei de motori de cutare, definirea limbii n care pagina este scris, definirea fontului etc.. Pentru introducerea titlului folosim tag-urile <title>, </title>. De exemplu <meta> este un tag fr pereche. El este tagul cu care definim etichetele, autorul, etc., n cmpul name definim informaia pe ca dorim s descriem, iar n cmpul content scriem cuvintele cheie. ntre tag-urile <body> si </body> vine cea mai importan parte a paginei, pagina insusi. Tag-ul body admite trei etichete importante: bgcolor, cu care definim culoare fondalului, sau cu numele englezesc al culorii, sau cu un cod hexadecimal; background, cu care definim o poza pentru fundal sau cu o cale exact, sau cu o cale relativ.

1.1.2

Prelucrarea textelor

n aceast parte a lucr rii voi descrie cele mai uzate tag-uri pentru prelucrarea textelor, mrime, stil, font, culori, paragrafe, etc.. Pentru mrimea literelor putem folosi etichetele <h1> si </h1>, literele textului scris ntre aceste etichete vor fi majorate, h1 fiind cel mai mare si h7 cel mai mic, fr etichete textul este interpretat ca fiind h3. n plus

avem etichetele <small>, </small>, care micsoreaz literele si etichetele <big>, </big>, care mreste literele. Ultimele dou pereche de tag-uri nu sunt suportate de toate browserele. Ei micsoresc sau mresc literele cu 1. Pentru a scrie textele cu italic, bold sau underline, avem mai multe modaliti, voi enumera doar cteva.

Figura 1.2: Stiluri de texte cu etichete Cu stilul italic putem scrie cu urm toarele tag-uri pereche: <i>, </i>; <dfn>, </dfn>; <cite>, </cite>. 6

Stilul bold putem s introducem n pagini cu etichetele: <b>, </b>; <strong>, </strong>. Putem sublinia textele cu etichetele: <u>, </u>; <ins>, </ins>.

Pentru a tia textele avem urmtoarele tag-uri: <s>, </s>; <del>, </del>. Urmtoarele elemente sunt rar folosite. Elementele sup si sub. Etichetele <sup>, </sup> pun litere la putere, iar <sub>, </sub> la indice. Elementul font este unul dintre cele mai importanti. Admite atributele face, size si color, Astfelputem personaliza oricand formatul textului.

Figura 1.3: Stiluri de texte cu elementul font

Aranjarea textului n pagina este simplu: se foloseste elementul p. Aceast etichet admite atributul ajustrii textului n pagin align. Valorii atributului sunt left, right, center si justify. Adic stnga, dreapta, n centru si n ambele margini.

Figura 1.4: Texte aliniate Elemente importante n programarea paginilor web sunt si spaiul sau 7

caracter gol: & nbsp; si linia nou: <br>. n continuare voi scrie despre liste. Sunt trei tipuri de liste: ordonate,

neordonate si de tip definiie. Listele de tip ordonate au tag-urile <ol>, </ol>. Atributul listei ordonate este type, si poate s ia valorile: a, A, i, II, 1. Elementele listei vor definite cu tag-ul <li>. Cu atributul start definim cu ce numr s nceap lista.

Figura 1.5: List ordonat Listele neordonate sunt ntre etichetele <ul>, </ul>.

Atributele sunt: circle, square, disc.

Figura 1.6: List neordonat Cele dou tipuri de liste se pot combina ntre ele foarte simplu. Ultimul tip de list este de cea definiie. El este ntre etichetele <dl>, </dl>. Termenul listei sunt dup eticheta <dt>; iar descrierea lui dup eticheta <dd>. 8

Figura 1.7: List de definiii

1.1.3

Tabele

Tabelele sunt unul dintre cele mai importante elemente ale unui pagini web. Cu ei putem aranja pagina, texturi, stiluri. Sunt scheletele unei pagini. Tabelele se introsuc n pagin cu tag-urile <table>, </table>, rndurile cu <tr>, </tr>, iar coloanele cu <td>, </td>. Pentru a crea tabele apel m etichetele table, dup care ncepem s construim tabelul pe rnduri cu etichetele tr. Dup ce avem rndurile, introducem coloanele cu

etichetele td. Trebuie s avem grij ca pe fiecare linie s avem la fel de multe coloane, sau vom obine un tabel distorsionat.

Figura 1.8: Tabele Pentru a avea mai puine sau mai multe coloane pe linie ne apelm la 9

atributul colspan a etichetei td. Iar pentru mai multe sau mai puine linii pe coloane folosim atributul rowspan.

Figura 1.9: Tabele n continuare vom discuta despre atributuri importante ale etichetei table. Una dintre ele este border, care defineste grosimea liniilor nconjurtoare a tabelului. Atributul width si height specific limea, respectiv nlimea tabelului, acest atribut accept numere naturale care reprezint pixelii, sau n procente care reprezin mrimea tabelului relativ la fereastra browserului.

Figura 1.10: Tabele Atributurile align si valign aranjeaz textul din celulele tabelului ori zontal respectiv vertical. Astfel avem urmtoarele valori pentru align: left, righ, center; adic stnga, dreapta si centru. Dac avem si text pe lng tabel, tabelul se poziioneaz relativ la text n funcie de valorile introduse. Pentru valign: top, middle, bottom; sus, centrat vertical si jos.

10

Figura 1.11: Alinierea textelor n tabele Alte atributuri sunt: cellspacing si cellpading; care determin n pixeli spaiul dintre celule respectiv spaiul lsat n fiecare celul a tabelului ntre text si marginile celulei.

Figura 1.12: Tabele Pentru fundalul tabelului putem folosi culori cu atributul bgcolor sau imagini cu background. Putem colora si liniile tabelului cu bordercolor. Putem personaliza tabelul celul cu celul ad ugnd atribute la eti-chetele tr si td. Atributuri ale lui tr: align, valign, bgcolor. Cu acesta personalizmun rnd. Atributele elementului td sunt: width, height, align, valign, colspan, rowspan. Astfel putem manipula tot tabelul prin celule individuale si s concepem forme ct mai diferite si colorate.

11

Figura 1.13: Tabele

1.1.4

Leg turi

Legturile sunt de trei tipuri: externe, interne (relative) si pentru trimiterea e-mail-urilor. Elementul ancor este cea etichet cu care se creeaz hiperlegturile. Are atributul href cu care apelm destinaia. Navigarea ntre paginile site-ului sau legturile cu alte site-uri este foarte simplu, n elementul a cu atributul href specific m destinaia dup care avem textul pe care facem click si n final nchidem cu etichetul </a>. Cu acest tip de legturi putem orienta utilizatorul ctre pagini, poze, sunete, videoclipuri sau chiar fisiere arhivate pentru a le descrca.

Figura 1.14: Legturi Pentru o legtur intern trebuie s specificm o ancor n pagina la care suntem la care s putem arta. Acesta se face tot cu elementul a, dar ca atribut are id. Iar la cale vom apela ca [diez]numeid. Acesta va poziiona pe pagin unde se afl ancora n codul surs, astfel dac avem pe prima 12

linie atunci pagina va sri sus, dac jos atunci jos, iar dac se afl n mijloc atunci acolo. Trimiterea unui e-mail se face asemntor cu o legtur extern, dar n atributul href are elemente specifice ca mailto, subject si body. Elementul mailto este separat de la celelalte elemente de ? iar subject si body sunt

separate unul de cellalt de ctre semnul & . Elementele subject si body sunt opionale. Dup ce am apsat pe link, clientul e-amil va porni cu datele deja trecute automat.

Figura 1.15: Trimiterea unui e-mail cu programul Evolution Mail

1.1.5

Imagini

Figura 1.16: Imagini 13

Imaginile se itroduc cu eticheta <img>, atributul cu care ar t calea ctre ele, este src, cu care putem defini ci exacte sau relative. Imagini au atribute ca width, height, align, alt, title, border, hspace, vspace si usemap. Cele cunoscute deja se comport ca cei de la tabele. Atributul alt ne d oportunitatea n caz c dintr-un motiv anume poza nu se ncarc, n locul ei se afiseaz textul introdus n eticheta alt. Tag-ul title afiseaz textul introdus cnd suntem peste poz cu mouse-

ul. Atributul border determin mrimea chenarului n jurul pozei. Iar atributurile hspace si vspace determin distana minim care separ celelalte obiecte din jurul ei.

Figura 1.17: Imagini Harta de imagini este o unelt foarte folositoare. Putem selecta mai multe pri dintr-o imagine si s le transformm n hiperlinkuri. La eticheta <img>vom folosi atributul usemap. Atribtul este predefinit de programator cu tag-ul <map>, eticheta aceasta are atributul name pe care usemap o preia. ntre etichetele <map> si </map> sunt etichetele <area>, cu acesta definim forma pe care o select m din imagine. Are

atributurile href, shape si coords; href este atributul care conine calea unui hiperlink. Atributul shape poate sa ia trei valori: rect, circle si poly. Valoare rect reprezint forma unui dreptunghi iar coordinatele sunt x si y a colului din stnga sus respectiv x si y a colului din dreapta jos. Valoarea circle va avea coordonatele mijlocului cercului, x si y, si raza acestuia. Valoarea poly va avea coordonatele vrfurilor ale poligonului, fiecare vrf avnd o pereche x si y.

14

Figura 1.18: Imagini

1.2
1.2.1

MySQL
Crearea unei tabele

Pentru a crea un tabel prima dat e nevoie de o baz de date n care s crem tabelul. O bazua de date se creaz cu comanda: create database numeexemplu;. Pentru a afisa bazele de date folosim comanda show databases;. Comanda cu care cre, un tabel n mysql are nevoie de urmtoarele cmpuri: numele tabelei, numele cmpurilor si definiiile pentru fiecare cmp. Sintaxa arat astfel: create table numetabel (numecoloana tipcoloana);. Mysql are mai multe tipuri de date, care pot fi de tip numeric, de tip calendaristic, de tip siruri de caractere. Cteva exemple pentru fiecare:

Tipuri de date numerice - int -num ntreg; float(m,d) - numr real, unde m este dimensiunea de afsare iar d este numrul de zecimale; Tipuri de date calendaristice - date - data calendaristc n format aaaa-ll-zz; time - stocheaz ora n formatul hh:mm:ss; Tipuri de siruri de caractere - char(m) - sir de caractere de lungime fix m numr ntreg ntre 1 si 255; - varchar(m) - sir de caractere cu lungime variabil; 15

- text - cmp cu lungime maxim de 65535 caractere; - enum - creaz o list care are valoarea definit de utilizator, si nu poate s ia dect acele valori si valoarea null.

1.2.2

Inserarea elemtentelor in tabele

Pentru a insera elemtente folosim comanda insert, sintaxa este: insert into numetabela (lista coloane) values (valori pentru coloane);. Comanda putem folosi n dou moduri: n care sunt menionate toate coloanele si n care nu sunt menionate explicit.

1.2.3

Interogarea tabelei

Interogarea se face cu comanda select. Sintaxa estes: select expresiisicoloane from numetabela [where conditie] [order by coloana [asc | des]] [limit deplasare, randuri];. Opiunile ntre paranteze ptrate sunt opionale. Cu aceste opiuni personalizm afisarea rezultatelor dup nevoile noastre. Cu clauza where determinm o condiie cu care selectm un element din coloan si cu care comparm alte elemente.

1.2.4

Modificarea datelor din tabele

Modificarea sau actualizarea datelor dintr-un tabel se face cu comanda update. Sintaxa ei este: update numetabel set coloana=valoareanoua [where conditie];.

1.2.5

tergerea elementelor

Comanda pentru stergerea elementelor se face cu comanda delete a crei sintax este: delete from numetabel [where conditie] [limit randuri];.

1.2.6

Funcii de manipulare a sirurilor

Funcii de ajustare Pentru a scpa de spaii nedorite exist comenziile rtrim si ltrim care taie spaiile din dreapta respectiv stnga unui sir de caracter. Funcii de g sire Funcia locate este care gseste un subsir ntr-un sir dat, ea returneaz poziia de unde ncepe subsirul. 16

Functii de modificare a sirurilor Funciile lcase si ucase transforma litere in minucule respectiv majuscule. Funcia replace nlocuieste un subsir cu un sir dat de utilizator.

1.2.7

Funcii folosite pentru date calendaristice si ore

Operaii cu zile Pentru a determina care zi a sptmnii este putem folosi funcia dayofweek. Pentru lun si an: dayofmonth si dayofyear. Pentru a returna numele zilei n engleza: dayname. Aceast funcie se foloseste cu comanda select. Operaii cu luni Funciile month si monthname returneaz numrul lunii si respectiv numele lunii. Operaii cu ore, minute Funciile hour si minute selecteaz ora si minutul dintr-un si de caractere. Calcule aritmetice cu date calendaristice n MySql putem aduga sau scade intervale de timp cu ajutorul funciilor date add si date sub.

1.3
1.3.1
Afisare

PHP
Bazele programrii n PHP

n PHP afism cu comanda echo. Cu aceast comand putem afisa iruri de caractere, numere, valorile variabilelor si a constantelor. Putem s combinm si HTML. 17

Variabile si constante Variabilele n PHP ncep cu semnul & dup care se continu cu o liter mic sau cu o liniu de subliniare. Variabila poate s conine oricte de litere sau numere si linii de subliniat. Atribuirea valorilor ctre variabile se face cu operatorul =. Constantele se definesc cu funcia define carea are sintaxa: define("nume", valoare);. Se numesc constante, pentru c valoarea lor nu se poate modifica. Operatori Operatorii matematici sunt valabile si n PHP, ca n orice limbaj de programare. Cteva funcii matematice mai importante: abs - valoarea absolut, decbin - transform un numr din zecimal n binar, bindec transform un numr binar n decimal, ceil - rotunjeste jos un numr. Operatorii de atribuire sunt de mai multe feluri. Principalul operator de atribuire este =. Pe lng acest operator mai exsist si cele combinate, care permit folosirea unei valori ntr-o expresie si apoi atribuirea valorii respective rezultatul expresiei. Cteva exemple sunt: += adugare, -= scdere, * nmulire si /= mp rire. = La siruri de caractere avem operatorul .[punct]. Cu acest operator concatenm sirurile de caractere si/sau variabile.

1.3.2 Funcii n PHP


Pentru ca scriptul s fie mai usor de vzut si corectat, sursa se poate mpa ri in mai multe blocuri de subprograme numite funcii. Crearea funciilor se face cu sintaxa: function numefunctie ([listadeargumente]) { [instructiuni;] [return valoare;] }

1.3.3

Sesiuni de utilizator

Module cookie Aceste module conin text pe care stocheazpe calculatorul utilizatorului si se citesc ulterior. Functia setcookie instaleaz modulul: setcookie(string nume[, string valoare [, int expirare[, string caledeacces[, 18

string domeniu[, int securitate]]]]]). Citirea lor se face cu o verificare: dac exist, se citeste. if (isset($ cookie[nume])) { ... } tergerea lor este simplu se anuleaz timpul lor de expirare. Folosirea sesiunilor Sesiunile sunt create pentru a pstra date pe server, fiecare utilizator primeste un cookie cu identificatorul sesiunii. Asta ajut pentru PHP la refacerea automa a sesiunii pentru fiecare utilizator. Sintaxa este: session start(); $ session[nume] = $ "valoare"; Pentru a sterge o variabil dintr-o sesiune se va folosi unset ($ session[variabila]);. Pentru toate variabile: session unset();. Iar pentru sesiunea ntreag se val folosi session destroy();.

1.3.4

Fisiere si directoare

Pentru a include fisiere exist comanda include();. Fisierele incluse pot returna valori, astfel putem apela si la funcii. Verificarea existenei unei fisiere este comanda file exists();. Crearea fisierelor se face cu comanda touch(); iar stergerea cu unlink();. Deschiderea unei fisiere se face cu comanda fopen();. Pentru citirea datelor exist mai multe comenzi: fgets(); - citirea linie cu linie, fread($ fp, nr) - $ fp este valoarea de tip fisier, nr este numarul de caractere pe care le determinn pentru citire. Scrierea se face cu comanda fwrite();. Directoarele se creaz cu funcia mkdir(); - stergerea cu rmdir();. Deschidera directoarelor se face cu opendir(); si citirea coninutului unui director se face cu funcia readdir();.

1.3.5

Formulare

formularul se va crea cu ajutorul HTML-ului, unde se va folosi metoda POST, si pentru aciune se va folosi $ SERVER[PHP SELF]; astfel pagina se va reactualiza n sine. Datele se vor prelua cu metoda: $ variabila = & POST[nume];. Se va verifica dac a fost apsat butonul de trimitere cu funcia isset();.

19

Capitolul 2 Scripturi aditionale


2.1
2.1.1

CSS
Introducere

Stilurile CSS (Cascading Style Sheets) este asemntor cu formatarea unui document. Prin atributele putem stabili font-urile, caracteristicile alinierii, culori, margini, poziia elementelor, etc. Legtura ntre HTML si CSS se face cu etichetele <style> si </style>. Aceste etichete vor fi asezate n poriunea <head> ... </head> al documentului HTML.

2.1.2

Stiluri pentru elemente

Prin CSS se pot defini clase de elemente. Descriem un stil cu ".nume " si o apelm cu class="nume".

2.1.3

Pseudo-clase

Pseudo-clasele specific anumite proprieti speciale ale unor elemente. Ele sunt predefinite si nu se pot redenumi. Sintaxa lor este: element.clasa:pseudoclasa { proprietate:valoare; } Aceste elemente ne permit modificarea stilului pentru sub-pri ale elementului, cum ar fi: primul cuvnt sau prima linie. Leg turi Cu ajutorul urmtoarelor atribute se pot modifica stilul link-urilor:

20

link visited hover active Ordinea trebuie pstra pentru a o funcionare corect. Paragrafe Atributele pentru paragrafe sunt: first-letter fitst-line

2.1.4
Font-uri

Atribute

Atributele cele mai des folosite pentru formatarea textului: font-style valori: - normal - italic font-weight valori: - normal - bold font-size font (grupeaz primele trei atribute) font family 21

Culori Ca si n HTML, culorile se pot defini cu numele lor n englez sau n format RGB. Atributele sunt: color background-image background-color background-repeat valori: - repeat - repeat-x - repeat -y - no-repeat background-attachment - fixed - scroll background-position background grupeaz toate cele de sus Text Atributele sunt: text-decoration - underline - overline - lines-through - blink text-align 22

- left - right - center - justify Margini Rolul marginilor este de a separa elementele, unul de cellalt. Fiecare element poate s aib margine. margin-left margin-left margin-top margin-bottom margin grupeaz toate cele de sus Padding Acest atribut poate fi doar dimensionat. padding-top padding-left padding-right padding-bottom padding grupeaz toate cele de sus Bordur Atributele: border-top-width border-left-width border-right-width 23

border-bottom-width border-width valori: - thin - medium - thick border-color border-style valori: - solid - double - groove - ridge - inset - outset border-top-style border-left-style border-right-style border-bottom-style

2.2
2.2.1

JavaScript
Cutii de dialog

Cutiile de dialog sunt csue care apar n fereastra deschis a browserului. Sunt de trei feluri: alert, confirm si prompt. Alert are sintaxa urmtoare: alert("text"), si are o un singur buton OK. Cutia confirm are dou butoane: OK si Cancel. Dac se va apsa OK se va returna true n caz contrar false. Sintaxa este: confirm("text"). Cu tia prompt permite introducerea datelor de ctre utilizator. Sintaxa este: prompt(sirafisat, sirasteptat). 24

2.2.2

Tipuri de date

Urmtorele tipuri de date exist n JavaScript: sir de caractere numere ntregi de tip boolean Exist si variabile care sunt declarate cu var.

2.2.3

Operatori

Ca si n alte limbaje de programare, si n JavaScript exist operatori aritmetici, relaionali, de egalitate, de atribuire si de logici.

2.2.4

Instruciuni

Pentru a alege sau repeta pasi n algoritm, JavaScript are instruciuni foarte similare cu alte limbaje de programare. Pentru alegere are if ... else, switch; instuciunile repetitive sunt: while, do while si for.

2.2.5

Funcii

Funciile create de ctre utilizator sunt foarte importante, ne ajut la organizarea programelor pentru o revizuire mai simpl a programului complet.

2.2.6

Obiecte

Se pot crea si obiecte de ctre utilizator. Cu ajutorul vairabilelor globale si/sau locale utilizatorul si poate crea orice obiect ce doreste, cum ar fi un obiect cu datele unei persoane, sau un numr complex. JavaScript are si obiecte preinstalate, care conin funcii care pot fi de folos pentru utilizator. Obiectul "Math" conine funcii matematice cum ar fi: pow(numar, putere), abs(numar), s.a.m.d.. Obiectul "String" cu care se pot manipula sirurile de date, conine funcii ca length - lungimea unui sir de caracter, Search(caracter) - caut dup un anumit caracter ntr-un sir de caractere. Alt obiect este cea de tip "Array" cu care se pot crea vectorii, are funcii pentru lungimea vectorului, pentru inversarea elementelor. Obiectul "Window" este pe nivelul cel mai nalt. Metodele lui sunt: alert(), confirm(), prompt(), open() si close(). Sintaxa lui open este: 25

open("fisier.html", "nume", "parametrii"). Parametrii sunt: top, left, wi dth, height, resizable, menubar, toolbar, status, location, copyhistory.

2.2.7

Evenimente

Evenimentele sunt caracteristici ale limbajului JavaScript, acestea sunt aciuni provocate de ctre utilizatorul site-ului. Aceste evenimente pot fi ale mai multor obiecte si de mai multe feluri. Cele mai importante elemente ale ferestrelor sunt: onload, onunload, onfocus, onblur. Evenimentele mouse-ului sunt: onclick, ondblclick, onmouseover, onmouseout. Evenimentele formularelor: onsubmit, onchange, onclick. Ale tastelor sunt: onkeydown, onkeyup, onkeypress.

26

Capitolul 3 Aplicatia
3.1 Introducere

Aplicaia este un studi de caz, care const din mbinarea mai multor elemente. Aceste elemente sunt HTML, PHP, MySQL, CSS, JavaScript. Pagina promoveaz arta scris, literatura. Se pot ncrca poezii, novele, romane, etc.. Proiectul conine dou spaii: cel utilizatorului si un spaiu privat al administratorului. Administratorul poate s posteze nouti referit la server. S supravegheze utilizatorii. Spaiul utilizatorilor este diferit de cel admonistratorului. Ei pot s caut prin creaiile altora, s ncarc, s voteaz.

3.2

Serverul

Tot proiectul se ruleaz sub un server Apache, cu module PHP si MySQL activate. Serverul se poate instala direct din centrul de aplicaii a linuxului Ubuntu, sau se pot descrca pachetele unul cte unu.

3.3

Baza de date

Baza de date conine 3 tabele: una cu utilizatori, una pentru ncrcri si una pentru stirile postate de ctre administrator. 27

3.4

Scheletul

Proiectul este creat ntr-un tabel. Sunt butoane create pentru managementul profilului, navigare pe site.

3.5
3.5.1

Algoritmi
Conectare la baza de date

Pentru a afia sau salva coninut ne conectm la baza de date: $ conn = mysql connect("localhost", "root", "parola") or die(mysql $ db = mysql select db(spikesinhearts, $ conn) or die(mysql error()); error());

3.5.2
Logare

Logare si nregistrare
n afara celor

Pentru c alte utilizatori registrate nu pot viziona coninutul ei sunt restricionate cu urmtorul cod: function confirmUser($ username, $ password){ global $ conn; if(!get magic quotes gpc()) { $ username = addslashes($ username);} $q="selectpsswdfromuserswhereu name=$username"; mysql query($ q,$ conn); if(!$ result (mysql numrows($ result) <1)) { return 1;} $ dbarray = mysql fetch array($ result); $ dbarray[psswd] = stripslashes($ dbarray[psswd]); $ password = stripslashes($ password); if($ password == $ dbarray[psswd]) { return 0;}

$ result =

28

else { return 2;} }

nregistrare n cazul n care utilizatorul nu este nregistrat se va naviga pe spaiul de nregistrare unde se va completa urmatoarele date: numele de utilizator, email, prenume, nume, ziua de nstere, parola s confirmarea parolei. Prima dat se verific dac numele de utilizator nu este ocupat: function usernameTaken($ username){ global $ conn; if(!get magic quotes gpc()){ $ username = addslashes($ username);} $q="selectu namefromuserswhereu name=$username"; mysql query($ q,$ conn); return (mysql numrows($ result) >0);} Apoi se verific dac email-ul este valabil: function validEmail($email){ $ isValid = true; $ atIndex = strrpos($ email, "@"); if (is bool($ atIndex) !$ atIndex){ $ isValid = false;} else{ $ domain = substr($ email, $ atIndex+1); $ local = substr($ email, 0, $ atIndex); $ localLen = strlen($ local); $ domainLen = strlen($ domain); if ($ localLen <1 $ localLen >64){ $ isValid = false;} else if ($ domainLen <1 $ domainLen >255){ $ isValid = false;} else if ($local[0] == . $ local[$ localLen-1] == .){ $ isValid = false;} else if (preg match( /\ \ . \ \ ./, $ local)){ $ isValid = false;} 29

$ result =

else if (!preg match(/ [A-Za-z0-9\ \ -\ \ .]+$ /, $ domain)){ $ isValid = false;} else if (preg match(/\ \ .\ \ ./, $ domain)){ $ isValid = false;} else if (!preg match(/ (\ \ \ \ .[A-Za-z0-9!% =\ \ /$ \ *+? {} .-])+$ /, str replace(" \ \ \ \ ","",$ local))){ if (!preg match(/ "(\ \ \ \ "[ "]) + "$/ , str replace("\ \ \ \ ","",$ local))){ $ isValid = false;}} if ($ isValid !(checkdnsrr($ domain,"MX") checkdnsrr($ domain,"A"))){ $ isValid = false;}} return $ isValid; } Verificarea dac email-ul este deja ocupat: function emailTaken($ email){ global $ conn; if(!get magic quotes gpc()){ $ email = addslashes($ email);} $q="selectemailfromuserswhereemail=$username"; mysql query($ q,$ conn); return (mysql numrows($ result) >0);}

$ result =

3.5.3

Spatiul utilizatorului

Afisarea stirilor Algoritmul care selecteaz ultimele 5 stiri scrise de administrator: <? $ pagenum = 1; $ data = mysql query("SELECT * FROM newstable") or die(mysql error()); $ rows = mysql num rows($ data); $ page rows = 5; $ last = ceil($ rows/$ page rows); $ max = limit .($ pagenum - 1) * $ page rows ., .$ page rows; $ data p = mysql query("SELECT * FROM newstable ORDER BY news 30

id DESC $ max") or die(mysql error()); while($ info = mysql fetch array( $ data p )) { Print $ info[content]; echo "<br>"; Print $ info[dateadded]; echo "<br ><br>";} ?>

Afisarea nout ilor

Cutarea

nc rcare

Schimbarea datelor personale

3.5.4

Spatiul administratorului

nc rcarea stirilor

Supravegherea utilizatorilor

31

Concluzii
Proiectul poate fi imbunttit din mai multe puncte de vedere. Cele mai importante ar fi: securitatea, baza de date si interfata. Pe planul de securiate se putea folosi encriptare si/sau protocolul https (hyper text transfer protocol secure).

32
i

Rechard Bek