FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN SLA VICI”TIMIȘOARAUNIVERSITATEA “IOAN SLA VICI” TIMIȘOARA FACULTATEA DE INGINERIE DOMENIUL CALCULATOARE… [626444]
FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN SLA VICI”TIMIȘOARAUNIVERSITATEA “IOAN SLA VICI” TIMIȘOARA FACULTATEA DE INGINERIE DOMENIUL CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEIFORMA DE ÎNVĂȚĂMÂNT – ZIPROIECT DE DIPLOMĂ
COORDONATOR ȘTIINȚIFIC prof. univ. dr. Titus Slavici ABSOLVENT: [anonimizat]2019
FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN SLA VICI”TIMIȘOARAUNIVERSITATEA “IOAN SLA VICI” TIMIȘOARA FACULTATEA DE INGINERIE DOMENIUL CALCULATOARE ȘI TEHNOLOGIA INFORMAȚIEIFORMA DE ÎNVĂȚĂMÂNT – ZIArhitecturi specifice sistemelor Blogși Web. Comparații
COORDONATOR ȘTIINȚIFIC prof. univ. dr . Titus Slavici ABSOLVENT: [anonimizat]2019
CuprinsIntroducere …………………………………………………………………………….……….. 1Capitolul 1. HTML …………………………………………………………………….………. 21.1 Introducere ……………………………………………………………….………… 21.2 Notiuni de baza …………………………………………………………….………. 3Capitolul 2. CSS …………………………………………………………………….……….….. 42.1 Introducere ………………………………………………………………….………. 42.2 Anatomia unui set de reguli CSS ……………………………………….……………52.5 Despre CSS3 ………………………………………………………………….……..6Capitolul 3. PHP …………………………………………………………………………………63.1 Introducere …………………………………………………….…………………….63.2 Istoric …………………………………………………….………………………….73.3 Popularitate …………………………………………………….……………….……83.4 Utilizare …………………………………………………….………………….…….93.5 Tipuri de date interne …………………………………………………….…….…….93.6 Funcții …………………………………………………….…………………….……103.7 Obiecte …………………………………………………….…………………………10Capitolul 4. SQL …………………………………………………………………………….……114.1 Introducere ……………………………………………………………………….…..114.2 Istoric ……..………………………………………………………………………….124.3 Tipuri de date in SQL …………………………………………………………….…..124.4 Manipularea datelor ……………………………………………………………….…124.5 Tranzacții ………………………………………………………………………….….144.7 Limbajul de definire a datelor ………………………………………………………..14Capitolul 5. Arhitecturi specifice mediului Blog ……………………………….……………….155.1 Structura blogului …………….………………………………………………………155.2 Organizarea fisierelor …………………………………………………………………165.3 Functii folosite pentru crearea blogului ………….……………………………….…..175.4 Functionalitati ………………….…………………………………………….……….255.5 Despre baza de date …………………………………………………………………..275.6 Prezentarea fisierelor si a codului sursa ………………………………………………28Capitolul 6. Proiectul România Ungaria. Arhitecturi specifice mediului Web ………………….355.1 Introducere …………….………..………………………………………….…………355.2 Structura site-ului …………………………………………………………….….……355.3 Specificații tehnice …………………………..……………………………….….……365.4 Comparatii între blog si proiectul România-Ungaria …………………………………36Concluzii ………………………………………………………………………………………….37Bibliografie ……………………………………………………………………………………….38
UNIVERSITATEA DIN ORADEAFACULTATEA de Inginerie Electrică și Tehnologia InformațieiDEPARTAMENTUL Calculatoare și tehnologia informațieiTEMA _________________Proiectul de Finalizare a studiilor a student: [anonimizat]________________________1). Tema proiectului de finalizare a studiilor:_______________________________________________________________________________________________________________________________________________________________________________________________________2). Termenul pentru predarea proiectului de diplomă__________________________________3). Elemente inițiale pentru elaborarea proiectului de finalizare a studiilor ________________________________________________________________________________________________________________________________________________________________________________4). Conținutul proiectului de finalizare a studiilor :____________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________________5). Material grafic:________________________________________________________________________________________________________________________________________________________________________________________________________________________________6). Locul de documentare pentru elaborarea proiectului de diplomă:________________________________________________________________________________________________________________________________________________________________7). Data emiterii temei_____________________________________________________________ Coordonatori științifici(titlul științific și numele),
UNIVERSITATEA DIN ORADEAFACULTATEA DE INGINERIE ELECTRICĂ ȘI TEHNOLOGIA INFORMAȚIEIAdresa Oradea, Cod 410087, Bihor, Romania, Strada Universității, nr. 1,Tel/Fax:+40 259/408412, Tel:+40 259/408104; +40 259/408204
REFERATPRIVIND PROIECTUL DE DIPLOMĂAABSOLVENTULUI / ABSOLVENTEI : ……………………………………….DOMENIUL Calculatoare și tehnologia informației SPECIALIZAREA Tehnologia informațieiPROMOȚIA 20191.Titlul proiectului ……………………………………………………………………….…………………………………………………………………………………………………2.Structura proiectului …………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………..…………………………………………………………………………………………………………………………………………………………………………………………………………………3.Aprecieri asupra conținutului proiectului de DIPLOMĂ (finalizare a studiilor),mod de abordare, complexitate, actualitate, deficiențe………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
4.Aprecieri asupra proiectului (se va menționa: numărul titlurilor bibliograficeconsultate, frecvența notelor de subsol, calitatea și diversitatea surselor consultate;modul în care absolventul a prelucrat informațiile din surse teoretice)…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………(se va menționa: opțional locul de documentare și modul în care absolventul a realizatcercetarea menționându-se contribuția autorului)……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………5.Concluzii (coordonatorul proiectului trebuie să aprecieze valoarea proiectuluiîntocmit, relevanța studiului întreprins, competențele absolventului, rigurozitateape parcursul elaborării proiectului, consecvența și seriozitatea de care a dat dovadăabsolventul pe parcurs)……………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………6.Redactarea proiectului r e s p e c t ă ………………………………………………….cerințeleacademice de redactare (părți, capitole, subcapitole, note de subsol și bibliografie).7.Consider că proiectul îndeplinește/ nu îndeplinește condițiile pentru susținere însesiunea de Examen de LICENȚĂ (finalizare a studiilor) din IULIE 2019 și propunacordarea notei ………………Oradea,DataCoordonator științific
IntroducereLucrarea de față își propune să prezinte principalele aspecte teoretice și practice legate de domeniul web development-ului.Această lucrare de licență are la bază o aplicație web creată de la zero, mai exact un blog. Acesta a fost creat folosind următoarele tehnologii: HTML, CSS, PHP, SQL.Am ales web development-ul pentru lucrarea de licență deoarece sunt pasionat de tehnologiile web si mi s-a părut un domeniu foarte interesant pentru o lucrare de licență.De asemenea, în această lucrare voi prezenta si un website creat în WordPress pentru Universitatea Ioan Slavici, fiind vorba de un proiect România-Ungaria, având ca scop crearea mai multor joburi, instruirea oamenilor în diverse domenii, promovarea conceptului de “companii prietenoase cu mediul înconjurător” si dezvoltarea abilităților de protejare si menținere a mediului înconjurător.Proiectul se adresează angajatorilor, managerilor, antreprenorilor si potențialilor antreprenori, tinerilor în căutare de joburi, elevilor si studenților, dar si oamenilor care trăiesc în mediul rural.V oi detalia ambele proiecte si voi face la final o comparație între cele două, pentru a vedea diferențele si similaritățile.În acest sens, primele patru capitole prezintă noțiuni de bază legate de limbajele de programare folosite pentru crearea aplicației, iar capitolul numărul cinci povesteste cu lux de amănunte procesulde creație si funcționalitățile blogului. Sunt prezentate structura aplicației, organizarea fisierelor, funcțiile folosite în crearea blogului, funcționalitățile disponibile si se vorbeste despre baza de date. În ultimul subcapitol, se prezintă în detaliu fiecare fisier si codul acestuia sursă, fiind explicat pas cupas ce anume realizează acel fisier împreună cu codul lui sursă.În ultimul capitol vorbim despre proiectul România-Ungaria. Este vorba despre un website făcut în WordPress. V orbim despre proiectul în sine, despre structura website-ului dar si despre specificațiiletehnice ale acestuia, iar în încheiere facem o comparație între cele două site-uri create.
1. HTML1.1 IntroducereHyperText Markup Language (HTML) este un limbaj de marcare utilizat pentru crearea paginilor web ce pot fi afișate într-un browser (sau navigator). Scopul HTML este mai degrabă prezentarea informațiilor – paragrafe, fonturi, tabele ș.a.m.d. – decât descrierea semanticii documentului.Specificațiile HTML sunt dictate de World Wide Web Consortium (W3C).HTML este o formă de marcare orientată către prezentarea documentelor text pe o singura pagină, utilizând un software de redare specializat, numit agent utilizator HTML, cel mai bun exemplu de astfel de software fiind browserul web. HTML furnizează mijloacele prin care conținutul unui document poate fi adnotat cu diverse tipuri de metadate și indicații de redare. Indicațiile de redare pot varia de la decorațiuni minore ale textului, cum ar fi specificarea faptului că un anumit cuvânt trebuie subliniat sau că o imagine trebuie introdusă, până la scripturi sofisticate, hărți de imagini și formulare. Metadatele pot include informații despre titlul și autorul documentului, informații structurale despre cum este împărțit documentul în diferite segmente, paragrafe, liste, titluri etc.HTML este un format text proiectat pentru a putea fi citit și editat de oameni utilizând un editor de text simplu. Totuși scrierea și modificarea paginilor în acest fel solicită cunoștințe solide de HTML și este consumatoare de timp. Editoarele grafice (de tip WYSIWYG) cum ar fi Macromedia Dreamweaver, Adobe GoLive sau Microsoft FrontPage permit ca paginile web sa fie tratate asemănător cu documetele Word, dar cu observația că aceste programe generează un cod HTML care este de multe ori de proastă calitate.HTML se poate genera direct utilizând tehnologii de codare din partea serverului cum ar fi PHP, JSP sau ASP. Multe aplicații ca sistemele de gestionare a conținutului, wiki-uri și forumuri web generează pagini HTML.HTML este de asemenea utilizat în e-mail. Majoritatea aplicațiilor de e-mail folosesc un editor HTML încorporat pentru compunerea e-mail-urilor și un motor de prezentare a e-mail-urilor de acest tip. Folosirea e-mail-urilor HTML este un subiect controversat și multe liste de mail le blochează intenționat.HTML5 este a cincea revizuire a standardului HTML (creat în 1990 și standardizat ca HTML4 din 1997) și din octombrie 2011 este în curs de dezvoltare. Obiectivele sale principale au fost acelea de a îmbunătăți limbajul cu un suport pentru cele mai recente apariții multimedia în același timp menținându-l ușor de citit de oameni și bine înțeles de computere și device-uri (browsere web, parsere, etc.).Urmărind predecesorii săi imediați HTML 4.01 și XHTML 1.1, HTML5 este un răspuns la observația că HTML și XHTML utilizate în comun pe World Wide Web sunt un amestec de caracteristici introduse de specificații diferite, împreuna cu acestea mai sunt și caracteristicile diferite aduse de software, de browsere, și multe erori de sintaxă în documentele web existente. [5] https://ro.wikipedia.org/wiki/HyperText_Markup_Language[6] https://ro.wikipedia.org/wiki/HTML51
Acesta include modele detaliate de prelucrare pentru a încuraja mai multe implementări interoperabile; extinde, îmbunătățește și raționalizează disponibilitățile pentru documentele web și introduce marcarea și aplicații API (application programming interfaces) pentru aplicații web complexe. Din aceste motive, HTML5 este un posibil candidat pentru aplicațiile de platforme mobile. Multe caracteristici ale HTML5 au fost create din considerarea că va trebui să devină capabil să ruleze pe dispozitive cum ar fi smart-phonurile sau tabletele.În special, HTML5 aduce multe noi caracteristici sintactice.Acestea cuprind elemente ca <video>, <audio>, <header> și <canvas> elemente HTML, precum și integrarea conținutului SVG care a înlocuit utilizarea tag-ului generic <object>. Aceste noutăți sunt proiectate pentru a facilita includerea și manipularea în web a conținuturilor multimedia și grafice fără a fi nevoie să se recurgă la proprietățile de plugin și API.Alte noi elemente ca <section>, <article>, <header>, și <nav> sunt proiectate să îmbunătățească conținutul semantic al documentelor.Noi atribute au fost introduse în același scop, în același timp unele elemente și atribute au fost îndepărtate.Unele elemente ca <a>, <cite> și <menu> au fost schimbate, redefinite și standardizate. API-urile șiDOM-urile (document object model) sunt certitudini și sunt părți fundamentale în specificațiile HTML5.HTML5, de asemenea, definește in câteva detalii prelucrările necesare pentru documentele invalide,astfel încât sintaxa erorilor va fi tratată uniform de toate browserele cunoscute.HTML5 introduce un număr de noi elemente și atribute care reflectă utilizarea tipică a unui site modern. Unele dintre ele sunt semantic înlocuite cu utilizări comune de blocuri generice (<div>) și de elemente inline (<span>), de exemplu <nav> – block de navigatie în site -, <footer> – în mod normal se referă la partea de jos a unei pagini web sau la ultima linie de cod HTML – sau <audio> și<video> în loc de <object>.Unele elemente depreciate din HTML 4.01 au fost șterse, inclusiv nevinovatul element de prezentare <font> și <center>, al căror efect este realizat cu CSS (Cascading Style Sheets). Se pune astfel accent pe importanța DOM scripting (e.g. JavaScript) în comportamentul web. Sintaxa HTML5 nu mai este bazată pe SGML în ciuda asemănării cu marcajele acestuia. Oricum a fost dezvoltată pentru compatibilitatea cu parserele comune de HTML mai vechi. Aceasta vine cu o nouă linie introductivă, arată ca tipurile de declarare SGML, <!DOCTYPE html>, care declanșează modurile standard de redare.[1] Alex Goldstein, Louis Lazaris, Estelle Weyl (2015). HTML5 & CSS3 For The Real World: Powerful HTML5 and CSS3 Techniques You Can Use Today!, 2nd Edition[6] https://ro.wikipedia.org/wiki/HTML52
1.2 Notiuni de bazaHTML este prescurtarea de la Hyper Text Mark-up Language si este codul care sta la baza paginilorweb.Paginile HTML sunt formate din etichete sau tag-uri și au extensia „.html” sau „.htm”. În marea lor majoritate aceste etichete sunt pereche, una de deschidere <eticheta> și alta de închidere </eticheta>, mai există și cazuri în care nu se închid, atunci se folosește <eticheta />. Navigatorul web interpretează aceste etichete afișând rezultatul pe ecran. HTML-ul este un limbaj care nu face deosebire între litere majuscule și minuscule.Pagina principala a unui domeniu este fisierul „index.html” respectiv „index.htm”. Această pagină este setată a fi afișată automat la vizitarea unui domeniu.De exemplu la vizitarea domeniului www.nume.ro este afișată pagina www.nume.ro/index.html.Unele etichete permit utilizarea de atribute care pot avea anumite valori:<eticheta atribut="valoare"> … </eticheta>Componența unui document HTML este: – versiunea HTML a documentului – zona head cu etichetele <head> </head>- zona body cu etichetele <body> </body> sau <frameset> </frameset>Toate paginile HTML încep și se termină cu etichetele <html> și </html>.În interiorul acestor etichete găsim perechile <head>, </head> și <body>, </body>. – head conține titlul paginii între etichetele <title> și </title>, descrieri de tip <meta>, stiluri pentru formatarea textului, script-uri și legături către fisiere externe (de exemplu script-uri, fișiere de tip CSS sau favicon).Etichetele de tip meta conțin cuvinte cheie, descrierea paginii, date despre autor, informații utile motoarelor de căutare și au următorul format:<META NAME="nume" CONTENT="continut">Exemplu: link către un fisier extern CSS:<link rel="stylesheet" type="text/css" href="css.css">body găzduiește practic toate etichetele afișate de browser pe ecran.Și în HTML poate fi introdus un comentariu, care bineînțeles nu va fi afișat de browser:<!– comentariu →[1] Alex Goldstein, Louis Lazaris, Estelle Weyl (2015). HTML5 & CSS3 For The Real World: Powerful HTML5 and CSS3 Techniques You Can Use Today!, 2nd Edition[5] https://ro.wikipedia.org/wiki/HyperText_Markup_Language3
2. CSS2.1 IntroducereCSS (Cascading Style Sheets) este un standard pentru formatarea elementelor unui document HTML. Stilurile se pot atașa elementelor HTML prin intermediul unor fișiere externe sau în cadrul documentului, prin elementul <style> și/sau atributul style. CSS se poate utiliza și pentru formatarea elementelor XHTML, XML și SVGL.Acesta este un standard simplu al zilelor noastre, ce ofera designerilor/programatorilor un mod eficient de a controla modul de prezentare a paginilor "WEB". In zilele noastre CSS a ajuns sa fie inmod primar, un limbaj folosit exclusiv doar pentru "web design" – insa nu putem exclude faptul ca acest limbaj este folosit si in alte medii de programare.La fel ca HTML, CSS nu este chiar un limbaj de programare. Nu este nici limbaj de marcare — esteun limbaj de stilizare. Asta înseamnă că îți permite să aplici selectiv stiluri elementelor din documentele HTML. De exemplu, pentru a selecta toate elementele paragraf dintr-o pagină HTML și a transforma textul din interiorul acestora în roșu, vei scrie acest cod CSS:In comparatie cu era anilor 90, cand controlul prezentarii unei pagini se facea prin tag-uri HTML, divizate intre ele in mai multe fisiere, ce confereau o munca enorma in cazul unei actualizari, CSS vine cu un nou standard, si anume ca printr-un singur fisier ( o conventie intre programatori este sa se foloseasca numele general 'style.css' ) – sa fie controlat intreg aspectul proiectului WEB.CSS nu necesita cunostinte avansate de hardware sau software, ci mai mult cateva cunostinte HTML, pentru a putea sa-l invatam. Citind acest manual, presupunem ca cititorul are deja cunostinte temeinice de HTML si ca intelege ce e acela un SGML ( Standard Generalized Markup Language ).Inainte erei CSS, programatorii erau nevoiti sa controleze aspectul proiectului lor WEB prin tag-uri de font, pentru a stabili culoarea, marimea si familia de font-uri a diferitelor parti ale paginii web.ex.<font face="Verdana, Arial" size="+1" color="blue">Hello World!</font>Desi aceasta metoda este efectiva in controlarea diferitelor parti ale site-ului web, actualizarea codului consuma timp/bani, mareste marimea fisierelor si creste posibilitatea sa se produca greseli in codul vizat.Prin CSS, am putea spune direct :<p>Hello World</p>[1] Alex Goldstein, Louis Lazaris, Estelle Weyl (2015). HTML5 & CSS3 For The Real World: Powerful HTML5 and CSS3 Techniques You Can Use Today!, 2nd Edition[7] https://ro.wikipedia.org/wiki/Cascading_Style_Sheets[8] https://it.webdesign-galaxy.ro/ce-este-css/[9] https://developer.mozilla.org/ro/docs/Learn/Getting_started_with_the_web/CSS_basics4
Apoi folosim CSS pentru a stiliza:<style type="text/css" media="all">p { color: blue; font-size: small; font-family: Verdana, Arial, "sans-serif";}</style>Astfel ajungem la un concept vechi in programare si anume "separarea codului de prezentare" – lucru ce l-am realizat aici.Deasupra la toate CSS vine si simplifica munca enorma realizata prin tag-uri <font> – simplifica limbajul in sine, si aduce imbunatatiri in comparatie cu limitele HTML-ului.2.3 Anatomia unui set de reguli CSSÎntreaga structură este numită set de reguli (dar adesea este prescurtată „regulă”). Reține și numele părților individuale:- SelectorNumele elementului HTML la începutul setului de reguli. Acesta selectează elementul (elementele) care trebuie stilizate (în acest caz, elementele p). Pentru a stiliza un element diferit, doar schimbă selectorul.- DeclarațiaO singură regulă precum color: red; care precizează care dintre proprietățile elementului vor fi stilizate. – ProprietățiModuri în care poți stiliza un element HTML dat. (În acest caz, coloreste o proprietate a elementelor <p>.) În CSS, alegi proprietățile care vrei să le modifici folosindu-te de regula ta.- Valoarea proprietățiiLa dreapta proprietății după două puncte, ai valoarea proprietății, care alege una dintre numeroasele posibilități pentru o anumită proprietate (există mai multe valori ale proprietății color în afară de red). [1] Alex Goldstein, Louis Lazaris, Estelle Weyl (2015). HTML5 & CSS3 For The Real World: Powerful HTML5 and CSS3 Techniques You Can Use Today!, 2nd Edition[7] https://ro.wikipedia.org/wiki/Cascading_Style_Sheets5
Reține celelalte părți importante ale sintaxei:Fiecare set de reguli (în afară de selector) trebuie să fie în interiorul acoladelor ({}).În cadrul fiecărei declarații, trebuie să folosești două puncte (:) pentru a separa proprietatea de valorile sale.În cadrul fiecărui set de reguli, trebuie să folosești punct și virgulă (;) pentru a separa fiecare declarație de următoarea.Pentru a modifica simultan mai multe valori ale proprietății, trebuie doar să le separi folosind punct și virgulă, astfel: p { color: red; width: 500px; border: 1px solid black;}2.3 Despre CSS3CSS3 reprezintă un upgrade ce aduce câteva atribute noi și ajută la dezvoltarea noilor concepte in webdesign.Unele dintre cele mai importante segmente (module) noi adăugate acestui standard pentru formatarea elementelor HTML aduc un plus considerabil in dezvoltarea activități webdesign.Mai jos sunt prezente in listă cele mai importante modulele adăugate in CSS3:“SelectorsBox ModelBackgrounds and BordersImage Values and Replaced ContentText Effects2D/3D TransformationsAnimationsMultiple Column LayoutUser Interface”Deși au apărut unele deficiente de compatibilitate intre browsere, majoritatea proprietăților CSS3 aufost implementate cu succes in variantele browserelor noi.CSS3 – BorduriAcum CSS3 oferă posibilitatea de a crea borduri cu colțurile rotunjite fară a folosi elemente grafice de fundal așa cum se folosea anterior acestui upgrade.[7] https://ro.wikipedia.org/wiki/Cascading_Style_Sheets[8] https://developer.mozilla.org/ro/docs/Learn/Getting_started_with_the_web/CSS_basics6
Proprietatea CSS3 border-radius definește prin valorile exprimate in pixeli cat de rotunjite vor fi colțurile unui element HTML sau unei imagini. Fiecare colț poate avea o alta valoare exprimată in pixeli diferită de un alt colț al aceluiași element. Prin urmare putem folosi pana la 4 valori diferite atribuite unui element HTML sau imagine.Exemplu:border-radius: 5px ;- definește valoarea de 5px radius pentru toate cele 4 colțuri ale elementului.border-radius: 5px 7px 12px 4px;- aceste valori multiple definesc cat de mult vor fi rotunjite colțurile elementului HTML, iar pentru fiecare colt este specificata valorarea. Colțul stanga-sus are valoarea border-radius de 5px, colțul dreapta-sus are valoarea border-radius de 7px, colțul dreapta-jos al elementului HTML are valoarea de 12px iar colțul din stanga-jos are valoarea de 4px.CSS3 – Borduri Rotunjite – OptimizatVarianta ne-comprimată sau ne-optimizată:border-radius-left: 5px;border-radius-right: 7px;border-radius-top: 12px;border-radius-bottom: 4px;Varianta mimificată, compresată/optimizată:border-radius: 5px 7px 12px 4px;Ambele variante sunt corecte și acceptate de clientul browser. – CSS3 – Borduri Rotunjite – Compatibilitate BrowserPentru compatibilitatea cu diferite browsere se folosesc prefixe: -webkit- , -moz- , -o-Compatibilitate: Internet Explorer (IE) – 0.9 , Chrome folosește prefixul -webkit- pentru 4,0 , Firefox folosește prefixul -moz- pentru versiunea 3.0, Safari folosește prefixul -webkit- pentru versiunea 3.1, Opera 10.5 prefix -o-Exemplu CSS3 border-radius:div {border: 2px solid #333333;width: 300px;border-radius:25px;}[1] Alex Goldstein, Louis Lazaris, Estelle Weyl (2015). HTML5 & CSS3 For The Real World: Powerful HTML5 and CSS3 Techniques You Can Use Today!, 2nd Edition[3] https://ro.wikipedia.org/wiki/Cascading_Style_Sheets7
3. PHP3.1 IntroducerePHP este un limbaj de programare. Numele PHP provine din limba engleză și este un acronim recursiv : Php: Hypertext Preprocessor. Folosit inițial pentru a produce pagini web dinamice, este folosit pe scară largă în dezvoltarea paginilor și aplicațiilor web. Se folosește în principal înglobat încodul HTML, dar începând de la versiunea 4.3.0 se poate folosi și în mod „linie de comandă” (CLI), permițând crearea de aplicații independente. Este unul din cele mai importante limbaje de programare web open-source și server-side, existând versiuni disponibile pentru majoritatea web serverelor și pentru toate sistemele de operare. Conformstatisticilor este instalat pe 20 de milioane de site-uri web și pe 1 milion de servere web. Este disponibil sub Licenṭa PHP ṣi Free Software Foundation îl consideră a fi un software liber.Inițial, limbajul a fost dezvoltat de inventatorul său, Rasmus Lerdorf. Odată cu creșterea numărului de utilizatori, dezvoltarea a fost preluată de o nouă entitate, numită The PHP Group (Grupul PHP).3.2 IstoricPHP însemna inițial Personal Home Page.[4] PHP a fost început în 1994 ca o extensie a limbajului server-side Perl, și apoi ca o serie de CGI-uri compilate de către Rasmus Lerdorf, pentru a genera un curriculum vitae și pentru a urmări numărul de vizitatori ai unui site. Apoi a evoluat în PHP/FI 2.0, dar proiectul open-source a început să ia amploare după ce Zeev Suraski și Andi Gutmans, de laTechnion au lansat o nouă versiune a interpretorului PHP în vara anului 1998, această versiune primind numele de PHP 3.0.Tot ei au schimbat și numele în acronimul recursiv de acum, până atunci PHP fiind cunoscut ca Personal Home Page Tools. Apoi Suraski și Gutmans au rescris baza limbajului, producând astfel și Zend Engine în 1999. În mai 2000 a fost lansat PHP 4.0, având la bază Zend Engine 1.0.PHP 5Pe 13 iulie 2004 a fost lansat PHP 5, cu Zend Engine II, ce a adus și o orientare obiect mai pronunțată și suportând mai multe caracteristici ale acestui tip de programare.PHP 5 aduce mai multe noutăți față de versiunea 4:- Suport îmbunătățit pentru OOP- Introduce extensia PDO – PHP Data Objects, care definește o modalitate facilă și consistentă de accesare a diferitelor baze de date- Imbunătățiri de performanță[6] https://ro.wikipedia.org/wiki/PHP8
– Suport îmbunătățit pentru MySQL și MSSQL- Suport nativ pentru SQLite- Suport SOAP integrat- Iteratori pentru date- Controlul erorilor prin tratarea de excepțiiLa sfârșitul lui 2007 doar versiunea 5.x mai era întreținută, deoarece în data de 13 iulie 2007 (exact la 3 ani după lansarea PHP5), PHP Group a anunțat că PHP4 va fi scos din uz pe 31 decembrie 2007, deși prognozează că anumite upgrade-uri de securitate se vor oferi până pe 8 august 2008.[5]. Dezvoltarea la PHP 6 începuse deja în decembrie 2007 și urmează să fie oferit odată cu scoaterea din uz a PHP4.- PHP 6PHP 6 are următoarea agendă de îmbunătățiri și modificări:- îmbunătățirea suportului pentru Unicode- retragerea definitivă a unor funcții ca register_globals și magic_quotes, și a variabilelor tip $HTTP_*_V ARS- var va fi un alias pentru public, și folosirea lui va ridica o atenționare E_STRICT.- suport pentru int pe 64 biți.- taguri tip ASP sunt retrase definitiv.- XMLReader, XMLWriter, Fileinfo vor face parte din distribuția principală- următoarele pachete au fost scoase din distribuția principală: Freetype1, GD1, mime_magic- funcția ereg() nu mai este disponibilă- instanțierea obiectelor prin referină (& new Obiect()) generează o eroare E_STRICT.- erorile tip E_STRICT sunt incluse în E_ALL.- adăugarea instrucțiunii goto permite salturi la un alt bloc de comenzi. – namespace, import, și goto devin cuvinte rezervate.- accesarea caracterelor într-un șir (string) se face prin operatorul []. {} se scoate din uz ( ex: $str[42] funcționează, $str{42} nu funcționează)- constantele FILE_BINARY și FILE_TEXT devin disponibile pentru folosirea în funcții de citire/scriere fișiere – foreach va suporta array multi dimensional: foreach($a as $b => list($c, $d))pentru operatorul ternar expresia pentru valoarea true nu mai este obligatorie ($a = $s ?: ‘b’; // returns $a = $s;)- opțiunea safe_mode a fost înlăturată.- operatorul and a fost înlăturat.- funcția microtime() returnează un float.- zend.ze1_compatibility_mode a fost înlăturat.[6] https://ro.wikipedia.org/wiki/PHP9
3.3 PopularitatePHP-ul este unul din cele mai folosite limbaje de programare server-side, conform unui studiu efectuat de Netcraft în aprilie 2002, apărând pe 9 din cele 37 milioane de domenii cercetate în studiu. De asemenea, există un grafic al creșterii folosirii PHP-ului pe site-ul oficial. Popularitatea de care se bucură acest limbaj de programare se datorează următoarelor caracteristici :Familiaritatea : sintaxa limbajului este foarte ușoară combinând sintaxele unora din cele mai populare limbaje Perl sau C;Simplitatea : sintaxa limbajului este destul de liberă. Nu este nevoie de includere de biblioteci sau de directive de compilare, codul PHP inclus într-un document executându-se între marcajele speciale;Eficiența : PHP-ul se folosește de mecanisme de alocare a resurselor, foarte necesare unui mediu multiutilizator, așa cum este web-ul;Securitate : PHP-ul pune la dispoziția programatorului un set flexibil și eficient de măsuri de siguranță;Flexibilitate : fiind apărut din necesitatea dezvoltării web-ului, PHP a fost modularizat pentru a ține pasul cu dezvoltarea diferitelor tehnologii. Nefiind legat de un anumit server web, PHP-ul a fost integrat pentru numeroasele servere web existente: Apache, IIS, Zeus, server, etc.;Gratuitate : este probabil cea mai importantă caracteristică a PHP-ului. Dezvoltarea PHP-ului sub licența open-source a determinat adaptarea rapidă a PHP-ului la nevoile web-ului, eficientizarea și securizarea codului.3.4 UtilizarePHP este simplu de utilizat, fiind un limbaj de programare structurat, ca și C-ul, Perl-ul sau începând de la versiunea 5 chiar Java, sintaxa limbajului fiind o combinație a celor trei. Datorită modularității sale poate fi folosit și pentru a dezvolta aplicații de sine stătătorare, de exemplu în combinație cu PHP-GTK sau poate fi folosit ca Perl sau Python în linia de comandă. Probabil una din cele mai importante facilități ale limbajului este conlucrarea cu majoritatea bazelor de date relaționale, de la MySQL și până la Oracle, trecând prin MS Sql Server, PostgreSQL, sau DB2.PHP poate rula pe majoritatea sistemelor de operare, de la UNIX, Windows, sau Mac OS X și poate interacționa cu majoritatea serverelor web. Codul dumneavoastră PHP este interpretat de serverul WEB și generează un cod HTML care va fi văzut de utilizator (clientului -browserului- fiindu-i transmis numai cod HTML).Arhitectura tip LAMP a devenit populară în industria web ca modalitate rapidă, gratuită și integrată de dezvoltare a aplicațiilor. Alături de Linux, Apache și Mysql, PHP reprezintă litera P, deși uneori aceasta se referă la Python sau Perl. Linux ocupă rolul de sistem de operare pentru toate celelalte aplicații, MySQL gestionează bazele de date, Apache are rol de server web, iar PHP are rol de interpretator și comunicator între acestea.[6] https://ro.wikipedia.org/wiki/PHP10
PHP foloseste extensii specifice pentru fișierele sale: .php, .php3, .ph3, .php4, .inc, .phtml. Aceste fișiere sunt interpretate de catre serverul web iar rezultatul este trimis în formă de text sau cod HTML către browser-ul clientului.3.5 Tipuri de date interne- Boolean – valori logice tip adevărat sau false, similare cu cele din C++ sau Perl.- Integer – numere întregi (în baza 10, 2 sau 16). Valoarea maximă depinde de sistem și de tipul de integer. Tipul poate fi "signed" sau "unsigned", adica dependent de semnul + sau – sau independent de acestea. Valorile pentru integer unsigned sunt mai mari decât cele pentru signed. Sistemele pe 32 bits pot crea numere întregi între -2147483648 și 2147483647( 2^31-1 ). – Float – cunoscute ca numere reale. Valorile maxime sunt de asemenea dependete de platform, in general cu un maxim de ~1.8e308 cu o precizie de 14 zecimale dupa virgula (formatul 64 bits IEEE).- String – șiruri de caractere. Înainte de PHP6, un caracter era echivalent cu un byte. Nu există limitări pentru lungimea unui șir, în afara memoriei alocate PHP.- Array – în PHP un array este un tip de data care conține un grup de elemente. Fiecare element are un indice intern în group, iar fiecărui indice îi corespunde o valoare – elementul în sine. Un astfel degrup poate fi folosit ca o simulare pentru diverse situații matematice precum vectori, serii, dicționare de elemente, liste ordonate, matrici sau matrici de matrici. Indicii și valorile unui grup pot fi orice tip de data interna PHP (cu excepții: obiectele, resursele și null nu pot fi indici). – Obiecte – O clasa este o colecție de proprietăți și funcții având o logică comună. Obiectele sunt instanțe ale unei clase, în care proprietățile obiectului primesc valori specifice. – Resurse – aceastea sunt variabile speciale care conțin legături cu resurse externe PHP. De exemplu,conexiunea cu o bază de date este o resursa deschisă și menținută cu ajutorul unor funcții special definite pentru aceasta muncă.- NULL – este un tip special de dată, care semnifică că variabila respectivă nu a fost definită și că nuare valoare sau valoarea e necunoscută.3.6 FuncțiiPHP are sute de funcții incorporate și alte câteva mii disponibile prin intermediul extensiilor.Versiunile 5.2 și anterioareÎn aceste versiuni funcțiile nu sunt obiecte de prima clasă. Aceasta înseamnă că funcțiile nu pot fi create dinamic în timpul executării programului și că pot fi chemate doar prin numele dat când au fost definite. Utilizatorul poate crea funcții în orice moment în program. În acest exemplu cuvântul cheie function definește funcția cu numele adauga care primește un număr de 2 parametri de intrare și returnează suma acestora.[6] https://ro.wikipedia.org/wiki/PHP11
Versiunile 5.3 și mai noiPHP are suport pentru funcții de rangul întâi și pentru funcții anonime, precum cele folosite în Javascript.3.7 ObiecteFuncționalități bazice de programare orientată pe obiecte au fost adăugate în PHP 3. În PHP 3 și 4 obiectele erau tratate ca un tip de dată bazic, însemnand că de fiecare dată când o variabilă era asignată sau folosită într-o funcție tot obiectul era copiat.Felul în care obiectele sunt tratate a fost complet rescris în PHP 5 iar acum obiectele sunt referențiate printr-un vector intern și nu după valoarea pe care o au.PHP 5 a introdus metode private și protejate, clase abstracte, constructori și destructori, functionalități similare cu cele din alte limbaje de programare care folosesc paradigma OOP, precum C++.Afișarea mesajului clasic "Hello world" folosind programare orientată pe obiecte:<?php Class Hello { function hello() { return "Hello world"; } } $world = new Hello(); echo $world->hello();?>SintaxăClasicul program hello-world în PHP:<?php echo "Salut lume!";?>Sintaxa de mai sus este simplificată de programatorii avansați astfel: <?="Salut lume!"?>
[6] https://ro.wikipedia.org/wiki/PHP12
SQL1. IntroducereSQL (de la numele englez Structured Query Language – limbaj de interogare structurat – care se pronunță [es kiu el]) este un limbaj de programare specific pentru manipularea datelor în sistemele de manipulare a bazelor de date relaționale (RDBMS), iar la origine este un limbaj bazat pe algebra relațională. Acesta are ca scop inserarea datelor, interogații, actualizare și ștergere, modificarea și crearea schemelor, precum și controlul accesului la date. A devenit un standard în domeniu (standardizat ANSI-ISO), fiind cel mai popular limbaj utilizat pentru crearea, modificarea, regăsireași manipularea datelor de către SGBD-urile (Sistemele de Gestiune a Bazelor de Date) relaționale. Pe lângă versiunile standardizate ale limbajului, există o mulțime de dialecte și variante, unele proprietare, fiind specifice anumitor SGBD-uri și de asemenea conținând extensii pentru a suporta SBD-urile (Sistemele de Baze de Date) obiectuale (obiectual-relaționale).SQL permite atât accesul la conținutul bazelor de date, cât și la structura acestora.2. IstoricSQL a fost inițial dezvoltat la compania IBM de către Donald D. Chamberlin și Raymond F. Boyce în anul 1974. Inițial numele era SEQUEL (tot de la Structured Query Language) și avea ca scop manipularea și regăsirea datelor stocate în bazele de date relaționale IBM. [1]La sfârșitul anilor '70, compania Relational Software, Inc. (în prezent Oracle Corporation) a văzut potențialul acestor concepte descrise de Codd, Chamberlin și Boyce, și a dezvoltat propriul SQL RDBMS cu aplicații la U.S. Navy, Central Intelligence Agency și U.S. government. În iunie 1979, Relational Software a introdus prima implementare comercială disponibilă de SQL, Oracle. După testarea SQL, au apărut implementări ale acestui limbaj și din partea firmei IBM: SQL/DS și DB2.3. Tipuri de date in SQLOricărei coloane (sau câmp) dintr-un tabel SQL îi este asignat un tip de dată, la fel ca în toate celelalte limbaje de programare. Tipurile de date sunt următoarele:CHARACTER (sau CHAR) – șir de caractereINTEGER (sau SMALLINT) – număr întregFLOAT, REAL sau DOUBLE PRECISION – număr realNUMERIC(precision, scale) sau DECIMAL(precision, scale) – număr zecimal , unde “precision” înseamnă numărul de cifre din partea întreagă, “scale” înseamnă numărul de zecimale.DATE – data zilei.TIME – ora.Funcția sistem NOW întoarce data și ora curentă.[8] https://ro.wikipedia.org/wiki/SQL13
4. Manipularea datelorLimbajul de manipulare a datelor (DML) este un subset al SQL utilizat pentru a adăuga, actualiza sau șterge date.Setul de comenzi SQLComanda + Descriere:SELECTeste comanda cea mai utilizata ; este folosita pentru obtinerea datelor din bazele de dateINSERTaceste trei comenzi sunt utilizate pentru a introduce noiUPDATErinduri,pentru a schimba rindurile existente si stergereaDELETErindurilor nedorite din tabelele bazelor de date respective. (Ele sunt cunoscute in ansamblu ca DML sau comenzi ale limbajului de manipulare a datelor.)ALTERutiliza si sterge orice structura de date,de exemplu,tabele,DROPexpuneri ,indecsi.(Ele sunt cunoscute sub numele colectiv DDL sau comenzi ale limbajelor de definire a datelor).REVOKEdrepturile de acces pentru bazele de date si structurile din Oracle.* Scrierea comenzilor SQLCand scriem comenzi SQL ,este important sa ne reamintim cateva reguli simple pentru construirea unor declaratii valide care sunt si usor de citit si de editat: – Comenzile SQL pot fi pe una sau mai multe linii. – Clauzele sunt uzual plasate pe linii separate. – Tabelarea poate fi folosita. – Cuvintele de comanda nu pot fi separate pe mai multe linii. – Comenzile SQL nu sunt 'case sensitive'. – O comanda SQL este introdusa la promptul SQL si liniile subsecventelor sunt numarate. – O singura declaratie poate fi considerata curenta cat timp ea este in buffer si poate fi rulata intr-unnumar de moduri : – plasand un punct si virgula(;) la sfarsitul ultimei clauze. – plasand un punct si virgula /slash la ultima linie in buffer. – plasand un slash(/) la promptul SQL.- scriind un R[UN] (comanda SQL) la promptul SQL.[8] https://ro.wikipedia.org/wiki/SQL14
Fiecare din urmatoarele declaratii sunt valide: “SELECT * FROM EMP; SELECT * FROM EMP ; SELECT * FROM EMP;”In acest manual comenzile SQL sunt sparte in clauze pentru claritate.5. TranzacțiiTranzacțiile sunt utilizate pentru a controla în ce condiții se desfășoară o succesiune a instrucțiunilorde manipulare a datelor.Instrucțiuni:START TRANSACTION (sau BEGIN WORK, BEGIN TRANSACTION, în funcție de dialectul SQL) Început de tranzacție.SA VE TRANSACTION – (sau SA VEPOINT) salvează starea bazei într-un punct al transacțieiCOMMIT – Operează toate operațiile tranzacției ca fiind permanente.ROLLBACK – Anulează toate operațiile tranzacției începând cu ultimul COMMIT.Instrucțiunile COMMIT și ROLLBACK termină tranzacția curentă și deblochează datele.6. Limbajul de definire a datelorLimbajul de definire a datelor (DDL) gestionează structura datelor și indexului.Instrucțiuni“CREATE TABLE – creează un tabel în mod linie de comandă:CREATE TABLE tabel( câmp1 tip1, câmp2 tip2, … PRIMARY KEY (index1, index2, …));”[8] https://ro.wikipedia.org/wiki/SQL15
Exemplu:“CREATE TABLE My_table( my_field1 INT, my_field2 V ARCHAR(50), my_field3 DATE NOT NULL, PRIMARY KEY (my_field1, my_field2));”ALTER TABLE – modifică structura unui tabel existent prin redenumirea/adăugarea/ștergerea/schimbarea structurii unei coloane sau index.Redenumirea unui tabelALTER TABLE tabel RENAME TO nume_nou_tabel;Adăugarea de câmpuri noiALTER TABLE table_name ADD ( câmp1 def1, col2 def2, … ); Exemplu:ALTER TABLE supplier ADD (supplier_name varchar2(50), city varchar2(45)); Modificarea structurii unui câmpALTER TABLE table_name MODIFY (câmp1 tip1, câmp2 tip2, … );Exemplu:ALTER TABLE supplier MODIFY ( supplier_name varchar2(100) not null, city varchar2(75));Ștergerea unui câmpALTER TABLE tabel DROP COLUMN câmp;Exemplu:“ALTER TABLE supplier DROP COLUMN supplier_name;”Redenumirea unui câmpALTER TABLE tabel RENAME COLUMN nume_vechi TO nume_nou;Exemplu:“ALTER TABLE supplier RENAME COLUMN supplier_name to sname;TRUNCATE TABLE – Șterge toate articolele unui tabel:TRUNCATE TABLE tabel;DROP TABLE – Șterge tabelul:DROP TABLE tabel;”[8] https://ro.wikipedia.org/wiki/SQL[9] https://www.w3schools.com/sql/default.asp16
5. Arhitecturi specifice mediului blog5.1 Structura bloguluiBlogul a fost creat de la zero folosind urmatoarele tehnologii: HTML5, CSS3, Bootstrap 3, PHP7 si SQL.Blogul conține de sistem de inregistrare, autentificare, conține o functie pentru a putea posta doar daca utilizatorul este logat, o functie pentru a sterge propriile postari si de o pagina in care sunt extrase din baza de date toate postarile.Acesta dispune de urmatoarele:- o pagina principala numita index.php, unde sunt extrase postari din baza de date- o pagina numita allposts.php, unde sunt afisate toate postarile blogului- dispune de o functie de logare pentru utilizatorii existenti- dispune de o funcție de inregistrare pentru vizitatori- dispune de o funcție care permite fiecărui utilizator înregistrat să îsi steargă propriile postăriile- fiecare postare are un buton numit “Citeste mai mult”, care ii duce pe utilizatori pepagina postării respective- în pagina de creare postări a fost integrat un editor de text de tip WYSIWYG (What you see is what you get) pentru a putea stiliza paragrafeleBootstrap este un framework de CSS. Acesta conține clase predefinite pentru a putea stiliza rapid si cu usurință paginile web.Elementele predominante din Bootstrap folosite în blog sunt clasele “container” si “row”.Cu ajutorul acestora ne asigurăm ca secțiunile din site au margini si sunt asezate corespunzător.Bootstrap a fost încărcat în aplicația noastră folosind un CDN. CDN este Content Delivery Network, sau Content Distribution Network. Acesta este un sistem distribuit care servește fișiere statice. Pe lângă simplitatea de utilizare, CDN-urile mai au și alte avantaje, cum ar fi viteza de încărcare.17
Ul alt element de Bootstrap folosit în crearea aplicației este navbar.Navbar-ul este componenta cel mai des întâlnit pe paginile web. De obicei navbar-ul este amplasat împreună cu logo-ul, care poate fi o imagine sau un text.Navbar-ul este inclus la noi în fisierul menu.php. Acest fisier este inclus în aproape toate paginile blogului.5.2 Organizarea fișierelorBlogul contine următoarele fișiere:- allposts.php: acest fișier conține fișierul posts.php- createpost.php: fisier care se ocupa cu introducerea postărilor in baza de date. Doar utilizatorii logați pot sa creeze postări- dbconnect.php: acest fișier se ocupa cu conectarea la baza de date- deletepost.php: conține o funție care permite ștergerea postărilor din baza de date- index.php: este pagina principala a blogului in care este inclus fișierul posts.php- login.php: acesta este responsabil cu sistemul de logare al blogului- logout.php: este respinsabil cu delogare de pe blog- menu.php: fișier responsabil cu afișarea meniului. Meniul este diferit pentru vizitatori și pentru utilizatorii logați- posts.php: conține o funcție care extrage din baza de date toate postările existente- register.php: fișier care se ocupă cu înregistrarea vizitatorilor pe blogului- singlepost.php: acest fișier afișeaza întregul conținut al unei postări5.3 Funcții folosite pentru crearea bloguluiÎn continuare voi prezenta funcțiile si instrucțiunile din PHP pe care le-am folosit în crearea funcționalităților existente în blog. * O listă a funcțiilor PHP:- mysqli_connect();18
– session_start();- mysqli_query();- require();- include();- isset();- mysqli_real_escape_string();- mysqli_fetch_array();- mysqli_fetch_assoc();- mysqli_fetch_object();- mysqli_fetch_row();- mysqli_num_rows();- header();- htmlspecialchars();- unset();- session_destroy();- session_write_close();- substr();- preg_match();- strlen();Acum voi detalia funcțiile PHP:- session_start();Aceasta funcție porneste o sesiune sau reia o sesiune existentă. Acest lucru se face cu ajutorul unui identificator dat prin metodele GET sau POST, sau prin asa numitele cookies.Aceasta funcție returneaza TRUE dacă o sesiune a fost deschisă cu succes, si FALSE în caz contrar.19
V oi da un exemplu cu codul folosit în blog:“<?php$servername = "127.0.0.1";$username = "root";$password = "";$dbname = "blog";$conn = mysqli_connect($servername, $username, $password, $dbname);if (!$conn) { die("Connection failed: " . mysqli_connect_error());}session_start();?>”Cu ajutorul acestui cod ne conectăm la baza de date.- mysqli_connect()Deschide o nouă conexiune către serverul MySQL.Sintaxă:mysqli_connect($servername, $username, $password, $dbname);- mysqli_queryExecută o instrucțiune asupra bazei de date. Aceasta funcție este folosită în fisierele createpost.php, deletepost.php si register.phpÎn createpost.php este folosită pentru a introduce în baza de date toate postările pe care le creează utilizatorii înregistrați si logați.În acest fisier, aceasta intrucțiune a fost folosită în felul următor:
20
if($numePostareErr == '' && $continutPostareErr == '') { $sql = "INSERT INTO blog_posts (userID, postTitle, postContent) VALUES ( '".$_SESSION["active_user_id"]."','".$_POST["numePostare"]."','".$_POST["continutPostare"]."')"; $result = mysqli_query($conn,$sql); header("location: index.php "); } În deletepost.php este folosită pentru a sterge postări din baza de date. Utilizatorii îsi pot sterge doarpropriile postări.În register.php este folosită pentru a introduce în baza de date numele, email-ul si parola unui utilizator proaspăt înregistrat- isset()Aceasta funcție este folosită pentru a vedea dacă o variabiă este setată sau nu.Aceasta funcție returneaza FALSE dacă variabila testată conține o valoare NULL.- mysqli_fetch_row();Returneaza fiecare rand ca un Array in care cheile sunt numere consecutive (incepand de la 0), reprezentand ordinea coloanelor din setul de rezultate ($row[0], $row[1]).- mysqli_fetch_object();Returneaza fiecare rand ca un obiect. Valorile coloanelor se acceseaza ca proprietati ale obiectului, prin numele lor ($row->col1, $row->col2).- header();Redirecționează utilizatorii spre un nou link.
21
– htmlspecialchars()Converteste caractere speciale în entități HTML.Anumite caractere au o semnificație specială în HTML, asadar ar trebui reprezentate în entități HTML. Aceasta funcție returnează un string cu conversiile făcute.- session_destroy();Sterge toate datele înregistrate în sesiunea curentă.Pentru a refolosi vriabilele globale asociate sesiunii, va trebui sa apelăm funcția session_start().- include si requireSunt constructii de limbaj ce permit includerea si evaluarea unor fisiere externe in cadrul fisierului curent.Daca fisierele incluse au cod php (desi nu e neaparat nevoie), trebuie ca de obicei, delimitat intre tagurile de php.Aceasta includere este ca si cum am scrie efectiv codul din fisierele externe in fisierul curent.Deci orice variabile, functii, etc definite in fisierele incluse, sunt disponibile si in scriptul curent (dar trebuiesc incluse inainte de folosirea lor).- ifConstructia if este una din cele mai importante si folosite structuri decizionale, si nu doar in PHP. Forma ei cea mai simpla este: if (expr) instructiune;Doar daca expr este evaluata boolean la TRUE se executa insructiune. Daca avem mai multe instructiuni de executat in cazul in care expr este TRUE, atunci formam un bloc de instructiuni adica incadram codul intre acolade: if (expr) { instructiune1; instructiune2; }22
– whileIn forma cea mai simpla, while arata asa:Pseudocodwhile (expr) instructiuni;si are ca efect executarea instructiunilor atata timp cat expr este evaluata boolean ca TRUE. In cadrul blocului de instructiuni, trebuie sa avem ceva ce schimba valoarea lui expr din TRUE in FALSE altfel instructiunile se executa la nesfarsit.Daca expr este de la inceput FALSE, blocul de instructiuni nu se executa niciodata. – do-whileConstructia do-while este foarte asemanatoare constructiei while cu singura diferenta ca instructiunile din bucla (loop) se executa cel putin o singura data; pentru ca intai se executa codul apoi se verifica daca expresia este evaluata la TRUE. Codul continua sa se execute atata timp cat expr ramane TRUE.Pseudocod:do {} while (expr)- forStructura de control for este o structura repetitiva. Arata astfel:Pseudocod:for (expresie1;expresie2;expresie3) bloc instructiuni;La fel ca si in celelalte cazuri, daca in cadrul buclei for vreau sa execut mai multe instructiuni, le grupez intr-un bloc de instructiuni folosind acolade. Structura for functioneaza astfel: – expresie1 este evaluata o singura data, neconditionat, la inceputul primei bucle – expresie2 este o conditie, o expresie evaluata boolean la inceputul fiecarei bucle- expresie3 este evaluata/executata la sfarsitul fiecarei bucle23
– Se obisnuieste ca expresie1 sa fie o initializare a unei variabile gen $i = 1, expresie2 o conditie gen$i <10, iar expresie3 o incrementare, sau decrementare sau alta operatie aritmetica ce afecteaza variabila $i ($i++ sau $i+=3 , etc)- foreachConstructia foreach este destinata trecerii prin tablouri (array). Daca in alte limbaje aceasta trecere (iteratie) prin elementele unui tablou se face folosind constructia for, in PHP se prefera foreach din urmatorul motiv: cheile tablourilor in PHP nu sunt neaparat numerice sau daca sunt numerice nu sunt neaparat consecutive, deci e imposibil sa folosim for. – break, continueCuvantul cheie break forteaza iesirea dintr-o bucla de tip for, foreach, while, do-while sau switch. Aceasta constructie poate primi ca argument un numar ce reprezinta numarul de constructii repetitive din care iese. Cuvantul cheie continue are rolul de a indica continuarea executiei cu inceputul buclei urmatoare, prin urmare se ignora restul codului din bucla curenta. (mai corect spus, executia sare direct la sfarsitul buclei curente, pentru ca in cazul constructiei for, se executa inca acel $i++ de la sfarsitul fiecarei bucle, inclusiv de la sfarsitul buclei curente). Similar cu break, continue poate primi un parametru ce indica nivelul buclei cu care se continua executia codului. Zx* Intrucțiuni de SQL folosite în blogului- Una dintre cele mai importante comenzi de SQL folosite în blog este cea din fisierul posts.phpAceasta este în felul urmator:$sql ="SELECT blog_posts.userID, users.Name, blog_posts.postID, blog_posts.postTitle, blog_posts.postContent, blog_posts.postDateFROM blog_postsINNER JOIN usersON blog_posts.userID = users.userIDORDER BY blog_posts.postDate DESC";Cu ajutorul acestui query de SQL extragem din baza de date toate postarile existente.Pentru fiecare postare extragem ID-ul acesteia, numele utilizatorului care a creat postarea, titlul postarii, conținutul postarii si inclusiv data crearii postarii. De asemenea, postarile pe pagina sunt afisate în ordine descrescatoare ( se afisează cea mai recentă postare mai întâi).24
O alta comanda foarte importanta de SQL este urmatoarea:$sql = "INSERT INTO blog_posts (userID, postTitle, postContent) VALUES ( '".$_SESSION["active_user_id"]."', '".$_POST["numePostare"]."', '".$_POST["continutPostare"]."')";Aceasta se afla în fisierul createpost.phpCu ajutorul acesteia introducem în baza de date o postare de blog. Mai exact, introducem titlul si conținutul postării, iar de fiecare postare legăm un ID, pentru a stii cărui utilizator îi aparține postarea. Acest lucru este foarte folositor deoarece în acest fel putem folosi funcția de stergere a postărilor.Fără un ID unic pentru postări si utilizatori, nu am putea să stim cărui utilizator îi aparțin postările, iar acestia nu si-ar putea sterge propriile postări.5.4 FuncționalitățiAceastă aplicație dispune de următoarele funcționalități:- o pagina principală în care sunt afișate postări din baza de date, numele acesteia este index.php- o pagina denumită allposts.php, care extrage din baza de date toate postările și le afișează- dispune de un sistem de înregistrare pentru vizitatori. Aici se cere: numele complet al vizitatorului,adresa acestuia de email și o parolă- sistem de logare pentru utilizatorii înregistrați. Aceștia se pot loga folosind emailul și parola de la înregistrarea pe blogSistemul de logare este făcut cu ajutorul variabilei $_SESSION si a metodei $_POST. Codul pentru sistemul de logare este scris în fisierul login.phpLa începutul fisierului includem fisierul dbconnect.php pentru a face conexiunea cu baza de date, iar apoi facem o verificare pentru a vedea dacă utilizatorul este logat cu ajutorul acestei bucăți de cod: if ( isset($_SESSION['login_user']) && $_SESSION['login_user'] != '') { header("location: index.php"); exit(); }25
După ce logarea a fost realizată cu succes, utilizatorul va fi redirecționat pe pagina principală cu ajutorul funcției predefinită de PHP header();.Următorul lucru pe care îl verificăm în fisierul login.php este metoda prin care se transmit datele de autentificare ale utilizatorilor. Acest lucru trebuie realizat folosind metoda POST, nu GET, din motive de securitate.În fisierul logout.php se realizează deconectarea utilizatorului de pe blog. Codul pentru a realiza acest lucru este următorul:unset($_SESSION);session_destroy();session_write_close();header('Location: index.php');die;Practic punem variabila $_SESSION pe unset, distrugem sesiunea curentă si redirecționăm utilizatorul deconectat pe pagina principală.Blogul de asemenea dispune de o funcție pentru utilizatorii înregistrați cu ajutorul căreia aceștia își pot sterge propriile postări, dar nu pot șterge postările altor utilizatori. Acestu lucru se face cu ajutorul funției din fișierul deletepost.phpÎn fișierul menu.php avem un cod care ne permite să afișăm în partea dreaptă a meniului elementele “Login” și “Register” pentru vizitatorii site-ului, și “Create post” și “Logout” pentru utilizatorii logați pe site.Această verificare se face folosind următoarea linie de cod:“if( isset($_SESSION['login_user']) && $_SESSION['login_user'] != '')”Mai este prezentă o funcționalitate în care fiecărei postări îi este alocat un id unic. Acest lucru este foarte folositor deoarece în acest fel putem știi căror utilizatori aparțin postările (util pentru funcția de ștergere a postărilor) și putem să creăm pagini dedicate fiecărei postări în care este prezent întregul conținut al acestora.5.5 Despre baza de dateBaza de date a acestei aplicații se numește “blog”. Conține două tabele, numite “blog_posts” și “users”.26
În tabelul users sunt prezente următoarele coloane:- “userID”: aici este alocat un număr unic pentru fiecare utilizator, care se incrementează automat- “Name”: conține numele complet al utilizatorilor- “Email”: conține emailul utilizatorilor- “Password”: conține parola utilizatorilor- “Gender”: conține sexul utilizatorilorÎn tabelul “blog_posts” avem prezente urmatoarele coloane:- “postID”: este un număr unic alocat și incrementat automat pentru fiecare postare- “postTitle”: reprezintă titlul postării- “postContent”: reprezintă conținutul postării- “postDate”: conține data la care a fost creată postarea- “userID”: reprezintă utilizatorul care a creat postarea. Această coloană o folosim pentru a verifica ce postări aparțin căror utilizator (folositor pentru funția de ștergere a postărilor)5.6 Prezentarea fisierelor si a codului sursaBlogul contine următoarele fișiere, prezentate în ordine alfabetică:- allposts.php: în acest fișier sunt afisate toate postările- createpost.php: fisier care se ocupa cu introducerea postărilor in baza de date. Doar utilizatorii logați pot sa creeze sau să si steargă propriile postări postări- dbconnect.php: acest fișier se ocupă cu conectarea la baza de date- deletepost.php: conține o funție care permite ștergerea postărilor din baza de date- index.php: este pagina principala a blogului in care este inclus fișierul posts.php- login.php: acesta este responsabil cu sistemul de logare al blogului- logout.php: este responsabil cu deconectarea utilizatorilor de pe blog27
– menu.php: fișier responsabil cu afișarea meniului. Meniul este diferit pentru vizitatori și pentru utilizatorii logați- posts.php: conține o funcție care extrage din baza de date toate postările existente- register.php: fișier care se ocupă cu înregistrarea vizitatorilor pe blogului- singlepost.php: acest fișier afișeaza întregul conținut al unei postăriFiecare dintre acestea (mai puțin dbconnect.php) conțin în tagul “head” următoarele: <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"><title>Test</title><link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"><link rel="stylesheet" type="text/css" href="style.css"><script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script> – Fișierul allposts.phpAcesta extrage din baza de date toate postările existente. Codul folosit care face acest lucru este următorul:$sql = "SELECT postID, postTitle, postContent, postDate FROM blog_posts";$result = mysqli_query($conn, $sql);De asemenea, în acest fișier sunt incluse următoarele fișiere:- dbconnect.php- menu.php- posts.php- Fișierul createpost.phpAceste permite unui utilizator înregistrat și logat să creeze o postare. După ce utilizatorul publică postarea, aceasta este automat introdusă în baza de date.În primul rând, acesta verifică daca utilizatorul este logat. Verificarea se face folosind aceasta linie de cod:28
<?php if( isset($_SESSION['login_user']) && $_SESSION['login_user'] != '') { ?>Următorul pas este sa creăm două variabile fără valoare care vor reprezenta titlul postării si conținutul acesteia. Si 2 variabile care vor conține posibilele mesaje de eroare. Se realizează astfel:$numePostare = $continutPostare = "";$numePostareErr = $continutPostareErr = “”;Apoi verificăm (din motive de siguranță trebuie sa fie folosită metoda POST, nu GET, pentru a nu fivizibile informații private) daca se foloseste metoda POST pentru a transmite informații către server:if ($_SERVER["REQUEST_METHOD"] == "POST") {Apoi verificăm dacă cele 2 câmpuri, titlul si conținutul, nu sunt goale. În acelasi timp permițând utilizatorului să folosească doar litere si spații în titlul postării:if (empty($_POST["numePostare"])) { $numePostareErr = "Titlul postarii este obligatoriu!"; }else { if (!preg_match("/^[a-zA-Z ]*$/",$numePostare)) { $numePostareErr = "Sunt permise doar litere si spatii!"; } } if (empty($_POST["continutPostare"])){ $continutPostareErr = "Continutul este obligatoriu!"; }Următorul pas este să verificăm dacă variabiele numePostareErr si continutPostareErr sunt goale. Încaz pozitiv, nu există nicio eroare si se introduc în baza de date ID-ul utilizatorulul care a creat postarea, titlul acesteia si conținutul. Realizăm acest lucru cu următoarea bucată de cod: if($numePostareErr == '' && $continutPostareErr == '') { $sql = "INSERT INTO blog_posts (userID, postTitle, postContent) VALUES ( '".$_SESSION["active_user_id"]."', '".$_POST["numePostare"]."', '".$_POST["continutPostare"]."')"; $result = mysqli_query($conn,$sql); header("location: index.php "); }29
Folsind funcția “ header("location: index.php "); “, redirecționăm utilizatorul pe pagina principală după ce postarea a fost creată cu succes.Următorul cod din fisier reprezintă interfața grafică a formularului de creare a postărilor. Asezarea în pagină, stilizarea si optimizarea pentru dispozitivele mobile a fost realizată cu ajutorul framework-ului de CSS numit Bootstrap.Bineințeles, denumirile câmpurilor (input-urilor) pentru titlul si conținutul postării sunt identice cu denumirile variabilelor PHP din codul de mai sus. Astfel, se face legătura între ele.De asemenea, am folosit un editor de text denumit Tiny MCE. Cu ajutorul acestuia, utilizatorii pot stiliza conținutul postărilor după bunul plac.<div class="container"><form method="post" class="form-horizontal"> <div class="form-group"> <label class="control-label col-lg-1 col-md-1 col-sm-1 col-xs-1">Titlu: </label> <div class="col-lg-11 col-md-11 col-sm-11 col-xs-11"> <input name="numePostare" type="text" class="form-control"> <span class="error">* <?php echo $numePostareErr;?></span><br><br> </div> </div> <div class="form-group"> <label class="control-label col-lg-1 col-md-1 col-sm-1 col-xs-1">Continut: </label> <div class="col-lg-11 col-md-11 col-sm-11 col-xs-11"> <textarea name="continutPostare" class="form-control" rows="20"></textarea> <span class="error">* <?php echo $continutPostareErr;?></span><br><br> <script> tinymce.init({selector:'textarea'}); </script> </div> </div> <div class="form-group"> <div class="col-lg-11 col-lg-offset-1 col-sm-offset-1 col-sm-11"> <button type="submit" class="btn btn-default">Posteaza</button> </div> </div></form></div>30
– Fișierul dbconnect.phpAcesta realizează conexiunea aplicației la baza de date. Codul care face acest lucru este următorul:$servername = "127.0.0.1";$username = "root";$password = "";$dbname = "blog";$conn = mysqli_connect($servername, $username, $password, $dbname);if (!$conn) { die("Connection failed: " . mysqli_connect_error());}session_start();Am creat patru variabile. Prima variabilă reprezintă adresa serverului web, a doua reprezintă numele de utilizator pentru baza de date, a treia reprezintă parola bazei de date, iar a patra reprezintă numele bazei de date.Următoarea linie de cod face conexiunea la baza de date folosind datele stocate de variabile.În continuare verificăm daca s-a realizat cu succes conexiunea la baza de date. Dacă acest lucru estepozitiv, atunci folosim funcția session_start() pentru a deschide conexiunea.- Fișierul deletepost.phpAcesta este răspunzător cu stergerea postărilor de către utilizatori. Codul este următorul:if(isset($_SESSION['login_user']) && $_SESSION['login_user'] != '') {echo "Userul este autentificat!!";$sql = " SELECT * FROM blog_posts WHERE postID = '".$_GET["postid"]."' AND userID = '".$_SESSION["active_user_id"]."'";$result = mysqli_query($conn, $sql);if( $result->num_rows == 1) { // userul autentificat a creat postulecho "userul este autorul";// scriem un query care sterge postul cu id-ul din get$sql = "DELETE FROM blog_posts WHERE postID = '".$_GET["postid"]."'";$result = mysqli_query($conn, $sql);header("location: index.php");}}31
Începem prin a verifica dacă utilizatorul este logat pe blog. În acest caz, scriem o comandă de SQL prin care identificăm toate postările care aparțin utilizatorului curent.Următoarea instrucțiune este tot un query de SQL prin care realizăm stergerea postării. Postarea poate fi stearsă cu ajutorul unui buton vizibil doar pentru autorul postării respective.După ce utilizatorul a sters postarea, acesta este redirecționat pe pagina principală denumită index.php.- Fișierul index.phpAcesta reprezintă pagina principală a aplicației. Conține fisierul posts.php care extrage din baza de date postările blogului:require 'posts.php';- Fișierul login.phpAcesta este răspunzător cu sistemul de autentificare al blogului. Logarea utilizatorilor se realizează cu ajutorul acestei bucăți de cod: if($_SERVER["REQUEST_METHOD"] == "POST") { $myemail = mysqli_real_escape_string($conn,$_POST['email']); $mypassword = mysqli_real_escape_string($conn,$_POST['pass']); $sql = "SELECT * FROM users WHERE Email = '$myemail' and Password = '$mypassword'"; $result = mysqli_query($conn,$sql); $row = mysqli_fetch_array($result,MYSQLI_ASSOC); $count = mysqli_num_rows($result); if($count == 1) { $_SESSION['login_user'] = $myemail; $_SESSION['active_user_id'] = $row['userID']; header("location: index.php"); } else { $error = "Your Login Name or Password is invalid"; echo $error; } }În primul rând verificăm dacă se foloseste metoda POST de transmitere a datelor către server. După aceea, creăm două variabile care vor trimite către server email-ul si parola utilizatorului, deoarece acestea sunt folosite pentru autentificare.După aceea, se verifică dacă în baza de date există un utilizator căruia îi corespund datele transmise.În caz pozitiv, se deschide o sesiune pentru acel utilizator, acesta fiind redirecționat pe pagina principală a blogului.32
– Fișierul logout.phpAcesta este răspunzător cu deconectarea utilizatorului. Codul sursa este:unset($_SESSION);session_destroy();session_write_close();header('Location: index.php');die;Se setează variabila $_SESSION pe unset, apoi se distruge sesiunea, iar utilizatorul este redirecționat pe pagina principală.- Fișierul menu.phpAcest fisier este răspunzător cu meniul blogului. Când un vizitator intră pe blog, îi sunt afisate butoanele de logare si înregistrare. Dacă utilizatorul este logat, sunt afisate butoanele de creare postare si de delogare.Meniul a fost realizat cu framework-ul de CSS Bootstrap.- Fișierul posts.phpAcesta extrage din baza de date toate postările existente cu ajutorul unui query de SQL:"SELECT blog_posts.userID, users.Name, blog_posts.postID, blog_posts.postTitle, blog_posts.postContent, blog_posts.postDate FROM blog_posts INNER JOIN users ON blog_posts.userID = users.userID ORDER BY blog_posts.postDate DESC"- Fișierul register.phpAcesta este răspunzător cu înregistrarea vizitatorilor. Am creat variabilele $name, $email, $pass si $gender, cărora le-am dat valori nule.Apoi verificăm dacă metoda de request a serverului este setată pe POST. Daca toate câmpurile au fost completate corect, se execută un query de SQL după ce utilizatorul a apasat butonul de înregistrare prin care se adaugă informațiile în baza de date. $sql = "INSERT INTO users (Name, Email, Password, Gender) VALUES ('".$_POST["name"]."','".$_POST["email"]."','".$_POST["pass"]."','".$_POST["gender"]."')";- Fișierul singlepost.phpAcesta afisează conținutul complet al unei postări când utilizatorul apasă pe butonul de “Citeste maimult”.33
6. Arhitecturi specifice mediului Web. Proiectul România Ungaria6.1 IntroducereAcest proiect are următoarele obiective: – să creeze mai multe joburi, în acelasi timp susținând schimbarea climei- să îi instruiască pe oameni în diverse domenii pentru a-si găsi joburi mai bune si mai potrivite pentru ei- să îi susțină pe managerii comaniilor, start up-urilor si pe oamenii tineri pentru a crea un mediu mai prietenos- să promoveze conceptul de “companii prietenoase cu mediul înconjurător”- pentru a dezvolta abilități de protejare si menținere a mediului înconjurătorProiectul se adresează angajatorilor, managerilor, antreprenorilor si potențialilor antreprenori, tinerilor în căutare de joburi, elevilor si studenților, dar si oamenilor care trăiesc în mediul rural.6.2 Structura site-uluiAcest proiect a fost realizat cu ajutorul platformei numită WordPress. Acesta este un CMS (Content management system, sau sistem de management al conținutului), fiind la ora actuală platforma cea mai populară pentru cei ce doresc să creeze un website, blog sau chiar o aplicație web.Website-ul dispune de următoarele pagini:- Home Page- Project Presentation- Project Events- Project Outputs- Online Training Tool- ContactPagina principală, denumită si Home Page, conține ultimele patru postări de blog. Postările conțin predominant evenimente legate de acest proiect.Pagina “Project Presentation” conține detalii legate de proiect.Pagina “Project Events” conține toate postările de blog legate de evenimentele organizate în cadrul proiectului. Pagina “Project Outputs” prezintă oportunitățile de învățare.34
Pagina “Online Training Tool” va conține un sistem pentru a se oferi training-uri online.Pagina “Contact” conține toate detaliile necesare pentru a lua legătura cu coordonatorii proiectului.5.3 Specificații tehniceWebsite-ul a fost contruit pe platforma WordPress, folosind un “page builder” (este o interfață grafică ce permite crearea de secțiuni si conținut pentru pagini). Tema folosită se numeste BeTheme, iar builderul integrat cu tema se numeste Muffin Builder.Tema conține foarte multe opțiuni ce ne permit să personalizăm site-ul după bunul plac.Asadar, în panoul de administrare al website-ului, cu doar câteva click-uri, putem schimba următoarele:- lățimea maximă a paginii- favicon-ul si logo-ul- putem seta stilul header-ului (prima secțiune a paginilor, inclue meniul si logo-ul de obicei)- putem personaliza meniul- putem sa creăm o pagină unde sa afisăm postări de blog, de asemenea putem personaliza aceasta pagină dupa cum dorim- putem crea pagini în care să prezentăm un eventual portofoliu- avem o secțiune specială unde putem personaliza footer-ul (ultima secțiune a paginilor)- putem personaliza adaptarea site-ului pentru diferite dimensiuni de ecran (responsiveness)- avem opțiuni pentru configurarea SEO- avem o mulțime de optiuni pentru a schimba culorile si fonturile- dispunem de o opțiune pentru a traduce diverse texte din site- putem face copii de rezervă si de asemenea putem scrie cod CSS si Javascript personalizat direct în panoul de administrareDe asemenea, WordPress în sine vine cu multe funcționalități si opțiuni pentru configurarea website-ului. Putem crea postări de blog, putem să adăugăm imagini si video-uri cu doar câteva click-uri, fără a fi nevoie să scriem cod, putem crea, edita si sterge pagini cu doar câteva click-uri, putem să adăugăm si să stergem utilizatori.De asemenea, unul dintre cele mai importante lucruri în WordPress este posibilitatea de a adăuga module. Acestea extind funcționalitatea site-ului si ne permit să îl personalizăm după bunul plac.
35
5.4 Comparatii între blog si proiectul România-UngariaCând vine vorba de comparații între cele 2 website-uri, singurele lucruri asemănătoare sunt funcționalitatea de blog si limbajele de programare folosite.Prima asemănare între website-uri o reprezintă limbajele de programare. Atât aplicația cu funcționalități de blog creată de la zero, cât si site-ul proiectului România-Ungaria creat în WordPress folosesc HTML, CSS, si PHP, singura deosebire fiind faptul că site-ul România-Ungaria foloseste si Javascript.A doua asemănare o reprezintă funcționalitatea de blog. Ambele website-uri permit utilizatorilor să se înregistreze, logheze, să creeze postări folosind un editor de text, să le citească si să îsi steargă propriile postări. Un lucru care lipseste la aplicația creata de la zero sunt rolurile de utilizator. Spre deosebire de WordPress, nu putem crea un utilizator cu permisiunile unui administrator, care să poată de exemplu să steargă orice postare doreste. De asemenea, baza de date a blogul nostru este mult mai simplificată decât cea de la wordpress. Baza noastră conține doar două tabele, care stochează datele utilizatorilor si conținutul postărilor.Proiectul România-Ungaria dispune de următoarele funcționalități în plus față de blogul nostru:- se pot crea, edita, sterge pagini din panoul de administrare- se poate edita si stiliza meniul din panoul de administrare- se pot încărca imagini si video-uri din panoul de administrare- se pot crea, edita si sterge postări din panoul de administrare- există posibilitatea de a aloca roluri pentru utilizatori- există posibilitatea de a stiliza site-ul direct din panoul de administrare- se poate adăuga conținut pe pagini din panoul de administrare (text si poze)- există posibilitatea de a adăuga module si teme (secvențe de cod care extind funcționalitatea) direct din panoul de administrare al site-ului
36
Bibliografie[1] Alex Goldstein, Louis Lazaris, Estelle Weyl (2015). HTML5 & CSS3 For The Real World: Powerful HTML5 and CSS3 Techniques You Can Use Today!, 2nd Edition[2] Joel Murach, Ray Harris (2017). Murach’ s PHP and MySQL, 3rd Edition[3] Doug Bierer (2016). PHP 7 Programming Cookbook[4] Stephane Faroult (2006). The Art of SQL, 1st Edition[5] https://ro.wikipedia.org/wiki/HyperText_Markup_Language[6] https://ro.wikipedia.org/wiki/HTML5[7] https://www.w3.org[8] https://ro.wikipedia.org/wiki/Cascading_Style_Sheets[9] https://it.webdesign-galaxy.ro/ce-este-css/[10] https://developer.mozilla.org/ro/docs/Learn/Getting_started_with_the_web/CSS_basics[11] https://ro.wikipedia.org/wiki/PHP[12] https://www.php.net/manual/ro/index.php[13] https://ro.wikipedia.org/wiki/SQL[14] https://www.w3schools.com/sql/default.asp
DECLARAȚIE DE AUTENTICITATEA PROIECTULUI DE FINALIZARE A STUDIILORTitlul proiectului ___________________________________________________________________________________________________________________________________________________________________________________________Autorul proiectului _____________________________________________Proiectul de finalizare a studiilor este elaborat în vederea susținerii examenuluide finalizare a studiilor organizat de către Facultatea_______________I.E.T.I._________________________ din cadrul Universității dinOradea, sesiunea________iulie_________ a anului universitar __2019___________.Prin prezenta, subsemnatul (nume, prenume, CNP)___________________________________________________________________________________________________________________________________________________________,declar pe proprie răspundere că aceast proiect a fost scris de către mine, fără nici unajutor neautorizat și că nici o parte a proiectului nu conține aplicații sau studii de cazpublicate de alți autori.Declar, de asemenea, că în proiect nu există idei, tabele, grafice, hărți sau altesurse folosite fără respectarea legii române și a convențiilor internaționale privinddrepturile de autor.Oradea,DataSemnătura
Copyright Notice
© Licențiada.org respectă drepturile de proprietate intelectuală și așteaptă ca toți utilizatorii să facă același lucru. Dacă consideri că un conținut de pe site încalcă drepturile tale de autor, te rugăm să trimiți o notificare DMCA.
Acest articol: FUNDAȚIA PENTRU CULTURĂ ȘI ÎNVĂȚĂMÂNT “IOAN SLA VICI”TIMIȘOARAUNIVERSITATEA “IOAN SLA VICI” TIMIȘOARA FACULTATEA DE INGINERIE DOMENIUL CALCULATOARE… [626444] (ID: 626444)
Dacă considerați că acest conținut vă încalcă drepturile de autor, vă rugăm să depuneți o cerere pe pagina noastră Copyright Takedown.
