Cuprins
Pagina GENERALITĂŢI..................................................................................................................................................2 CAPITOLUL 1.......................................................................................................................................................4 INTRODUCERE....................................................................................................................................................4 1.1.TEMA PROIECTULUI.............................................................................................................................................4 CAPITOLUL 2.......................................................................................................................................................6 TEHNOLOGII UTILIZATE................................................................................................................................6 2.1.PAGINI WEB ŞI SERVERE WEB.............................................................................................................................8 2.2.PAGINI WEB STATICE ŞI DINAMICE.......................................................................................................................9 HTML 9 JavaScript..............................................................................................................................................................9 Tehnologii pe parte de Client..............................................................................................................................10 URL-uri 10 2.3.LIMBAJUL PHP................................................................................................................................................11 NOŢIUNI FUNDAMENTALE........................................................................................................................................11 Ieşirea din modul HTML....................................................................................................................................13 Separarea instrucţiunilor.....................................................................................................................................14 Comentariile........................................................................................................................................................14 VARIABILE 15 Variabile predefinite ..........................................................................................................................................15 PHP Superglobals...............................................................................................................................................15 Folosirea variabilelor statice..............................................................................................................................15 2.4.BAZE DE DATE ..............................................................................................................................................17 Noţiuni generale..................................................................................................................................................17 2.5.LIMBAJUL SQL...............................................................................................................................................18 Caracteristici generale:.......................................................................................................................................18 Prezentarea limbajului SQL................................................................................................................................18 2.6.MYSQL........................................................................................................................................................20 PREZENTARE GENERALĂ...........................................................................................................................................20 CARACTERISTICILE DE BAZĂ ALE MYSQL ................................................................................................................21 TIPURI DE DATE UTILIZATE DE MYSQL.....................................................................................................................21 ADMINISTRAREA BAZELOR DE DATE MYSQL DIN LINIA DE COMANDĂ............................................................................21 CAPITOLUL 3.....................................................................................................................................................22 SPECIFICAŢIILE APLICAŢIEI......................................................................................................................22 3.1.PREZENTARE GENERALĂ.....................................................................................................................................22 3.2.PAGINA DE ACCES.............................................................................................................................................23 3.3.STOCAREA INFORMAŢIILOR.................................................................................................................................25 CAPITOLUL 4.....................................................................................................................................................28
Universitatea de Nord Baia Mare IMPLEMENTAREA ŞI UTILIZAREA APLICAŢIEI...................................................................................28 4.1.CREAREA BAZEI DE DATE A APLICAŢIEI.................................................................................................................28 4.1.1.Crearea unei baze de date folosind XAMPP ............................................................................................28 Baza de date a fost realizată cu aplicaţia XAMPP folosind phpMyAdmin........................................................28 4.2.INTERFAŢA CU UTILIZATORUL..............................................................................................................................32 4.2.1.Înregistrare elevi........................................................................................................................................34 4.2.2.Recuperare parolă......................................................................................................................................37 4.3.TIPURI DE UTILIZATORI......................................................................................................................................39 4.3.1.Meniul pentru tipul administrator..............................................................................................................41 4.3.2.Meniul pentru tipul profesor......................................................................................................................45 4.3.3.Meniul pentru tipul elev.............................................................................................................................50 CAPITOLUL 5.....................................................................................................................................................53 5.1.CONCLUZII.......................................................................................................................................................53 5.2.POSIBILITĂŢI DE DEZVOLTARE.............................................................................................................................53 BIBLIOGRAFIE:................................................................................................................................................55
GENERALITĂŢI Din cele mai vechi timpuri omul a simţit nevoia să cunoască spaţiul înconjurător, şi materializarea gândirii sale într-un limbaj matematic de bază. Odată cu evoluţia omului au evoluat şi problemele acestuia, soluţia la aceasta a fost inventarea unei maşini de calcul ce îi va schimba radical modul de viaţă. Dezvoltarea rapidă din ultima perioadă a resurselor software şi hardware din domeniul tehnologiei informaţiei are un meritul de a oferi o mai bună comunicare şi un acces mult mai rapid la toate categoriile de informaţii. Prezenta lucrare cuprinde destul de detaliat aspecte teoretice şi practice ale modalităţilor de concepere şi implementare a aplicaţiei. Lucrarea este structurată în 5 capitole, fiecare capitol, la rândul lui având mai multe subcapitole. Capitolul 1 – Introducere reprezintă partea introductivă a lucrării, prezentarea domeniului din care face parte proiectul, a temei propriu-zise şi structurarea aplicaţiei. Capitolul 2 – Tehologiile utilizate reprezintă o scurtă introducere a principalelor noţiuni legate de Internet. Sunt explicate noţiuni ca Internet, protocolale, aplicaţii pentru internet, DNS, intrenet şi extranet, servere web şi aplicaţii web, pagini web statice şi dinamice, limbaje de markup şi scripting, HTML, JavaScript. Limbajul PHP,este prezentat prin descrierea principalelor noţiuni legate de acest limbaj. Descrierea modului de includere a 2
Universitatea de Nord Baia Mare
codului PHP în cadrul codului HTML, sunt prezentate tipurile de date pe care acest limbaj le suportă şi tipurile de variabile care pot fi utilizate. Noţiunile de bază ale bazelor de date relaţionale. Este prezentat modul de utilizare a MySQL, conectarea şi deconectarea de la server, crearea şi selectarea bazelor de date, crearea tabelelor şi introducerea interogărilor. Capitolul 3 – Specificaţiile aplicaţiei prezintă lucrarea. Prezentarea generală a aplicaţiei, interfaţa cu utilizatorul, şi modalitatea de stocare a informaţiilor şi a datelor. Capitolul 4 – Implementarea şi utilizarea aplicaţiei cu interfaţa grafică reprezintă descrierea aplicaţiei. Implementarea acestui site a fost realizată folosind limbajul de server side scripting PHP datorită felxibilităţii acestuia şi a faptului că poate fi folosit gratuit, fără restricţii. De asemenea, a fost ales sistemul de gestiune a bazelor de date relaţioale MySQL datorită faptului că şi acesta poate fi folosit gratuită, Open Source este cel mai potrivit produs pentru accesarea şi administrarea bazelor de date prin Internet. De asemenea, este prezentat modul de creare a bazei de date a aplicaţiei Sistem de management al Şcolarităţii Elevilor, crearea unor tabele (ex : admin si elevi). Interfaţa grafică a aplicaţiei este construită pe baza unui template, pe care toate paginile site-ului îl folosesc pentru a păstra acelaşi layout pe întregul site. De asemenea, pentru setarea modalităţilor de afişare a diferitelor elemente HTML, pentru alegerea stilului site-ului s-a folosit un fişier .css, acesta putând fi modificat sau înlocuit şi întregul site îşi schimbă automat înfăţişarea. Prin combinarea acestor două produse, PHP şi MySQL, aplicaţia realizată este foarte flexibilă, putându-se adăuga noi funcţionalităţi aplicaţiei. Capitolul 5 – Concluzii prezintă opinia mea personală despre aplicaţia realizată şi posibilităţile de dezvoltare a aplicaţiei.
3
Universitatea de Nord Baia Mare
CAPITOLUL 1. INTRODUCERE Se poate spune, pe drept cuvânt că trăim într-o societate informatizată. În zilele noastre, întâlnim calculatoare peste tot, de la micul magazin din colţ, care-şi ţine evidenţele sale cu ajutorul unui calculator şi până la ghişeul la care plătim abonamentele de telefonie, cablu TV, Internet, la examenele pentru permisul de conducere sau alte examene pentru diferite domenii oricare ar fii acestea şi multe alte. Peste tot sunt calculatoare, legate eventual între ele şi formând astfel reţele de calculatoare. Toate acestea se datorează faptului că ne dăm seama din ce în ce mai mult că sistemele de calcul, calculatoarele ne uşurează munca şi viaţa prin apariţia lor. Să ne gândim puţin cât de mult s-a schimbat lumea de când au apărut calculatoarele. Înaintea apariţiei calculatoarelor orice tip de evidenţă era înregistrată pe hârtie, scrise cu mâna sau în cel mai bun caz scrise cu dactilograful. Marele dezavantaj al acestei metode era că acele hârtii se deteriorau cu timpul, sau pur şi simplu se pierdeau. Apariţia calculatorului reprezenta o mare avansare în acest domeniu, dar totodată şi în alte domenii. Oamenii nu mai erau nevoiţi să-şi ţină evidenţele pe hârtii, deoarece pur şi simplu introduceau datele în calculator şi le salvau pe discul magnetic al acestuia. Şi aşa datele erau într-un loc sigur, securizat, unde nu se deteriorau, nici nu se pierdeau şi accesul la ele îl aveau doar persoanele care erau desemnate pentru utilizare si stricta securitate a discului magnetic.
1.1.
Tema proiectului 4
Universitatea de Nord Baia Mare
Omenirea prin evoluţia informatici care cu fiecare zi ce trece inbunătaţeşte viata omului şi cei tinerii devin batrâni, aşa este şi cu calculatoarele care au aparut era un număr minic dar acum oriunde te-ai duce mereu ai să vezi că oamenii lucrează pe calulatoare chiar dacă sunt dintre primele modele de fabricaţie mai sunt folosite dar vor ramâne in istorie. Nu există instituţii care să nu fie înzestrate cu calculatore şi diferitele programe pe care aceste instituţii lucrează. Să ne gândim numai la bănci, casierii, hoteluri, magazine, toate folosesc calculatoare pentru aşi ţine evidenţele, trasfer de date şi multe altele. Profesorii folosesc calculatoare pe care sunt instalate diferite programe care uşurează munca lor şi a altor cadre didactice, comunicarea dintre profesor şi elev la calculator după finalizarea orelor de studiu face ca elevul sa acumuleze cat mai multă informaţie. Acest site lucrează cu baze de date în care sunt înregistrate toate activităţile legate de notele unui elev : crearea conturilor de autentificare, adăugarea materiilor, adăugarea notelor de către profesori, afişarea notelor de către elevi, introducerea şi modificarea datelor personale etc. Aplicaţia Sistem de management al Şcolarităţii Elevilor este o soluţie ideală pentru a uşura munca profesorilor şi a elevilor. Această versiune a aplicaţiei Sistem de management al Şcolarităţii Elevilor, este destinată special a unei clase dintr-o unitate de invăţământ. Site-ul este structurat în 3 părţi diferite, pentru 3 tipuri de utilizatori diferiţi: Administrator : se ocupă de adăugarea numerelor matricole, adăugarea
materiei, crearea şi administrarea conturilor Profesor : are acces la adăugarea notelor, introducerea şi modificarea datelor personale, afişarea colectivului de elevi, schimbarea parolei de autentificare Elev : are acces la vizualizarea notelor, adăugarea şi modificarea datelor personale, afişarea colectivului de profesori, schimbarea parolei de autentificare Cele trei tipuri de utilizatori au privilegii diferite, aşa cum v-am presentat mai sus, datele personale a fiecărui utilizator se pot modifica numai de către el insuşi. Notele fiecărui elev sunt confidenţiale, fiecare elev având acces numai la notele lui, in acest fel şi la profesori, situaţia elevului se poate vizualiza numai la materia predată de profesorul respectiv. Acest lucru este util pentru, ca profesorul să nu fie influenţat de situaţia elevului la o altă materie, atunci când acesta adaugă o notă. Aceste probleme sunt exemplificate mai amănunţit in următoarele capitole. Aplicaţia este utilă, atât pentru elevi cât şi pentru profesori. Prin intermediul acestei aplicaţii este foarte uşor să ţinem evidenţa notelor şi să avem toate informaţiile despre elevi.
5
Universitatea de Nord Baia Mare
CAPITOLUL 2. TEHNOLOGII UTILIZATE Calculatorul este folosit de dimineaţă la o cafea, la diferitele domenii de activitate şi seara cu finalizarea unui film, tot mai mulţi sunt aceia care, stând neclintiţi în faţa calculatoarelor, navighează prin reţeaua de calculatoare ce acoperă întreaga lume, călătoresc şi activează in spaţiul cibernetic. Pentru cercetătorul care descoperea libertatea de comunicare şi oferta internaţională din Internet, multitudinea de biblioteci, reviste şi grupuri de dezbatere, accesul la Internet seamănă cu un vis care nu se mai termină, vacanţa pe care urmează să o faci în Europa sau America la distanţe foarte marii prin site-rile unde sunt prezentate locuri frumoase şi utilizatorul stand in faţa calculatorului işi aduce lumea cea mare in afara calculatorului şi mică la calculator. Prin Internet înţelegem de obicei ansamblul reţelelor de calculatoare interconectate din intreaga lume. De fapt, specialiştii susţin că Internetul nu este o reţea ci un ansamblu de reguli – protocoale de comunicaţie - care permit transferul de date între diferite reţele de pe glob, accesul la informaţiile stocate în calculatoarele acestora. Accesul la Internet este atât modul de conectare in reţea, cât, mai ales, accesul la informaţia ce se vehiculează prin calculatoarele legate in reţea, posibilitatea de comunicaţie cu specialiştii din toată lumea întreagă. Internetul este o gigantică reţea de calculatoare, mai precis, o reţea de reţele de calculatoare.Unele dintre aceste calculatoare oferă o diversitate de servicii pentru oameni. Dezvoltarea internetului a fost foarte rapidă, în anul 1985, aproximativ 2000 de calculatoare erau legate la Internet. In momentul de faţă există zeci chiar sute de milioane de 6
Universitatea de Nord Baia Mare
calculatoare conectate în întreaga lume, care permit accesul in reţea a unui număr foarte mare de oameni. In fiecare an, comunitatea primeşte milioane de noi utilizatori care doresc sa utilizeze internetul pentru a cunoaşte informaţii noi din domenii diferite. Internetul în România a pătruns relativ încet, multă vreme fiind considerat un lux inutil. Chiar şi acum, pentru uz personal, mai ales datorită costurilor foarte mari ale serviciilor telefonice, este destul de puţin utilizat. Din punct de vedere al infrastructurii lucrurile au avansat destul de mult, din punct de vedere al resurselor informatice disponibile evoluţia este destul de greoaie. Majoritatea companiilor şi chiar unele structuri administrative au inţeles prezenţa în Internet că este foarte importantă, încă nu există resurse şi depozite informaţionale româneşti semnificative. Din acest motiv traficul observat in reţeaua românească este mai mult de aducere de informaţii din exterior decât de export de informaţii în cadrul ţării. In contextul internaţional actual de afaceri, academic şi tehnologic, fenomene ca globalizarea şi liberalizarea accesului la informaţie dinamică şi nivelul de performanţă al dezvoltărilor în domeniul comunicaţiilor şi al calculatoarelor, sunt deja lucruri commune şi legate unele de altele. Dincolo de graniţe, in restul omenirii, Internetul a devenit deja cea mai comodă sursă de informaţie, in timp ce ceea ce este disponibil şi in România pe Internet este fie vechi, fie incorect, fie lipseşte prin costurile ridicate. Pentru a ne da seama ce ne rezervă viitorul in privinţa reţelei Internet, trebuie să înţelegem tipurile de tehnologii elaborate de experţii implicaţi in dirijarea reţelei şi pentru utilizarea internetului cât mai uşor cu putinţă.
Colaborare In dezvoltarea internetului s-au făcut mari progrese în domeniul conferinţelor video la distanţe marii. De exemplu, există tehnologii care permit colaborarea la anumite documente prin intermediul reţelei. De asemenea putem lua parte la conferinţe audio şi chiar să folosim o „planşetă” electronică pentru a ne expune schemele şi proiectele, astfel încât acestea să poată fi vizualizate de către toţi participanţii. Obiecte Creatorii paginilor Web nu mai sunt limitaţi la texte şi grafică, aşa incât putem fi siguri că vom găsi o mulţime de elemente interesante pe Web şi cu o viteză foarte mare de accesare. Câteva inovaţii recente permit chiar şi distribuirea de programe prin Web.
Mesaje e-mail complexe Nu mai suntem limitaţi la mesaje simple de text. Limbajul HTML permite formatarea acestora, cu caractere aldine şi cursive, şi cu diferite formate de paragraf. Mai mult decât atât, putem ataşa mesaje de e-mail, imagini şi alte elemente multimedia. Securitate Specialiştii din spatele reţelei Internet lucrează pentru a securiza comerţul on-line, oferind metode de protejare a tranzacţiilor din multitudinea de domenii de activitate. Ei crează un mediu mai sigur pentru copiii care se joacă pe Web, furnizând criterii de evaluare a paginilor, şi asigură securitatea rulării aplicaţiilor distribuite, prin autentificări de cod şi o securitate foarte bine pusă la punct. 7
Universitatea de Nord Baia Mare
2.1.
Pagini Web şi Servere Web
Construcţia World Wide Web este pe baza unui protocol numit Hypertext Transfer Protocol (HTTP). HTTP este un protocol mic şi rapid care se potriveşte foarte bine sistemelor informatice multimedia şi distribuite în salturile între site-uri. Web-ul constă în pagini cu informaţii de pe gazde care rulează software de tip server Web. Gazda este de multe ori identificată cu serverul Web, lucru care nu este corect. Serverul Web este un software, nu calculatorul în sine. Un Web server este un program care furnizează pagini Web la cerere. Când un utilizator de la o adresă IP specifică solicită un anumit fişier, serverul Web încearcă să obţină acel fişier şi să-l trimită înapoi utilizatorului. Fişierul solicitat poate fi codul sursă HTML al unei pagini Web, o imagine GIF, un fişier Flash, un document XML, sau un fişier AVI. Browserul Web este cel care determină ceea ce trebuie cerut, nu serverul Web. Conexiunile la serverul Web stabilesc pe măsură ce sunt accesate, se solicită o cere a unei pagini de la un server Web, o conexiune IP este stabilită prin Internet între gazda solicitantă şi gazda pe care rulează serverul Web. Pagina Web cerută este transmisă prin acea conexiune, iar aceasta este întreruptă de îndată ce pagina este primită (de exemplu, imagini GIF sau JPG). Pe un acelaşi host pot rula mai multe aplicaţii de Internet, de exemplu un server Web, un server FTP, un server DNS şi un server de mail SMTP POP3 pot rula în acelaşi timp. Fiecărui server îi este atribuit un port pentru a asigura că fiecare server va răspunde numai cererilor din partea clienţilor corespunzători. Majoritatea serverelor folosesc un set de porturi predefinite. Serverele Web folosesc de obicei portul 80, dar acesta poate fi schimbat. Pot fi instalate pe porturi nestandard pentru a fi ascunse, şi de asemenea, pot fi instalate mai multe servere Web pe un singur calculator asociindu-le porturi diferite. Internetul reprezintă o mulţime globala de calculatoare interconectate, similar unei reţele locale, dar la o scară mult mai largă. Elementul primar al Internet-ului este World Wide Web (cunoscut sub denumirea de Web sau WWW ). WWW este un suport pentru text, grafică, animaţie şi sunet. Documentele destinate Web-ului sunt cunoscute sub numele de pagini Web. Pentru a înţelege mai bine World Wide Web se porneşte de la modul în care este organizată informaţia în mediile tipărite. Aceste medii reprezintă un model adecvat pentru web şi modul său de organizare. Paginile Web oferă posibilitati multiple şi interesante: paginile de informaţii se pot regăsi pe calculatoare răspândite în lumea întreagă. Paginile în sine pot fi documente foarte complexe, interesante şi atractive. Paginile Web sunt memorate pe HDD unui server specializat şi gestionate printr-un software special şi sunt regasite şi afişate prin intermediul navigatoarelor Web (browser-e). Navigatorul Web afişează paginile de Web prin interpretarea unor marcatori definiţi cu ajutorul unui limbaj special denumit HTML (HyperText Markup Language) – utilizaţi pentru a codifica pagina de Web cu informaţia de afişat. Marcatorii au diferite semnificaţii. De exemplu aceştia semnifică modul în care vor fi aşezate diversele părţi ale paginii sau stabilesc legături între documente/fişiere. Tipic, o pagină de Web este legată de o diversitate de fişiere cum ar fi fişiere text, grafice sau multimedia. Mecanismul prin care sunt create căile de acces între documente este denumit hipertext, prezentat anterior. Atunci când utilizatorul acţionează prin clic de mouse 8
Universitatea de Nord Baia Mare
asupra unei legături, cum ar fi o porţiune de text, un element grafic, etc, navigatorul încarcă fişierul la care punctează aceasta legătura şi îl afişează. Legăturile din cadrul textului sunt uşor de identificat deoarece majoritatea navigatoarelor, implicit, colorează diferit de restul textului aceste legături şi le subliniază. Un site Web este definit ca o colecţie coerenta de informaţii prezentată sub forma unor pagini Web, fişiere multimedia, documente şi de alte tipuri, între care există legături. Intr-un site bine proiectat toate celelalte pagini punctează către pagina principală, chiar dacă navigatoarele moderne au butoane pentru acest lucru. Atunci când se realizează un site Web aceste fişiere sunt păstrate, în mod uzual, întrun director sau o colecţie de directoare în HDD local şi este ferit cu numele de site local . Serverul Web este dedicat memorării, transmiterii şi regăsirii paginilor de Web şi a fişierelor legate de acestea. Prin publicarea unui site local (upload), directorul, împreună cu conţinutul său, este transferat la server-ul Web care conţine Software-ul prin care site-ul este transmis navigatoarelor Web ale calculatoarelor conectate la Internet. Odata publicat, site-ul se transformă din site local în site Web, iar interacţiunea utilizatorului cu el are loc similar modului descris in figura 1.
Deşi cea mai mare parte a informaţiilor din World Wide Web este stocată în pagini Web scrise folosind limbajul HTML, există un număr destul de mare de documente provenite din alte tipuri de servicii de publicare a informaţiilor din Internet.
2.2.
Pagini Web Statice şi Dinamice
HTML Paginile Web sunt fişiere cu simplu text construite folosind limbajul Hypertext Markup Language (HTML). Acesta este implementat ca o mulţime de tag-uri uşor de învăţat. Autorii paginilor Web folosesc aceste tag-uri pentru a marca paginile de text, iar browserele le folosesc pentru a ronda şi afişa informaţiile pentru a putea fi vizualizate. Paginile Web pot să conţină legături hypertext la alte pagini.
JavaScript 9
Universitatea de Nord Baia Mare
HTML este un limbaj de markup. El permite crearea layout-ului paginilor şi a formularelor, dar nimic mai mult. Pentru a se construi interfeţe intuitive şi sofisticate este necesar şi un limbaj de scripting la nivel de client. Scripting-ul permite scrierea de cod (mici programe) care rulează în cadrul browserului. Cel mai cunoscut limbaj de scripting pe parte de client este JavaScript, care este suportat (mau mult sau mai puţin) de aproape orice browser existent. Folosind JavaScript se poate realiza: validarea formularelor, animarea textului şi a imaginilor, crearea de meniuri drop-down şi a controalelor de navigare, se pot efectua procesări de bază numerice sau asupra textelor şi multe altele. Scripting-ul permite programatorilor să detecteze şi să proceseze evenimentele. De exemplu, o pagină care se încarcă, un formular trimis, mişcarea pointer-ului mouse-ului asupra unei imagini sunt toate evenimente, iar script-urile pot fi executate automat de browser atunci când aceste evenimente au loc. Script-urile pot fi incluse în codul HTML sau pot fi stocate în fişiere externe şi legate în interiorul codului HTML.
Tehnologii pe parte de Client Majoritatea browserelor noi permit folosirea şi a altor tehnologii, dintre care cele mai importante sunt: - CSS (Cascading Style Sheets) – oferă o modalitate de a separa prezentarea de conţinut astfel încât ambele să poată fi refolosite şi modificate cu uşurinţă. - DHTML (Dynamic HTML) – o combinaţie de HTML, script-uri şi CSS care folosite împreună, pot realiza interfeţe pentru utilizator foarte atractive şi interactive. - Appleturi Java – mici programe care rulează în browser. - Macromedia Flash – o tehnologie inclusă în 98% din browserele existente, care oferă un mecanism pentru crearea unor interfeţe atractive şi portabile.
URL-uri Formatul unei locaţii din Internet este numit URL ( Uniform Resource Locator – Descriptor Uniform de Resurse). Structura completă a unui URL este urmatoarea: protocol://nume-calculator-gazda:port/cale-director/resursa Protocolul sau serviciul este reprezentat de regulile care guvernează transferul datelor în reţea. În practică se utilizează urmatoarele protocoale: o file – specifică un URL local; o http – indică adresa Internet a unei pagini Web sau altă resursă ; o ftp – utilizat pentru adresarea în Internet a fişierelor prin intermediul protocolului de transfer de fişiere FTP; o gopher – indică adresa URL a unui director Gopher; reprezintă un sistem utilizat pentru localizarea şi transferul informaţiilor de indexare a numelor fişierelor în Interent; o telnet – permite conectarea în timp real la un alt calculator în Internet şi utilizarea acestuia ca şi cum ar fi un calculator local. In sistemele Windows, în anumite situaţii protocolul poate lipsi pentru anumite adrese, tipul acestuia fiind determinat din numele gazdei. Numele calculatorului gazdă identifică în mod unic un calculator în cadrul reţelei. Numele poate fi reprezentat atât printr-o adresa IP, cât şi prin denumirea unui calculator local sau a unui calculator din Internet folosind specificaţiile DNS. 10
Universitatea de Nord Baia Mare
Portul este reprezentat printr-un număr şi este specific fiecărei aplicaţii. Majoritatea aplicaţiilor de reţea utilizează porturi pentru comunicare. Pe un calculator pot exista mai multe aplicaţii de reţea, fiecare aplicaţie utilizând un port distinct. Numele resursei este reprezentat de numele fişierului referit. Acesta poate fi o pagina Web, un fişier multimedia, un document, un fişier executabil. O limitare o constituie faptul că un URL nu poate conţine spaţii şi alte caractere speciale, astfel că orice spaţiu sau caracter special se va converti printr-un cod asociat acestora precedat de simbolul „%”. Alte URL-uri folosite alături de cele prezentate sunt cele de: o e-mail, prin intermediul cărora se pot doar transmite mesaje de poştă electronică; o ştiri Usenet – în care trebuie să se identifice un server de ştiri care să ofere acces.
2.3.
Limbajul PHP
PHP, acronim care provine din "PHP: Hypertext Preprocessor", este un limbaj de scripting utilizat pe scară largă, realizat şi distribuit în sistem Open Source, care este special realizat pentru a dezvolta aplicaţii web, prin integrarea codului PHP în documente HTML. Sintaxa sa provine din C, Java şi Perl şi este uşor de învăţat. Scopul principal al limbajului este acela de a scrie rapid pagini web dinamice, dar cu PHP se pot realiza mult mai multe. PHP este una dintre cele mai interesante tehnologii existente în prezent. Deoarece îmbină caracteristici dintre cele mai complexe cu simplitatea în utilizare, PHP a devenit rapid un instrument de frunte pentru dezvoltarea aplicaţiilor în Web. Totuşi, spre deosebire de alte instrumente populare pentru dezvoltarea aplicaţiilor Web, cum este Perl, PHP este un limbaj de programare comod pentru începători, chiar şi pentru cei care nu au mai desfăşurat activităţi de programare în trecut. Ca şi alte limbaje de scripting pentru Web, PHP vă permite să furnizaţi un conţinut Web dinamic, adică un conţinut Web care se modifică automat de la o zi la alta sau chiar de la un minut la altul. Conţinutul Web este un element important în susţinerea traficului unui sit Web; de regulă, vizitatorii nu vor mai reveni la o pagină Web care conţine aceleaşi informaţii ca şi cele prezentate la ultima vizită. Pe de altă parte, siturile Web frecvent actualizate pot atrage cantităţi enorme de trafic. Mai mult, spre deosebire de limbajele de scripting, precum JavaScript, PHP rulează pe serverul Web, nu în browserul Web. În consecinţă, PHP poate obţine accesul la fişiere, baze de date şi alte resurse inaccesibile programului JavaScript. Acestea constituie bogate surse de conţinut dinamic, care atrag vizitatorii.
Noţiuni Fundamentale Spre deosebire de un script scris în alte limbaje cum ar fi Perl sau C – în loc de a scrie un program cu o mulţime de comenzi pentru a produce un HTML, folosind PHP se poate scrie un script HTML, ca cel de mai jos, ce include cod pentru a realiza ceva. Codul PHP este delimitat de coduri de start şi de sfârşit ce permit intrarea şi ieşirea din "modul PHP".
Exemplu
Universitatea de Nord Baia Mare
echo "Salut, sunt un script PHP!"; ?> Diferenţa dintre PHP şi altceva cum ar fi JavaScript, este acela că PHP este executat pe server pe când JavaScript este executat pe calculatorul clientului (de browserul Web). Pentru un script similar celui de mai jos sus pe un server, clientul ar primi doar rezultatele scriptului ce este rulat, fără a vedea în nici un fel codul din spatele acestuia. Se poate chiar configura serverul de web ca acesta să proceseze toate fişierele HTML cu PHP şi astfel nu exită nici o metodă ca un utilizator să ştie de fapt ce există în fişiere. Cu PHP se poate face orice. PHP este în principal axat pe partea de scripting ce rulează pe server, deci poate face orice face şi un program CGI, cum ar fi colectarea de date de la formulare, generarea de conţinut dinamic sau trimitere şi primire de cookie-uri. Dar PHP poate face mult mai multe. Există trei domenii principale unde sunt folosite scripturile PHP. - Scripturi ce rulează pe server. Acesta este cel mai tradiţional şi cel mai important pentru PHP. Este nevoie de trei lucrui pentru a face să meargă: interpretorul PHP (CGI sau modul de server), un server web şi un browser web. E nevoie ca serverul de web să fie pornit, cu o conexiune PHP instalată. Se poate accesa rezultatul programelor PHP cu un browser prin intermediul serverului de web. - Scripting în linie de comandă. Se poate face ca PHP să ruleze fără a fi nevoie de server şi de browser, ci doar de interpretorul PHP. Această metodă este ideală pentru script-urile ce se vor a fi executate de regulă folosind cron (task scheduler în Windows), sau sarcini simple de procesare a textelor. - Scrierea de aplicaţii ce rulează de partea clientului în mod grafic (GUI). Probabil că PHP nu este limbajul cel mai bun de a scrie aplicaţii cu ferestre pentru Windows sau alte sisteme de operare, dar dacă este bine cunocut şi se doreşte folosirea unor facilităţi avansate ale PHP-ului în aplicaţiile ce rulează de partea clientului, se poate totuşi folosi PHP-GTK pentru a scrie astfel de programe. De asemenea, există posibilitatea de a scrie aplicaţii ce rulează pe platforme diferite folosind această metodă. PHP-GTK este o extensie a PHP-ului, nedisponibilă în distribuţia principală de PHP. PHP poate fi folosit pe aproape toate marile sisteme de operare, incluzând Linux, multe variante de Unix (incluzând HP-UX, Solaris şi OpenBSD), Microsoft Windows, Mac OS X, RISC OS, probabil şi altele. PHP are de asemenea suport pentru majoritatea serverelor de web din prezent. Acestea includ serverele Apache, Microsoft Internet Information Server, Personal Web Server, Netscape şi iPlanet, serverul Oreillz Website Pro, Caudium, Xitami, OmniHTTPd, şi multe atele. Pentru majoritatea serverelor PHP are un modul, iar pentru celelalte suportă standardul CGI, PHP putând să lucreze ca un procesor CGI. Deci, cu PHP, există libertatea de a alege un sistem de operare şi un server de web. Chiar mai mult, există posibilitatea de a alege programarea procedurală sau programarea orientată obiect, sau chiar să se combine acestea. Cu toate acestea, nu orice facilitate a standardului POO este prezentă în versiunea curentă a PHP-ului, multe librării de cod şi aplicaţii mari (incluzând şi librăria PEAR) sunt scrise folosind doar cod POO. Cu PHP programatorul nu este limitat să scoată rezultat HTML. Posibilităţile PHPului includ afişarea de imagine, fişiere PDF şi chiar filmuleţe Flash (folosind librăriile libswf şi Ming) toate generate instant. Se poate de asemeanea ca rezultatul să fie orice fişier text, cum ar fi XHTML sau orice alte fişiere XML. PHP poate genera automat aceste fişiere şi să 12
Universitatea de Nord Baia Mare
le salveze în sistemul de fişiere în loc să le afişeze, formând un cache de partea serverului pentru conţinutul dinamic. Una dintre cele mai puternice şi importante facilităţi în PHP este suportul său pentru o gamă largă de baze de date. Scrierea une pagini de web ce interacţionează cu o bază de date este incredibil de simplă. PHP suportă şi ODBC, standardul Open Database Connection, deci se poate conecta la orice altă bază de date ce suporta acest standard mondial. PHP are de asemenea suport pentru a conversa cu alte servicii folosind protocoale cum ar fi LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (pe Windows) şi multe altele. Se pot, de asemenea, deschide socket-uri de reţea şi se poate interacţiona între aproape toate limbajele de programare Web. PHP are suport pentru instanţierea obiectelor Java şi utilizarea lor într-un mod transparent ca obiecte PHP. Se pot de asemenea folosi extensii CORBA pentru a accesa obiecte aflate la distanţă. PHP are capabilităţi extrem de folositoare pentru procesarea textului, de la POSIX Extins sau expresii regulare Perl, până la parsarea documentelor XML. Pentru parsarea şi accesarea documentelor XML, suportă standardele SAX şi DOM. Folosind PHP în domeniul comerţului electronic, sunt foarte folositoare pentru programul tău de plaţi online funcţii de plată Cybercash, CyberMUT, VeriSign Payflow Pro şi CCVS. În cele din urmă, dar nu în ultimul rând, PHP are şi alte extensii interesante, cum ar fi funcţii ale motorului de căutare mnoGoSearch, funcţii pentru accesarea IRC-ului, multe utilitare de compresie (gzip, bz2), conversie de calendar, traducere, etc.
Ieşirea din modul HTML Când PHP interpretează un fişier trece prin textul acestuia până când întâlneşte unul din tag-urile speciale care îi spun să pornească interpretarea textului ca fiind cod PHP. Mai departe, parser-ul execută tot codul întâlnit, până la întâlnirea unui tag PHP de închidere, care anunţă trecerea normală prin text, din nou. Acest mecanism permite înglobarea codului PHP în interiorul codului HTML: tot ceea ce este în afara tag-urilor PHP este lăsat nemodificat, în timp ce tot ceea ce este în interior este interpretat ca fiind cod. Există patru categorii de tag-uri care pot fi folosite pentru a marca bolcurile de cod PHP. Dintre acestea, doar două ( şi <script language="php">. . .) sunt întotdeauna disponibile. Cu toate ca tag-urile în format scurt şi cele de tip ASP par a fi convenabile, ele nu sunt la fel de portabile ca cele în format lung. De asemenea, dacă se doreşte includerea codului PHP în XML sau XHTML, este necesar să se folosească tag-urile în forma pentru a corespunde standardului XML Cele patru tipuri de tag-uri sunt:
1. 2. echo ("Acasta este o instructiune de procesare SGML \n"); ?> = expression ?> Aceasta este un shortcut pentru " echo expresie ?>" 3. <script language="php"> echo ("unele editoare (ca FrontPage) nu suporta instructiuni de procesare"); 4. <% echo ("Folositi tag ASP-style"); %> <%= $variable; # Aceasta este un shortcut pentru "<% echo . . ." %> Prima varianta, , este metoda preferată deoarece permite folosirea PHPului în cod corform standardului XML, cum ar fi XHTML. 13
Universitatea de Nord Baia Mare
Cea de-a doua variantă nu este întotdeauna posibilă. Tag-urile prescurtate pot fi folosite doar dacă au fost activate. Acest lucru poate fi făcut prin intermediul funcţiei short_tags() (numai în PHP3), prin activarea opţiunii short_open_tag în fişierul de configurare, sau prin compilarea scripturilor folosind opţiunea enable-short-tags. Chiar dacă este implicit activată în fişierul php.ini, folosirea tag-urilor prescurtate nu este recomandată. Cea de-a patra variantă poate fi folosită numai dacă tag-urile de tip ASP au fost activate folosind setarea asp_tags din fişierul de configurare. PHP permite folosirea unor structuri ca cea de mai jos:
Este adevarat. Este fals. Aceasta funcţionează exact cum este de aşteptat, deoarece când PHP întâlneşte tag-ul de închidere ?> începe afişarea a ceea ce întâlneşte până la apariţia unui alt tag de start. În cazul blocurilor mari de text, ieşirea din modul PHP este în general mai eficientă decât trimiterea textului folosind echo() sau print().
Separarea instrucţiunilor Instrucţiunile sunt separate la fel ca în C sau Perl – fiecare instrucţiune este terminată cu un semn punct şi virgulă. Tag-ul de închidere implică şi sfârşitul instrucţiunii, deci următoarele două exemple sunt echivalente:
Comentariile PHP suportă comentarii de tip 'C', 'C++' şi Unix shell. De exemplu: Comentariul pe o sigură linie, de fapt realizează comentarea codului până la sfârşitul liniei curente sau până la terminarea blocului curent PHP, oricare din aceste două cazuri apare primul.
Tipuri de date PHP suportă opt tipuri primitive de date. 14
Universitatea de Nord Baia Mare
Patru tipuri scalare: boolean, integer , float (numere în virgulă mobilă, sau ‘double’) şi string. Două tipuri compuse: array, obiect. Două tipuri speciale: resource, NULL. Tipul unei variabile, de obicei nu este stabilit de programator, ci este decis la rulare de PHP, în funcţie de contextul în care acea variabilă este folosită.
Variabile În PHP variabilele sunt reprezentate folosind un semn dollar urmat de numele variabilei. Numele variabilelor sunt case-sensitive.
Variabile predefinite PHP furnizează un număr larg de variabile predefinite. Multe din aceste variabile, nu pot fi documetate complet deoarece sunt dependente de serverul pe care rulează, de versiunea şi setarea acestuia precum şi de alţi factori. Unele din aceste variabile nu vor fi folosite când PHP rulează în linie de comandă.
PHP Superglobals $GLOBALS - Conţine o referinţă la fiecare variabilă care este în mod curent valabilă în scopul global al script-ului. Cheile acestui şir sunt numele variabilelor globale. $_SERVER - Reprezintă variabilele setate de serverul de web sau legate direct de mediul de execuţie al scriptului curent. $_GET - Reprezintă variabilele oferite scritpt-ului direct prin HTTP GET. Analog vechiului şir $HTTP_GET_VARS (care încă este valabil, dar depreciat). $_POST - Reprezintă variabilele oferite scritpului direct prin HTTP POST. Analog vechiului şir $HTTP_POST_VARS (care încă este valabil, dar depreciat). $_COOKIE - Reprezintă variabilele oferite scritpului direct prin HTTP. Analog vechiului şir $HTTP_COOKIE_VARS (care încă este valabil, dar depreciat). $_FILES - Reprezintă variabilele oferite scritpului prin upload-ul de fişiere folosind modul POST din HTTP. Analog vechiului şir $HTTP_POST_FILES (care încă este valabil, dar depreciat). $_ENV - Reprezintă variabilele oferite scritpt-ului prin mediu. Analog vechiului şir $HTTP_ENV_VARS (care încă este valabil, dar depreciat). $_REQUEST - Reprezintă variabilele oferite scritpt-ului prin mecanismele de input GET, POST, şi COOKIE, deci care nu pot fi de încredere. $_SESSION - Reprezintă variabilele registrate unei sesiuni a script-ului. Analog vechiului şir $HTTP_SESSION_VARS (care încă este valabil, dar depreciat).
Folosirea variabilelor statice
15
Universitatea de Nord Baia Mare
O importantă caracteristică a scope-ului variabilei o reprezintă variabila statică. O variabilă statică există în scope-ul funcţiei locale, dar nu îşi pierde valoarea când execuţia programului părăseşte acest scope. Să considerăm următorul exemplu:
Această funcţie este destul de nefolositoare deoarece de fiecare dată este apelată să seteze valorea 0 variabilelei $a şi să printeze "0". Instrucţiunea $a++ care incrementează variabila nu serveşte nici unui scop deoarce, de îndată ce funcţia iese, variabila dispare. Pentru folosirea unei funcţii de numărare care nu va mai pierde număratoarea curentă, variabiala $a este declarată statică. Astfel, de fiecare dată când funcţia Test() este apelată, aceasta va afişa valoarea variabilei $a şi o va incrementa. Variabilele statice oferă, de asemenea, un mod de a lucra cu funcţiile recursive. O funcţie recursivă este o funcţie care se autoapelează. Trebuie avută grijă la scrierea unei funcţii recursive, deoarece este posibilă realizarea unei recursii infinite. Trebuie asigurat un mod de a termina recursia. Următoarea funcţie recursivă simplă numără până la 10, folosind variabila statică $count pentru a ştii când să se oprească:
?> Formulare HTML (GET şi POST) 16
Universitatea de Nord Baia Mare
Când un formular este trimis unui scrip PHP, informaţiile din acel formular sunt automat transmise scriptului PHP. Sunt mai multe modalităţi de a accesa informaţia, de exemplu:
În funcţie de setările şi preferinţele particulare, sunt multe modalităţi de a accesa datele din formulare HTML. Câteva exemple: Folosirea unui formular de tip GET este similară, cu deosebirea că se va folosi variabila predefinită GET în schimb. GET se poate folosi şi pentru extragerea informţiilor din QUERY_STRING (informaţiile de după semnul ? din URL). De exemplu, URL-ul http://www.example.com/test.php?id=3 conţine date GET care sunt accesibile prin $_GET['id'].
2.4.
Baze De Date
Noţiuni generale Bazele de date au devenit o componentă esenţială a vieţii de fiecare zi în societatea modernă. În cursul oricărei zile, fiecare dintre noi desfăşurăm activităţi care implică interacţiunea cu o bază de date, ca de exemplu, depunerea sau extragerea unor sume de bani din bancă, rezervarea biletelor la tren sau avion, rezervarea locurilor la hotel, căutarea unei referinţe bibiografice într-o bibliotecă computerizată (digital library), etc. În sensul cel mai larg, o bază de date (database) este o colecţie de date corelate din punct de vedere logic, care reflectă un anumit aspect al lumii reale şi este destinată unui anumit grup de utilizatori. O bază de date poate fi creată şi menţinută manual (de exemplu, fişele de evidenţă a cărţilor dintr-o bibliotecă, aşa cum erau folosite cu ani în urmă) sau computerizat, ceea ce reprezintă obiectul cursului de faţă. •
O bază de date trebuie să asigure: abstractizarea datelor (baza de date fiind un model al realităţii), 17
Universitatea de Nord Baia Mare
• • • • •
integrarea datelor (baza de date este un ansamblu de colecţii de date intercorelate, cu redundanţă controlată), integritatea datelor (se referă la corectitudinea datelor încarcate şi manipulate astfel încât să se respecte restricţiile de integritate), securitatea datelor (limitarea accesului la baza de date), partajarea datelor (datele pot fi accesate de mai mulţi utilizatori, eventual în acelaşi timp), independenţa datelor (organizarea datelor să fie transparentă pentru utilizatori, modificările în baza de date să nu afecteze programele de aplicaţii).
2.5.
Limbajul SQL
SQL (Structured Query Language - Limbaj Structurat de Interogare) , apărut în 1970 este un limbaj de programare specific lucrului cu bazele de date, devenit un standard în domeniu (standardizat ANSI-ISO), fiind cel mai popular limbaj utilizat pentru creearea, modificarea, regăsirea şi manipularea datelor de către SGBD-urile (Sistemele de Gestiune a Bazelor de Date) relaţionale.
Caracteristici generale: • SQL conţine atât componenţa de descriere a datelor (LDD), cât şi componenţa de
manipulare a datelor (LMD); • Manipularea (interogarea) este partea extinsă; • Limbaj neprocedural: secvenţa de comenzi (instrucţiuni), fiecare comandă este transmisă SGBD-ului, este interpretată şi returnează un rezultat.
Prezentarea limbajului SQL Standardul SQL3 (SQL ’98) defineşte modelul obiect-relaţional de baze de date. Structura sintactica: limbajul este compus din instrucţiuni (comenzi). O comandă SQL este o secvenţă de elemente componente (token). Elementele componente pot fi: cuvinte cheie, identificatori, caractere speciale şi constante (literali).
Cuvintele cheie şi identificatorii Aceştia au o structură lexicală identică. Lexical, un cuvânt cheie sau un identificator inseamnă o secvenţă de litere şi caracterul ‘_’. Din punct de vedere semantic, cuvintele cheie sunt elemente cu semnificaţie fixa în limbaj: - nume de comenzi (clauze): SELECT, INSERT, etc; exemplu de SELECT: SELECT * FROM elevi WHERE adminID='{$_SESSION['logat_elev_id']}' //scoate datele elevului autentificat din baza de date - tipuri de date: integer, numeric, char, varchar, etc. Limbajul SQL nu diferenţiază caracterele mari de cele mici: este case insensitive. Identificatorii au aceeaşi structură lexicală; din punct de vedere semantic reprezintă nume într-o comandă şi pot fi: nume de tabele, de coloane, etc. SQL foloseşte termenii de tabel, coloană şi linie pentru relaţie, atribut şi tuplu (cei subliniaţi sunt cei folosiţi în definirea matematică a modelului relaţional). Identificatorii sunt: - obişnuiţi (simpli): Secţie, ANGAJAT, etc; 18
Universitatea de Nord Baia Mare
- delimitaţi: reprezintă un nume pus între ghilimele, care poate să conţină orice fel de caractere. Un identificator delimitat este folosit, în general, pentru un nume mai mare de tabel.
Constantele Constantele pot fi: - de tip număr întreg: ex 1234 (reprezentate pe 4 octeţi); - de tip număr real: ex 12.5, 12e5 (reprezentate de 8 octeţi, în formatul double); - de tip şir de caractere: ex “Acesta este un şir”; - de tip NULL: constanta specială, reprezintă lipsa de informaţie.
Caracterele speciale - operatori (+,-,…); - “;” termină o comanda; - punctul zecimal (constante reale, codificări ale coloanelor); - separatorii: blank, TAB, CR ; sunt ceruţi uneori între elemente.
Operatori, expresii şi funcţii SQL Operatorii SQL: pot fi reprezentaţi prin unul sau mai multe caractere speciale (+, <, …) sau prin cuvinte cheie (AND, OR, NOT, UNION). Operatorii pot fi clasificaţi: - operatori binari: au nevoie de doi operanzi; - operatori unari: se aplică unui singur operand şi pot fi postfixe sau prefixe. - aritmetici: +, -, <, <=, <> (!=); - logici: AND, OR, NOT. Operatorii logici se aplica asupra unor valori ternare (o valoare ce reprezintă un operand ce poate avea valoare TRUE (1), FALSE (0) şi NULL (lipsă de informaţie)). Nu există tipul de date boolean asupra caruia să se aplice operatorii logici dar operatorii de comparaţie returnează o valoare booleana. Operatorii de comparaţie evaluează orice expresie la o valoare logica (bool): TRUE, FALSE. Tipul boolean există însa incepând din SQL3. Operatorii de comparaţie pot fi: • aritmetici: <, >, <=, >=, =, != (<>); • relaţionali o A BETWEEN val_min val_max; o A LIKE model_şir -> A şir; o A IS NULL sau A IS NOT NULL; o A IN lista_valori. O expresie SQL este o expresie formată din operanzi, operatori şi paranteze. Operatorii, în general, sunt nume de coloane (se va folosi valoare atributului definit de acea coloană) sau o constantă. Orice expresie se evaluează la o valoare care poate fi apoi folosită în alte operaţii.
Funcţiile SQL: - funcţii totalizatoare (de grupare): calculează anumite valori pentru coloane din tabele: SUM, AVE, MIN, MAX, …; - funcţii matematice: calcule trigonometrice, puteri, logaritmi, rotunjiri; 19
Universitatea de Nord Baia Mare
- funcţii pentru şiruri; - funcţii pentru date calendaristice; - funcţii pentru conversii. Ex: calcularea mediei SELECT (SUM(nota)/count(*)) as avg FROM note WHERE adminID='{$_SESSION['logat_elev_id']}'
Comenzi SQL Există două tipuri de comenzi: A. Comenzi de creeare a tabelelor, de ştergere a tabelelor şi de modificare a tabelelor formează comenzile de definire a datelor (Limbaj de definire a datelor);
Ex:
B. Comenzile de manevrare a datelor (LMD): SELECT (interogările de baza), INSERT, UPDATE, DELETE. SELECT n.*, e.* FROM note n LEFT JOIN elevi e ON n.elevID=e.elevID WHERE e.adminID='{$_SESSION['logat_elev_id']}' ORDER by notaID ASC
SQL asigură toate operaţiile care se consideră necesare într-o bază de date.
2.6.
MYSQL
Prezentare generală MySQL este un sistem de gestiune a bazelor de date relaţional, produs de compania suedeză MySQL AB şi distribuit sub Licenţă Publică Generală GNU. Este cel mai popular SGBD open-source la ora actuală, fiind o componentă cheie a stivei LAMP(Linux, Apache, MySQL, PHP). Deşi este folosit foarte des împreună cu limbajelel de programare JAVA,PHP, cu MySQL se pot construi aplicaţii în orice limbaj major. Există multe scheme API disponibile pentru MySQL ce permit scrierea aplicaţiilor în numeroase limbaje de programare pentru accesarea bazelor de date MySQL, cum are fi: C, C++, C#, Borland Delphi, Java, Perl, PHP, Python, FreeBasic, etc., fiecare dintre acestea folosind un tip spefic API. O interfaţă de tip ODBC denumită MyODBC permite altor limbaje de programare ce folosesc această interfaţă, să interacţioneze cu bazele de date MySQL cum ar fi ASP sau Visual Basic. În multe cărţi de specialitate este precizat faptul că MySQL este mult mai uşor de invăţat şi folosit decât multe din aplicaţiile de gestiune a bazelor de date, ca exemplu comanda de ieşire fiind una simplă şi evidentă: „exit” sau „quit”. Pentru a administra bazele de date MySQL se poate folosi modul linie de comandă sau, prin descărcare de pe internet, o interfaţă grafică: MySQL Administrator şi MySQL Query Browser. Un alt instrument de management al acestor baze de date este aplicaţia SQL Manager. MySQL poate fi rulat pe multe dintre platformele software existente: AIX, FreeBSD, GNU/Linux, Mac OS X, NetBSD, Solaris, SunOS, Windows 9x/NT/2000/XP/Vista. Serverul de baze de date MySQL este foarte rapid, fiabil şi uşor de utilizat. Iniţial a fost dezvoltat pentru a manipula baze de date de dimensiuni mari mult mai rapid decât soluţiile existente. MySQL Database Software este un sistem client/server ce constă într-un server MySQL multithreaded care suportă diferite programe client şi biblioteci, unelte 20
Universitatea de Nord Baia Mare
administrative şi o gamă largă de interfeţe pentru programarea aplicaţiilor (Application Programming Interfaces – APIs)
Caracteristicile de bază ale MySQL Câteva dintre caracteristicile de bază ale MySQL sunt: - Funcţionează pe diferite platforme - Dispune de API pentru C, C++, Eiffel, Java, Perl, PHP, Pyton, Ruby şi Tcl - Complet multi-threaded folosind thread-uri de kernel. Acest lucru înseamnă că poate lucra cu uşuinţă pe mai multe procesoare dacă sunt disponibile - Un sistem de alocare a memoriei foarte rapid şi bazat pe thread-uri - Foloseşte tabele temporare stocate în memorie - Funcţiile SQL sunt implementate folosind o bibliotecă de clase optimizată şi sunt foarte rapide. De obicei, nu are loc alocare a memoriei după iniţializarea interogărilor. - Serverul este disponibil ca program separat ce poate fi folosit într-un mediu de reţea de tip client/server. De asemenea, este disponibil şi ca bibliotecă ce poate fi inclusă în aplicaţii de sine stătătoare - Oferă motoare tranzacţionale şi non-tranzacţionale de stocare a datelor
Tipuri de date utilizate de MySQL Tipurile de date care apar în coloanele MySQL sunt diferite în funcţie de tipul lor. MySQL alocă spaţiu pe disc în funcţie de tipul de date specificat de utilizator. Iată şi tipurile de date, spaţiul pe care îl ocupă precum şi valorile minime şi maxime pe care le pot avea: Tipul de câmp TIMESTAMP oferă posibilitatea de a data automat operaţiile de tip INSERT şi UPDATE. El este compus implicit din 14 caractere pentru formatul 'YYYYMMDDhhmmss' dar putem să specificăm la crearea unui tabel că dorim să conţină mai puţine caractere. Tipurile de string-uri în MySQL sunt BLOB, TEXT, CHAR, VARCHAR, ENUM şi SET. În tabelul următor puteţi vedea marimea maximă admisă pentru cele mai folosite dintre ele precum şi spaţiul alocat pe disc pentru fiecare: Câmpul de tip BLOB poate conţine o cantitate variabilă de informaţie, similar cu TEXT însa diferit printr-un singur aspect: căutarea într-un câmp BLOB este case sensitive (se face diferenţă între majuscule şi minuscule), iar într-un câmp TEXT nu este. Tipul VARCHAR este similar tipului TEXT cu deosebirea ca într-o coloană de tip VARCHAR putem specifica numărul maxim de caractere admise.
Administrarea bazelor de date MySQL din linia de comandă În cazul unui sistem de operare Windows, conectarea pentru a lucra în mod interactiv cu cu serverul MySQL instalat pe acelaşi calculator realizează lansând în execuţie monitorul MySQL numit mysql.exe din directorul mysql/bin: C:\mysql\bin>mysql.exe Welcome to MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 3 to server version: 4.0.15-nt Type ’help;’ or ’\h’ for help.Type ’\c’ to clear the buffer. 21
Universitatea de Nord Baia Mare
mysql>_ Comenzile SQL se pot scrie cu litere mari sau mici, având acelaşi efect. Comenzile SQL se termină, uzual, cu caracterul “ ; “. Dând comanda help; (sau \h sau ?) pe ecran apar o serie de comenzi MySQL importante. Câteva comenzi din linia de comandă: -create database - crează o bază de date -use - se selectează o bază de date -create table - se crează tabele -alter - modificarea definiţiei unei tabele se realizează folosind comanda alter -insert - adăugare de înregistrări într-un tabel -update - permite modificarea valorilor unor câmpuri dintr-un tabel -drop - permite suprimarea unui tabel din baza de date -show - se foloseşte pentru listarea tabelelor care alcătuiesc baza de date -select - este cea mai complexă comandă din limbajul SQL şi este destinată regăsirii unor anumite date -quit - determină întreruperea conexiunii cu serverul MySQL
CAPITOLUL 3. SPECIFICAŢIILE APLICAŢIEI 3.1.
Prezentare generală
Odată ce omul a devenit o fiinţă economică (homo oeconomicus) putem presupune ca a apărut şi nevoia de măsurare şi înregistrare a activităţii sale economice desfăşurate la nivel individual sau comunitar. Conţinutul informaţional din întreaga lume în zilele noastre este convertit la o formă digitală, făcând astfel informaţiile disponibile oricui, oriunde şi oricând. Prin intermediul sistemelor informatice, multe dintre activităţile pe care omul le întreprinde pot fi uşurate şi chiar îmbunătăţite. Apariţia calculatoarelor şi folosirea lor în toate domeniile a reprezentat o dezvoltare majoră în viata omenirii. Din acea zi în care omul a început să folosească calculatorul fie pentru nevoile personale, fie pentru nevoile comunităţii, a realizat că îşi uşurează viaţa şi că poate să realizeze lucruri pe care până atunci nu putea, sau le făcea cu muncă grea. 22
Universitatea de Nord Baia Mare
Să ne gândim puţin cum lucrau institutele de invăţământ înaintea apariţiei calculatoarelor. Notele erau introduse în catalog de hârtie. Gândiţi-vă ce cantitate de hârtii sa adunat, şi pentru stocarea acestora era necesar un spaţiu de depozitare mare. Era doar un dezavantaj al inexisteţei calculatoarelor. Alt dezavantaj ar fi faptul că înregistrările, datele, nu erau în siguranţă, nu erau protejate. Calculatoru prin apariţia lui a rezolvat toate dezavantajele şi defectele trecutului. Şcolile din zilele noastre folosesc calculatoare şi programe diferite pentru îndeplinirea serviciilor, simplificând sarcinile omului. Aplicaţia Sistem de management al Şcolarităţii Elevilor a fost proiectată să fie utilizată de către profesorii şi elevii unei clase. Este concepută în aşa fel încât să fie uşor de înţeles şi de folosit. Persoanele care vor folosi acest program nu necesită cunoştinţe superioare în domeniul informaticii. Proiectul conţine doar ferestre, butoane, câmpuri de introducere a datelor, şi tabele, iar utilizarea acestora este foarte simplă. Adăugarea, ştergerea elevilor si a profesorilor, crearea, modificarea conturilor sunt doar câteva dintre operaţiile care se pot face în interiorul aplicaţiei. Aplicaţia dispune şi de o parte care trimite în cazul în care un elev şi-a uitat parola de autentificare.
3.2.
Pagina de acces
Fişierul predefinit pentru directorul web catalog este index.php, deci înseamnă că atunci când accesăm serverul prin comanda http://localhost/catalog/ serverul va trimite fişierul de bază, adică prima pagină a site-ului (index.php) ce va fi afişat în browser (Fig 3.1).
Fig 3.1 Pagina principala
23
Universitatea de Nord Baia Mare
Asa cum puteţi vedea, prima magina reprezintă pagina de autentificare. Paginile sunt concepute astfel ca să fie uşor de folosit de elevi si profesori. Prin intermediul acestei pagini pot accesa utilizatorii datele personale si informatiile asupra notelor obtinute la fiecare materie. Design-ul paginii a fost realizat in Adobe Dreamweaver, desi unii creatori de pagini web critică aceste tipuri de editoare deoarece produc pagini de dimensiuni mult mai mari decât ar fi necesar, ceea ce conduce la o funcţionare neperformantă a browserelor web. Afirmaţia in sine este în mare parte adevarată deoarece paginile web produse folosesc design-ul pe bază de tabel. În plus, produsul a mai fost criticat în trecut şi pentru producerea de coduri care adesea nu erau conform standardelor W3C, dar acest aspect a fost mult îmbunătăţit în versiunile recente. Cu toate acestea, Macromedia a crescut suportul pentru tehnologia CSS precum şi alte modalităţi de design fără a fi necesară folosirea design-ului pe bază de tabel. Dreamweaver permite folosirea majorităţii browserelor instalate pe calculatorul utilizatorului, pentru a previzualiza website-ul creat. De asemenea conţine şi câteva utilitare pentru administrarea site-urilor, cum ar fi cele pentru a găsi şi modifica un paragraf sau o linie de cod, în întregul web site, pe baza oricăror parametri specificaţi de către utilizator. Cu ajutorul panourilor de stare se poate crea cod JavaScript fără a avea cunoştinţe de programare.
Fig 3.2 Dreamweaver CS3 Odată cu apariţia versiunii MX, Macromedia a încorporat utilitare de generare dinamică a conţinutului. De asemenea este oferit suport pentru conectarea la baze de date (cum ar fi MySQL şi Microsoft Access) pentru a filtra şi afişa conţinutul folosind script-uri de genul PHP, ColdFusion, Active Server Pages (ASP) şi ASP.NET, fără a avea nevoie de o prealabilă experienţă în programare. Un aspect foarte lăudat al Dreamweaver-ului îl reprezintă arhitectura sa extensibilă. Extensiile, aşa cum sunt ele cunoscute, sunt mici programe, pe care orice dezvoltator le poate scrie (de obicei în HTML şi JavaScript) şi pe care oricine le poate descarca şi instala, acestea 24
Universitatea de Nord Baia Mare
aducând un spor de performanţă şi funcţionalitate îmbunătăţită programului. Există o comunitate de dezvoltatori care produc aceste extensii şi le publică (atât comercial cât şi gratuit) pentru probleme de dezvoltare web, de la simple efecte rollover până la soluţii complete de vânzare online. Header-ul conţine două poze: prima conţine titlul lucrării. Am prelucrat această poză folosind Adobe Photoshop, adăugând două pictograme. După cum aţi observat, de pe prima pagină elevii au posibilitatea de înregistrare şi recuperare parolă. Funcţiile celor două link-uri vă voi prezentate mai în amănunte în următorul capitol.
Fig 3.3 Photoshop CS3
3.3.
Stocarea informaţiilor
O aplicaţie pentru web prelucrează date de diferite naturi: siruri de caractere, valorile numerice, date calendaristice etc. Exemple : denumiri de materii, nume de utilizatori, parole, adrese de e-mail, note, data primirii notelor etc. Informaţiile păstrate într-o bază de date relaţională sunt dispuse într-un ansamblu de fisiere. Din considerente legate de cresterea vitezei de accesare a informaţiilor, fisierele sunt formate din articole având aceeasi structură. Articolele au o structura a unui fisier de date este definită la crearea sa, prin precizarea câmpurilor pe care le va conţine fiecare articol. Un câmp dintr-un articol conţine o informaţie elementară. Fiecare câmp are un nume, conţine un tip de informaţie (sir de caractere, număr, dată calendaristică, fisier etc.), are o lungime de reprezentare a informaţiei si, În cazul pentru câmpurilor numerice, are precizat numărul de zecimale. Datorită faptului că formatul articolului este fix, frecvent se foloseste pentru fisier o reprezentare tabelară si chiar se foloseste pentru fisierele de date denumirea de "tabele". O aplicaţie de tip server este un program care asteaptă comenzi din partea unor aplicaţii client. În cazul serverelor de baze de date relaţionale (Oracle, MySQL, IBM DB2, 25
Universitatea de Nord Baia Mare
Microsoft Access, OpenOffice Base etc.) se foloseste limbajul SQL (Structured Query Language). In stocarea informatiilor introduse in baza de date am folosit XAMPP-ul, care este un pachet de aplicaţii care constituie infrastructura software necesară găzduirii saiturilor web: server de web (Apache), server de baze de date (MySQL), interpretoare pentru scripturi scrise în limbajele PHP si PERL. Pentru a putea fi folosit pe servere care găzduiesc saituri, după instalarea pachetului de aplicaţii trebuie operate unele configurări, mai ales pentru ameliorarea securităţii acestor pachete. XAMPP a fost creat însă pentru a pune la dispoziţia dezvoltatorilor un instrument eficient de testare a diferitelor aplicatii in dezvltare. Odată instalat pe calculatorul propriu, pachetul de aplicaţii va face ca acesta să aibă comportamentul unui server, permiţând testarea aplicaţiilor scrise fără a intra în conflict cu firma care va găzdui în final produsul software realizat. XAMPP (http://www.apachefriends.org/en/xampp-windows.html) are si o variantă « lite », XAMPP Lite, care poate fi utilizată imediat după descărcare si dezarhivare, fără a fi necesară instalarea. După instalare, prezenţa pe calculator a pachetului de aplicaţii se manifestă prin aplicaţia XAMPP Control Panel Application.
Fig 3.4 XAMPP Control Panel Application După lansarea în execuţie a acestei aplicaţii se vor apăsa butoanele Start din dreptul celor două aplicaţii esenţiale testării saiturilor : Apache si MySQL. Notă : Dacă se utilizează varianta XAMPP Lite, se dezarhivează arhiva descărcată din Internet în rădăcina discului care va fi folosit pentru testarea site-urilor si aplicatiilor in dezvoltare. În urma desarhivării, pe discul selectat va fi adăugat directorul xampplite. În această variantă pornirea aplicatiilor Apache si MySQL necesare testării saiturilor se realizează selectând xampp_start din directorul xampplite.
26
Universitatea de Nord Baia Mare
Fig 3.5 Directorul xampplite Pentru oprirea aplicaţiilor se va selecta xampp_stop. Verificarea funcţionării aplicaţiilor necesare pentru testarea saiturilor se poate realiza tastând în browser adresa aplicaţiei web integrate în XAMPP şi destinate administrării serverului de baze de date MySQL: http://localhost/phpmyadmin/. Ca aplicaţie de tip server am folosit Apache. O aplicaţie de acest tip este un program reactiv. El rulează în continuu pe calculatorul destinat păstrării unuia sau mai multor saituri web şi aşteaptă cereri din partea unei aplicaţii client (Internet Explorer, Mozilla Firefox, Opera etc.). Ca aplicaţie, serverul pentru web accesează un ansamblu de fişiere dispuse pe HDD a calculatorului pe care acesta este instalat. Dacă o aplicaţie client solicită un fişier existent, serverul pentru web îl va furniza respectând regulile unui protocol precizat în cererea clientului (http). Paginile web sunt de regulă documente multimedia conţinând text, imagini, sunet, animaţii. Ele sunt stocate pe HDD în mai multe fişiere, fiecare fişier conţinând informaţii de un anumit tip. Corespunzător, serverul pentru web va primi din partea aplicaţiei client o suită de cereri de transfer de fişiere începând cu fişierul principal. Asamblarea documentului din fragmentele primite cade în sarcina aplicaţiei client. Pe serverele pentru Internet funcţionând sub UNIX sau Linux, Apache este configurat astfel încât rădăcina structurii arborescente de directoare care găzduiesc saituri diferă de cea creată în urma instalării XAMPP.
27
Universitatea de Nord Baia Mare
CAPITOLUL 4. IMPLEMENTAREA ŞI UTILIZAREA APLICAŢIEI
4.1.
Crearea bazei de date a aplicaţiei
4.1.1. Crearea unei baze de date folosind XAMPP Baza de date a fost realizată cu aplicaţia XAMPP folosind phpMyAdmin. Pentru deschiderea aplicaţiei phpMyAdmin se porneşte XAMPP şi se tastează în caseta de text pentru adrese a aplicaţiei Internet Explorer adresa http://localhost/phpmyadmin/
Fig 4.1 În fereastra afişată se va tasta numele noii baze de date (catalog) şi se va apăsa butonul Create:
28
Universitatea de Nord Baia Mare
Fig 4.2 phpMyAdmin va crea comanda SQL de creare a unei baze de date şi o va trimite serverului MySQL. phpMyAdmin va afişa de fiecare dată comenzile pe care le-a trimis serverului de baze de date MySQL.
Fig 4.3 Odată creată, baza de date catalog va fi bază de date curentă. Comenzile ulteriore, de exemplu cele prin care se vor crea tabelele (fişierele) acesteia, se vor adresa acesteia. La următoarele porniri ale aplicaţiei phpMyAdmin intrarea în baza de date catalog se va realiza prin selectarea acesteia în arborele afişat în panoul din stânga al aplicaţiei.
Fig 4.4
4.1.2. Crearea unui tabel al bazei de date •
Crearea tabelei admin 29
Universitatea de Nord Baia Mare
Tabelul admin va conţine datele de identificare a utilizatorilor autorizaţi să opereze în baza de date. Acest tabel este prezent în toate bazele de date accesibile prin Internet. Crearea unui tabel se realizează concomitent cu definirea structurii sale.
Fig 4.5 Tabelul admin are 6 câmpuri (engl. fields). În vederea creării comenzii create table, phpMyAdmin va cere introducerea numelui şi tipului fiecăruia dintre câmpurile tabelului.
Fig 4.6 Câmpurile tabelului admin sunt adminID (INT - valoare întreagă), username (VARCHAR lungime maximă 20 caractere), password (VARCHAR - lungime maximă tot 20 caractere), email(VARCHAR), matID(INT- valoare întreagă), tipID(INT- valoare întreagă). Tipul VARCHAR se foloseşte pentru siruri de caractere de lungime variabilă. Pentru câmpul adminID s-a mai precizat că este PRIMARY şi s-a selectat caseta AUTO_INCREMENT. Prima caracteristică, PRIMARY indică faptul că adminID este cheie primară. Cheia primară a unui tabel din baza de date are valori distinct pentru toate articolele din tabel şi are rolul de identificator unic al acestora. Dacă ulterior se va dori suprimarea unui articol se va putea selecta articolul indicându-i cheia primară. Proprietatea AUTO_INCREMENT indică modul de formare a valorilor câmpului adminID. Valoarea acestuia pentru un nou articol care urmează să fie adăugat se calculează automat, prin incrementarea valorii corespunzătoare ultimului articol present în tabel. Câmpul username s-a definit ca fiind INDEX. Impunerea ca index a unui câmp facilitează căutările în tabel efectuate după valori ale respectivului câmp. În cazul dat, serverul MySQL va ataşa tabelului admin un fişier ale cărui înregistrări vor conţine perechi de valori username - adresă articol pe HDD.
30
Universitatea de Nord Baia Mare
În noul fişier înregistrările vor fi păstrate ordonate crescător după valorile câmpului username. La căutarea după username a unui articol din tabelul admin se va căuta mai întâi în fişierul asociat tabelului adresa articolului căutat după care se va extrage direct articolul dorit. Notă: Spre deosebire de PRIMARY, INDEX nu înseamnă valori distincte. Câmpul username permite introducerea aceluiaşi nume de mai multe ori. În acest caz, în fişierul asociat tabelului admin vor fi înregistrate grupat mai multe perechi username – adresă conţinând acelaşi nume. La căutarea unui nume care apare repetat, serverul MySQL va furniza tot grupul de articole corespunzând criteriului de căutare impus. Crearea tabelului se realizează prin apăsarea butonului . phpMyAdmin va afişa şi comanda CREATE TABLE trimisă serverului MySQL.
Fig 4.7 • Crearea tabelei elev Baza de date catalog va conţine printre altele un tabel cu datele elevilor şi a profesorilor. Pentru afişarea acestora se va declara în prealabil tabelul elevi respectiv profesori. Rolul acestuia va fi acela de a permite ulterior afişarea şi modificarea datelor personale. Tabelul elevi are 8 câmpuri, elevID fiind declarat cheie primară.
Fig 4.8
31
Universitatea de Nord Baia Mare
Fig 4.9
Fig 4.10 Notă: Câmpul tipID reprzinta tipul de utilizator (administrator, elev, professor). Cele 3 tipuri de utilizatori sunt prezentate mai explicit în Capitolul 5.
4.2.
Interfaţa cu utilizatorul
Aplicaţia prin lansarea ei produce apariţia ferestrei principale a paginii Web, care se ocupă de autentificarea utilizatorilor care doresc să folosească acestă aplicaţie.
32
Universitatea de Nord Baia Mare
Fig.4.11 Pagina principală Există trei tipuri de utilizatori care pot folosi această aplicaţie, fiecare având privilegii unice. Cele trei tipuri de utilizatori sunt următoarele: - administrator : este nevoie de un nume utilizator şi o parolă de administrator - profesor : este nevoie de un cont de profesor - elev : este nevoie de un cont de elev al clasei respective Dacă nu s-a introdus numele de utilizator şi parola, iar utilizatorul astfel încearcă să acceseze pagina, se va trezi cu mesaje de eroare: „Introduceti numele de utilizator!”
Fig.4.12 Eroare nume utilizator respectiv: „Introduceti parola!” Fiecare utilizator îşi introduce numele de utilizator (cont) şi parola, după care apasă butonul sau tasta ENTER de pe tastatură. În timp ce utilizatorul face un singur click pe butonul AUTENTIFICARE , în interiorul codului sursă se întâmplă mai multe lucruri de care utilizatorul nu ştie, cum ar fi: - primul lucru, care se întâmplă când utilizatorul introduce informaţiile necesare de autentificare (nume utilizator, parolă) şi apasă butonul AUTENTIFICARE, este verificarea corectitudinii datelor introduse. Se face o interogare la baza de date, în care se verifică dacă există utilizator cu nume de cont şi parolă identică cu cele introduse.Codul interogarii este: 33
Universitatea de Nord Baia Mare
if($_POST['action']=="login") { $username=$_POST["username"]; $password=$_POST["password"]; $sql_txt = "SELECT * FROM admin WHERE username='$username' AND password='$password' AND tipID='1'"; $sql_query = mysql_query ($sql_txt) or die(mysql_error()); $sc = mysql_fetch_assoc($sql_query); if(mysql_num_rows($sql_query)>0) { $_SESSION['logat_admin'] = "Y"; } else { $msg = "Nume utilizator sau Parola Gresita!"; $_SESSION['logat_admin']="N"; } } Dacă nu s-a găsit o corespondenţă se afişează un mesaj de eroare: „Nume utilizator sau parola gresita !” În caz afirmativ, se acceptă numele de cont şi parola, dispare fereastra de autentificare şi apare fereastra cu meniul. Din fereastra principală în afară de autentificare, elevii mai au posibilitatea: - Înregistrare - Recuperare parolă Fucţiile pentru sistem a celor două pagini sunt incluse in fişierul catalog_fns.php prezentat mai jos. Acest fişier este doar un container pentru alte trei fişiere incluse care le vom utiliza în cele două pagini: Înregistrare elevi şi Recuperare parolă. Este structurat în acest mod pentru ca funcţiile se încadrează în grupuri logice. Unele dinre aceste grupuri pot fi utile pentru alte proiecte, aşa că am plasat fiecare grup de fincţii într-un fişier diferit pentru a şti unde le pot găsi atunci cand voi avea din nou nevoie de ele. Fişierul catalog_fns.php l-am construit deoarece în scripturile acestor două pagini voi folosi o mare parte din cele trei fişiere cu funcţii. Este mai uşor să includem doar acest fişier în script în loc să am trei instrucţiuni require. În caz particular utilizez funcţii din fişierul catalog_fns.php. Acestea sunt funcţii destul de simple, iar majoritatea ieşirii este cod HTML simplu. În continuare vă voi prezenta cele două pagini : Înregistrare elevi şi Recuperare parolă.
4.2.1. Înregistrare elevi Înregistrarea se poate efectua numai în cazul în care contul elevului, care doreşte să înregistreze, nu a fost deja creat de către administrator. Există o posibilitate pentru a accesa pagina de înregistrare: Selectând Înregistrare elevi din meniul : 34
Universitatea de Nord Baia Mare
Fig.4.13 Înregistrare 1 Selectând cu mouse-ul una dintre cele două butoane, prezentate mai sus, va apărea pagina Înregistrare elevi.
Fig.4.15 Înregistrare elevi Pentru a se înregistra, elevul trebuie să aibă un număr matricol unic. Numai pe baza acestui număr matricol se poate realiza înregistrarea pe site. Dacă elevul nu ştie numărul matricol, are două posibilitaţi de a rezolva accesul pe site-ul Sistem de management al Şcolarităţii Elevilor . Prima ar fi de a solicita numărul matricol de la administrator. Cea de-al doilea ar fi, ca elevul să ceară de la administrator un cont, precizând datele de conectare, cum ar fi numele de utilizator, parola şi adresa de e-mail. Parola se poate modifica ulterior după autentificare. În cazul în care elevul are numărul matricol, el poate să completeze formularul pentru a crea contul de autentificare. Toate campurile a acestui formular sunt obligatorii. Dacă nu s-a completat un camp din cele existente în formular, apare mesajul de alertă, care va atenţiona elevul despre care câmp nu este completat. Adresa de e-mail trebuie să fie de forma: ex:
[email protected]. Dacă nu este de această formă, apare mesajul următor: „Introduceti corect adresa de e-amil !”
35
Universitatea de Nord Baia Mare
Fig.4.15 Eroare adresa e-mail incorect Dacă câmpurile au fost completate, dar numărul matricol nu corespunde cu nici unul existent în baza de date (numerele matricole se introduc de către administrator), înregistrarea nu se poate efectua. Va apărea mesajul : „Inregistrarea nu s-a efectuat cu succes. Numarul matrivcol incorest !” Înregistrarea cu un număr matricol se poate efectua numai o singură dată. În cazul în care un elev vrea să folosească numărul matricol înca o dată pentru înregistrare, se va trezi cu un mesaj de alertă. Dacă elevul a introdus un nume de utilizator, care există deja în baza de date, înregistrarea nu se poate realiza. Codul de verificare a numelui de utilizator este : $sql_txt = "select * from admin where username='$username'"; $sql_query = mysql_query($sql_txt); if (mysql_num_rows($sql_query)>0){ echo '<script language="javascript"> location.href="register_form.php" alert("Nume de utilizator OCUPAT"); '; throw new Exception (); } Dacă numele de utilizator nu există în baza de date, se trece la verificare existenţei numărului matricol. else{ $sql_txt_mat = "SELECT * FROM nrmatr WHERE nr_matr='{$_POST['nr_matr']}'"; $sql_query_mat = mysql_query($sql_txt_mat) or die(mysql_error()); $sc_mat = mysql_fetch_assoc($sql_query_mat); if(!empty($sc_mat['matrID'])){ 36
Universitatea de Nord Baia Mare
Dacă numărul matricol introdus în formular există în baza de date, se efectuează înregistrarea. $sql_txt_elv = "INSERT INTO admin SET username = '{$_POST['username']}', password='{$_POST['password']}', email='{$_POST['email']}', tipID='2'"; $sql_query_elv = mysql_query($sql_txt_elv) or die(mysql_error()); if(mysql_affected_rows()>0){ $id = mysql_insert_id(); $sql_txt_elv = "UPDATE nrmatr SET adminID = '{$id}' WHERE matrID='{$sc_mat['matrID']}'"; $sql_query_elv = mysql_query($sql_txt_elv) or die(mysql_error()); do_html_header('Inregistrare efectuata cu succes'); echo '<script language="javascript"> location.href="index.php" alert("Inregistrarea s-a efectuat cu succes."); '; do_html_footer(); }else{ do_html_header('Inregistrare esuata'); echo '<script language="javascript"> location.href="index.php" alert("Inregistrarea NU s-a efectuat cu succes."); '; do_html_footer(); } }else{ Dacă numărul matricol introdus în formular nu există în baza de date, înregistrarea nu se efectuează. do_html_header('Inregistrare esuata'); //apeleaza functia do_html_header echo '<script language="javascript"> location.href="index.php" alert("Inregistrarea NU s-a efectuat cu succes. Numar matricol incorect"); '; do_html_footer(); } }
4.2.2. Recuperare parolă Recuperarea parolei se face pe baza numelui de utilizator.
37
Universitatea de Nord Baia Mare
Fig.4.16 Schimbare parolă În cazul în care nu s-a introdus numele de utilizator apare următorul mesaj: „Introduceti numele de utilizator” Pentru un nume de utilizator introdus, care nu există in baza de date, apare mesajul: “Nume de utilizator incorect!! Nu se gaseste adresa de email !! ”. Dacă numele de utilizator este corect, apasând butonul Schimb parola se crează o parolă nouă, care va fi trimisă prin e-mail pe adresa de e-mail a utilizatorului respectiv. Parola nouă se i-a dintr-un fişier text. Funcţia care crează parola este: function get_random_word($min_length, $max_length) { $word = ''; $dictionary = "words.txt"; // fişierul text cu cuvintele dintr-un dicţionar $fp = @fopen($dictionary, 'r') or die ("Can't open file"); if(!$fp) return false; $size = filesize($dictionary); // selectarea aleatoare a unui cuvânt din fişier srand ((double) microtime() * 1000000); $rand_location = rand(0, $size); fseek($fp, $rand_location); // căuterea unui cuvânt cu lungime corectă while (strlen($word)< $min_length || strlen($word)>$max_length || strstr($word, "'")) { if (feof($fp)) fseek($fp, 0); // daca e la sfarsit, se trece la inceput $word = fgets($fp, 80); // sare peste primul cuvant pentru ca poate fi partial $word = fgets($fp, 80); // parola poteniala }; $word=trim($word); // curate adulmecatorul \n de la fgets 38
Universitatea de Nord Baia Mare
return $word; }
4.3.
Tipuri de utilizatori
După autentificarea reuşită apare pagina cu meniul aplicaţiei. În prima pagină va apărea un mesaj cu numele de utilizator a persoanei care foloseşte programul.
Fig.4.17 Pagina start Meniul paginii este diferit, în funcţie de tipul de utilizator, adică administrator, elev, profesor. Meniurile pentru cele trei tipuri de utilizatori sunt următoarele: - Administrator
Fig.4.18 Meniu administartor
-
Profesor
39
Universitatea de Nord Baia Mare
Fig.4.19 Meniu profesor
-
Elev
Fig.4.20 Meniu elev
40
Universitatea de Nord Baia Mare
4.3.1. Meniul pentru tipul administrator Acest meniu este diferit faţă de meniul celor 2 tipuri de utilizatori (elev, profesor). Meniul pentru tipul administrator are 6 butoane, aşa cum am ilustrat in Fig.4.18. Butonele sunt: Cont profesori Cont elevi Numar matricol Materie Lista elevi Lista profesori Schimb parola
Primul buton numit Cont profesori se ocupă cu crearea şi administrarea conturilor pentru profesori. Prin apăsarea butonului se accesează pagina Administrare cont profesori, în care administratorul are posibilitatea de a crea şi şterge contul profesorilor.
Fig.4.21 Cont profesori Pentru a crea un cont trebuie sa completam datele de autentificare, materie se selecteză din baza de date, dintre cele adăugate de către administrator. În cazul în care nu se introduc datele, apare un mesaj în care se specifică exact care câmp nu a fost completat. În cazul în care adresa de e-mail nu este corectă apare mesajul: „Introduceti corect adresa de e-mail !”. La crearea contului se execută codul: $sql_txt_ad = "select * from admin where username='$username'"; $sql_query_ad = mysql_query($sql_txt_ad); if (mysql_num_rows($sql_query_ad)>0){//verifica daca numele de utilizator este unic 41
Universitatea de Nord Baia Mare
$msg = "Nume de utilizator Ocupat!"; }else{//daca este unic atunci se introduc datele in baza de date if(!empty($_POST['action']) AND $_POST['action']=="addProf") { $sql_txt = "INSERT INTO admin SET username='".mysql_real_escape_string($_POST['username'])."', password='".mysql_real_escape_string($_POST['password'])."', email='".mysql_real_escape_string($_POST['email'])."', matID ='".mysql_real_escape_string($_POST['matID'])."', tipID= '3'"; if(mysql_query($sql_txt)) { $msg = "Contul a fost creat!"; } else { $msg = "Contul NU a fost creat!"; } } } Dacă vrem să modificăm un cont, trebuie să alegem contul respectiv, apăsând butonul Modifica. Datele de autentificare, selectate pentru modificare, apar în casetele de text corespunzătoare. În acest caz în loc de butonul Adauga apare Modifica. După modificarea datelor, apasând butonul Modifica, apare mesajul : „Contul a fost modificat !” La ştergere apare urmatorul mesaj de interogare: „Esti sigur ca vrei sa stergi ?” Apasând OK, se executa comanda , iar datele de autentificare se şterg din baza de date: if(!empty($_GET['sterge'])) { $sql_txt = "DELETE FROM admin WHERE adminID='{$_GET['sterge']}'"; $sql_query = mysql_query($sql_txt); if(mysql_affected_rows()>0){ $sql_txt = "DELETE FROM profesori WHERE adminID='{$_GET['sterge']}'"; $sql_query = mysql_query($sql_txt); } if(mysql_affected_rows()) { $msg = "Contul a fost sters"; } else { $msg = "Contul NU a fost sters!"; } } Butonul Cont elevi se ocupă cu crearea şi administrarea conturilor pentru elevi. Apasând acest buton apare pagina Administrare cont elevi, care este asemănător cu cea din Fig.4.18. Modificarea şi ştergerea se face asemănător ca şi în pagina Administare cont profesori.
42
Universitatea de Nord Baia Mare
Fig.4.22 Administrare cont elevi
Butonul Numar matricol se ocupă cu adăugarea şi ştergerea numărului matricol, pe baza căruia se face înregistrarea de către elevi. În cazul în care nu completăm câmpul, iar apăsăm butonul Adauga, apare un mesaj de avertizare: „Introduceti numarul matricol!”. În cazul în care elevul a efectuat înregistrarea folosind unul din numerele matricole existente, şi a comletat datele personale, atunci numele şi prenumele elevului respectiv va apărea lângă numărul matricol. Adaugând un număr matricol se execută codul: $sql_txt_ad = "select * from nrmatr where nr_matr='$nr_matr'"; $sql_query_ad = mysql_query($sql_txt_ad); if (mysql_num_rows($sql_query_ad)>0){ $msg = "Numarul matricol existent !"; }else{ if(!empty($_POST['action']) AND $_POST['action']=="addMatr" ) { $sql_txt = "INSERT INTO nrMatr SET matrID='".mysql_real_escape_string($_POST['matrID'])."', nr_matr='".mysql_real_escape_string($_POST['nr_matr'])."'"; if(mysql_query($sql_txt)) { $msg = "Numarul matricol a fost adaugat!"; } else { $msg = "Numarul matricol NU a fost adaugat!"; } } } 43
Universitatea de Nord Baia Mare
Fig.4.23 Numar matricol Butonul Materie se ocupă de adăugarea şi ştergerea materiei. În cazul în care nu completăm câmpul, iar apăsăm butonul Adauga, apare un mesaj de avertizare: „Introduceti materia!”.
Fig.4.24 Materie
44
Universitatea de Nord Baia Mare
Butonul Lista elevi şi Lista profesori se ocupă cu afişarea colectivului de profesori existente în baza de date.
Fig.4.25 Colectivul de elevi
Butonul Schimb parola se ocupă cu schimbarea parolei a administratorului.
4.3.2. Meniul pentru tipul profesor Meniul pentru tipul profesor are 4 butoane, aşa cum am ilustrat in Fig.4.19. Butonele sunt: Adaugare note Date personale Lista elevi Situatie elevi Schimbare parola Butonul Adaugare note se ocupă cu adăugarea notelor de către profesorul care este autentificat. Adăugarea notei se realizează apăsand butonul Adauga. Completarea câmpurilor este obligatoriu. În cazul în care nu am completat bine formularul, apare o eroare, care ne avertizează unde am greşit, sau care casetă de text nu este completată. Nota trebuie să fie între 1 şi 10. În caz contrar apare o eroare cu mesajul: „Introduceti corect nota!”. Data se selecteaza apăsând butonul , dintr-un calendar realizat cu Javascript.
45
Universitatea de Nord Baia Mare
Fig.4.24 Adaugare note Butonul Date personale se ocupă cu adăugarea şi modificarea datelor personale, cum ar fi: nume, prenume, adresa, nr. telefon. Persoana care se autentifică şi foloseşte prima data aplicaţia, trebuie să introducă datele personale. În cazul în care datele au fost deja introduse anterior, accesând pagina, datele personale a utilizatorului apar în casetele de text, iar aceasta are posibilitetea doar de a modifica aceste date apăsând butonul . Codul php a paginii respective este următoarea:
if(!empty($_POST['action']) AND $_POST['action']=="addProf") { $sql_txt = "SELECT * FROM profesori WHERE adminID='{$_SESSION['logat_prof_id']}'"; $sql_query = mysql_query($sql_txt); $sc=mysql_fetch_assoc($sql_query); if(!empty($sc['adminID'])){ //se verifică dacă au fost deja introduse datele. Dacă au fost introduse, se pot face modificări asupra acestor date. if(!empty($_POST['profID'])){ $sql_txt = "UPDATE profesori SET numeProf='".mysql_real_escape_string($_POST['numeProf'])."', prenumeProf='".mysql_real_escape_string($_POST['prenumeProf'])."', adresaProf='".mysql_real_escape_string($_POST['adresaProf'])."', cnpProf='".mysql_real_escape_string($_POST['cnpProf'])."', tel_prof='".mysql_real_escape_string($_POST['tel_prof'])."', tipID= '3' WHERE profID='{$_POST['profID']}'"; $sql_query = mysql_query($sql_txt); if(mysql_affected_rows()>0) { $msg = "Datele personale au fost modificate!"; 46
Universitatea de Nord Baia Mare
} else { $msg = "Datele personale NU au fost modificate!"; } } }else{ //în caz contrar se introduc datele $sql_txt = "INSERT INTO profesori SET numeProf='".mysql_real_escape_string($_POST['numeProf'])."', prenumeProf='".mysql_real_escape_string($_POST['prenumeProf'])."', adresaProf='".mysql_real_escape_string($_POST['adresaProf'])."', adminID='".mysql_real_escape_string($_SESSION['logat_prof_id'])."', cnpProf='".mysql_real_escape_string($_POST['cnpProf'])."', tel_prof='".mysql_real_escape_string($_POST['tel_prof'])."', tipID= '3'"; if(mysql_query($sql_txt)) { $msg = "Datele personale au fost adaugate!"; } else { $msg = "Datele personale NU au fost adaugate!"; } } } $sql_txt = "SELECT * FROM profesori WHERE adminID='{$_SESSION['logat_prof_id']}'"; //se selectează profesorul care este autentificat $sql_query = mysql_query($sql_txt); $sc=mysql_fetch_assoc($sql_query); if(!empty($sc['profID'])){ //dacă datele au fost deja introduse, ele apar în căsuţele de text, iar avem posibilitatea de a modifica aceste date $numeProf = $sc['numeProf']; $prenumeProf = $sc['prenumeProf']; $adresaProf = $sc['adresaProf']; $cnpProf = $sc['cnpProf']; $tel_prof = $sc['tel_prof']; $profID = $sc['profID']; $btn = "Modifica"; }else{ //dacă datele nu au fost introduse, căsuţele de text sunt goale, şi avem posilitatea de a adăuga datele personale $numeProf = ""; $prenumeProf = ""; $adresaProf = ""; 47
Universitatea de Nord Baia Mare
$cnpProf = ""; $tel_prof = ""; $profID = ""; $btn = "Adauga"; }
Fig.4.25 Date presonale
Butonul Lista elevi se ocupă cu afişarea colectivului de elevi, identic ca la tipul de utilizator administrator. Butonul Situaţie elevi se ocupă de afişarea mediei a fiecărui elev la materia la care predă profesorul autentificat. Afişarea se face selectând elevul din colectivul de elevi existente în baza de date dintr-un combobox, iar apoi se selectează din baza de date ID-ul materiei la care predă profesorul: select matID FROM admin WHERE adminID='{$_SESSION['logat_prof_id']}' După selectarea materiei se selectează datele care vor fi afişate în tabela de situaţii. select (SUM(nota)/count(*)) as avg, count(*) as ct, n.*, m.* FROM note n LEFT JOIN materie m ON n.matID=m.matID WHERE n.matID='{$sc_m['matID']}' AND n.elevID='{$_POST['elevID']}' GROUP BY n.matID ORDER by notaID ASC
48
Universitatea de Nord Baia Mare
Rezultatul arată astfel:
Fig.4.26 Situatie elevi
Butonul Schimbare parolă se ocupă cu schimbarea parolei utilizatorului autentificat. Pentru a modifica parola, utilizatorul trebuie să introducă parola veche, parola nouă şi parola de verificare, adică parola nouă încă o dată. Dacă parola nouă nu este identică cu parola de verificare, apare mesajul: „Parola de verificare nu corespunde!”. Codul php arata astfel: if(!empty($_POST['action']) AND $_POST['action']=="addParola") { $sql_txt_par = "SELECT * FROM admin WHERE password='{$_POST['old_password']}' AND adminID='{$_SESSION['logat_prof_id']}'"; //se selectează parola utilizatorului $sql_query_par = mysql_query($sql_txt_par) or die(mysql_error()); $sc_par = mysql_fetch_assoc($sql_query_par); if(!empty($sc_par['adminID'])){ //dacă parola veche introdusă este corectă, se efectuează schimbarea parolei $sql_txt_c = "UPDATE admin SET password='".mysql_real_escape_string($_POST['password'])."' WHERE adminID='{$_SESSION['logat_prof_id']}'"; $sql_query_c = mysql_query($sql_txt_c); if(mysql_affected_rows()>0) { $msg = "Parola a fost modificata!"; } else { $msg = "Parola NU a fost modificata!"; } 49
Universitatea de Nord Baia Mare
}else { //dacă parola veche introdusa nu este corecta, apare mesajul $msg = "Parola veche este incorecta!"; } }
Fig.4.27 Schimbare parola
4.3.3. Meniul pentru tipul elev Meniul pentru tipul elev are 4 butoane, aşa cum am ilustrat in Fig.4.20. Butonele sunt: Afisare note Date personale Lista profesori Schimbare parola Butonul Afisare note se ocupă cu afişarea notelor la fiecare materie. Materia se selectează din combobox-ul . După selectarea materiei apar notele şi media la materia respectivă. Select-ul pentru afişarea notelor este:
SELECT n.*, e.* FROM elevi e LEFT JOIN note n ON n.elevID=e.elevID WHERE e.adminID='{$_SESSION['logat_elev_id']}' AND n.matID='{$_POST['matID']}' ORDER by notaID ASC"; Afişarea notei se face numai pentru elevul care este autentificat, selectând materia dintr-un combobox. Această verificare se face precizând e.adminID='{$_SESSION['logat_elev_id']}' 50
Universitatea de Nord Baia Mare
Se calculează media notelor primite selectând din tabela de note numai notele care aparţin elevului autentificat şi facând media acestora. Codul arată astfel: SELECT (SUM(nota)/count(*)) as avg FROM elevi e LEFT JOIN note n ON n.elevID=e.elevID WHERE e.adminID='{$_SESSION['logat_elev_id']}' AND n.matID='{$_POST['matID']}' ORDER by notaID ASC";
Rezultatul :
Fig.4.28 Afisare note
Butonul Lista profesori se ocupă de afişarea colectivului de profesori, precizând materia predată de fiecare profesor. Selectarea datelor care vor fi afişate în tabelă se face cu : SELECT p.*, m.*, a.* FROM admin a LEFT JOIN profesori p ON a.adminID=p.adminID LEFT JOIN materie m ON a.matID=m.matID WHERE a.tipID=3 ORDER by p.numeProf ASC";
51
Universitatea de Nord Baia Mare
Iar rezulatul arată astfel:
Fig.4.29 Lista profesori
Butonul Date personale şi Schimbare parola este indentic cu cea de la tipul
profesor.
52
Universitatea de Nord Baia Mare
CAPITOLUL 5. CONCLUZII 5.1.
Concluzii
Importanţa Internetului în zilele noastre este deja cunoscută iar exploatarea oportunitaţilor oferite de acesta trebuie sa fie o prioritate pentru o firmă modernă mai ales dacă concurenţa are deja prezenţă online. Un web site costă o singură dată şi rămâne permanent, 24 de ore din 24 în atenţia publicului din orice zonă a lumii. Oricând, conţinutul unui web site poate fi actualizat sau modificat după bunul Dumneavoastră. plac. La baza aplicaţiei Sistem de management al Şcolarităţii Elevilor stă limbajul de programare PHP, care este un limbaj foarte puternic, şi foarte des folosit. Din aceste motive am ales acest limbaj pentru implementarea aplicaţiei. În zilele noastre cele mai multe aplicaţii distribuite sunt scrise în PHP, care este o soluţie convenabilă pentru proiectare a unei aplicaţii de comerţ electronic pentru clienţii care dispun de un buget redus. Lumea se schimbă de la o zi la zi, tehnologiile avansează, apar noi şi noi aplicaţii, software care ne vor conduce într-o lume computerizată. Eu cred că PHP ocupă un loc foarte important în această lume şi are un rol deosebit în dezvoltarea noilor tehnologii. Aplicaţia Sistem de management al Şcolarităţii Elevilor este doar o mică parte din această lume imensă a limbajului PHP, dar o parte semnificativă, deoarece folosirea lui uşurează munca multor oameni cu vârste diferite.
5.2.
Posibilităţi de dezvoltare
Versiunea respectivă a aplicaţiei Sistem de management al Şcolarităţii Elevilor nu este versiunea finală, ci dimpotrivă prima versiune. Aplicaţia poate fi îmbunătăţită, adăugând noi facilităţi. Iată câteva lucruri noi care ar putea fi incluse în dezvoltarea acestui program: • • • •
Aplicaţia ar putea fi dezvoltată într-un fel ca să deservească toate necesităţile unei şcoli, adicaă să fie posibil folosirea acestuia de către toate clasele unei şcoli sau chiar de către mai multe şcoli. O altă dezvoltare ar putea fi adăugarea unei ramuri în aplicaţie care să se ocupe de prezenţa elevilor la fiecare oră şi de construirea orarului şcolar la fiecare clasă. Al treilea punct de dezvoltare ar putea fi crearea unui forum de discuţii între elevi şi profesori care ar fi util de exemplu pentru fixarea examenelor, informarea elevilor despre diferite activităţi şcolare etc. O dezvoltare majoră ar fi crearea unui nou tip de utilizator, cum ar fi părinte. Şi părintele să aiba acces la note, dar numai la fiul şi/sau fiica părintelui respective. Această dezvoltare ar fi foarte utilă pentru ca în zilele noastre părinţii de multe ori nu află situaţia şcolară a copilului numai de exemplu la o şedinţă cu părinţii. Cu această dezvoltare putem scutii părinţii şi profesorii de timpul pierdut în urma şedinţelor, discuţiile putând fi rezolvate printr-un forum al aplicaţiei.
Acestea sunt doar nişte idei de dezvoltare a aplicaţiei Sistem de management al Şcolarităţii Elevilor, dar, având în vedere progresul tehnologiei, mai pot apărea şi altele. 53
Universitatea de Nord Baia Mare
54
Universitatea de Nord Baia Mare
Bibliografie: 1. [Well2005], Laura Thomson; Dezvoltarea aplicatiilor WEB cu PHP şi MySQL, Editia
a II-a (+CD); Editura Teora 2005. 2. [Thom2004], Dezvoltarea aplicatiilor WEB cu PHP şi MySQL; Editura Teora 2004. 3. [Angh2005], Dezvoltarea aplicatiilor WEB folosind XHTML, PHP şi MySQL;
Editura Polirom 2005. 4. [Melo2005], INVATA SINGUR PHP, MYSQL ŞI APACHE; Editura Corint 2005. 5. [Sab2003], Aplicatii Web la cheie. Studii de caz implementate in PHP; Editura
Polirom 2003. 6. Adrian Munteanu, Valerică Greavu Serban, Reţele locale de calculatoare Proiectare
şi administrare 7. [Gug2005], HTML, XHTML, CSS şi XML prin exemple - ghid practic; Editura
Teora 2005. 8. http://www.phpromania.ro 9. http://www.oscommerce.com 10. http://www.w3schools.com/asp/default.asp 11. [Cez2006], Programarea aplicaţiilor web cu PHP şi MySQL , Ed. Risoprint 2006.
55