Sistem de Management al Scolaritatii Elevilor

Cuprins

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 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.

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.

Tema proiectului

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.

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 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.

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 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, într-un 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.

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

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:

file – specifică un URL local;

http – indică adresa Internet a unei pagini Web sau altă resursă ;

ftp – utilizat pentru adresarea în Internet a fișierelor prin intermediul protocolului de transfer de fișiere FTP;

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;

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.

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:

e-mail, prin intermediul cărora se pot doar transmite mesaje de poștă electronică;

știri Usenet – în care trebuie să se identifice un server de știri care să ofere acces.

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".

<html>

<head>

<title>Exemplu</title>

</head>

<body>

<?php

echo "Salut, sunt un script PHP!";

?>

</body>

</html>

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 PHP-ului 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ă 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ă (<?php. . .?> și <script language="php">. . .</script>) 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 <?php. . .?> pentru a corespunde standardului XML

Cele patru tipuri de tag-uri sunt:

<?php echo("daca vrei sa vezi documente XHTML sau XML, apasa aici\n"); ?>

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");

</script>

4. <% echo ("Folositi tag ASP-style"); %>

<%= $variable; # Aceasta este un shortcut pentru "<% echo . . ." %>

Prima varianta, <?php. . .?>, este metoda preferată deoarece permite folosirea PHP-ului în cod corform standardului XML, cum ar fi XHTML.

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:

<?php

if ($expresie) {

?>

<strong>Este adevarat.</strong>

<?php

} else {

?>

<strong>Este fals.</strong>

<?php

}

?>

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:

<?php

echo "Test";

?>

<?php echo "Test" ?>

Comentariile

PHP suportă comentarii de tip 'C', 'C++' și Unix shell. De exemplu:

<?php

echo "Test1"; // Comment pe o linie de tip C++

echo "Test2";

echo " Test3"; # Comment pe o linie de tip Unix shell

?>

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.

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

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:

<?php

function Test () {

$a = 0;

echo $a;

$a++;

} ?>

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ă.

<?php

function Test()

{

static $a = 0;

echo $a;

$a++;

}

?>

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ă:

<?php

function Test()

{

static $count = 0;

$count++;

echo $count;

if ($count < 10) {

Test ();

}

$count–;

}

?>

Formulare HTML (GET și POST)

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

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

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

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

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

</form>

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

<?php

// Available since PHP 4.1.0

print $_POST['username'];

print $_REQUEST['username'];

import_request_variables('p', 'p_');

print $p_username;

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

// variables can be disabled with the register_long_arrays directive.

print $HTTP_POST_VARS['username'];

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

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

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

print $username;

?>

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

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),

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).

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;

– 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

A BETWEEN val_min val_max;

A LIKE model_șir -> A șir;

A IS NULL sau A IS NOT NULL;

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;

– 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:

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);

Comenzile de manevrare a datelor (LMD): SELECT (interogările de baza), INSERT, UPDATE, DELETE.

Ex: 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.

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 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.

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

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.

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 s-a 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.

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

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 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

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, 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.

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.

CAPITOLUL 4.

IMPLEMENTAREA ȘI UTILIZAREA APLICAȚIEI

Crearea bazei de date a aplicației

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:

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

Crearea unui tabel al bazei de date

Crearea tabelei admin

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.

Î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

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.

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.

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:

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.

<?php

require_once('db_fns.php');

require_once('user_auth_fns.php');

require_once('output_fns.php');

?>

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ă.

Î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 :

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: [anonimizat]. Dacă nu este de această formă, apare mesajul următor: „Introduceti corect adresa de e-amil !”

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");

</script>';

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'])){

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.");

</script>';

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.");

</script>';

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");

</script>';

do_html_footer();

}

}

Recuperare parolă

Recuperarea parolei se face pe baza numelui de utilizator.

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

return $word;

}

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

Fig.4.19 Meniu profesor

Elev

Fig.4.20 Meniu elev

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

$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.

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!";

}

}

}

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

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.

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.

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!";

} 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 = "";

$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

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!";

}

}else {

//dacă parola veche introdusa nu este corecta, apare mesajul

$msg = "Parola veche este incorecta!";

}

}

Fig.4.27 Schimbare parola

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']}'

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";

Iar rezulatul arată astfel:

Fig.4.29 Lista profesori

Butonul Date personale și Schimbare parola este indentic cu cea de la tipul profesor.

CAPITOLUL 5.

CONCLUZII

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.

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.

Bibliografie:

[Well2005], Laura Thomson; Dezvoltarea aplicatiilor WEB cu PHP și MySQL, Editia a II-a (+CD); Editura Teora 2005.

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

[Angh2005], Dezvoltarea aplicatiilor WEB folosind XHTML, PHP și MySQL; Editura Polirom 2005.

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

[Sab2003], Aplicatii Web la cheie. Studii de caz implementate in PHP; Editura Polirom 2003.

Adrian Munteanu, Valerică Greavu Serban, Rețele locale de calculatoare Proiectare și administrare

[Gug2005], HTML, XHTML, CSS și XML prin exemple – ghid practic; Editura Teora 2005.

http://www.phpromania.ro

http://www.oscommerce.com

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

[Cez2006], Programarea aplicațiilor web cu PHP și MySQL , Ed. Risoprint 2006.

Similar Posts

  • Configurare Si Utilizare Active Directory In Windows Server 2003 Folosind Scripturi Vbs

    Cuprins Cuprins Introducere Descrierea Active Directory si limbajul VBS capitolul i. Windows Server 2003 I.1. Scurt istoric I.2. Privire de ansamblu asupra familiei Windows 2003 Server I.2.1. Windows 2003 Server I.3. Medii de rețea ale sistemului de operare Windows Server 2003. I.3.1. Modelul workgroup I.3.2. Modelul de Domeniu. I.4. Noțiuni și caracteristici ale componentei Active…

  • Arhitecturi de Acces la Internet Pentru Utilizatori Casnici Si Institutii Mici

    Cuprins Capitolul I. Introducere…………………………………………………………………………………………………4 Capitolul II. Rețele de calculatoare Cuprins 2 I. Introducere 4 II. Rețele de calculatoare 6 2.1.Rețele locale 6 2.1.1. Topologia rețelelor 6 2.1.2. Arhitectura rețelelor 7 2.2. Echipamente de comunicație 8 2.2.1. Hub-ul 8 2.2.2. Switch-ul 9 2.2.3. Router-ul 9 2.3. Cabluri și conectori 10 2.4. Adrese IP 11 2.5. Modelul…

  • Virtualizarea Datelor Utilizand Infomatica Power Center

    Virtualizarea datelor utilizând Infomatica Power Center Cuprins 1 Introducere 1.1 Obiectivul principal 1.2 Motivele alegerii subiectului 2 Virtualizarea datelor 2.1 Virtualizarea datelor – definiții 2.2 Virtualizare versus Federalizare 2.3 Avantaje tehnice ale utilizării virtualizării 2.4 Calitatea datelor 2.5 Managementul informațiilor 2.6 Viitorul virtualizării 3 Informatica Powercenter 3.1 Extract Transform Load (ETL) 3.1 Componente Informatica 3.2…

  • Sistemul de Achizitie Dinamic Si Licitatia Electronica

    Introducere În general termenul de achiziții publice este utilizat pentru a descrie obținerea de lucrări, servicii și produse de către autoritățile publice naționale, regionale ori locale. Normele de achiziții publice fac referire la procedurile pentru atribuirea contractelor de achiziție publică de produse, lucrării și servicii în Uniunea Europeană. Sectorul publice, utilitățile și ale instituții definite…

  • Infractiuni Informatice

    LUCRARE DE LICENŢĂ INFRACȚIUNI INFORMATICE Cuprins Introducere Capitolul 1. Aspecte de generalitate privind criminalitatea informatică 1.1. Conceptul de criminalitate informatică 1.2. Elemente caracteristice fenomenului de criminalitate informatică 1.3. Sfera internațională a fenomenului infracțional Capitolul 2. Aspecte de drept comparat in material infractionalitatii informatice 2.1. Cadrul legal in Belgia 2.2. Cadrul legal in SUA 2.3. Cadrul…

  • Algoritmi de Sortare Paralela

    INTRODUCERE……………………………………………..……………1 CAPITOLUL I IΝΤRОDUCЕRЕ ÎΝ ΡRОIЕCΤΑRЕΑ ΑLGОRIΤМILОR……………2 Dеfiniții……………………………………………………………………2 Algoritm, program, programare………………………………………………………3 1.2.1 DЕSCRIЕRЕΑ ΑLGОRIΤМILОR…………………………………………..4 Оbiеctul disciрlinеi…………………………………………………..…..6 Ρrорriеtăți alе algоritmilоr…………………………………………..…..7 Мăsuri dе реrfоrmanța……………………………………………………9 Datе……………………………………………………………….……..11 Τiрuri dе рrеlucrări………………………………………………………..11 Ехеrciții……………………………………………………………….…..12 CAPITOLUL II ALGORITIMI DE SORTRE 2.1. Limbaj algоritmic…………………………………………………………………………….17 2.2. Sреcificarеa datеlоr……………………………………………..……….19 2.3. Verificare corectitudinii…………………………………………………..22 2.4 МЕΤОDЕ ЕLЕМЕΝΤΑRЕ DЕ SОRΤΑRЕ 2.4.1 Ρrоblеmatica sоrtării ……………………………………….……25 2.4.2 Sоrtarе рrin insеrțiе……………………………………….….26 2.4.3…