Tehnologii Mulltimedia In E Learning

CUPRINS

INTRODUCERE

Internetul și calculatorul reprezintă instrumente tehnlogice utilizate în procesul de educare continuă. Apariția și răspândirea instruirii asistate de calculator reprezintă un proces modern de studiu care reduce restricțiie de ordin temporal și spațial. Instruirea asistată de calculator are la bază recepționarea activă a informației, invățarea și dobândirea de noi deprinderi și cunoștiințe.

Dezvoltarea în mod exploziv a învățământului la distanță prin Internet au făcut ca majoritatea instituțiilor de învățamânt superior să adopte acest stil de educație. Pentru studiul la distanță a persoanelor s-au creat platforme care se pot accesa folosind broswere de internet. Conform unui studiu realizat la începutul anului 2014, cele mai folosite broswere de Internet din lume sunt: Internet Explorer, Mozilla Firefox, Google Chrome, Opera și Safari.

Din perspectiva contemporană, particularitațile și caracteristicile procesului de învățare folosind Internetul reprezintă metode complementare și alternative de instruire. Tehnologiile de e-learning utilizează informații multimedia combinate (text, imagini, grafică, animație, audio, video, etc.). Într-o societate bazată pe cunoaștere apariția noilor metode de predare-învățare ajută studenții să-și dezvolte abilitățile de comunicare și interactivitate folosind instrumente multimedia precum chat sau forum de discuții. O componentă importantă a instrumentului de e-learning este testarea electronică care reprezintă un mod de evaluare a cunoștiințelor.

Lucrarea își propune să analizeze acest tip de învățare de la distanță folosind Internetul și să stabilească rolurile participanțior (student/profesor) în procesul de învățare. Lucrarea de față are ca obiectiv principal analiza, proiectarea și implementarea unei aplicații care conține informații multimedia combinate și tehnici de e-learning. Astfel aplicația vine în ajutorul persoanelor care nu au posibilitatea de a frecventa cursurile în sala de clasă, în mod tradițional, ci doar prin accesul online la materialele didactice.

Folosirea tehnologiilor multimedia permite instruirea, formarea și perfecționarea profesională a fiecărui individ. Apariția acestor tehnologii au condus la dezvoltarea noilor metode și stiluri de învățare (învățarea la distanță folosind Internetul și învățarea de tip Hibrid – Blended Learning). Acestea facilitează procesul educațional atât pentru studenți cât și pentru profesori.

1. SISTEME, APLICAȚII ȘI TEHNOLOGII MULTIMEDIA

1.1. Sisteme multimedia

1.1.1. Introducere în multimedia

Termenul „multimedia” este format din alăturarea celor două cuvintele „multi” (mai multe) și „media” (mijloace de transmitere, stocare, prezentare și percepție a informațiilor).

În viața zilnică multimedia apare în medii de transmitere a informațiilor precum: ziare, reviste (imagini și text), televiziune și combina muzicală (audio și video). Multimedia combină aceste medii, în calculator, iar astfel informațiile pot fi accesate de către oricine și de oriunde s-ar afla.

Astăzi multimedia a devenit mai mult decât o obișnuință, a devenit o necesitate și o modă. Majoritatea computerelor asamblate conțin plăci de sunet și CD-ROM-uri (sau DVD-uri), unele chiar accesorii mai complexe (acceleratoare grafice, tunere TV etc). Instalând aceste componente pe un calculator destul de performant, vom putea avea toate informațiile în biroul nostru, de la simplele texte și imagini, până la animații, sunete și aplicații interactive [1].

În acest context, un “sistem multimedia” reprezintă un sistem care, pe baza unui set de tehnologii, face utilă utilizarea aplicațiilor de tip multimedia: grafică, imagini și animații 2D și 3D, video, redarea imaginilor înregistrate și comprimate, aplicațiile legate de sunet (înregistrarea și redarea sunetului, sinteza vorbirii) și altele. Alături de acestea trebuie amintite tehnologii suport pentru multimedia, cum ar fi CDROM și DVD, rețele locale și tehnologiile de comprimare/decomprimare a datelor. Acest domeniu se dezvoltă odată cu creșterea performanțelor sistemelor de calcul de a prelucra în timp real fluxul de date din astfel de aplicații [2].

O “aplicație multimedia” se definește ca fiind o aplicație software formată din informații multimedia combinate (text, imagini, grafică, animație, audio, video, etc.).

1.1.2. Componentele unui sistem multimedia

Sistemele multimedia se caracterizează prin faptul că sunt sisteme de calcul ce integrează dispozitive multimedia, procesează informație reprezentată digital și folosesc interfețe multimedia interactive. În consecință, sistemele multimedia trebuie să dovedească o mare putere de procesare, să se bazeze pe un sistem de operare compatibil multimedia, să aibă interfețe de intrare-ieșire eficiente și rapide (pentru înregistrări și redări în timp real), capacitate de stocare și memorare mare, acces la rețele de date (inclusiv Internet), instrumente software dedicate pentru manipularea, proiectarea, dezvoltarea și furnizarea informației multimedia.

Un sistem multimedia este format din următoarele componente:

dispozitive de achiziție (camera foto digitală, camera video digitală, video/DVD recordere, microfon, tastatură, mouse, trackball, touchpad, touch screen, tabla digitizoare, joystik, scanner, dispozitive de digitizare audio: placa de sunet, dispozitive de digitizare video: placa video, dispozitive de redare virtuală, ochelari 3D, căști VR);

Camera foto digitală reprezintă un dispozitiv de capturare a imaginilor care pot fi transferate (prin carduri USB, carduri de memorie sau wireless) și prelucrate pe calculator. Camera video digitală permite preluarea obiectelor 3D, a suprafețelor, a mișcării obiectelor și a capturării imaginilor statice. Video/DVD recordere prermit înregistrarea programelor TV, a filmelor sau copierea de pe un hard disc intern. Microfoanele reprezintă dispozitive ce permit înregistrarea sunetului.

Tastatura și mouse-ul și track ball-ul reprezintă dispozitive de intrare ale sistemelor multimedia. Mouse-ul și track ball-ul sunt dispozitive de intrare similare ca și mod de utilizare. Touch pad-ul reprezintă o suprafață redusă ca dimensiune, sensibilă la atingere și presiune. El este utilizat ca alternativă la track ball în cazul sistemelor portabile. Touch screen este un dispozitiv de intrare care permite alegerea comenzior transmise de utilizator unui calculator prin simpla atingere a ecranului. Talba digitizoare reprezintă un dispozitiv de intrare ce constă într-un stilou și o tabletă electronică (pad). Imaginile desenate pe pad sunt convertite în cod și afișate pe ecran. Joystick-ul este un dispozitiv de intrare destinat acțiunilor de control în timp real pe calculator. Scanner-ul este un dispozitiv folosit pentru preluarea imaginilor. Acesta achiziționează inaginile la o anumită rezoluție, urmând ca mai apoi să fie introduse în fișiere care pot fi prelucrate de aplicații multimedia.

Placa de sunet permite codarea/decodarea semnalelor audio astfel încât sistemul multimedia să poată funcționa în timp real. Placa video (grafică) permite prelucrarea semnalelor video și urmeză aceleași principii folosite la prelucrarea sunetului.

Figura 1.1 Dispozitive de achiziție a sistemelor multimedia

a) cameră foto digitală b) cameră video digitală

placă de sunet d) placă video (grafică )

e) touch screen f) caști pentru gaming

a) tastatură b) mouse optic

dispozitive de stocare a informației multimedia (Hard disk, CD-ROM, DVD-ul, Jaz/Zip driver, DVD-ul, carduri și accesorii externe de memorie etc.);

Hard disk-ul este un suport de memorie internă sau externă pe care se poate stoca informația multimedia la o capacitate foarte mare. Harddisk-urile interne, cât și cele externe, au ajuns în prezent la capacități mai mari de 1 TB.

CD-ROM-ul (Compact Disc Read Only Memory) este un suport de memorie externă. Stocarea și accesarea datelor se realizează prin metode optice cu o viteză mai mare decat la alte dispozitive de stocare. Cele mai importante caracteristici ale unităților de CD sunt: capacitatea de stocare (peste 700 MB), timpul de acces, rata de transfer și viteza de stocare.

DVD-ul (Digital Versatile Disc) este un dispozitiv de stocare care spre deosebire de CD poate avea două fețe pe care informația poate fi înregistrată. Astfel capacitatea de memorare începe de la 4,7 GB și poate ajunge la 17 GB.

JAZ/ZIP reprezintă dispozitive externe de socare a informației pe suport magnetic. Acestea au o capacitate de stocare destul de mică.

Cardurile și accesoriile externe de memorie (flash memory, compact flash card, compact flash drive, memory stick) au capacități diferite de stocare pornind de la 128 MB și ajungând la 64 GB.

Figura 1.2 Dispozitive de stocare a informației multimedia

a) unitate de CD-ROM b) hard disk

dispozitive de conectare la rețele de calculatoare (Placa de rețea, modem, hub, switch, router, repetor, share-ul, puntea, comutatoare, porti ); [2].

Placa de rețea este placa instalată pe calculator necesară pentru a se putea realiza conectarea la o rețea de calculatoare. Placa de rețea poate fi integrată pe placa de bază a sistemului de calcul sau poate fi atașată prin porturi de extensie sau porturi USB.

Modemul (Modulator/DEModulator) este echipamentul ce permite conectarea unui calculator la o rețea. Modemul poate fi conectat la calculator prin USB sau Ethernet și transformă semnalul analogic în semnal digital.

Hub-ul mai este denumit și concentrator, deoarece are rolul unui punct central de conectare pentru un LAN.Un hub funcționează la nivelul fizic din modelul OSI, regenerând semnalele din rețea și retransmițându-le pe alte segmente prin intermediul porturilor.

Switch-ul permite transportul semnalului pe o distanță mai mare. De obicei un switch conține mai multe porturi. Pe aceste porturi putem conecta calculatoare sau alte echipamente de rețea cu ajutorul cablurilor de rețea. Switch-ul funcționează la nivelul Legătură de date al modelului OSI, la subnivelul de Control al accesului la mediu (MAC – Media Access Control).

Router-ul poate fi un calculator care are instalat un software special sau poate fi un echipament special conceput de producătorii de echipamente de rețea. În timp ce un switch conectează segmente ale unei rețele, routerele interconectează mai multe rețele [3].

Repetorul este un echipament ce recepționează semnalele de la un segment de rețea, le regenerează, apoi le retransmite, mărind distanța fizică pe care poate acționa o rețea.

Share-ul este un echipament care partajează resursele într-o rețea. De exemplu poate partaja o linie telefonică, un modem și un cont de internet pentru a asigura accesul simultan al mai multor utilizatori.

Puntea interconectează rețele care utilizează tehnici de transmisie diferite și/sau metode de control al accesului la mediu diferite pe baza mecanismului memorează și retransmite.

Comutatoarele facilitează conectarea logică a sistemelor la segmentul de transmisie adecvat. Există comutator de grup (un hub cu facilitate de comutare ce permite fiecărui grup de porturi să fie conectat la unul dintre segmentele de transmisie) și comutator de port (hub inteligent care permite fiecăriu port să fie conectat la segmentul de transmisie adecvat).

Porțile interconectează rețele care folosesc protocoale diferite la toate nivelele de comunicație. Acestea operează la nivelul aplicație al modelului OSI (Open Systems Interconnection) [2].

Figura 1.3 Dispozitive de conecatare la rețele de calculatoare.

a) switch b) hub c) router

d) Plăci de rețea cu, respectiv fără fir

sisteme de calcul (multimedia base, multimedia desktop, workstation multimedia );

Figura 1.4 Sisteme Desktop și Laptop

dispozitive de ieșire/afișare (monitoare, imprimante, plotter, căști CD-quality, boxe, digital High Definition Television HDTV, fax încorporat etc.);

Monitoarele sunt dispozitive care permit afișarea pe ecran a informației. Există două tipuri de monitoare: monitoare video CRT (cathode-ray tube monitor) și monitoare cu cristale lichide LCD (liquid crystal dislpay).

Imprimantele reprezintă dispozitive de imprimare a informațiilor transmise de calculator pe hârtie, folii transparente, plicuri, etc. Plotter-ele sunt dispozitive de ieșire care crează imagini bidimensionale (grafice, hărți) pe hârtie.

Figura 1.5 Dispozitive digitale pentru procesarea imaginilor și a materialului audio.

a) smart TV b) căști audio

programe și aplicații software (programe pentru editarea grafică a imaginilor, a filmelor video, a sunetelor etc., programe pentru realizarea prezentărilor, programe pentru animație, programe destinate proiectării asistate de calculator-CAD, pentru editarea documentelor hipermedia, programe de conectare la rețea, limbaje de programare-Java,C, C++, etc.); [2].

1.2. Aplicații multimedia

1.2.1. Definirea și clasificarea aplicațiilor multimedia

Aplicațiile multimedia se implică aproape în orice activitate umană. La ora actuală există șase mari domenii de utilizare a sistemelor multimedia. Acestea sunt: birotică, editare și producție video, muzică, învățămant la distanță, divertisment și comunicații multimedia. Noțiunea de aplicație multimedia reprezintă un sistem de comunicație între două sau mai multe terminale care își transferă reciproc informații audio, video, grafice, sau de alte tipuri de date, precum și combinații ale acestora.

Există mai multe criterii de clasificare a aplicațiilor multimedia iar cea mai importantă clasificare este prezentată mai jos.

Din punct de vedere al naturii participanților între care se realizează comunicația multimedia există două categorii: aplicații interpersonale (transferul de date se face între doi sau mai mulți utilizatori) și aplicații persoană-sistem (unul din capetele legătuii este reprezentat de sistemul de calcul) [2]. În figurile de mai jos sunt prezentate tipurile de aplicații multimedia.

Figura 1.6. Aplicații multimedia interpersonale

Aplicații interpersonale audio-video individuale: telefonia asistată de calculator, Microsoft NetMeeting, videofonia. Aplicații multimedia destinate lucrului în grup: tablă comună (shared whiteboard) și/sau chat, ferestre program comune. Aplicații interpersonale audio-video distribuite: (Oracle Video Server). Distribuția audio-video pentru prezentări și conferințe: distribuția audio-video locală, distribuția audio-video la distanță, criptarea informației audio-video, distribuția multicast spre grupuri închise, radio și televiziune pe internet. Videoconferința: cu comutare de circuite, cu comutare de pachete, interoperarea între sisteme de videoconferință cu comutare de circuite și cele cu comutare de pachete. Poșta electronică multimedia și transferul documentelor multimedia: poșta electronică multimedia, poșta electronică (e-mail), poșta vocală, poșta video, mesaje compuse, poșta multimedia; transferul documentelor multimedia se poate realiza sincron sau asincron. Sistem de știri și bloguri [2].

Figura 1.6. Aplicații multimedia persoană-sistem

1.3. Tehnologii multimedia

1.3.1. Aplicații bazate pe server multimedia

Informațiile stocate sunt puse la dispoziția utilizatorilor pe un sistem numit server, iar sistemele care utilizează aceste informații poartă numele de clienți. Din acest punct de vedere există aplicații client-server. După modul în care se realizează transferul de informații există două tipuri de aplicații:

aplicații interactive: transferul este inițiat și controlat de client;

aplicații de distribuție: sunt inițiate de sistem, iar utilizatorul poate sau nu să controleze transmisia.

Pentru aplicațiile de mai sus transferul se poate realiza:

sincron (datele sunt transmise în timp real);

asincron (informațiile sunt transmise și stocate, prezentarea se poate face ulterior) [2].

1.3.2. Hipertext și hipermedia

Aplicațiile din această categorie sunt de tip persoană-sistem, unde utilizatorii pot accesa documente text sau multimedia complexe și de mari dimensiuni. Noțiunea de hipertext presupune structurarea și organizarea unui volum mare de informații pentru un acces mult mai rapid. În hipertext elementul de bază îl reprezintă link-ul (legătura) între diferitele componente ce alcătuiesc un document hipertext.

Elementul de pornire se numește ancoră, iar pe lângă acesta apar și următoarele forme: cuprins, note de subsol, indicele alfabetic și bibliografia. Parcurgerea documentelor hipertext se poate face prin: legături, lanțuri de legături, bucle și circuite. Pentru orientarea în hipertext putem folosi: drumul de întoarcere (salt înapoi), pagina inițială („Home page”), diagrama de ansamblu sau parcurgerea ghidată.

Termenul de hipermedia extinde conceptul de hipertex în aproape orice tip de date. Un document hipermedia trebuie să conțină, pe langă legături între documente, și informații de sincronizare[2].

1.3.3. World Wide Web

Sistemul www folosește conceptul hipermedia, iar acest sistem a fost întemeiat pe baza unor trei mari idei:

gestiunea distribuită a informațiilor;

independența geografică;

inferfața uniformă.

Protocoalele WWW specifică tehnicile de creare, localizare și transfer pentru documentele WWW și au în alcătuire trei mari componente:

Uniform Resource Locator (URL) specifică poziția și modul de acces;

HyperText Markup Language (HTML) definește formatul documentelor;

HyperText Transfer Protocol (HTTP) controlează transferul documentelor WWW.

2. E-LEARNING ȘI BLENDED LEARNING

2.1. Educația la distanță prin Internet –e-learning

2.1.1. Introducere în e-learning

Pe lângă educația la distanță prin Internet (elearning), există și alte tipuri de educație și anume:

educația la distanță prin corespondență (material tipărit utilizând serviciile poștale);

educația la distanță prin radio (se folosea în trecut);

educația la distanță prin televiziune;

educația la distanță prin videoconferință;

educația la distanță prin tele-cursuri.

În literatura de specialitate există foarte multe definiții date termenului de elearning, unele mai simple, altele mai complexe, însă toate acestea au rolul de a reda semnificația unei instruiri la distanță utilizând Internetul [2].

E-learning reprezintă interacțiunea dintre procesul de predare/învățare și tehnologiile informaționale, acoperind un spectru larg de activități, de la învățământul asistat de calculator până la învățământul desfășurat în întregime în manieră online [4].

În sens larg, prin e-learning se înțelege totalitatea situațiilor educaționale în care se utilizează semnificativ mijloacele tehnologiei informației și comunicării. Termenul, provine din limba engleză, a fost extins de la sensul primar, de învățare prin mijloace electronice, acoperind în acest moment aria de intersecție a acțiunilor educative cu mijloacele informatice moderne. Astfel, conceptul e-learning cuprinde varietatea experiențelor didactice ce pot beneficia de suport tehnologic: instruire asistată/mediată de calculator, digital/mobile/online learning/education, instruire prin multimedia etc.

În sens restrâns, e-learning reprezintă un tip de educație la distanță, ca experiență planificată de predare-învățare organizată de o instituție ce furnizează on-line materiale într-o ordine secvențială și logică pentru a fi asimilate de studenți în manieră proprie. Medierea se realizează prin tehnologii noi ale informației și comunicării – mai ales prin Internet [2].

Un sistem de e-learning constă într-o experiență planificată de predare-învățare, organizată de o instituție ce furnizează resurse educaționale stocate pe medii electronice. Procesul de e-learning este definit prin interacțiunea prin medii de comunicare între instructor și instruit cu participarea activă a unui manager al pachetului software necesar [4].

2.1.2 Avantaje și dezavantaje în e-learning

Prin raport la educația tradițională, educația la distanță prin internet are câteva avantaje majore. Cele mai importante sunt următoarele:

Independența geografică – comunicarea între studenți, profesori, tutori se poate realiza, fără ca aceștia să se alfe în aceeași locație.

Accesibilitate on-line accesul la educația prin Internet se realizează în timp real oriunde și oricând; audiența crește considerabil, educația la distanță putând cuprinde și studenți care nu pot participa la cursurile din sistemul tradițional.

Se facilitează învățarea în ritm propriu, într-un stil personal, parcurgerea sau audierea cursurilor putând fi efectuată treptat și repetat.

Atât interacțiunile sincrone, cât și cele asincrone dintre profesor și studenti se pot complementariza.

Tehnologii dinamice și interactive permit realizarea unui feed-back în timp real și evaluări ale studentului realizate foarte ușor.

Pe lângă avantaje, educația de tip e-learning are și câteva dezavantaje. Mai jos sunt prezentate principalele neajunsuri ale educației de tip eLearning:

Studenții trebuie să fie extrem de motivați pentru a participa. Fenomenul de abandon școlar apare mult mai frecvent în educația la distantă decât în cazul educației tradiționale.

Costuri ridicate pentru dezvoltarea sistemului, incluzând cheltuieli cu: tehnologia (hardware și software), transmiterea informațiilor în rețea; întreținerea echipamentului necesar, producerea materialelor necesare.

Dificultatea susținerii la implementarea sistemului a unui efort consistent al studenților, profesorilor, intermediarilor care oferă suport tehnic și a personalului administrativ.

Necesitatea experienței cursantilor în domeniul computerelor[2][5].

2.1.3 Dezvoltarea unui sistem de e-learning

Pentru a dezvolta un sistem de elearning este necesară parcurgerea următoarelor etape:

1. Analiza nevoilor cuprinde:

Identificarea grupului țintă și a profilulului "studentului generic";

Analiza nevoilor de pregătire;

Alegerea soluțiilor pentru educația la distanță.

2. Designul și proiectarea instruirii au în vedere următoarele caracteristici:

Modelele de instruire specifice și teoriile învățării;

Stabilirea tipurilor de conținuturi;

Stilurile de învățare;

Stabilirea obiectivelor;

Standarde: metadata, design, accesibilitate, interoperabilitate și standarde de calitate.

3. Dezvoltarea propriu-zisă necesită, deasemenea, parcurgerea anumitor etape, și anume:

Stabilirea conținutului și dezvoltarea materialelor suport: structurarea conținuturilor (interactive), designul vizual, transpunerea în format specific și demonstrații, simulări, activități practice, laboratoare, teste, materiale suport;

Acțiuni legate de metode: metode de instruire specifice, evaluarea condițiilor pentru o învățare activă, motivarea studentilor;

Stabilirea actorilor sistemului de educație la distanță, a componentelor specifice:

coordonator/ manager, autorii cursurilor, receptonistul/ secretarul, tutorii (și consilieri)

Interacțiuni în învățamântul la distanță: interacțiuni cursant-conținut (învățarea perceptiv-vizuală), interacțiuni cursant-tutor (suport tutorial), interacțiuni cursant-cursant (activități în echipă, colaborare, competiție), modalități efective de interacțiune sincrone: telefon, chat, conferințe, sau asincrone: forum de discuții, e-mail, grup de discuții;

Evaluarea performanțelor: modalități de evaluare a progresului cursanților și a sarcinilor de lucru individual, notarea, feedback-ul;

Elaborarea ghidurilor de utilizare pentru studenți și tutori/ consilieri.

2.1.4. Tehnologii multimedia utilizate în e-learning

Învățământul virtual (e-learning) este reprezentat de interacțiunea dintre procesul de predare/învatare și tehnologiile informaționale. La nivel mondial, se fac investiții importante în programele de pregătire a profesorilor în domeniul ICT (Information and Communication Technology) . Internetul devine obiect de studiu în multe instituții de învățămant, dar și sursă bibliografică pentru prezentarea lecțiilor sau pregătirea temelor. Multe dintre companiile comerciale mass-media oferă gratuit pe Internet cursuri de instruire în diverse domenii. Ca exemplu putem menționa în acest sens serviciul BBCi al British Broadcasting Corporation (http://www.bbc.co.uk/learning/index.shtml) sau serviciul de instruire oferit de Discovery Corporation (http://school.discovery.com). Multe instituții de cultură plasează cursuri gratuite pe diverse siteuri specializate în popularizarea metodelor moderne de educație, cum este cazul siteului Fathom :: The Source for Online Learning: http://www.fathom.com/

Învățământul tradițional datorită dialogului direct dintre profesor și studenti, menținerea spiritului de competiție dar și a suportului psihologic reciproc nu va putea fi înlocuit în totalitate de învătamântul la distanță prin Internet. Internetul oferă însă noi oportunități de instruire, cărora nu este obligatoriu să li se acorde exclusivitate.

O mare parte dintre instituțiile academice tradiționale și-au achiziționat sau și-au proiectat propriul sistem de e-learning.Acesta este accesibil atât studenților înscriși la secțiile de învățământ la distanță, cât și celor de la cursurile de zi. Internetul devine, astfel, un auxiliar al procesului educativ din orice domeniu. Universități precum L' Université Rennes 2 – Haute Bretagne din Franta (http://www.uhb.fr/), Universitat Autonoma de Barcelona din Spania http://www.uab.es/ sau University of Hull din Marea Britanie (http://port.hull.ac.uk) pun la dispoziție foarte multe facilități de instruire, informare sau predare de la toate formele de învățământ. Universitățile din Australia utilizează aceleași programe, manuale, teste, examinări și echipe profesorale pentru pregătirea studenților de la cursurile de zi și a celor de la distanță. Acest tip de sistem educațional integrat este adoptat și de Statele Unite, Israel sau Noua Zeelandă.

Utilizarea tehnologiilor hipermedia este o caracteristică esențială a tuturor sistemelor de e-learning. În ultimul timp se observă un mai mare accent pus pe selectarea tehnologiilor multimedia open-source deoarece acestea sunt destinate publicului larg. Accesibilitatea este o cerință majoră a tot ceea ce este publicat pe Web, iar utilizarea oricărei tehnologii proprietare restrânge din start numărul beneficiarilor.

Limbajele XHTML+TIME și SMIL sunt adoptate de multe dintre site-urile educaționale în primul rând din motivul acesibilității. XHML+TIME au nevoie de popularul navigator Internet Explorer, iar SMIL – ca standard recomandat de Consorțiul Web – se bucură de atenția implementatorilor care oferă playere gratuite, precum RealPlayer, GriNS sau mai noul Ambulant Open SMIL Player. Unele centre de cercetare precum INRIA (Franța) sau CWI (Olanda) au adoptat limbajul SMIL pentru realizarea rapoartelor de cercetare sub formă de prezentări multimedia disponibile pe Web.

Cele două limbaje oferă mai multe facilități pentru crearea unor materiale atractive din domeniul educativ și nu numai:

Realizarea de slide-show-uri;

Conceperea cursurilor de instruire asistată de calculator, integrată cu voce, imagini, animație, sau orice alt conținut multimedia;

Prezentarea pe un site web de comerț electronic a numelui porduselor oferite spre vânzare, a fotografiilor sau a unui videoclip, care să apară în mod dinamic pe ecran în același timp cu o prezentare vocală corespunzătoare;

Temporizarea prezentărilor pentru ca slide-urile să fie derulate în mod secvențial, la intervale de timp dinainte precizate;

Plasarea pe ecran a diferitelor componente de control prin care să poată fi lansate în execuție sau oprite diferite părți muzicale sau video;

Dezvoltarea televiziunii la cerere (TV on demand) sau a TV Web-ului;

Cererea de artă conceptuală sau de infodivertisment[6].

Unele dintre cele mai importante instrumente utilizate pentru accesul la platformele de elearning sunt următoarele: Browserele web (pentru vizualizarea paginilor web), media playerele și media viewerele (folosite pentru operarea obiectelor multimedia) și programele client (necesare pentru operațiile de comunicare cu serverul web).

Un broswer este o aplicație software de tip client care rulează local pe un calculator și permite accesul și vizualizarea conținutului web localizat pe un server. Pe lângă afișarea paginilor web și a obiectelor multimedia din cadrul acestora, broswerele web mai au și alte caracteristici pe care le vom prezenta mai jos:

utlizarea formularelor (pentru înregistrare, testare, evaluare, etc.)

execuția programelor (JavaScript, VBScript, Java applets, Active X controls)

descărcarea fișierelor de pe server prin protocolul FTP (File Transfer Protocol)

salvarea fișierelor pe server (upload)

suport pentru criptare informațiilor (encrypting).

În continuare sunt prezentate câteva dintre cele mai utilizate broswere web la ora actuală.

Internet Explorer este un produs software dezvoltat de compania Microsoft pentru sistemele de operare Windows și Machintosh. Acest broswer oferă suport CSS (Cascading Style Sheets), conține de asemenea o componentă necesară pentru utilizarea VBScript și JavaScript, permite și afișarea paginilor XML (eXtensive Markup Language).

Netscape Navigator a fost dezvoltat de compania Netscape pentru sistemele de operare: Machintosh, Unix, Linux. Facilitătile oferite de acest broswer web sunt suport CSS Level 1 și DOM Level 1, permite afișarea paginilor XML cu referințe CSS.

Mozilla, dezvoltat de către compania Mozila Organization pentru următoarele sisteme de operare Windows, Machintosh, Linux oferă facilități asemănătoare cu Internet Explorer și Netscape. Există și alte broswere utilizate cum ar fi: Opera, Apple Safari sau Google Chrome, etc.

Media playerele pot fi integrate în broswerul web, sau se pot utiliza separat pentru a asculta un fișier audio, un post de radio live sau pentru a viziona un film. Daca se uitlizează Netscape Navigator media playerele poartă numele de plugin, iar în cazul broswerului Internet Explorer acestea se numesc Active X. Cele mai răspandite media playere sunt următoarele:

Windows Media Player este implicit instalat pe calculatoarele cu sistem de operare Windows, dar este disponibil și pentru Machintosh, Solaris sau Pocket-PC. Acest tip de media player nu poate fi folosit cu fișiere de tip QuickTime, Real Media sau cu fișiere grafice și de animație.

QuickTime Player dezvoltat de firma Apple este disponibil pentru: Windows, Machintosh, Linux și Unix. Acesta poate interpreta o mare varietate de fișiere audio, video cât și grafic prin broswere web sau în mod independent.

RealOne Player a fost creat de firma RealNetworks este gratuit și disponibil doar pentru sistemele de operare Windows. Pe lângă facilitățile celorlalte media playere prezentate mai sus, RealOne Player interpretează și animații Flash.

WinAmp player este dezvoltat de firma Nullsoft pentru SO Windows, Machintosh și interpretează cel mai mare număr de fișiere în format audio.

Pentru a vizualiza imagini web dinamice se utilizează programe de tip media viewer. Unele dintre cele mai răspândite și utilizate programe de acest gen sunt:

Macromedia Flash Player este disponibil gratuit pentru broswere web precum: Internet Explorer, Netscape, AOL și este folosit în majoritatea sistemelor de operare. Macromedia Flash afișează pagini web cu conșinut audio, video, grafic, jocuri, teste, etc.

Acrobat Reader este folosit pentru afișarea paginilor în format PDF.

Microsoft Office viewers este destinat vizualizării produselor din gama pachetului Office: Word, Excel, PowerPoint. Aceste viewere sunt extrem de utile pentru a vizualiza fișiere create în Office fără să fie necesară instalarea pachetului pe calculator.

Pentru o platformă de elearning este necesar să avem și o categorie de instrumente care să permită colaborarea între diverse categorii de utilizatori (profesori, studenți, administratori, etc.).

Colaborarea asnicronă nu necestită ca utilizatorii să fie conectați on-line în același timp. Cele mai relevante exemple în acest sens sunt emailul și forumul de discuții. În cadrul unei aplicații de eLearning cele mai mult utilizate instrumente de colaborare sunt următoarele: email, forum de discuții, chat și mesagerie instant, tabla electronică (Whiteboard), prezentări, conferințe audio, video conferințe, meeting on-line, tur web sincronizat [2].

2.2. Blended learning

2.2.1. Introducere în blended learning

Termenul de blended learning apare pentru prima dată în jurul anilor 2000 și a fost atunci asociat cu suplimentarea activității tradiționale de învățare în sala de clasă și invățământul individual prin activități de eLearning. Astăzi acest termen se referă la combinarea diferitelor metode și stiluri de învățare [9].

Blended learning este un concept de învățare modern, flexibil, dezvoltat cu scopul de a oferi fiecărui cursant un nivel avansat de cunoștințe tehnice. Sistemul se bazează pe concepte și metode noi de studiu, incluzând: studiul în sala de clasa alături de trainer, studiul individual și studiul online [7].

În contextul Victorian, blended learning se referă la la o metodă planificată de învățare, centrată pe studenți, îmbinând modul de învățare tradițional cu metode de învățare online, flexibile.

O altă definiție a conceptului de blended learning se concentrează în jurul ideii că învățarea nu se face doar o singură dată, ci este un proces continuu. Acest tip de învățare ar trebui privit ca un mijloc pedagogic de apropiere care combină eficiența și solicitarea din sala de clasă cu mijloace de învățare on-line [8].

2.2.2 Avantajele utilizării abordării de tip blended learning

În cele ce urmează vom aminti câteva dintre beneficiile folosirii educației de tip blended learning. Cele mai importante caracteristici ale acestuia sunt:

se bazează pe o instruire diferențiată/ personalizată;

accesul sporit la resurse, experți și oportunități de învățare;

crește implicarea studenților în procesul de învățare;

oferă o mare oportunitate de colaborare și un suport de învățare personalizat;

materialele pot fi accesate oriunde, oricând;

creșterea interacțiunii între student-profesor și student-student utilizând forumuri de discuții, bloguri și partajarea conținutului web pe o tablă electronică;

activități interactive precum discuții, lucrul în echipă, dezbateri, demonstrații sau lucrări de laborator;

flexibilitatea și libertatea studentlui de a învăța oricând și din orice loc;

ajută studenții să își dezvolte abilitățile nesesare de învățare ale secolului 21;

oferă conferințe virtuale cu membrii diferitelor obiective turistice (galerii, muzee, grădini zoologice) și excursii virtuale (situri arheologice sau obiective culturale) [8][9].

3. SOFTWARE-UL NECESAR DEZVOLTĂRII APLICAȚIEI

3.1 MySQL

MySQL este un sistem de gestiune a bazelor de date relațional, produs de compania suedeză MySQL AB și distribuit sub Licența publică generală. Reprezintă 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 limbajul de pogramare PHP, cu MySQL se pot construi aplicații în orice limbaj major. 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. Licența GNU GPL nu permite încorporarea MySQL în softuri comerciale; cei care doresc să facă acest lucru pot achiziționa, contra cost, o licență comercială de la compania producătoare.

MySql este un produs bazat pe tehnologia client-server necesitând introducerea unor utizatori cu parole în vederea accesării autentificate a serverului pe care este situată baza de date. Aplicațiile care folosesc baze de date MySQL includ: TYPO3, Joomla, WordPress, phpBB, MyBB, Drupal și alte software-uri. MySQL este, de asemenea, folosit în multe site-uri, pe scară largă de profil înalt, inclusiv Wikipedia, Google (dar nu și pentru căutări), Facebook, Twitter și YouTube [2][10][11].

Interfața

Pentru a administrra bazele de date MySQL, utilizatorul poate folosi modul linie de comandă sau, o interfață grafică: MySQL Administrator și MySQL Query Broswer. Un alt instrument de management al acestor baze de date este aplicația gratuită, scrisă în PHP, phpMyAdmin. 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.

MySQL Workbench este un mediu integrat gratuit dezvoltat de MySQL AB, care permite utilizatorilor să administreze grafic baze de date MySQL și vizual structura bazelor de date. Acesta permite utilizatorului să gestioneze proiectarea, modelarea și adminstrarea bazelor de date. Printre cele mai cunoscute aplicații grafice de administrare gratuite se numără:

Adminer – scris într-un script php capabil să gestioneze baze de date multiple;

HeidiSQL – rulează pe Windows și se poate conecta la serverele MySQL locale sau de la distanță pentru a gestiona baze de date, tabele și înregistrări de date individuale;

Microsoft Access – acesta poate fi folosit ca un front-end pentru diverse sisteme de baze de date, inclusiv baze de date Access (JET), surse de date ODBC, si MySQL sau PostgreSQL;

PhpMyAdmin – este dezvoltat în PHP și este inclus în pachetul software XAMPP.

MySQL este scris în limbajul C și C++. Există mai multe biblioteci pentru accesarea bazelor de date MySQL. Acestea includ MySQL Connector / net pentru integrarea cu Visual Studio Microsoft (limbaje cum ar fi C # și VB sunt cele mai frecvent utilizate) și driver-ul JDBC pentru Java. În plus, o interfață ODBC numită MyODBC permite altor limbaje de programare care suportă interfața ODBC sa comunice cu o bază de date MySQL, cum ar fi ASP [10][11].

Caracteristici

Versiunea MySQL 5.1 este oferită în două varinate diferite: varianta open source MySQL Community Server respectiv varianta commercială Entreprise Server. MySQL are un cod de bază comun și include următoarele caracteristici:

Suport cross-platform;

Proceduri stocate, folosind un limbaj procedural care aderă strâns la SQL / PSM;

Cursoare;

Schema de informare;

Secure Sockets Layer;

Interogări;

Suport de replicări (ex: replicare master-master & replicare master-slave);

Indexarea și căutarea;

Bibliotecă de baze de date încorporată;

Motoare de stocare MyISAM personalizate etc.

3.2 PHP

PHP reprezintă un limbaj de tip script, puternic și simplu de utilizat. Prima versiune de PHP (Personal Home Page Tools) a fost lansată de Rasmus Lerdorf în anul 1995. PHP are următoarele avantaje:

performanță ridicată, gratuitate;

interfețe de programare pentru diferite sisteme de baze de date;

biblioteci încorpotate pentru majoritatea operațiilor web;

suport pentru baze de date, manipulare cookie, funcții definite de utilizator (PHP2);

PHP 5 a fost lansat în 2004 și ramâne cea mai recentă versiune (5.4.11 reprezintă o versiune care a fost lansată la 17 ianuarie 2013). Aplicațiile web populare care utilizează PHP includ sisteme de management al conținutului, cum ar fi WordPress, Joomla și Drupal, împreună cu mai multe soluții de comerț electronic, cum ar fi ZenCart, osCommerce și Magento.

PHP-ul este utilizat pentru realizarea legăturii între baza de date și interfața web fiind un limbaj proiectat special pentru web, care rulează pe serverul web. PHP este simplu de utilizat, fiind un limbaj de programare structurat, ca si limbajele de programare C, Perl sau Java. Sintaxa limbajului este o combinație a limbajelor de programare menționate anterior.

Datorită modularitații sale, poate fi folosit și pentru aplicații de sine stătătoare, sau poate fi folosit ca Perl sau Python din linia de comandă. Probabil una dintre cele mai importante facilități ale limbajului este conlucrarea cu majoritatea bazelor de date relationale, de la MySQL și până la PostgreSQL sau DB2.

PHP rula pe majoritatea sistemelor de operare (UNIX, Windows, MAC OS) și poate interacționa cu majoritatea serverelor web. Spre deosebire de alte limbaje de scripting, precum JavaScript, PHP rulează pe serverul web, nu în broswerul web. În consecință, PHP poate obține accesul la fișiere, baze de date și alte resurse inaccesibile programului JavaScript.

Pentru a putea rula scripturi PHP, care să acceseze baze de date cu MySQL sunt necesare următoarele 3 componente:

server Web: poate fi instalat pe un calculator local sau pe o gazdă web. Cel mai răspândit server web la ora actuală este Apache, care este oferit gratis pe Internet.

aplicație PHP server trebuie instalată pe server. Pachetul de instalare poate fi preluat de la http://php.net și este de asemenea, oferit gratuit pe Internet.

pachetul de programe pentru gestiunea bazelor de date MySQL: se pot utiliza și alte SGBD (SQL, Oracle), însă pachetul MySQL este oferit gratuit, putând fi preluat de pe pagina oficială a firmei MySQL: http://www.mysql.com/ [2][12].

Sintaxa

Sintaxa limbajului PHP este inspirată de cea a limbajelor C/C++ si Perl. Codul PHP poate fi asimilat cu ușurință de tagurile HTML atât timp cât el se află între delimitările <? php respectiv ?>, asa cum se poate observa și în exemplul de mai jos:

<html>

<head>

<title>Exemplu</title>

</head>

<body>

<?php

echo “Acesta este un script PHP!”;

?>

</body>

</html>

Comentariile se introduc utilizând caracterele „//” sau “/* */”, iar variabilele încep cu semnul dolar „$”. Afișarea unor mesaje pe ecran se realizează cu funcția echo() sau print(). Funcția echo() nu reprezintă o funcție propriu zisă ci un constructor de limbaj, de aceea nu este obligatorie folosirea parantezelor. Fișierele PHP pot să conțină text, cod HTML, CSS, JavaScript respectiv cod PHP. Aceste fișiere au extensia .php. Ce poate să facă PHP?

PHP poate genera conținutul dinamic al paginii;

Cu PHP se pot crea, deschide, citi, scrie, șterge, și închide fișiere de pe server;

PHP poate colecta datele din formular;

PHP poate trmite și primi cookie-uri;

PHP poate adăuga, șterge și modifica datele din baze de date;

PHP poate restricționa utilizatorii să acceseze doar anumite pagini dintr-un site;

PHP poate cripta date.

Editarea paginilor în PHP se poate realiza în Notepad sau în orice editor de text, însă se recomandă utilizarea editoarelor specializate care oferă următoarele facilități: sublinierea sintaxei și completarea automată a codului. Editoarele specializate vor detecta utilizarea diferitelor taguri, operatori de început-sfârșit de sintaxă, variabile, etc, și le vor colora specific, pentru o mai bună vizualizare și organizare. Pe de altă parte completarea automată a codului este o facilitate utilă mai ales pentru începători. Aceasta constă în completarea automată a sintaxei sau afișarea unui mesaj cu opțiunile de completare [2][13].

Funcții

În PHP există mai mult de 1000 de funcții predefinite. Pe lângă funcțiile definite în PHP, putem crea propriile noastre funcții. O funcție este un bloc de declarații care pot fi utilizate în mod repetat într-un program. Funcția nu va executa imediat când se încarcă o pagină. Aceasta va fi apelată apoi executată. Pentru crearea unei funcții definite de utilizator în PHP , aceasta trebuie să înceapă cu cuvântul „function”. Mai jos voi prezenta un exemplu simplu de funcție care afișează mesajul „Hello world!”.

<?php
function writeMsg() {
echo "Hello world!";
}
writeMsg(); // apelul funcției
?>

În interiorul unei funcții pot să apară chiar și alte funcții și definiții de clasă. Un nume de funcție valid începe cu o literă sau caracter de subliniere, urmat de orice număr de litere, numere sau subliniere. Toate funcțiile și clase în PHP au domeniul de aplicare la nivel global – acestea pot fi numite în afara unei funcții, chiar dacă acestea au fost definite în interior (local) și vice-versa. Informațiile pot fi transmise la funcții prin lista de argumente, care este o listă delimitată de virgule. Argumentele sunt evaluate de la stânga la dreapta. În mod implicit, argumentele funcției sunt transmise prin valoare. Pentru a permite unei funcții să își modifice argumentele, acestea trebuie transmise prin referința (se adaugă &).Valorile sunt returnate folosind declarația de return. Orice tip poate fi returnat, inclusiv tablouri și obiecte. O funcție nu poate întoarce mai multe valori, dar rezultatele similare pot fi obținute prin matrice [14][15].

3.3 Serverul Apache

Apache este un server HTTP de tip open source. Apache a jucat și joacă un rol important în dezvoltarea webului, fiind folosit în prezent în circa 65.2% din paginile web. Apache este un server web cu o contribuție notabilă la dezvoltatea Internetului (world wide web). Apache a evoluat rapid în funcționalitate și performanță ca un rival competitiv pentru alte servere web bazate pe Unix.

Apache este dezvoltat de o comunitate deschisă de programatori sub emblema Apache Software Foundation. Aplicația este disponibilă pentru o mare varietate de sisteme de operare incluzând Unix, FreeBSD, Linux, Solaris, Mac OS X, Microsoft Windows și OS/2. Serverul Apache este un software gratuit și open source, el devine cel mai popular server HTTP.

Prima versiune a serverului a fost creată de Robert McCool, care la vremea aceea era implicat în proiectul National Center for Supercomputing Applications, cunoscut pe scurt ca NCSA HTTPd. A doua versiune a serverului a reprezentat o rescriere substanțială, de data aceasta punându-se accentul pe crearea unui layer prioritar (Apache Portable Runtime) și a suportului de module.

Principalul competitor al serverului Apache este Microsoft Internet Information Services (IIS), urmat de Sun Java System Web Server al companiei Sun Microsystems și multe altele, cum ar fi Zeus Web Server. Apache este folosit de unele din cele mai mari site-uri din lume. Motorul de căutare folosit de Google folosește o versiune modificată de Apache numită Google Web Server (GWS); și proiectele Wikimedia inclusiv Wikipedia rulează tot pe un server Apache [16].

Caracteristici

Proiectul Apache HTTP Server este un efort de a dezvolta și menține un server HTTP open-source pentru sistemele de operare moderne, inclusiv UNIX și Windows NT. Scopul acestui proiect este de a oferi un server securizat, eficient și extensibil, care oferă servicii HTTP în sincronizare cu standardele HTTP actuale.

Cele mai noi versiuni de Apache include următoarele caracteristici: Capacitate MPMs, îmbunătățiri majore la suport OCSP (Online Certificate Status Protocol), îmbunătățirea autentificării/autorizării, filtrare inteligentă, etc.[17].

4. DESCRIEREA APLICAȚIEI

4.1 Diagramele aplicației realizate în UML

UML (Unified Modelling Language) este un limbaj de modelare vizual, nu este un limbaj de programare. Acesta este destinat vizualizării, specificării, construirii și documentării sistemelor de aplicații. UML a fost conceput ca un limbaj universal care să fie utilizat la modelarea sistemelor, la fel cum limbajele de programare sunt folosite în diverse domenii.

Unified Modeling Language oferă un model standard de a scrie documentație de sistem, funcții de sistem sau declarații într-un anumit limbaj de programare, scheme ale bazelor de date și componente software reutilizabile. Cu ajutorul lui se poate modela orice tip de aplicație care rulează pe un sistem de operare. Flexibil, iar datorită faptului că obiectele și clasele sunt definite drept concepte fundameltale, un model construit în UML poate fi implementat ușor într-un limbaj orientat obiect.

StarUML este un program open source utilizat pentru realizarea diagramelor. Programul folosește un format propriu de fișiere cu extensia UML. Un avantaj al uitlizării acestui program îl reprezintă exportul în format JPEG, pentru a vizualiza diagramele realizate [18][19][20].

În programul StarUML, au fost realizate trei diagrame care prezintă actorii și principalele atribuții ale acestora în aplicația dezvoltată. Au fost definite cele trei categorii de actori (utilizatori): studentul, profesorul și administratorul. În diagramele de mai jos este prezentată și structura site-ului.

Diagrama 4.1 Studentul

În Diagrama 4.1 este prezentat actorul student, împreună cu rolurile acestuia în aplicație. Din diagramă se poate observa că este necesar ca studentul să se înregistreze, iar apoi să se autentifice pentru a accesa site-ul. După autentificare acesta are mai multe opțiuni detaliate mai jos:

Să acceseze chatul public unde fiecare utilizator are posibilitatea ca după autentificare să vadă discuțiile celorlalți participanți și are posibilitatea:

să își acceseze profilul propriu unde are posibilitățile de a-și adăuga o poză pe care o poate actualiza oricând; să își editeze datele publice în orice moment; să își vizualizeze propriile mesaje primite de la ceilalți utilizatori în timp ce acesta a fost offline pe site și să șteargă aceste mesaje.

să acceseze mesajele pe care le primește de la utilizatori și să le șteargă.

Să acceseze fișierele publice de pe site, în funcție de numele disciplinei. Însă utilizatorul de tip student nu poate să adauge fișiere sau să șteargă fișiere, din cauza anumitor restricții.

Să caute utilizatorii care au cont în site, cu posibilitatea de a căuta profesori sau studenți. După accesarea profilului acestora, se pot vizualiza datele personale. În plus în aceasta pagină, utilizatorul are meniul de acces rapid pentru trimiterea unui mesaj.

Să caute fișiere pentru o găsire mult mai mai rapidă, prin introducerea numelui fișierului dorit. Acesta poate descărca fișierele postate de alți utilizatori de tip profesori, sau de utilizatorul de tip administrator.

Să trimită mesaje prin e-mail administratorului site-ului în cazul în care acesta are probleme tehnice.

Diagrama 4.2 Profesorul

În Diagrama 4.2 este prezentat actorul profesor și rolurile acestuia în cadrul aplicației. După cum se poate observa, profesorul trebuie să se înregistreze, apoi să se autentifice pe site pentru a-l putea accesa. După accesare, acesta are mai multe opțiuni, și anume:

Să acceseze chat-ul public unde poate să comunice cu ceilalți utilizatori aflați online; fiecare utilizator are posibilitatea ca după autentificare să vizualizeze discuțiile celorlalți participanți. De aici acesta poate accesa:

Propriul profil unde are posibilitatea de a-și adăuga o poză și pe care o poate modifica oricând, să-și editeze datele personale în orice moment și să-și vizualizeze propriile mesaje primite de la ceilalți utilizatori cât timp acesta a fost offline pe site și să șteargă aceste mesaje.

Mesajele pe care le primește de la utilizatori și posibilitatea de ștergere a lor.

Să acceseze fișierele publice de pe site, dar și să adauge fișiere în funcție de disciplina pe care o predă și să șteargă fișierele încărcate doar de acesta.

Să caute utilizatorii care au cont în acest site. Aici are posibilitatea de a căuta profesori sau studenți. După accesarea profilului, aceștia pot vizualiza datele personale.

Să caute fișiere pentru o găsire mai rapidă. Acesta poate descărca fișierele postate de alți utilizatori sau fișierele postate de el.

Să trimită mesaje prin e-mail administratorului în cazul în care acesta are probleme tehnice.

Diagrama 4.3 Administratorul

Administratorul are o parte dintre rolurile de student, cât și o parte din rolurile de profesor descrise în Diagrama 4.1, respectiv 4.2.

Acesta poate să trimită mesaje în numele lui, dar și în numele altor utilizatori care solicită aceasta (cazul în care un utilizator nu poate accesa site-ul din anumite motive). Acesta poate să ștergă atât mesajele primite de la utilizatori, cât și toate mesajele din baza de date, indiferent dacă au fost adresate lui sau altor utilizatori.

Administratorul are acces total la baza de date pentru a șterge utilizatorii (în cazul în care un student devine absolvent al Universității, în cazul în care s-a transferat la o altă Universitate sau în cazul în care un profesor nu mai lucrează în institutul de învățământ respectiv).

De asemenea, administratorul poate vizualiza la rândul său fișierele postate de utilizatorii de tip profesor pe site și poate să le descarce, poate să adauge și el fișiere noi, și spre deosebire de profesori acesta poate șterge toate fișierele aflate în baza de date, deci și cele postate de utilizatorii cu rank de profesor.

4.2 Diagramele bazei de date

Baza de date este o colecție de informații organizate pentru a asigura regăsirea eficientă. Informatiile colectate ar putea fi în organizate într-un număr mare de formate (electronice, imprimate, grafice, audio, statistică, combinații). După modul de stocare al bazelor de date există baze de date fizice (hartie/imprimare) și bazele de date electronice [21].

Bazele de date MySQL sunt formate din tabele care conțin înregistrări constituite din diferite câmpuri. Crearea bazei de date implică crearea unor tabele, unde fiecare tabelă reprezintă o parte a bazei de date pentru memorarea informațiilor structurate. Există o mare varietate de câmpuri și atribute disponibile pentru a crea o bază de date folosind MySQL. Crearea unei tabele utilizând limbajul PHP este ceva mai dificilă, decât folosirea MySQL și se realizează prin secvențe de cod asemănătoare : CREATE TABLE nume_tabel {câmpuri}

Câmpurile pot fi definite folosind structura prezentată mai jos:

fieldname type (lenght) extra info [2].

Generarea diagramei bazei de date și stabilirea relațiilor între tabele a fost realizată în secțiunea Designer din phpMyAdmin. În continuare sunt prezentate cele două diagrame ale bazei de date. În această secțiune se observă legăturile dintre tabele.

Figura 4.4 Diagrama bazei de date

După cum se observă în Diagrama 4.4, prima parte a diagramei bazei de date, conține cinci tabele, și anume: inregistrare, mesaje, studenti, profesori și contact. Tabela contact este folosită pentru a trimite mesaje administratorului.

Cea de-a doua diagramă, prezintă în continuare cele 4 tabele, conținând fișierele introduse de profesor sau administrator. Toate aceste fișiere sunt adaugate în funcție de disciplină. La salvarea acestora pe site se vor reține informații despre numele fișerului, tipul (fișiere .doc, txt, .ppt, .pdf, etc.), mărimea și data la care a fost adăugat. Prin conținutul tabelelor, aplicația vine în ajutorul studenților pentru pregătirea examenului de licență. Astfel au fost diferențiate patru tabele distincte: tabela ce conține lista fișierelor pentru materia Programare, tabela referitoare la disciplina Baze de date, tabela cu fișierele destinate Rețelelor de calculatoare și tabela cu informații despre licență.

Așa cum se observă în diagramă, între tabelele înregistrare și mesaje există o relație de unu la n. După înregistrare și logare utilizatorul are posibilitatea de a trimite mesaje celorlalți utilizatori.

Figura 4.5 Diagrama bazei de date- continuare

În continuare sunt descrise pe scurt tabelele din care este alcătuită baza de date.

În tabelul înregistrare se salvează datele cu care utilizatorul se va înregistra. Înregistrarea este necesară pentru a-i oferi utilizatorului posibilitatea de a accesa site-ul. Logarea se va face utilizând informațiile email și parola introduse în formularul de înregistrare. Tabela înregistrare conține următoarele câmpuri: id_login unic, nume_preume, e-mail-ul, parola, respectiv rank-ul (student sau profesor).

Figura 4.6 Conținutul tabelei înregistrare

Tabelul mesaje conține mesajele pe care utilizatorii le trimit între ei. Acesta este un mod particular de a recepționa mesaje, chiar dacă utilizatorul nu se află online. Fiecare dintre mesaje are un id unic de identificare așa cum se poate observa în figura următoare (Figura 4.7).

Figura 4.7 Conținutul tabelului mesaje

Tabelul studenți include id_student, respectiv id_login (informații unice) cu care acesta s-a autentificat. Urmate de acestea sunt datele personale ale acestora: numele, adresa de email, specializarea, localitatea, numărul de telefon, etc. după cum se poate vedea din următoarele figururi (Figura 4.8, respectiv Figura 4.9).

Figura 4.8 Conținutul tabelei studenți

Figura 4.9 Conținutul tabelei studenți-continuare

Tabela profesori stochează id_profesor, id_login și toate celelalte date personale: nume_prenume, departament, localitate, tara, data_nastere, adresa de e-mail, număr de telefon (pentru contact) ș.a. (Figura 4.10 și 4.11).

Figura 4.10 Conținutul tabelei profesori

Figura 4.11 Conținutul tabelei profesori- continuare

În continuare este prezentat conținutul tabelelor ce conțin fișiere, și anumne: tabelul programare, tabelul baze_de_date, tabelul retele_de_calculatoare, respectiv tabelul licenta. Între aceste tabele și tabelul înregistrare există o relație de 1 la n (profersorii și administratorul au posibilitatea de a încărca mai multe fișiere în cadrul unei anumite descipline). Fiecare dintre aceste tabele este format din următoarele câmpuri: id_fișier, id_login (acestea sunt unice, iar id_login – reprezintă valoarea de înregistrare a profesorului preluată din tabelul înregistrare), nume_fișier, tip_fișier (doc, pdf, etc), mărime fișier (în bytes), respectiv data_fișier – incluzând și ora la care fișierul a fost încărcat.

Figura 4.12 prezintă lista fișierelor din tabelul programare, unde utilizatorii au posibilitatea de upload a materialelor cu conținut didactic. De asemenea există posibilitatea de intruducere a link-urilor spre anumite fișiere de pe Internet.

Figura 4.12 Lista fișierelor din tabela programare

În continuare este afișat și conținutul celorlalte tabele: baze_de_date, rețele_de_calculatoare și licenta. Acestea au fost construite pe același principiu, pentru a însera materiale didactice, pentru a putea fi parcurse de studenți și conțin fișiere/link-uri pe care utilizatorii (cu rang de profresor sau de administrator) le încarcă/adaugă pe site în funcție de numele disciplinei de studiu.

Figura 4.13 Lista fișierelor din tabela baze de date

Figura 4.14 Lista fișierelor din tabela rețele de calculatoare

Figura 4.15 Lista fișierelor din tabela licență

4.3 Descrierea meniului/paginilor aplicației

4.3.1 Înregistrare și login

Codul aplicației a fost scris în limbajele HTML și PHP. Pagina de înregistrare conține fișierul inregistrare.php. Întregul cod al fișierului inregistrare.php este prezentat în anexa 1. Prima

parte a fișierului utilizează secvența „session_start();” de pornire a sesiunii și secvența „require_once(“dbconnect.php”);” care face legătura cu baza de date.

Cea de-a doua parte a fișierului utilizează secvența „<img src="Imagini/antet.jpg" alt="" width="1000" height="200" />” pentru a introduce în pagina web imaginea din fișierul antet.png. Imaginea se regăsește în folderul Imagini stocat pe server. Codul a fost scris în limbajul HTML, iar datele introduse vor fi salvate în tabela inregistrare din baza de date. Secvența de mai sus precizează calea unde se găsește imaginea și setarea paramerilor înalțime și lungime a acesteia. Secvența de cod HTML „<form name="register_form" action="#" method="post">” menționează numele, metoda POST și acțiunea pe care o execută. Pagina de înregistrare este prezentată în Figura 4.16

Figura 4.16 Pagina de Înregistrare

În codul HTML se află un cod PHP care se găsește în partea a treia a fișierului înregistrare.php. Secvența session_start(); din prima parte a fișierului este necesară pentru accesarea emailului și parolei din sesiunea aflată în fișierul login.php. Secvența pentru conectarea la baza de date se va regăsi în toate paginile PHP și în unele dintre paginile HTML din aplicație.

Se preiau datele din formularul de înregistrare și se verifică dacă există date transmise. În cazul în care datele introduse sunt valide, informațiile se vor adauga în baza de date. Altfel se transmite un mesaj de soluționare a erorilor apărute. Secvența „$query = "INSERT INTO `inregistrare` (`nume_prenume`,`email`,`parola`,`rank`) VALUES ('".$nume_prenume."','".$email."','".$parola."','".$rank."')"”; adaugă datele în baza de date. Datele de înregistrare au fost stocate în tabela inregistrare. Secvența „if ($rank == 'student') INSERT INTO studenti (id_login,nume_prenume,email) VALUES('$id_login','$nume_prenume','$email');” stochează datele și în tabela studenti. Dacă „$rank =='profesor'” datele de înregistrare vor fi stocate în tabela profesori. Se poate observa cu ușurință delimitarea între tipul de utilizatori (student sau profesor).

În ultima parte a fișierului inregistrare.php a fost inclusă o legătură spre pagina de logare login.php prin secvența „<a href="index.php">Inapoi</a>”.

Pentru pagina de login au fost utilizate două fișiere, index.php și login.php cu principiu de funcționare asemănător fișierului de înregistrare. Codul fișierului index.php conține la fel ca fișierul inregistrare.php, codul PHP pentru conectarea la baza de date, antetul și formularul de introducere a datelor. Pagina conține și un video de prezezentare a Universității noastre. Codul de introducere este prezentat în secvența care urmează„<video width="400" height="228" controls> <source src="promo1.mp4" type="video/mp4"> </video>”. A fost inclus și un script PHP de afișare a datei curente și a unui mesaj care se schimbă în funcție de intervalul orar.

Formularul de introducere a datelor în HTML are următorul cod:

<h3> Logare</h3><br />

<form name="login_form" action="login.php" method="post">

<table width="15%" border="0" cellpadding="0" cellspacing="2"> <tr>

<td width="35%"><b>E-mail</b></td>

<td><input type="email" name="email" id="login_username" /></td> </tr><tr>

<td><b>Parola</b></td>

<td><input type="password" name="parola" id="login_password" /></td> </tr><tr>

<td><input type="submit" name="login_btn" value="Login" /></td></tr>

</table>

<p><a href='inregistrare.php'> INREGISTRARE</a></p>

Legătura dintre login și înregistrare se face prin secvența „<a href='inregistrare.php'> INREGISTRARE</a>”. Dacă un utilizator nu este logat prin apăsarea pe cuvântul INREGISTRARE va fi direcționat spre pagina de îmregistrare prezentată anterior. Următoarea secvență „<td><input type="email" name="email" id="login_username" /></td>” crează câmpul pentru introducerea email. Numele din name="email" trebuie să se regăsească în mod identic și în baza de date. Acesta este necesar pentru a ști de unde să se acceseze datele de logare, pentru a verifica dacă utilizatorul este înregistrat (dacă există în baza de date).

Aceeași procedură se repetă și pentru parolă. Secvența „<td><input type="password" name="parola" id="login_password" /></td>” crează câmpul de introducere al parolei de tip password.

Secvența „<input type="submit" name="login_btn" value="Login" />” crează butonul login de tip submit. Figura 4.17 va prezenta pagina index.php, care conține și formularul pentru autentificare.

Figura 4.17 Pagina principală

Fișierul login.php conține toate liniile de cod prezentate în anexa 2. Secvența de la începutul fișierului, “error_reporting(E_ERROR);” are următorul rol: de a afișa un mesaj de eroare, dacă nu se face legătura dintre fișierele index.php și login.php. Secvența “include("dbconnect.php");”, include în fișierul login.php, fișierul de conectare la baza de date. Conectarea la baza de date folosind secvența “require_once("dbconnect.php");” afișează eroarea în momentul în care nu se poate face conectarea. Executarea codului php se face în mod similar ca în cazul formularului de înregistrare, cu obiecția că în formularul de login se vor introduce doar adresa de email și parola.

Pe lângă email și parolă a fost adăugat în sesiune id_login și rank, deoarece vor fi utilizate și în cadrul altor pagini. Următoarea secvență “include ('chat_public.php');“ include în pagină conținutul fișierului chat_public.php.

4.3.2 Chat public

Acest script, de creare a unui chat simplu, poate fi ușor adăugat într-o pagină web. În chat au fost realizate trei camere: în limba română, în limba engleză respectiv în limba franceză. Ultimele două pot fi utile stundenților străini care au venit la studiu în universitatea noastră.

Chatul a fost creat folosind limbajele PHP și JavaScript, folosind tehnologia Ajax și Programarea Orientată pe Obiecte (Object-Oriented Programming – cu Clase și obiecte). Mesajele sunt fișiere salvate pe server, în fișiere text, iar aftfel nu este nevoie de introducerea lor în baza de date. Utilizatorii pot adăuga emoticons în chat și pot formata textul cu Bold, Italic și Underline.

Scriptul poate fi introdus în fișiere HTML sau PHP folosind tag-ul <object> sau <iframe>. Este obligatoriu ca scriptul să fie aflat pe un server care are PHP instalat. Afișarea utilizatorilor online se face pentru fiecare cameră în parte. Scriptul este testat cu succes pe cele mai utilizate browsere web de la ora actuală [22].

Pentru stocarea fișierelor emoticons și a fișierelor sunet, a fost creat pe server un folder numit chatex. Am creat pe server și un director chatfiles format din fișiere PHP, CSS (Cascading Style Sheets) și JS (JavaScript). Fișierul CSS este utilizat pentru a crea design-ul chatului, în timp ce fișierele PHP și JS sunt folosite pentru buna funcționare a chatului. Folderul chattxt salvează discuțiile utilizatorilor, iar pentru fiecare cameră în parte este creat câte un fișier txt.

Pentru a participa la discuții utilizatorii trebuie să se autentifice cu un nume și sa introducă un anumit cod. În pagina web chatul arată în modul următor:

Figura 4.18 Chat public

4.3.3 Profilul utilizatorului

Fiecare dintre utilizatori are, după autentificare o pagină personală de profil. În funcție de rank-ul utilizatorului (student sau profesor), imediat după meniul principal, am adăugat câte două poze reprezentative pentru fiecare. Secvența de cod care realizează diferențierea în funcție de rank este următoarea: „if ($_SESSION['rank'] == 'student') include ("stud_img.html"); else include ("prof_img.html");”. Aici acesta are posibilitatea de a adăuga o imagine personală și de a-și edita datele personale. O facilitate rapidă esteconstituită de trimiterea de mesaje altor utilizatori și de vizualizare a mesajelor primite cât timp acesta a fost offline. Fișierul profil.php atât cod HTML, cât și cod PHP.

Pentru a identifica tabela din care se preiau informațiile a fost utilizatâ crearea rank în sesiune, asa cum a fost enunțat în subcapitolul anterior. Pentru identificarea tabelei a fost setată următoarea condiție: „ if($_SESSION['rank'] == 'student')”- datele vor fi extrase din tabela student, altfel se va parcurge tabela profesor. Secvența „<img src='".$row['imagine']."' style=\"width:305px; hight:305px; float:left; padding-left: 0px; padding-right: 60px;; \" />” este folosită pentru afișarea imaginii în pagina de profil personală. Secvența “$result = mysql_query($lista) or die (mysql_error());” trimite o interogare la baza de date de pe server. În caz de insucces funcția mysql_error() afișează un mesaj de eroare. Funcția mysql_fetch_array aduce din baza de date înregistrarile selectate și le returnează sub forma de array [23]. Un exemplu de profil personal al unui student este prezentat în Figura 4.19.

Figura 4.19 Profil student

Fișierele profil2.php și profil3.php conțin codul pentru vizualizarea altor profile. După cum se observă, conținutul fișierului profil2.php este utilizat pentru vizualizarea profilului studentului, iar codul fișierului profil3.php este destinat pentru vizualizarea profilului profesorului. Codul PHP al fișierului profil2.php este prezentat în anexa 3. Figura 4.20 prezintă rezultatul de vizualizare a unui profil de profesor.

Figura 4.20 Profil profesor

În continuare este descrisă acțiunea butoanelor din figura de mai jos.

Figura 4.21 Meniu butoane profil

4.3.4 Adăugarea imaginii în baza de date și afișarea în pagină

Pentru adăugarea imaginii am au fost parcurși următorii pași:

A fost creat pe server un folder numit upload în care vor fi salvate fișierele de tip imagine. A fost ales acest mod de salvare pentru a nu supraîncarca baza de date prin salvarea fișierelor imagine în aceasta;

A fost creat un fișier denumit adaugare_imagine.php care conține atât cod HTML cât și cod PHP. Codul PHP de salvare a imaginii în folderul specificat este prezentat în anexa 4. Codul HTML pentru formularul de introducere este următorul:

<div style="margin:1em auto; width:350px; text-align:center;">

<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" enctype="multipart/form-data">

<b><br><br>Adaugare imagine: <br><br></b><input type="file" name="fileupload" /><br><br>

<input type="submit" name='submit' value="Upload" />

</form>

</div>

Codul PHP verifică dacă există deja o imagine pe site a utilizatorului și dacă acesta dorește să o înlocuiască. Dacă nu apar erori în timpul încarcării imaginii pe site, se trece la verificarea tipului de utilizator. Secvența “ if ($_SESSION['rank']=='student') $sql="UPDATE student SET image='$uploadpath' WHERE id_login=".$_SESSION['id_login'];” adaugă sau schimbă imaginea studentului folosind valoarea id_login din sesiune. Dacă rank(!'student') același procedeu este urmat și pentru a încarca/modifica imaginea de profil a unui profesor.

Imaginea înserată va fi publică pentru orice tip de utilizator care vizualizează profilui unui student sau al unui profesor. Figurile 4.18 și 4.19 din subcapitolul anterior conțin afișarea imaginii din profilui utilizatorului.

4.3.5 Editarea datelor personale și salvarea lor în baza de date

Orice utilizator are posibilitatea de a-și adăuga pe site datele personale pentru a putea fi vizualizate de studenții sau profesorii care sunt înregistrați. Butonul care de editare a detaliilor se găsește în pagina de profil a fiecărui utilizator. Prin click pe butonul editare detalii, utilizatorul este direcționat spre pagina editare_detalii.php. Acest fișier extrage datele din baza de date din tabelul studenți sau profesori și le afișează în pagină. Identificarea rank-ului utilizatorului se face utilizând rank din sesiune. Secvența „<a href="editare_detalii2.php?id_student='.$row ['id_student'].'"><b> Editare</b></a>” este cea care face legătura spre pagina de editare a detaliilor utilizatorului de tip student. Codul PHP care realizează actualizarea datelor prin apăsarea butonului Editare este descris în anexa 5. Codul fișierului editare_detalii.php pentru utilizatorul de tip student este afișat în pagina web astfel:

Figura 4.22 Editare date

În pagina editare_detalii2.php se înlocuiesc datele actuale, cu cele reactualizate. De exemplu secvența „$specializare2 = $_POST['specializare'];” realizează modificarea datelor actuale „$specializare” la datele actualizate $specializare2”. Dacă operația de actualizare a fost efectuată cu succes se afișează mesajul din secvența “echo "Modificare a fost efectuata cu success!";” Echo reprezintă o funcție care afișează mesajul cuprins între „ ”.

Prin apăsarea butonului Salveaza din secvența „<input type="submit" name="Editare" value="Salveaza" />” datele editate sunt automat salvate în baza de date. La fel se procedează și în cazul utilizatorului de tip profesor, cu mențiunea că se utilizează secvența „<a href="editare_detalii3.php?id_profesor='.$row['id_profesor'].'"><b>Editare</b></a>”.

Fișierele editare_detalii2.php respectiv editare_detali3.php conțin codul HTML și codul PHP de înserare a datelor în baza de date. Paginile fișierelor profil2.php și profil3.php conțin un buton de legătură spre pagina vezi_detalii.php. Prin click pe acest buton, utilizatorii au posibilitatea de a vizualiza datele introduse de utilizatorul respectiv. Codul acestui fișier este asemănător cu codul din fișierul editare_detalii.php mentionând că aici nu este posibilă editarea datelor. Butonul de legătură spre pagina de vizualizare a detaliilor unui anumit utilizator este prezentat în figura de mai jos:

Figura 4.23 Vizualizare detalii

4.3.6 Vizualizarea mesajelor și trimiterea spre utilizator

Fiecare dintre utilizatori are, după logare, posibilitatea de a trimite mesaje prin intermediul chat-ului public. Există și o altă modalitate de a trmite mesaje private atunci când un utilizator este offline pe chat. Pentru trimiterea mesajelor private am creat fișierul mesaje.php. Acest fișier conțint atât cod HTML de creare a formularului, cât și cod PHP de adăugare a mesajului în baza de date, pentru a putea fi citit de către destinatar după autentificarea acestuia pe site. Codul HTML care conține formularul de introducere a datelor este următorul:

<center><h2>Completati campurile de mai jos</h2>

<form name="formular" action="#" method="post">

<table cellspacing='3' cellpadding='3' border='0'>

<tr><td><b>Email destinatar: </b></td>

<td><input name="email_destinatar" type="email" size="20" /></td></tr>

<tr><td><b>Introduceti mesajul: </b></td><br />

<td><textarea name="mesaj" type="text" size="20" rows="5" cols="20"></textarea> </td> </tr>

</table><br>

<input type="Submit" name="Trimite" value="Trimite" />

<button type="reset" value="Reseteaza">Reseteaza</button>

</center></form>

<table>

Secvența „<textarea name="mesaj" type="text" size="20" rows="5" cols="20"> </textarea>” reprezintă atributul de tip text și dimensiune 20 a textului. Tot aici se crează caseta de text, textarea pentru introducerea mesajului. Formularul se vizualizează în pagină în modul următor:

Figura 4.24 Trimitere mesaj

Secvența „<input type="Submit" name="Trimite" value="Trimite" />” este cea de trimitere a datelor introduse spre executarea codului PHP de trimitere a mesajului. Codul PHP de trimitere a mesajului este prezentat în anexa 6.

Pentru vizualizarea mesajelor primite de la ceilalți utilizatori a fost creat fișierul mesaje1.php. Codul PHP al acestui fișier se poate vizualiza în anexa 7. Afișarea în pagina web a mesajelor private primite este prezentată în următoarea figură:

Figura 4.25 Vizualizarea mesajelor

Secvența “if ($num_rows>0)”, a fost utilizată pentru a verifica dacă în tabelul mesaje din baza de date există mesaje adresate utilizatorului respectiv. Dacă după parcurgere se constată că nu există mesaje destinate utilizatorului, atunci secvența echo „"Nu aveti mesaje noi!"” va afișa mesajul corespunzător și va informa utilizatorul că acesta nu are mesaje noi primite. Dacă există mesaje noi trimise destinatarului, atunci acestea vor fi preluate din baza de date și se vor afișa în pagină. Selectarea mesajelor primite pentru utilizatorul curent se face în funcție de adresa de email cu care se face autentificarea.

Codul pentru afișarea expeditorului și conținutul mesajului este relativ simplu. Secvența „echo "<tr><td><b>Email expeditor:</b></td><td width=100>".$row['email_expeditor']."

</td></tr>” selectează din tabela mesaje adresa de email a expeditorului mesajului. Pentru afișarea mesajului se folosește aceeași procedură menționând conținutul mesajului.

Ștergerea unui anumit mesaj se efectuează în funcție de id-ul unic al mesajului respectiv, folosind secvența următoare: „echo '<td width=200><a href="stergere_mesaje.php? id_mesaj='.$row['id_mesaj'].'"><b>Stergere mesaj</b></a></td></tr>';”. Executarea codului are drept scop ștergerea definitivă a mesajului din baza de date.

4.3.7 Afișarea fișierelor publice și introducerea acestora în baza de date

Este de remarcat faptul că studenții nu au acces la introducerea fișierelor sau link-urilor în baza de date. Profesorii și administratorul sunt singurii care au acest drept de adăugare a materialelor didactice. În continuare se vor prezenta diferențiat între tipul de utilizator profesor și tipul de utilizator student.

A fost creat fișierul fisiere_publice.php care include o listă de fișiere pe care studentul o poate accesa, însă cu specificația că acesta nu poate adăuga sau sterge fișiere. Acest fișier pune la dispoziția studentilor trei teste de evaluare la materiile programare, baze de date si rețele de calculatoare.

Afișarea listei fișierelor publice se face prin selectarea din meniu a numelui materiei. În acest fel au fost create fișierele: lista_fisiere_prog.php, lista_fisiere_bd.php, lista_fisiere_retele.php și lista_fisiere_licenta.php. Meniul care conține lista cu fișierele publice este comun atât pentru student, cât și pentru profesor. Codul fișierului fișiere_publice.php este prezentat în anexa 8. Figura următoare prezintă meniul împreună cu lista fișierelor publice de la materia rețele de calculatoare pentru un utilizator de tip student.

Figura 4.26 Lista fișiere publice rețele de calculatoare

Utilizatorii au posibilitatea de a descărca fișierele postate de utilizatori cu rol de profesor sau adimistrator. Secvența de cod ce oferă posibilitatea de descărcare a fișierelor din tabela retele_de_calculatoare este următoarea „<td><a href='get_fisiere_retele.php?id_fisier=

{$row['id_fisier']}'>Descarca</a></td>”. Prin apăsarea butonului Descarca se parcurge codul fișierului get_fisiere_retele.php prezentat în anexa 9. Procedeul de download se repetă și pentru fișierele get_fisiere_prog.php, get_fisiere_bd.php, respectiv pentru fișierul get_fisiere_licenta.php.

Așa cum este specificat mai sus, pentru studenți sunt disponibile testele de evaluare. Astfel au fost create următoarele fișiere: test_prog.php, test_bd.php, respectiv test_retele.php. Aceste fișiere au codul scris în JavaScript, iar codul care realizează corectarea răspunsurilor date de student la disciplina Baze de date este prezentat în anexa 10. Lista care conține fișierele de evaluare arată în pagina web în modul următor:

Figura 4.27 Lista fișiere de evaluare

Fișierul test_bd.php arată în pagina web astfel:

Figura 4.28 Test de evaluare

Dacă se detectează un cont de profesor se include posibilitatea de adăugare, respectiv ștergere a materialelor didactice. Codul PHP care efectuează aceasta este următorul „<? if ($_SESSION['rank'] == 'profesor') { ?><ul><li><a href="adaugare_fisiere_prog.php"> Adaugare fisiere</a></li> <li><a href="stergere_fisiere_prog.php">Stergere fisiere</a></li> </ul><?php } ?>”. Codul HTML pentru adăugarea unui fișier/link în tabelul retele_de_calculatoare din baza de date este definit în fișierul adaugare_fisiere_prog.php. Formularul de introducere al unui fișier sau a unui link specific pentru disciplina Rețele de calculatoare are următorul cod:

<form action="adaugare_fisiere_retele.php" method="post" enctype="multipart/form-data">

<h3> Adauga fisier: <input type="file" name="uploaded_file"><br></h3>

<input type="submit" value="Incarca fisier">

</form>

<form name="formular" action="#" method="post">

<h3> Adauga link: <input name="nume_fisier" type="link" size="15" /></h3>

<input type="Submit" name="Adaugare" value="Adauga link " />

</form>

Formularele al căror cod este prezentat mai sus au rolul de a adauga fișiere și link-uri în baza de date. Folosirea linku-rilor este utilă pentru a posta adrese de pe Internet, pentru acces rapid la pagina specificată. Codul HTML al formularelor este prezentat astfel în pagina web:

Figura 4.29 Adăugarea de fișiere și link

Ștergerea fișierelor este posibilă doar de cei care le-au încărcat în pagină. Ștergerea din lista a fișierelor corespunzătoare disciplinei Rețele de calculatoare se face din fișierul stergere_fisiere_retele.php. Codul de ștergere al fișierului stergere_fisiere_retele.php este prezentat în anexa 11. În mod identic se procedează și în cazul celorlalte discipline. Este prezentă în cele ce urmează acțiunea de ștergere din tabela retele_de_calculatoare a bazei de date. Rezultatul codului în pagina web arată astfel:

Figura 4.30 Ștergere fișiere

Fișierele care pot fi șterse se selectează în funcție de id_login, adică în funcție de cele postate de utilizatorul autentificat, iar apoi sunt afișate în pagină. Apăsarea butonului Ștergere are ca acțiune accesearea paginii stergere_fisiere_retele2.php. Ștergerea din baza de date a fișierelor și a link-lor se va efectua în funcție de id_mesaj reprezentând un număr unic. Acest fișier conține următorul cod PHP de ștergere:

<?php

if(isset($_GET['id_fisier'])){

$id_fisier=$_GET['id_fisier'];

$stergere = mysql_query("DELETE FROM `retele_de_calculatoare` WHERE `id_fisier` ='". $_GET['id_fisier']."'");

echo "Fisierul a fost sters !";

echo "<meta http-equiv=\"refresh\" content=\"1;URL=stergere_fisiere_retele.php\">";

else{ echo "Fisierul nu exista !";} ?>

Secvența “if(isset($_GET['id_fisier'])) $id_fisier=$_GET['id_fisier'];” setează id-ul fișierului asupra căruia s-a dorit acțiunea de ștergere.

Secvența “$stergere = mysql_query("DELETE FROM `retele_de_calculatoare` WHERE `id_fisiere` ='". $_GET['id_fisiere']."'");” șterge din tabela retele_de_calculatoare , fișieul selectat de utilizatorul respectiv.

Dacă operația a fost efectuată cu succes secvența „echo "Fisierul a fost sters !";” afișează mesajul corespunzător. Secvența “echo "<meta http-equiv=\"refresh\" content=\"1;-

URL=stergere_fisiere.php\">";” efectuează un refresh la pagina stergere_fisiere_retele.php.

4.3.8 Căutarea utilizatorilor și a fișierelor

Pentru căutarea unui utilizator a fost creat fișierul cautare_utilizator.php care conține formularele de căutare:

<form id="cautare_student"action="#" method='POST'>

<table cellspacing='0' cellpadding='0'>

<tr><td><b>Nume student:&nbsp;</b></td>

<td><input name="nume_prenume" type="text" id="nume_stud"></td></tr>

</table><br>

<input type="submit" name="Cautare_stud" value="Cautare" />

</form><br><br>

<b>Cautare profesor</b><br><br>

<form id="Cautare profesor"action="#" method='POST'>

<table cellspacing='0' cellpadding='0'>

<tr><td><b>Nume profesor:&nbsp;</b></td>

<td><input name="nume_prenume" type="text" id="nume_prof"></td></tr>

</table><br>

<input type="submit" name="Cautare_prof" value="Cautare" />

</form>

După cum se poate observa, aplicația conține un formular pentru căutarea studenților și unul pentru căutarea profesorilor. Codul de mai sus arată în pagina web astfel:

Figura 4.31 Căutare utilizatori

Codul PHP al fișierului cautare_utilizator.php aflat în spatele formularului de căutare al unui student este prezentat în anexa 12. În mod similar se procedează și la căutarea unui utilizator profesor, cu mențiunea că se va parcurge tabela profesori din baza de date.

După apăsarea butonului Cautare, în pagina web apare o listă de unde există posibilitatea de a selecta profilul utilizatorului care se dorește a fi vizitat. Selectarea butonului Profil accesează în funcție de rank una din paginile profil2.php sau profil3.php. În pagina web afișarea listei utilizatorilor arată ca în figura de mai jos:

Figura 4.32 Afișare listă utilizatori

Căutarea fișierelor se face utilizând fișierul cautare_fisiere.php. Codul HTML al acestui formular este următorul:

<form id="1"action="#" method='POST'>

<table cellspacing='0' cellpadding='0'>

<tr><td><b>Nume fisier:&nbsp&nbsp;</b></td>

<td><input name="nume_fisier" type="text" id="nume_fisier"></td></tr>

</table><br>

input type="submit" name="Cautare_fisier" value="Cautare" />

</form>

Secvența „&nbsp&nbsp” introduce două spații albe înaintea secvenței pentru introducerea numelui fișierului care se dorește a fi accesat. Formularul din pagina web este prezentat în figura 4.33.

Figura 4.33 Căutarea fișierelor

După introducerea numelui fișierului în câmp, codul PHP va parcurge tabela programare, baze_de_date, retele_de_calculatoare și licenta.Pentru fiecare tabel în parte se va afișa numărul de fișiere găsite în funcție de numele introdus. Codul PHP al fișierului cautare_fisiere.php este prezentat în anexa 13. Afișarea în pagina web a listei fișierelor găsite arată în următorul mod:

Figura 4.34 Afișarea listei fișierelor

4.3.9 Contact

Pagina de contact are rolul de a trimite un mesaj administratorului, în cazul în care un utilizator nu poate accesa site-ul. La fel ca și în cazul mesajelor și aici există un formular de introducere a datelor. Formularul arată astfel în pagina web:

Fig 4.35 Formular de contact

Codul HTML care realizează formularul de contact este următorul:

<font size="2" color="black" face="Verdana, Arial, Helvetica, sans-serif"><strong> Va rugam sa completati campurile de mai jos!</strong></font><br />(toate campurile sunt obligatorii)<br /><br />

<font size="2" face="Verdana, Arial, Helvetica, sans-serif">

Adresa dvs. de e-mail:<br />

<input type="text" name="email" size="42"><br /><br />

Subiect / Titlul mesajului:<br />

<input type="text" name="subiect" size="42"><br /><br />

Numele dumneavostra:<br />

<input type="text" name="nume_prenume" size="42"><br /><br />

Telefonul dumneavoastra:<br />

<input type="text" name="telefon" size="42"><br /><br /></font>

<font size="2" face="Verdana, Arial, Helvetica, sans-serif">

Mesajul dumneavoastra:<br />

<textarea name="mesaj" rows="6" cols="50"></textarea><br /><br /><br />

<input type="submit" name="submit" value="Trimite">

</font></form><br><br><br>

Codul PHP de trimitere a informațiilor aflat în spatele formularului este prezentat în anexa 14. Administratorul va recepționa mesajele de contact primite de la utilizatori în aceeași manieră în care acestea sunt vizualizate de celelalte tipuri de utilizatori. O descriere a modului de primire a mesajelor de contact este realizată în subcapitolul următor care va prezenta atribuțiile unui utilizatot de tip admin.

4.3.10 Administratorul aplicației

Administratorul este singura persoană, care are acces total asupra aplicației. Acesta poate adauga și șterge mesaje, fișiere și utilizatori. Administratorul are atât drepturi de student cât și de profesor. Acesta nu se înregistrează, ci are un cont prestabilit salvat în următoarea secvență a codului PHP: if ($email=='[anonimizat]' && $_POST['parola']=='1234')

{ include ('admin/admin.php'); }

Atunci când se autentifică cu emailul și parola mai sus menționate va fi direcționat spre pagina admin.php. Acest fișier se găsește în folderul admin de pe server. După introducerea corectă a datelor de autentificare, administratorului i se afișează un mesaj de bun venit pe pagina sa de ADMIN. Pagina de întâmpinare împreună cu meniul prin care acesta are acces la baza de date este prezentată în următoarea figură:

Figura 4.36 Pagina de ADMIN

Accesând fișierul mesaje_admin.php, administratorul poate vizualiza mesajele trimise de utilizatori prin intermediul formularului de contact și le poate șterge. Codul este același ca în cazul mesajelor utilizatorilor, cu mențiunea că în acest fișier, interogarea este: $lista = "SELECT * FROM `contact`";, adică din tabela contact de selectează doar acele mesaje adresate administratorului. Codul care efectuează ștergerea datelor din formularul de contact se află în fișierul stergere_mesaje_admin3.php și se poate vizualiza în anexa 15. Codul fișierului mesaje admin.php se prezintă astfel în pagina web:

Figura 4.37 Recepționarea mesajelor din formularul de contact

Adminul, poate și el să trimită mesaje altor utilizatori, însă, spre deosebire de profesori și studenți, care pot trimite mesaje doar în numele lor. Acesta poate trimite mesaje și în numele utilizatorilor la cererea acestora. Fișierul care conține codul sursă este trimitere_mesaje_admin.php și este prezentat în anexa 16.

Administratorul are acces la baza de date pentru a șterge mesajele primite, dar și pentru a șterge mesajele celorlalți utilizatori, inclusiv de a șterge toate mesajele din baza de date. Codul este același ca și în cazul utilizatorilor care pot să șteargă mesaje, cu diferența că în acest fișier, se vor afișa toate mesajele nu doar mesajele expediate pentru administrator. Secvența “$lista = "SELECT * FROM `mesaje` ";” afișează toate mesajele din tabela mesaje a bazei de date.

Formularul de introducere a datelor este prenentat în figura următoare:

Figura 4.38 Formular trimitere mesaj administrator

Codul PHP al fișierului trimitere_mesaje_admin.php este similar cu cel de trmitere al mesajelor celorlalte tipuri de utilizatori. Vizualizarea fișierului stergere_mesaje_admin.php în pagina web este:

Figura 4.39 Ștergere mesaje administrator

Același cod se utilizează și pentru ștergerea utilizatorului de tip student, cu mențiunea că se utilizează secvența “$lista = "SELECT id_student,nume_prenume FROM studenti";”. În pagina web se afișează lista tuturor studenților, iar ștergerea se face în funcție de id-l său unic de înregistrare.

Afișarea datelor în pagina web este următoarea:

Figura 4.40 Ștergere studenți și profesori din baza de date

În ceea ce privește accesul la fișierele publice, administratorul poate vizualiza și descărca fișiere de pe site. Acesta poate să adauge fișiere sau link-uri, la fel ca utilizatorii cu rank de profesor, iar acest cod se poate vizualiza în fișierul adaugare_fisiere_prog.php, adaugare_fisiere_bd, adaugare_fisiere_retele și adaugare_fisiere_licenta.php. Adminstratorul are dreptul de a șterge toate fișierele și link-urile din baza de date, nu doar cele încărcate de acesta.

Figura 4.41 Ștergere fișiere și link-uri din tabela retele_de_calculatoare

Codul PHP de ștergere este similar cu cel al utilizatorilor cu rank de profesor, cu deosebirea că se folosește următoarea secvență “$lista = "SELECT id_fisiere,nume_fisiere FROM retele_de_calculatoare";”, care afișează toate fișierele din tabela retele_de_caculatoare. În mod asemănător se procedează și la afișarea listelor celorlalte discipline din baza de date. După deconectarea de pe site a administratorului, datele rămân salvate.

CONCLUZII

Această aplicație este destinată studenților care din anunite motive nu au posibilitatea de a frecventa cursurile unei universități în mod tradițional. Cu mici modificări și câteva îmbunătățiri aduse, aplicația va putea fi folosită și în cadrul școlilor, liceelor, sau în cadrul altor universitați.

În momentul de față am realizat aplicația pentru studenții care aparțin unei anumite universități, fiind destinată în cea mai mare proporție studenților specializării Informatică. Aplicația a fost inițial concepută pentru Universitatea „1Decembrie 1918” din alba Iulia, dar se poate dezvolta, extinde și implementa și în cadrul altor universități din țară. O altă implementare ar fi includerea aplicației pe un forum sau blog, datorită asemănării cu structura acestora.

Elemente multimedia precum: posibilitatea de a discuta între utilizatori folosind chatul, includerea unor teste de evaluare, postarea și ștergerea fișierelor sau a imaginilor, editarea datelor reprezintă tehnici contemporane de instruire la distanță.

Ca și îmbunătățiri indicăm următoarele:

Afișarea unui meniu diferențiat în funcție de specializare, an de studiu;

Funcționalitate pe toate broswerele de Internet;

Accesarea platforemei de pe telefonul mobil;

Pentru interactivitate, adăugarea în cadrul platformei a jocurilor educative;

Crearea unui pagini de vizualizare a situației școlare, după modelul UMS;

Crearea unei pagini de vizualizare a orarelor studenților în funcție de specializare.

BIBLIOGRAFIE

[1] Iulian Joldes, Manuella Kadar, TEHNICI ȘI TEHNOLOGII MULTIMEDIA, 2009

[2] Au rel Vlaicu, Bogdan Orza și Laura Grindei, TEHNOLOGII MULTIMEDIA cu aplicații interactive în eLearning, Editura Albastră, Cluj-Napoca, 2007

[3] Szocs Andras, Retele de calculatoare, partea II M1.doc, 2009

[4] Iuliana Dobre 2012 http://www.academia.edu/3716902/Iuliana_Dobre (27 decembrie 2013)

[5] Olimpius Istrate http://www.elearning-forum.ro/resurse/a6-avantaje.html (27 decembrie 2013)

[6] Mihaela Brut http://www.roportal.ro/articole/tehnologiile-multimedia-in-e-learning-9.htm ( 27 decembrie 2013)

[7] http://www.promanagement.ro/courses/blended_learning/ (28 decembrie 2013)

[8] Blended learning A synthesis of research findings in Victorian education 2006-2011

http://www.education.vic.gov.au/Documents/about/research/blendedlearning.pdf (28 decembrie 2013)

[9] Debra Marsh Blended Learning Creating Learning Opportunities for Language Learners

http://www.cambridge.org/other_files/downloads/esl/booklets/Blended-Learning-Combined.pdf

(28 decembrie 2013)

[10] http://ro.wikipedia.org/wiki/MySQL (27 mai 2014)

[11] http://en.wikipedia.org/wiki/MySQL (27 mai 2014)

[12] *** Netcraft, 2001-2013, "PHP Usage Stats". (30 mai, 2014)

[13] http://www.w3schools.com/php/php_intro.asp (27 mai 2014)

[14] http://www.w3schools.com/php/php_functions.asp (30 mai, 2014)

[15] http://www.php.net/manual/en/functions.user-defined.php (30 mai, 2014)

[16] http://ro.wikipedia.org/wiki/Apache_%28server%29 (31 mai, 2014)

[17] http://httpd.apache.org/ (31 mai, 2014)

[18] http://inf.ucv.ro/~giurca/courses/CB3105/resources/Introducere%20in%20UML.pdf

(12 iunie, 2014)

[19] http://www.scribd.com/doc/35495989/Introducere-in-Uml (12 iunie, 2014)

[20] http://en.wikipedia.org/wiki/StarUML (12 iuie, 2014)

[21] http://www.usg.edu/galileo/skills/unit04/primer04_01.phtml (13 iunie, 2014)

[22] http://www.marplo.net/php-mysql/php-script-chat-simplu-s.php (17 iunie, 2014)

ANEXE

ANEXA 1

<?php

session_start();

require_once("dbconnect.php");

?>

<html xmlns="http://www.w3.org/1999/xhtml">

<style type="text/css" media="all">

@import url("style.css");

</style>

<head>

<title>Inregistrare</title>

</head>

<body>

<div id="wrapper">

<p><img src="Imagini/antet.png" alt="" width="1000" height="200" /></p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<p>&nbsp;</p>

<center><h1>Inregistrare</h1>

<form name="register_form" action="#" method="post">

<table width="30%" border="0" cellpadding="0" cellspacing="2">

<tr>

<td width="40%"><b>Nume si prenume:</b></td>

<td><input type="text" name="nume_prenume" id="nume_prenume" /></td>

</tr>

<tr>

<td width="40%"><b>Email:</b></td>

<td><input type="email" name="email" id="email" /></td>

</tr>

<tr>

<td width="40%"><b>Parola:</b></td>

<td><input type="password" name="parola" id="parola" /></td>

</tr>

<tr>

<td width="40%"><b>Rank</b></td>

<td><select name="rank">

<option value="student">Student</option>

<option value="profesor">Profesor</option>

</select></td>

</tr>

<tr width="40%">

<tr>&nbsp;</tr>

<tr>&nbsp;</tr>

<tr>&nbsp;</tr>

<td><input type="submit" name="register_btn" value="Inregistrare" /></td>

</tr>

</table></center>

<?php

if(isset($_POST['register_btn'])) {

$nume_prenume = strip_tags($_POST['nume_prenume']);

$email = strip_tags($_POST['email']);

$parola = md5($_POST['parola']);

$rank = strip_tags($_POST['rank']);

if($nume_prenume&&$email&&$parola&&$rank){

if (strlen($nume_prenume)<10){

echo "<br><b><center>Nume incomplet! Introduceti minim 10 caractere!</center></b>";

if (!preg_match("/^[a-zA-Z ]*$/",$nume_prenume))

echo "<br><b><center>Introduceti doar litere si spatii albe in campul Nume Prenume!</b></center>";

if (strlen($parola)<8)

echo "<br><b><center>Parola trebuie sa contina minim 8 caractere!</center></b>";

}

$query = "INSERT INTO `inregistrare` (`nume_prenume`,`email`,`parola`,`rank`) VALUES ('".$nume_prenume."','".$email."','".$parola."','".$rank."')";

$result = mysql_query($query) or die ( "Error : ". mysql_error() );

$log="SELECT `id_login` FROM `inregistrare` WHERE email='".$email."'";

$result = mysql_query($log) or die ( "Error : ". mysql_error() );

$row=mysql_fetch_array($result);

$id_login=$row['id_login'];

if($rank == 'student')

{$adauga_client = mysql_query("INSERT INTO studenti (id_login,nume_prenume,email) VALUES('$id_login','$nume_prenume','$email')");

if($adauga_client==1) echo "<br><b><center>Ati fost adaugat in <i><b> Baza de Date </b></i><b></center>";

else

echo "<br><b><center>Adaugare esuata. Incearca din nou.</center></b>";

echo mysql_error();

}

else

{$adauga_client1 = mysql_query("INSERT INTO profesori (id_login,nume_prenume,email) VALUES('$id_login','$nume_prenume','$email')");

if($adauga_client1==1)

echo "<br><b><center>Ati fost adaugat in <i><b> Baza de Date </b></i><b></center>";

else

echo "<br><b><center>Adaugare esuata. Incearca din nou.</center></b>";

echo mysql_error();

}

}

else {

echo "<br><b><center>Toate campurile sunt obligatorii.</b></center>";

}

}

mysql_close ($connect);

?>

<ul id="menu1">

<li><a href="index.php">Inapoi</a></li>

</ul

<p>&nbsp;</p>

<br><br><br><br><br>

</div>

</body>

</html>

ANEXA 2

<?php

error_reporting(E_ERROR);

session_start();

include("dbconnect.php");

if ($_POST['email'] != "" && $_POST['parola'] != '') {//verifica daca exista date transmise

$email = $_POST['email']; // preluarea datele din formular

if ($email=='[anonimizat]' && $_POST['parola']=='1234')

{ include ('admin/admin.php');}

else

{ $parola=md5($_POST['parola']);

// formeaza si executa query-ul de select din baza de date

$query = "SELECT * FROM `inregistrare` WHERE `email` = '".$email."' AND `parola` = '".$parola."'";

$result = mysql_query($query) or die ( "Error : ". mysql_error() );

// verifica daca interogarea MySQL a gasit date valide

if (mysql_num_rows($result) < 1) {

// in caz contrar, se afiseaza un mesaj de eroare

echo "Datele introduse sunt incorecte, mai incearca<br>";

} else {

//determinarea rank-ului

$sql="SELECT * From `inregistrare` Where email='".$email."'";

$result = mysql_query($sql) or die ( "Error : ". mysql_error() );

$row=mysql_fetch_array($result);

// salveaza id_login email parola si rank in sesiune

$_SESSION['id_login'] = $row['id_login'];

$_SESSION['email'] = $email;

$_SESSION['parola'] = $parola;

$_SESSION['rank'] = $row['rank'];

//pune in sesiune valoarea din campul rank la userul logat

include ('chat_public.php');

} } }

?>

ANEXA 3

<?php

include('dbconnect.php');

$id_student = $_GET['id_student']; // acum $id = 2;

$sql = "SELECT * FROM studenti WHERE id_student = '$id_student' limit 1";

$sql = mysql_query($sql);

while($profil = mysql_fetch_array($sql)){

echo "<tr><td rowspan=\"10\" ><img src='".$profil['imagine']."' style=\"width:300px; hight:400px; padding-left: 230px;\" /></td></tr>";

echo "</br>";

echo "</br>";

echo "<tr><td width= 280><b>Nume si prenume:</b> ",$profil['nume_prenume'];

echo "</br>";

echo "<tr><td><b>Specializare:</b> ",$profil['specializare'];

echo "</br>";

echo "<tr><td><b>Varsta:</b> ",$profil['varsta'];

echo "</br>";

echo "<tr><td><b>Localitate:</b> ",$profil['localitate'];

echo "</br>";

echo "<tr><td><b>Tara:</b> ",$profil['tara'];

echo "</br>";

echo "<tr><td><b>E-mail:</b> ",$profil['email'];

echo "</br>";

echo"<tr><td>&nbsp;</td></tr>";

echo "</br>";

echo"<tr><td>&nbsp;</td></tr>";

// putem extrage toate informatiile disponibile

}

?>

ANEXA 4

<?php

// Simple PHP Upload Script: http://coursesweb.net/php-mysql/

$uploadpath = 'upload/'; // numele directorului in care se salveaza imaginile

$max_size = 2000; // maximum file size, in KiloBytes

$alwidth = 3000; // maximum allowed width, in pixels

$alheight = 4600; // maximum allowed height, in pixels

$allowtype = array('bmp', 'gif', 'jpg', 'jpe', 'png'); // allowed extensions

if(isset($_FILES['fileupload']) && strlen($_FILES['fileupload']['name']) > 1) {

$sepext = explode('.', strtolower($_FILES['fileupload']['name']));

$type = end($sepext); // gets extension

$uploadpath = $uploadpath . $_SESSION['id_login'].".".$type; // sets the file name

list($width, $height) = getimagesize($_FILES['fileupload']['tmp_name']); // gets image width and height

$err = ''; // to store the errors

// Verifica daca imaginea are tipul permis de fisiere dimensiunea, latimea si inaltimea maxima admisa

if(!in_array($type, $allowtype)) $err .= '<center>Fisierul: <b>'. $_FILES['fileupload']['name']. '<b> nu are tipul de extensie permis.<br><br>Va rugam sa alegeti un alt format.';

if($_FILES['fileupload']['size'] > $max_size*1000) $err .= '<center><br/>Dimensiunea fisierului nu trebuie sa depaseasca: '. $max_size. ' KB.';

if(isset($width) && isset($height) && ($width >= $alwidth || $height >= $alheight)) $err .= '<center><br/>Maximul inaltimii x latimii trebuie sa fie de: '. $alwidth. ' x '. $alheight;

// If no errors, upload the image, else, output the errors

if($err == '') {

if(move_uploaded_file($_FILES['fileupload']['tmp_name'], $uploadpath)) {

if ($_SESSION['rank']=='student')

{

$sql="UPDATE studenti SET imagine='$uploadpath' WHERE id_login=".$_SESSION['id_login'];

$result=mysql_query($sql);

echo '<b><center>Imaginea a fost incarcata cu succes! </center></b>';

}

else

{

$sql="UPDATE profesori SET imagine='$uploadpath' WHERE id_login=".$_SESSION['id_login'];

$result=mysql_query($sql);

echo '<b><center>Imaginea a fost incarcata cu succes! </center></b>';

}

}else echo '<b><center>A avut loc o eroare in timpul incarcarii fisierului pe site.<br>Va rugam reincercati.</center></b>';

}

else echo $err; }

?>

ANEXA 5

<?php

if(isset($_POST['Editare'])) {

$nume_prenume2=$_POST['nume_prenume'];

$specializare2 = $_POST['specializare'];

$localitate2 = $_POST['localitate'];

$tara2 = $_POST['tara'];

$data_nastere2 =$_POST['data_nastere'];

$varsta2 = $_POST['varsta'];

$sex2 =$_POST['sex'];

$limbi_cunoscute2 = $_POST['limbi_cunoscute'];

$email2 = $_POST['email'];

$telefon2 = $_POST['telefon'];

$master2 =$_POST['master'];

$universitate2 =$_POST['universitate'];

$liceu2 =$_POST['liceu'];

$loc_de_munca2 = $_POST['loc_de_munca'];

$editare = mysql_query("UPDATE studenti SET nume_prenume='$nume_prenume2', specializare='$specializare2', localitate='$localitate2', tara='$tara2', data_nastere='$data_nastere2', varsta='$varsta2', sex='$sex2', limbi_cunoscute='$limbi_cunoscute2', email='$email2' , telefon='$telefon2', master='$master2', universitate='$universitate2', liceu='$liceu2', loc_de_munca='$loc_de_munca2' WHERE id_student='$id_student2'");

$result1=mysql_query($editare);

if (!$result)

{ echo mysql_error();}

else { echo "<center><b>Modificarea a fost efectuata cu success!</b></center>";

echo "<meta http-equiv=\"refresh\" content=\"2;URL=editare_detalii.php\">"; }

}

?>

ANEXA 6

<?php

if(isset($_POST['Trimite'])) {

$email_expeditor = $_SESSION['email'];

$email_destinatar = strip_tags($_POST['email_destinatar']);

$mesaj = strip_tags($_POST['mesaj']);

if($email_expeditor&&$email_destinatar&&$mesaj){

if (strlen($mesaj)<1)

{ echo "Mesajul este prea scurt!";}

else{

$trimite_mesaj = mysql_query("INSERT INTO mesaje (id_login, email_expeditor, email_destinatar,mesaj) VALUES('$id_login','$email_expeditor', '$email_destinatar','$mesaj')");

if($trimite_mesaj==1){

echo "<br><center><b>Mesajul a fost trimis cu succes</center></b>";

echo "<meta http-equiv=\"refresh\" content=\"1;URL=mesaje.php\">";}

else

echo "<br><center><b>Trimitere esuata. Incearca din nou.</b></center>";

echo mysql_error();}

}

else{ echo "Toate campurile sunt obligatorii.";}

}

mysql_close($connect);

?>

ANEXA 7

<?php

$lista = "SELECT * FROM `mesaje` WHERE `email_destinatar` ='"$_SESSION['email']."'";

$result = mysql_query($lista) or die (mysql_error());

$num_rows = mysql_num_rows($result);

if ($num_rows >0 ) {

while($row = mysql_fetch_array($result)){

echo "<table cellpadding='4' cellspacing='2' style=\'border-collpase:collapse' float:left\;>";

echo "<tr>";

echo "<hr size='1' width='900' align='left'>";

$id_mesaj[]= $row['id_mesaj'];

echo "<br>";

echo "<tr><td><b>Email expeditor:</b></td><td width=100>".$row['email_expeditor']." </td></tr>

<tr><td><b>Mesaj:</b></td><td width=100>".$row['mesaj']."</td></tr>";

echo '<td width=200><a href="stergere_mesaje.php?id_mesaj='.$row['id_mesaj'].'">

<b>Stergere mesaj</b></a></td></tr>';

}

}

else { echo "Nu aveti mesaje noi!";}

?>

ANEXA 8

<br><br><br><br><br>

<div id="left2">

<div id="verticalmenu"><br><br>

<ul> <li><a href="lista_fisiere_prog.php">Lista fisiere PROGRAMARE</a>

<?php if ($_SESSION['rank'] == 'profesor')

{ ?>

<ul><li><a href="adaugare_fisiere_prog.php">Adaugare fisiere</a></li>

<li><a href="stergere_fisiere_prog.php">Stergere fisiere</a></li> </ul>

<?php } ?>

</li><br><br><br><br><br><br><br><br>

<li><a href="lista_fisiere_bd.php">Lista fisiere BAZE DE DATE</a>

<?php if ($_SESSION['rank'] == 'profesor')

{ ?>

<ul><li><a href="adaugare_fisiere_bd.php">Adaugare fisiere</a></li>

<li><a href="stergere_fisiere_bd.php">Stergere fisiere</a></li> </ul>

<?php } ?>

</li> <br><br><br><br><br><br><br><br>

<li><a href="lista_fisiere_retele.php">Lista fisiere RETELE DE CALCULATOARE</a>

<?php if ($_SESSION['rank'] == 'profesor')

{ ?>

<ul><li><a href="adaugare_fisiere_retele.php">Adaugare fisiere</a></li>

<li><a href="stergere_fisiere_retele.php">Stergere fisiere</a></li> </ul>

<?php } ?>

</li>

</li><br><br><br><br><br><br><br><br>

<li><a href="lista_fisiere_licenta.php">Lista fisiere LICENTA</a>

<?php if ($_SESSION['rank'] == 'profesor')

{ ?>

<ul><li><a href="adaugare_fisiere_licenta.php">Adaugare fisiere</a></li>

<li><a href="stergere_fisiere_licenta.php">Stergere fisiere</a></li> </ul>

<?php } ?>

</li>

</li>

</ul>

</div><br><br>

</div><br><br><br><br>

<div id="right2">

<div id="right2">

<?php if ($_SESSION['rank'] == 'student')

{ ?>

<ul><li><a href="test_prog.php">Test programare</a></li> <br>

<li><a href="test_bd.php">Test baze de date</a></li> <br>

<li><a href="test_retele.php">Test retele de calculatoare</a></li></ul>

<?php } ?>

</div>

ANEXA 9

<?php

if(isset($_GET['id_fisier'])) { /

$id_fisier = intval($_GET['id_fisier']);

if($id_fisier <= 0) {

die('ID-ul este invalid!');

}

else { $dbLink = new mysqli('127.0.0.1', 'root', '', 'db');// conectare la baza de date

if(mysqli_connect_error())

{ die("MySQL connection failed: ". mysqli_connect_error());}

$query = "SELECT `tip_fisier`, `nume_fisier`, `marime_fisier`, `blob_fisier`

FROM `retele_de_calculatoare`WHERE `id_fisier` = {$id_fisier}";

$result = $dbLink->query($query);

if($result) {

if($result->num_rows == 1) {

$row = mysqli_fetch_assoc($result);

header("Content-Type: ". $row['tip_fisier']);

header("Content-Length: ". $row['marime_fisier']);

header("Content-Disposition: attachment; filename=". $row['nume_fisier']);

echo $row['blob_fisier'];

}

else {echo 'Eroare! Nu exista nici o imagine cu acest ID.';}

@mysqli_free_result($result);

}

else {echo "Eroare! <pre>{$dbLink->error}</pre>";}

@mysqli_close($dbLink);

}

}

else { echo 'Error! No ID was passed.';}

?>

ANEXA 10

<h4>Test de evaluare la materia BAZE DE DATE</h4>

<script type="text/javascript">

function validateRadio( obj,correct ){

var result = 0;

for(var i=0; i<obj.length; i++){

if(obj[i].checked==true && obj[i].value==correct){

{ result = 1; }

} if(!result && obj.value == correct){

{ result = 1;} return result

} function validateSubmit( obj ){

var err = '';

if( !validateRadio( obj.a,2 ) ) err+='\n1. Entitatea CAINE este definita cu ajutorul atributelor: id, nume, rasa, culoare\nCare dintre afirmatiile urmatoare este adevarata?\n\nRaspuns incorect!\nRaspuns corect:b) atributul id este Identificator unic\n\n'; else alert('\n1. Entitatea CAINE este definita cu ajutorul atributelor: id, nume, rasa, culoare\nCare dintre afirmatiile urmatoare este adevarata?\n\nb) atributul id este Identificator unic \nRaspuns corect!\n\n');

if( !validateRadio( obj.b,2 ) ) err+='\n2. Care dintre urmatoarele comenzi SQL permite modificarea preturilor din tabela PRODUSE?\n\nRaspuns incorect!\nRaspuns corect: b) UPDATE\n\n'; else alert('\n2. Care dintre urmatoarele comenzi SQL permite modificarea preturilor din tabela PRODUSE?\n\nb) UPDATE Raspuns corect!\n\n');

if( !validateRadio( obj.c,2 ) ) err+='\n3. Entitatea FILM are atributele: nume, data_lansarii, regizor_principal, durata.\nCe combinatie de atribute este mai potrivita pentru a formata identificatorul unic?\n\nRaspuns incorect!\nRaspuns corect:b) data_lansarii+durata\n\n'; else alert('\n3. Entitatea FILM are atributele: nume, data_lansarii, regizor_principal, durata.\nCe combinatie de atribute este mai potrivita pentru a formata identificatorul unic?\n\nb) data_lansarii+durata\n Raspuns corect!\n\n');

if( !validateRadio( obj.d,3 ) ) err+='\n4. Se da tabelul: CHITANTE(NrChitanta, Suma, DataChitanta, NrGhiseu )\nCare dintre urmatoarele interogari SQL are ca efect afisarea zilelor in care s-au emis mai mult de 2 chitante?\n\nRaspuns incorect!\nRaspuns corect: c) SELECT CHITANTE.Data FROM CHITANTE GROUP BY Data HAVING COUNT(NrChitanta)>2;\n\n';else alert('\n4. Se da tabelul: CHITANTE(NrChitanta, Suma, DataChitanta, NrGhiseu )\nCare dintre urmatoarele interogari SQL are ca efect afisarea zilelor in care s-au emis mai mult de 2 chitante?\n\nc) SELECT CHITANTE.Data FROM CHITANTE GROUP BY Data HAVING COUNT(NrChitanta)>2\nRaspuns corect!\n\n');

if( !validateRadio( obj.e,2 ) ) err+='\n5. Se da tabelul: CHITANTE(NrChitanta, Suma, DataChitanta, NrGhiseu )\nCare dintre urmatoarele interogari SQL permite stergerea numarului de telefon pentru clientii din provincie\n\nRaspuns incorect!\nRaspuns corect: b)UPDATE CLIENTI SET Telefon=NULL WHERE Oras<>”Bucuresti”\n\n'; else alert('\n5. Se da tabelul: CHITANTE(NrChitanta, Suma, DataChitanta, NrGhiseu )\nCare dintre urmatoarele interogari SQL permite stergerea numarului de telefon pentru clientii din provincie\n\nb)UPDATE CLIENTI SET Telefon=NULL WHERE Oras<>”Bucuresti”\nRaspuns corect!\n\n');

if( !validateRadio( obj.f,4 ) ) err+='\n6. Pentru o baza de date ce memoreaza productile cinematografice, retatia dintre entitatile ACTOR si FILM:\n\nRaspuns incorect!\nRaspuns corect: d) este o relatie mai multi la mai multi (many to many)\n\n'; else alert('\n6. Pentru o baza de date ce memoreaza productile cinematografice, retatia dintre entitatile ACTOR si FILM:\n\n d) este o relatie mai multi la mai multi (many to many)\nRaspuns corect!\n\n');

if( !validateRadio( obj.g,3 ) ) err+='\n7. Pentru a crea cereri imbricate in limbajul SQL foloseste:\n\nRaspuns incorect!\nRaspuns corect: c) clauza WHERE a comenzii SELECT\n\n'; else alert('\n7. Pentru a crea cereri imbricate in limbagul SQL foloseste:\n\nc) clauza WHERE a comenzii SELECT\nRaspuns corect!');

if( !validateRadio( obj.h,1 ) ) err+='\n8. Ce comanda este folosita pentru a extrage informatii din baza de date?\n\nRaspuns incorect!\nRaspuns corect: a) SELECT\n\n'; else alert('\n8. Ce comanda este folosita pentru a extrage informatii din baza de date?\n\na) SELECT Raspuns corect!');

if( !validateRadio( obj.i,2 ) ) err+='\n9. Care este comanda folosita pentru a selecta coloana "prenume" din tabelul "clienti"?\n\nRaspuns incorect!\nRaspuns corect: b) SELECT prenume FROM clienti\n\n'; else alert('\n9. Care este comanda folosita pentru a selecta coloana "prenume" din tabelul "clienti"?\n\nb) SELECT prenume FROM clienti\nRaspuns corect!\n\n');

if( !validateRadio( obj.j,4 ) ) err+='\n10. Care este comanda SQL folosita pentru a returna doar valori distincte?\n\nRaspuns incorect\nRaspuns corect: d) SELECT DISTINCT\n\n'; else alert('\n10. Care este comanda SQL folosita pentru a returna doar valori distincte?\n\nd) SELECT DISTINCT\nRaspuns corect!\n\n');

if( err.length ) alert(''+err); return false; }

</script> <form onsubmit="return validateSubmit(this);" action="#">

1. Entitatea CAINE este definita cu ajutorul atributelor: id, nume, rasa, culoare <br>

Care dintre afirmatiile urmatoare este adevarata?<br><br>

<input name="a" value="1" type="radio"> a) atributul nume este identicator unic

<input name="a" value="2" type="radio"> b) atributul id este Identificator unic

<input name="a" value="3" type="radio"> c) atributul id este optional

<input name="a" value="4" type="radio"> d) artibutele rasa, culoare sunt obligatorii<br><br>

2. Care dintre urmatoarele comenzi SQL permite modificarea preturilor din tabela PRODUSE?<br><br>

<input name="b" value="1" type="radio"> a) ALTER

<input name="b" value="2" type="radio"> b) UPDATE

<input name="b" value="3" type="radio"> c) INSERT

<input name="b" value="4" type="radio"> d) MODIFY <br><br>

3. Entitatea FILM are atributele: nume, data_lansarii, regizor_principal, durata.<br>

Ce combinatie de atribute este mai potrivita pentru a formata identificatorul unic?<br><br>

<input name="c" value="1" type="radio"> a) nume+regizor_principal

<input name="c" value="2" type="radio"> b) data_lansarii+durata

<input name="c" value="3" type="radio"> c) nume+data_lansarii

<input name="c" value="4" type="radio"> d) nume+durata <br><br>

4. Se da tabelul: CHITANTE(NrChitanta, Suma, DataChitanta, NrGhiseu )<br>

Care dintre urmatoarele interogari SQL are caefect afisarea zilelor incare s-au emis mai mult de 2 chitante?<br><br>

<input name="d" value="1" type="radio"> a) SELECT Nrchitanta, Suma, Data

FROM CHITANTE WHERE COUNT(NrChitanta)>2<br>

<input name="d" value="2" type="radio"> b) SELECT Nrchitanta, Suma, Data

FROM CHITANTE HAVING COUNT(NrChitanta)>2<br>

<input name="d" value="3" type="radio"> c) SELECT CHITANTE.Data

FROM CHITANTE GROUP BY Data HAVING COUNT(NrChitanta)>2<br>

<input name="d" value="4" type="radio"> d) SELECT COUNT(Data), COUNT(NrChitanta) FROM CHITANTE WHERE Data IS Unique <br><br>

5. Se dau tabelul: CLIENTI(CodCL, Nume, Oras, Adresa, Telefon, ContBancar)<br>

Care dintre urmatoarele interogari SQL permite stergerea numarului de telefon pentru clientii din provincie<br><br>

<input name="e" value="1" type="radio"> a) DELETE CLIENTI.Telefon

FROM CLIENTI WHERE Localitate=”Provincia”<br>

<input name="e" value="2" type="radio"> b) UPDATE CLIENTI

Telefon=NULL WHERE Oras<>”Bucuresti”<br>

<input name="e" value="3" type="radio"> c) UPDATE CLIENTI.Telefon

SET Telefon=NULL WHERE Oras=”Provincie”<br>

<input name="e" value="4" type="radio"> d) UPDATE CLIENTI

SET Telefon=NULL HAVING Oras<>”Bucuresti” <br><br>

6. Pentru o baza de date ce memoreaza productile cinematografice, retatia dintre entitatile ACTOR si FILM:<br><br>

<input name="f" value="1" type="radio"> a) este o relatie de unu la unu (one to one)

<input name="f" value="2" type="radio"> b) nu exista

<input name="f" value="3" type="radio"> c) este o relatie unul la mai multi (one to many)<br>

<input name="f" value="4" type="radio"> d) este o relatie mai multi la mai multi (many to many) <br><br>

7. Pentru a crea cereri imbricate in limbagul SQL foloseste:<br><br>

<input name="g" value="1" type="radio"> a) clauza DISTINCT a comenzii SELECT

<input name="g" value="2" type="radio"> b) nu se pot crea cereri imbricate<br>

<input name="g" value="3" type="radio"> c) clauza WHERE a comenzii SELECT

<input name="g" value="4" type="radio"> d) clauza GROUP BY a comenzii SELECT <br><br>

8. Ce comanda este folosita pentru a extrage informatii din baza de date?<br><br>

<input name="h" value="1" type="radio"> a) SELECT

<input name="h" value="2" type="radio"> b) OPEN

<input name="h" value="3" type="radio"> c) EXTRACT

<input name="h" value="4" type="radio"> d) GET <br><br>

9. Care este comanda folosita pentru a selecta coloana "prenume" din tabelul "clienti"?<br><br>

<input name="i" value="1" type="radio"> a) GET prenume FROM clienti

<input name="i" value="2" type="radio"> b) SELECT prenume FROM clienti <br>

<input name="i" value="3" type="radio"> c) EXTRACT prenume From clienti

<input name="i" value="4" type="radio"> d) SELECT prenume.clienti<br><br>

10. Care este comanda SQL folosita pentru a returna doar valori distincte?<br><br>

<input name="j" value="1" type="radio"> a) SELECT DIFFERENT

<input name="j" value="2" type="radio"> b) SELECT UNIQUE

<input name="j" value="3" type="radio"> c) SELECT NOT EQUAL

<input name="j" value="4" type="radio"> d) SELECT DISTINCT<br><br>

</p><p><input value="Verificare" type="submit"> </p></form>

ANEXA 11

<?php

$lista = "SELECT * FROM `retele_de_calculatoare` WHERE id_login=". $_SESSION ['id_login'];

$result = mysql_query($lista) or die (mysql_error());

$num_rows = mysql_num_rows($result);

if ($num_rows >0 ) {

while ($row = mysql_fetch_array($result)){

echo "<table cellpadding='4' cellspacing='1' style='border-collpase:collapse' float:left;>";

$i=1;

echo "<tr>";

$id_fisier[]= $row['id_fisier'];

echo "<td width=300>".$row['nume_fisier']."</td>";

echo '<td width=200><a href="stergere_fisiere_retele2.php?id_fisier='.$row['id_fisier'].'" <b>Stergere</b></a></td></tr>';}

}

else {echo "Nu aveti fisiere inserate";}

?>

ANEXA 12

<?php

if(isset($_POST['Cautare_stud'])) {

$nume_prenume = $_POST['nume_prenume'];

$query = "SELECT * FROM studenti WHERE nume_prenume LIKE '%$nume_prenume%'";

$result = mysql_query($query) or die (mysql_error('ok'));

$rezultate = mysql_num_rows($result);

if (!$nume_prenume)

echo "<br> Nu ati introdus nici un cuvant cheie <hr size='1' width='300' align='center'>";

else{

echo "<br>Rezultate:&nbsp;".$rezultate."<br><hr size='1' width='300' align='center'>";

while ($row = mysql_fetch_array($result)) {

echo "<table border='0'>";

echo "<tr><td><b>Nume student</b>:</td><td>".$row["nume_prenume"]."</td></tr>";

echo "<tr><td><b>Specializare</b>:</td><td>".$row["specializare"]."</td></tr>";

echo "<td><h4><a href='profil2.php?rank=student&id_student={$row['id_student']}'>Profil </a></h4></td>";

echo "</table><hr size='1' width='300' align='center'>";

} } }

?>

ANEXA 13

//cautarea unui fisier in tabela programare

<?php

if(isset($_POST['Cautare_fisier'])) {

nume_fisier = $_POST['nume_fisier'];

$query = "SELECT * FROM programare WHERE nume_fisier LIKE '%$nume_fisier%'";

$result = mysql_query($query) or die (mysql_error('ok'));

$rezultate = mysql_num_rows($result);

if (!$nume_fisier)

echo "<br><center> Nu ati introdus nici un cuvant cheie <hr size='1' width='300' align='center'>";

else{

echo "<br><center>Rezultate lista fisiere programare:&nbsp;".$rezultate."<br><hr size='1' width='300' align='center'>";

while ($row = mysql_fetch_array($result)) {

echo "<table border='0'>";

echo "<tr><td><b>Nume fisier</b>:</td><td>".$row["nume_fisier"]."</td></tr>";

echo "<tr><td><b>Data creare fisier</b>:</td><td>".$row["data_fisier"]."</td></tr>";

echo "<td><h4><a href='get_fisiere_prog.php?id_fisier={$row['id_fisier']}'> Descarca</a></h4></td>";

echo "</table><hr size='1' width='300' align='center'>"; }

} }

?>

ANEXA 14

<?php

if(isset($_POST['Trimite'])) {

$email_expeditor = strip_tags($_POST['email_expeditor']);

$email_destinatar = strip_tags($_POST['email_destinatar']);

$mesaj = strip_tags($_POST['mesaj']);

if($email_expeditor&&$email_destinatar&&$mesaj){

if (strlen($mesaj)<1)

{ echo "Mesajul este prea scurt!";}

else{

$trimite_mesaj = mysql_query("INSERT INTO mesaje(email_expeditor, email_destinatar,mesaj) VALUES('$email_expeditor','$email_destinatar','$mesaj')");

if($trimite_mesaj==1){

echo "<br><br>Mesajul a fost trimis cu succes";

echo "<meta http-equiv=\"refresh\" content=\"1;URL=trimitere_mesaje_admin.php\">"; }

else echo "<br><br>Trimitere esuata. Incearca din nou.";

echo mysql_error(); } }

else{ echo "<br><br><center>Toate campurile sunt obligatorii.";} }

mysql_close($connect);

?>

ANEXA 15

<?php

if(isset($_GET['id_mesaj'])){

$id_mesaj=$_GET['id_mesaj'];

$stergere = mysql_query("DELETE FROM `contact` WHERE `id_mesaj` ='". $_GET['id_mesaj']."'");

echo "Mesajul a fost sters !";

echo "<meta http-equiv=\"refresh\" content=\"1;URL=mesaje_admin.php\">";}

else{ echo "Aceast mesaj nu exista !";}

?>

ANEXA 16

<?php

if(isset($_POST['Trimite'])) {

$email_expeditor = strip_tags($_POST['email_expeditor']);

$email_destinatar = strip_tags($_POST['email_destinatar']);

$mesaj = strip_tags($_POST['mesaj']);

if($email_expeditor&&$email_destinatar&&$mesaj){

if (strlen($mesaj)<1){

echo "Mesajul este prea scurt!";}

else{

$trimite_mesaj = mysql_query("INSERT INTO mesaje(email_expeditor, email_destinatar, mesaj) VALUES('$email_expeditor','$email_destinatar','$mesaj')");

if($trimite_mesaj==1){

echo "<br><br>Mesajul a fost trimis cu succes";

echo "<meta http-equiv=\"refresh\" content=\"1;URL=trimitere_mesaje_admin.php\">";}

else

echo "<br><br>Trimitere esuata. Incearca din nou.";

echo mysql_error();

} }

else{echo "<br><br><center>Toate campurile sunt obligatorii.";}

}

mysql_close($connect);

?>

Similar Posts