CATEDRA INFO RMATICĂ ȘI TEHNOLOGII INFORMAȚIONALE [631409]
1
MINISTERUL EDUCAȚIEI AL REPUBLICII MOLDOVA
UNIVERSITATEA DE STAT DIN TIRASPOL
FACULTATEA F IZICĂ, MATEMATICĂ ȘI TEHNOLOGII INFORMAȚIONALE
CATEDRA INFO RMATICĂ ȘI TEHNOLOGII INFORMAȚIONALE
Domeniul general de studii:
Științe ale Educației
Specialitatea:
Informatică
TEZĂ DE LICENȚĂ
Tema : COMUNICA ȚII ITERATIVE
Autor :_______________
Studenta ciclului I, Victoria Macovei
Conducător științific:_______________
dr., conf. univ., Dorin Pavel
Șeful catedrei ITI :_____________
dr.hab., prof. univ., Liubomi r Chiriac
CHI ȘINĂU,2015
2
CUPRINS:
INTRODUCERE …………………………………………………… …………………………. ……… 3
Capitolul I. LIMBAJE ȘI TEHNOLOGII DE IMPLIMENTARE A
APLICA ȚIEI WEB ……………………………………………….. …………………………. ……… 4
I.1 HTML, CSS ………………… …………………………………………………… 5
I.2 PHP, M ySQL …………………………………………………………………. 6
I.3 Wamp, Bootstrap și phpMyAdmin……………………………… ………………………… 8
Capitolul II. PREZENTAREA APLICA ȚIEI ………… ………………………… ……… 10
II.1 Func ționalita ți pentru utilizatori ………………………………. ……………………… 12
II.2 Func ționalita ți pentru administrator .. ………………………. ……………………….. 20
II.3 Extensiile aplica ției web …………………………………………… ………… …………….. 23
CONCLUZII .. ……………………………………………………………….. ……………………….. 40
BIBLIOGRAFIE …………………………………………………………… ………………………… 41
3
INTRODUCERE
În ultimul timp evolu țiile succesive ale cunoașterii umane în tehnologia
informației și acomunicațiilor au condus la o serie de schimbări substanțiale în
modul de producere, distribuție, organizare și prezentare a informației. Societatea in
care trăim astăzi este una informa ționala, în condi țiile în care societatea este practic
inundată de media comunicarea si accesarea informa țiilor se face intr-o mare parte
prin intermediul internetului rețelelor sociale , a blogurilor , a forumurilor și a
sistemelor de cautare. Deaceea prezentarea informa ției in format electronic este
mult mai accesibila .Societatea din ziua de azi este caracterizată de lipsa timpului și
oamenii doresc să obțină informa ții dintr -un singur loc, rapid și accesul la
informa ție sa se faca de oriunde. Din acest motiv comunicarea apare prin
intermediul telefonului și a calculatorului. Pentru a ajunge la rezultate concrete
trebuie sa profităm de toate uneltele pe care le pune la dispozi ție internetul. În
sprijinul ideii de mai sus am ales ca tema pentru lucrarea de licen ța: “Comunica ții
Iterative ” și anume un forum, deoarece forumurile reprezintă o modalitate creative
și atractivă de transmitere și achizi ționare a informa țiilor.
Lucrarea de fața prezinta proiectul de licen ță începînd cu aspectele generale
pentru a continua mai apoi cu detaliile tehnice despre implimentarea și dezvoltarea
proiectului. Scopul proiectul ui prezentat in această lucrare a fost stabilit în
colaborare cu domnul profesor coordonator Pavel Dorin. Cerin țele proiectului sunt:
• un design simplu , placut și modern.
• navigare u șoară și accesibilă pentru utilizatori
• încărcarea rapidă a paginilor
• tehnic compatibil cu majoritatea navigatoarelor web
• bine structurat din perspectiva informa țiilor oferite vizitatorilor, clar și concis
• informativ și util
Pentru elaborarea acestui proiect am stabilit structura siteului, necesită țile
tehnice și func ționale ale acestuia. În partea de design a proiectului, am determinat
cele mai potrivite moduri de exprimare vizuală. În partea tehnică, am implementat
platforma aplica ției web .
4
I. LIMBAJE ȘI TEHNOLOGII DE IMPLIMEN TARE A APLICA ȚIEI
WEB
O aplica ție web este o aplica ție client -server care cuprinde 2 păr ți: partea de
front -end (client) și partea de back -end (server).
Modelul client/s erver este o arhitectură ce descrie rela ția dintre 2 programe
care se află fie pe acela și calculator, fie pe calculatoare diferite. Clientul face o
cerere la server, iar serverul procesează cererea și returnează un răspuns.
În cazul aplica țiilor web, brows er-ul (navigatorul) este clientul care trimite
cereri unui server web. Un client poate solicita pagini statice, care nu necesită
niciun fel de procesare pe partea de server, sau pagini dinamice, care cuprind script –
uri scrise într -un anumit limbaj de progr amare pe care serverul web le interpretază
și le trimite înapoi clientului sub formă d e pagină statică. Într-o aplica ție web, partea
de client (HTML, JavaScript) se ocupă cu prezentarea informa țiilor, iar partea de
server (PHP, ASP, Perl) se ocupă cu stocarea și procesarea acestora.
Fig. 1.1 – Schema unei aplica ții web
5
I.1 HTML, CSS
Pentru ca o pagină web să poată fi afi șată într -un browser (navigator), este
necesară utilizarea unui limbaj de marcare, care are ca scop structurarea și
prezentarea documentului. HTML (acronimul de la HyperText Mark-up Language)
este limbajul de marcare care stă la baza paginilor web și folose ște etichete
denumite tag -uri care oferă indica ții de redare a informa ției. Browser -ul
interpretează tag -urile, și astfel documentul este structurat în diferite moduri: tabele,
liste, paragrafe, titluri e tc. [5]
Standardele HTML sunt men ținute de World Wide Web Consortium (W3C),
o ascocia ție fondată și condusă în prezent de Tim Berners -Lee [3], care are ca scop
dezvoltarea standardelor pentru World Wide Web în vederea cre șterii și a
îmbunătă țirii acestuia, pentru a -l face accesibil tuturor utilizatorillor.
Orice fi șier HTML ar trebui să înceapă cu declara ția <!DOCTYPE>, care
informează browser -ul despre versiunea de HTML în care este scrisă pagina.
Următorul tag este <html>..</html>, tag -ul care le cuprinde pe toate celelalte și care
spune browser -ului că documentul curent este de tip HTML. Apoi este elementul
<head>..</head>, care adaugă informa ții despre documentul HTML, cum ar fi titlu
(prin tag -ul <title>), cuvinte cheie, descriere, detalii despre autor (folosind tag -ul
<meta>, care ajută la controlarea modului în care motoarele de căutare indexează
site-ul) și adaugă, de asemenea, fi șiere externe utilizând tag -ul <link>. Zona care va
fi afi șată în browser este delimitată de <body>..</body>. Aceasta cupri nde toate
elementele fi șierului HTML: imagini, câmpuri, text, liste, tabele etc.
În timp ce HTML structurează con ținutul unui document, este nevoie de un
instrument care să îl stilizeze și să îl formateze. CSS ( Cascading Style Sheet) este
un limbaj de stil izare care se ocupă cu acest lucru, personalizând tag -urile
(etichetele) HTML, XML și XHTML, iar standardele sale sunt men ționate tot de
W3C [4]. Utilizând CSS se poate formata orice element al unei pagini web, de la
culorile textelor, margini, imagini și culori de fundal la pozi ționarea elementelor în
pagină, acest lucru realizându -se prin proprietă ți. CSS are o sintaxă simplă,
proprietă țile fiind specificate prin cuvinte cheie din limba engleză: font, font -size,
text-align, margin, padding, float, height, border, background etc.
6
Fig. 1.2 – Sintaxa Css
CSS se poate adăuga direct în interiorul tag -urilor HTML prin atributul
„style” (de exemplu <p style=”font -size: 13px;”> Paragraf </p>), acesta fiind numit
CSS inline, sau în partea de head a fi șierului HTML cu ajutorul tag -ului <style>,
numit CSS intern:
<head>
…
<style type=”text/css”>
p {
font-size: 13px;
}
… </head>
Cea mai bună metodă însă este utilizarea unui fi șier CSS extern, care să fie
inclus tot î n partea de head a fi șierului HTML cu ajutorul tag -ului <link>:
<link rel=”stylesheet” type=”text/css” href=”style.css”> , deoarece modificările
ulterioare să fie făcute numai în fi șierul CSS, nu și în HTML.
I.1 PHP, Apache și MySQL
PHP este un limbaj de scripting folosit pe scară largă în dezvoltarea paginilor
și a aplica țiilor web. A fost creat de Rasmus Lerdof în anul 1995, din dorin ța
acestuia de a crea un script pentru a urmări numărul de vizitatori ai site -ului său. [1]
7
Inițial PHP însemna Personal Home Page și a fost lansat ca un proiect open
source, de -a lungul timpului mul ți dezvoltatori alăturându -se la perfec ționarea soft –
ului. În 1997 PHP a fost numit cum este și în prezent ” PHP: Hypertext
Preprocessor” și reprezintă unul d intre cel mai importante și populare limbaje de
programare web. [1] Fiind un limbaj de scripting, PHP aduce multe avantaje
programatorilor, de exemplu codul scris nu trebuie compilat, ceea ce îl face u șor de
editat și testat. Majoritatea limbajelor de prog ramare necesită compilarea fi șierelor
în cod ma șină înainte de rulare, proces care presupune mult timp. Rulat din linia de
comandă, PHP permite crearea de aplica ții independente, însă principalul scop al
PHP-ului este crearea de script -uri pentru a fi rula te pe un server web, permi țând
modificarea paginilor web înainte ca acestea să fie transmise de server către
browserele utilizatorilor.
Pentru utilizarea PHP -ului pe un site web, este nevoie de un server care să
proceseze script -uri PHP. Apache este un s erver HTTP de tip open source, care,
odată instalat pe calculator, permite dezvoltatorilor să ruleze scripturi PHP local,
fapt pentru care, Apache este un element important pentru dezvoltarea locală. [1]
Apache este cel mai popular server web în prezent1, având a șadar o
contribu ție mare în dezvoltarea Internetului. Există multe module (plugin -uri) care
au fost create pentru a extinde func ționalitatea serverului Apache. Printre cele mai
importante func ționalită ți ale serverului Apache se numără suportul pent ru CGI
(Common
Gateway Interface) și găzduirea virtuală (posibilitatea găzduirii mai
multor site -uri simultan pe acela și server).
Pentru site -urile dinamice o componentă importantă este stocarea datelor
astfel încât ele să poată fi modificate rapid și ușor – acest lucru fiind principala
diferen ță între
un site dinamic și un site static realizat în HTML. Deoarece PHP nu
oferă o metodă
eficientă de stocare a informa țiilor, este nevoie de un sistem de
gestiune a bazelor de date rela ționale (SGBD).
MySQL este u nul dintre cele mai populare SGDB -uri open source în prezent2
și este foarte des întâlnit împreună cu PHP. Acesta a fost ini țial lansat în 1996 și
8
este denumit după numele fiicei principalului autor și co -fondator Michael
Widenius[2] , My, și SQL (Structur ed Query Language).
MySQL permite dezvoltatorilor să stocheze datele în tabele structurate pe
linii și coloane pentru ca informa ția să fie bine organizată, u șor de găsit, modificat,
adăugat și șters. MySQL este un server de baze de date SQL multi -user ( controlează
accesul la date pentru a garanta că mai mul ți utilizatori pot lucra simultan cu
acestea ) și multi -thread (mai multe fire de execu ție).
MySQL utilizează limbajul de programare SQL, limbaj care se ocupă atât cu
inserări, interogări, ștergeri și mod ificări asupra informa țiilor dintr -o bază
de date, cât și cu controlul accesului la o bază de date. SQL este un limbaj
specific pentru gestiunea datelor în SGBD -uri. HTML, CSS și jQuery .
I.3 Wamp, Bootstrap și phpMyAdmin
Wamp – platformă pentru dezvoltarea de site -uri sub sistemul de operare
Windows. Este un acronim pentru o platformă de găzduire a siteurilor web formată
din componente libere și cu sursă deschisă (și gratuite). Acronimul vine de la
inițialele numelor aplica țiilor folosite ini țial:
Windows – sistem de operare
Apache – server HTTP
MySQL – bază de date
Bootstrap – Este in momentul de fa ță cel mai utilizat frame work pentru
dezvoltarea interfe țelor web devenind foarte rapid standardul in crearea template –
urilor pentru
principalele sisteme CMS cum sunt WordPress si Joomla. Responsive
Web Design rep rezintă tehnica ce sugereaza ca design -ul web si codarea unui
website trebuie sa raspundă comportamentului si mediului utilizatorului in func ție
de rezolu ția ecranului, platforma si orientare.
Putem spune deci ca Boostrap este un instrument utilizat pentru a gestiona
cat mai bine faza ini țiala a unui proiect deoarece putem conta pe o serie de
componente care pot fi reutil izate si personalizate oferindu -ne o baza solida de
pornire a proiectelor noastre pentru a nu fi nevoiti sa incepem de la zero.
9
phpMyAdmin este un sistem de gestiune a bazelor de date MySQL liber
adica open source , scris în PHP și destinat administrării bazelor de date prin
intermediul unui browser web . Prin phpMyAdmin se pot întreprinde diverse opera ții
cum ar fi crearea, modificarea sau ștergerea bazelor de date, tabel elor, câmpuri lor
sau rândurilor și executarea de comenzi (interogări) SQL.
10
II. PREZENTAREA APLICA ȚIEI
Pentru a explica m odul de func ționare a aplica ției vom descrie modul în care
paginile forumului sunt generate dinamic de către scripturile PHP. Deasemenea
vom expune func țiile create si vom descrie modul de lucru cu codul. Aplica ția data a
fost creata prin metoda Model -View -Controller(MVC).
Model -view -controller este un model arhitectural utilizat în ingineria
software . Succesul modelului se datorează izolării logicii de business fa ță de
considerentele interfe ței cu utilizatorul, rezu ltând o aplica ție unde aspectul vizual
sau/și nivelele inferioare ale regulilor de business sunt mai u șor de modificat, fără a
afecta alte nivele.
Fig. 1.2 Schemă conceptuală a modelului. Liniile punctate arată legături indirecte
Model
Această parte a controlatorului manipulează opera țiunile logice și de utilizare
de informa ție (trimisă dinainte de către rangul său superior) pentru a rezulta de o
formă u șor de în țeles.
View
Acestui membru al familiei îi corespunde reprezentarea grafică, sau mai bine
zis, exprimarea ultimei forme a datelor: interfa ța grafică ce interac ționează cu
utilizatorul final. Rolul său este de a eviden ția informa ția ob ținută până ce ea ajunge
la control ator.
11
Controller
Cu acest element putem controla accesul la aplica ția noastră. Pot fi fi șiere,
scripts sau programe, in general orice tip de informa ție permisă de interfa ță. În acest
fel putem diversifica con ținutul nostru de o formă dinamică și statică, în acela și
timp.
Cu ajutorul Controllerului, modelului sau a view putem manipula
următoarele elemente: date. Depinde de noi cum manipulăm și interpretăm aceste
"date". Acum cunoa ștem că unicele date ale unei adrese web statice sunt: ob ținerea
unui fi șier în discul dur (hard disk) sau din Internet, etc. și, interpretat
(recunoscut/decodificat) sau nu, serverul răspunde.
Modelul, precum controllerul și view manipulează toate datele ce se
relaționeză cu el. Și numai View poate demonstra această informa ție. În acest fel am
demonstrat ierarhia programului nostru: Controlator -Model -Viziune.
Pentru o aplica ție web u șoara este necesar să stabilim următoarele elemente:
bază (MVC) .
Controller – acesta trebuie să fie capabil de a manipula rute, fi șiere, clase, metode și
funcții
2. Model – este asemănător unui script obi șnuit într -un server, doar că reg rupat sub
un model reutilizabil.
3. View – asemănător includerii unui fi șier în aplica ția noastră.
Un sistem
1. Router – cu el putem împăr ți cerin țele noastre fără multe condi ționale
2. Incărcător (Loader)
12
II.1 Func ționalita ți pentru utilizatori
Această aplicatie este , cu un aspect plăcut, p rofesional, și cu un web design
responsive.
Fig. 2.1 – Pagina principala la calculator
Designul web responsive este creat cu ajutorul frameworkului bootstrap
Sistemul grila Bootstrap permite până la 12 coloane pe pagină.
Sistemul grila bootstrap este receptiv, iar coloanele vor re-aranja automat în func ție
de dimensiunea ecranului.
Sistemul B ootstrap re țea are patru clase:
xs (pentru telefoane)
sm (pentru tablete)
md (pentru desktop -uri)
lg (pentru desktop -uri mai mari)
13
Fig. 2.2 Pagina Principala la dimensiuni mici
Pentru utilizatori contează în primul rînd u șurința de navigare și ușurința cu
care ei găsesc informa țiile dorite. Pentru a ajuta în această direc ție forumul oferă
posibilitatea de căutare în con ținut.
Aplicatia dispun e de următoarele module:
Blog ;
Categorii ;
Populare ;
14
Contact;
Ultimele Adăugate ;
Căutare .
Pe prima pagină sunt listate ultimele articole,cele mai populare.
Blogul permite adăugarea de articole sortate cronologic, pe categorii.
Pagina de contact permite utilizatorilor să contacteze cu administratorul .
Aplica ția oferă, diverse func ționalită ți cum ar fi: înregistrare, autentifi care, ,
adăugarea proiectelor proprii de către studen ți.
Raspunzător de înregistrarea utilizatorilor este controllerul user.php
<?ph p if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class User extends Controller
{
public function __construct()
{
parent::Controller();
$this ->load ->model('user_model');
}
public function index()
{ $data = array();
if(($this ->session ->userdata('user_name')!=""))
{
$this ->show();
}
else{
15
$this ->load ->view('preheader_view',$data);
$this ->load ->view("registration_view.php", $data);
$this ->load ->view('footer_view',$data);
}
}
public function show()
{
$data = array();
$data['latest_materials'] = $this ->materials_model ->get_latest();
$data['categories'] = $this ->materials_model ->get_categories();
$data['popular_materials'] = $this ->materials_model ->get_popular();
$name='pages/mainpage';
$this ->display_lib ->user_page($data,$name);
}
public function login()
{
$email=$this ->input ->post('email');
$password=md5($this ->input ->post('pass'));
$result=$this ->user_model ->login($email,$password);
if($result) $this ->show();
else $this ->index();
}
16
public function registration()
{
$this ->load ->library('form_validation');
$this ->form_validation ->set_rules('user_name','UserName',
'trim|required|min_length[4]|xss_clean');
$this ->form_validation ->set_rules('em ail_address','YourEmail',
'trim|required|valid_email');
$this ->form_validation ->set_rules('password','Password',
'trim|required|min_length[4]|max_length[32]');
$this ->form_validation ->set_rules('con_password', 'Password Confirmation',
'trim|required|ma tches[password]');
if($this ->form_validation ->run() == FALSE)
{
$this ->index();
}
else
{
$this ->user_model ->add_user();
$this ->show();
}
}
public function logout()
{
$newdata = array(
17
'user_id' =>'',
'user_name' =>'',
'user_email' => '',
'logged_in' => FALSE,
);
$this ->session ->unset_userdata($newdata );
$this ->session ->sess_destroy();
$this ->index();
}
}
?>
Controllerul user.php î ncarca modelul user_model.php care lucreaza cu baza de date
cu ajutorul func țiilor care le con ține login() și add_user().
function login($email,$password)
{
$this ->db->where("user_email",$email);
$this ->db->where("user_password",$password);
$query=$this ->db->get("ci_users");
if($query ->num_rows()>0)
{
foreach($query ->result() as $rows)
{
//add all data to session
18
$newdata = array(
'user_id' => $rows ->user_id,
'user_name' => $rows ->user_name,
'user_email' => $rows ->user_email,
'logged_in' => TRUE,
);}
$this ->session ->set_userdata($newdata);
return true;
}
return false;
}
Un utilizator se poate autentifica dacă are deja un cont.
Pagina disponibila pentru logare se co ține in in views/registration_view.php
public function add_user()
{
$data=array(
'user_name'=>$this ->input ->post('user_name'),
'user_email'=>$this ->input ->post('email_address'),
19
'user_password'=>md5($this ->input ->post('password'))
);
$this ->db->insert('ci_users',$data);
}
Deasemenea utilizatorul isi poate crea un cont prin completarea cimpurilor
username,email si password.
Pagin a disponibila pentru inregistrare se co ține in in views/registration_view.php
Fig. 2.4 – Înregistrare utilizator
Utilizatorii deasemenea au posibil itatea de a posta noi materiale.Lucrul acesta se
realizează cu ajutorul func ției ad().
public function ad()
{
if (isset($_POST['add_button']))
{
$this ->form_validation ->set_rules($thi s->materials_model ->add_rules);
20
if ($this ->form_validation ->run() == TRUE)
{
$this ->materials_model ->ad();
$data = array('info' = > 'Materialul a fost adaugat');
}
else
{
$name = 'materials/ad';
}
}
else
{
$name = 'materials/ad';
$this ->display_lib ->user1_page($data = array(),$name);
}
}
II.2 Func ționalita ți pentru administrator
După autentificare, administr atorul poate accesa paginile și sec țiunile de
administrare ale siteului conform drepturilor ce i -au fost acordate. De asemenea, el
își poate modifica profi lul:numele și parola.
Administratorii care au drepturile necesare pot să adauge sau să șteargă
utilizatori și pot să le editeze drepturile. Pe lîn gă editarea paginilor, administratorii
pot edita, adăuga, sau sterge materiale, categorii și comentarii.
21
Fig. 2.5 – Pagina de editare a administratoului
Deasemenea pagina administratorului con ține date despre numarul total de
materiale care sunt in baza,numarul total de comentarii ,de categorii cit si numarul
total de pagini.
Fig. 2.4 – Datele de pe pagina administratorului
22
Func ția care ofera numarul total de materiale :
public function get_all($limit,$start_from)
{
$this ->db->order_by('material_id','desc');
$this ->db->limit($limit,$start_from);
$query = $this ->db->get('materials');
return $query ->result_array();
}
Func ția care ofe ra numarul total de comentarii
public function get_all($limit,$start_from)
{
$this->db->order_by('comment_id','desc');
$this ->db->limit($limit,$start_from);
$query = $this ->db->get('comments');
return $query ->result_array();
}
Func ția care ofera numarul total de categorii
public function get_all()
{
$query = $this ->db->get('sections');
return $query ->result_array();
}
Func ția care ofera numarul toatal de pagini
public function get_all()
{
23
$query = $this ->db->get('pages');
return $query ->result_array();
}
II.3 Extensiile aplica ției web
Tate aceste mape le punem într-un directori u pe server numit public.
Tot proiectu nostr u este concentrat in in mapa system /aplication
system -mapa conține toate fi șierele de sistem care sunt necesare pentru lucru.
application – permite să preluam fi șierele care se referă direct la această declara ție.
24
config – conține toate fi șierele de configurare care includ informa ții care trebuie să
fie acum încărcate și informa ții de baze de date.
controllers -contine toate controlerele pentru aplicatie.
errors -mapa l contine t oate modelele pagini lor de eroare pentru aplicatie . Când
apare o eroare, se generează o pagină de la unul din modele .
hooks -mapa conține citate care schimba func ționarea fi șierelor de bază. Citate sunt
utilizate numai de către utilizatori experimenta ți.
language -folderul con ține o linie de text, care poate fi descărcat folosind biblioteca
pentru crearea de aplicatii multi -lingvistice.
libraries -mapa conține toate bibliotecile care sunt specifice pentru aplicatie.
models -folderul contine toate modelele pent ru aplica ții.
views -mapa contine toate punctele de vedere pentru aplicatie.
cache -pastreaza toate fisierele cache,care au fost create de cache biblioteca.
codeigniter – aici se pastreaza fisiere care ne permit sa lucram cu aplicatia .
database -conține toate driverele (drivere) și clase care ne permit să ne conectam la
baza de date.
fonts -stochează toate fonturile care sunt necesare pentru a rula aplica ția.
helpers -acest fi șier contine ajutoare care vor fi disponibile pentru toate aplica țiile.
language -mapa conține fi șierele de limbă, care sunt utilizate pentru dosa re ajutoare
și libaries. Putem pune, de asemenea, propriile dosare de limbă vor fi disponibile
pentru aplica ția dumneavoastră.
libraries -conține bibliotecile de bază pentru aplicare.
logs-maps conține toate jurnalele care au fost create în timpul aplicatiei.
plugin -coțtine toate plug -in-uri pe care le putem folosi.
Pentru a utiliza aplica ția noastră, avem nevoie pentru a configura mai multe
fișiere. În primul rând avem nevoie pentru a specifica URL -ul cererii. Pentru a face
acest lucru, trebuie să meargă system / aplicattion / config / config.php și sa
schimbam elementul masivului base_url, pentru a indica folder ul nostru pe server.
1
$config['base_url'] = " http://localhost/ ";
25
Pentru a utiliza baza de date, accesam system/ application/ config /
database.php și setam următoarele elemente ale masivului cu valorile
corespunzătoare.
1
2
3
4
5 $db['default']['hostname'] = "localhost";
$db['default']['username'] = "snik";
$db['default']['password'] = "snik09";
$db['default']['database'] = "proiect";
$db['default']['dbdriver'] = "mysql";
În plus, din moment ce vom folosi des baza de date, am dori ca aceasta sa se
descarce aut omat, astfel încât să nu o descarcam de fiecare dată când ne vom
conecta. Pentru aceasta vom deschide:
system / application / config / autoload.php și vom face următoarele:
1 $autoload['libraries'] = array('database');
În prezent, dosarul care ruleaza aplicatia noastra , il putem găsi în folderul
system/ application / controllers.El este implicit setat in : system / application /
config / routes.php.
1 $route['default_controller'] = "pages/show/index"
Aplica ția noastră are un view de care avem nevoie si care se afla in:
system/ application/view/. Creem o bază de date, și numele acesteia
‘proiect’.Executam interogarile SQL necesare folosind PhpMyAdmin,pentru
crearea tabelelor necesare si anume: ‘ci_sessions’ , ’ci_users’ , ‘comments’ ,
‘materials’ , ‘pages’ , ‘preferences’ , ‘sec tions’.
Modelele nu sunt de bază pentru aplicatia noastră, dare le sunt destul de
importante. Modelele noastre – sunt ni ște clase PHP simple care con țin func ții
pentru a lucra cu informa ții din baza de date. Ele se afla in system/ application /
models .
26
În cadrul claselor vom crea mai multe funcții. Func ția GetData o vom
folosi pentru a interoga baza de date.
Deasemenea vom crea controllere care vor afi șa, și incarca modele. Astfel, atunci
când mergem la adresa http: //localhost/index.php/, sa vedem datele din baza de
date. În sistemul system / application / controllers vom crea mai multe fisiere
În aceste fisiere vom crea clase care vor avea acela și nume ca și fișierul. De
asemenea vom crea functia index , această func ție va afișa pagina, atunci când nu
există alte reprezentări . In func ția controllerului index trebuie să încărcam modele,
interogari a bazei de date. Odată ce am încărcat un model, putem intra în ea, prin
numele modelului ei și func ției specifice. Pentru a tr ansmite date, trebuie să
transformam aceste date într -un masiv și să le transmitem in forma de masiv.
Fișierele view – sunt niste fișiere care constau din pagina HTML. Vom crea
mai multe fisiere view in system/application/views, deoar ece pagina noastra w eb
va fi impar țita pe blocuri . Prin urmare avem urmatoarele fi șiere
27
În continuare c reem un șablon HTML. Pentru a afi șa toate datele din baza de
date, vom folosi citate le foreach, care vor alege toate elementele.
Sintaxa PHP, permite un mod convenab il de a afișa înregistrări și ne salveaza
mult timp. Pentru ca lucrul sa fie mai eficient vom deschide fisierul config.php în
system/ application / config / și vom schimba elementul masivului index_page la o
linie goala.
1 $config['index_page'] = "";
La fel trebuie să punem valoarea TRUE pentru rewrite_short_tags, în acela și
fisier config.php system/application/config /.
1 $config['rewrite_short_tags'] = TRUE;
Clasa session ne permite să controlă m starea utilizatorilor. Clasa session
stochează informa ții despre fiecare sesiune, sub forma de date serializate ( și
opțional criptate) într -un cookie. Ea sus ține, de asemenea, date de sesiune într -un
tabel in baza de
date, pentru o mai mare securitate, care ne permite să asociem
cookie al ut ilizatorului si id de sesiune. Î n mod implicit numai cookie este salvat.
Pentru a ini țializa clasa session manual în constructorul controlerului, utilizam
$this ->load ->library :
Deasemenea vom î ncarca si alte biblioteci de care vom avea nevoie
$autoload['libraries'] = array('database','session','form_validation', 'auth_lib',
'display_lib');
28
Obiectul î ncarcat din biblioteca session este disponibil pentru utilizare ca :
$this ->session
Orice informatie din masivul session poate fi obtinuta in felul urmator:
$this ->session ->userdata(' item ');
Unde item este elementul masivului corespunzătoar pe care dori ți să-l
primi ți.
În aplicatia data vom folosi aceasta instructiune pentru a afisa numele
utilizatorului logat in partea de sus a paginii
Dupa cum am mentionat mai sus machetul sitelui dat este impar țit pe blocuri .
Toate aceste blocuri se contin in folderu l system/ application /views.
Fisierul preheader_view.php incarca fisierele css si inceputul sesiunii.
În fisierul top_navigation_view.php am creat bara de navigare.
Fisierul rightblock_view.php este destinat pentru partea drea pta a aplicatiei
date,in care este fi situata caseta search , mesajul de bun venit, categoriile , articolele
populare si ultimele adaugate.
Pentru o navigare mai u șoara si pentru comodita țile utilizatorului aplica ția
este predispusa cu un motor de cautare.
Cu ajutorul lui, la dorin ța utilizatorului informa ția va fi prelucrata din arhiva
,din materialele populare,ultimile adaugate si din cat egorii cu ajutorul func ției
search care se afla in controlle rul administration.php.
public function search($start_from = 0)
29
{
$this ->load ->library('pagination');
$this ->load ->library('pagination_lib');
$this ->load ->helper('text');
$data = array();
$data['latest_materials'] = $this ->materials_model ->get_latest();
$data['archive_list'] = $this ->administration_model ->get_archive();
$data['popular_materials'] = $this ->materials_model ->get_popular();
$limit = $this ->config ->item('search_per_page');
if (isset($_POST['search_button']))
{
$this ->form_validation ->set_rules($this ->administration_model –
>search_rules);
$val_res = $this ->form_validation ->run();
$ses_search = array();
$ses_ search['val_passed'] = '';
$ses_search['search_query'] = '';
$this ->sess ion->set_userdata($ses_search);
if ($val_res == TRUE)
{
$search = $th is->input ->post('search',TRUE);
$searc h = htmlspecialchars($search);
$ses_search = array();
$ses_ search['val_passed'] = 'yes';
30
$ses_sear ch['search_query'] = $search;
$this ->sess ion->set_userdata($ses_search);
$msearch_results = $this ->administration_model –
>materials_search ($search,$limit,$start_from);
if (empty ($msearch_results))
{
$data[ 'info'] = 'Informatia nu a fost gasita';
$name = 'info';
$this ->display_lib ->user_info_page($data,$name);
}
else
{
$total = $msear ch_results['counter'];
$settings = $this ->pagination_lib ->get_setti ngs('search','',$total,$limit);
$this ->pag ination ->initialize($settings);
$data['msearch _results'] = $msearch_results;
$data['page_nav'] = $th is->pagination ->create_links();
$name = 'admin/search';
$this ->display_lib ->user_info_page($data,$name);
}
}
else
{
31
$data['i nfo'] = 'Parametrii de cautare sunt incorecti';
$name = 'info';
$this ->display_lib ->user_info_page($data,$name);
} }
else
{
if ($this ->sess ion->userdata('val_passed') === 'yes')
{
$search = $this ->session ->userdata('search_query');
$msearch_results= $this ->administration_model –
>materials_search($search,$limit,$start_from);
if (empty($msearch_res ults))
{
$data['info'] = 'Informatia nu a fost gasita';
$name = 'info';
$this ->display_lib ->user_info_page($data,$name);
}
else
{
$total = $msearch_results['counter'];
$settings = $this ->pagination_lib ->get_setti ngs('search','',$total,$limit);
$this ->pag ination ->initialize($settings);
$data['msearch_results'] = $msearch_results;
$data['page_nav'] = $thi s->pagination ->create_links();
$name = 'admin/search';
32
$this ->display_lib ->user_info_page($data,$name);
}
}
else
{
$data['info'] = 'Paremetrii gresiti de cautare';
$name = 'info';
$this ->display_lib ->user_info_page($data,$name);
}
}
} }
În urma ca utării informa ția este pusa la dispozi ția utilizatorilor si cuvintele
care au fost introduse pentru căutare sunt eviden țiate.
33
Tot î n partea dreapta a apl icației se afla si categoriile din care face parte
informa ția care este adaugata pe site. Secțiunea categorii arată in felul urmator:
34
Categoriile sunt afi șate cu ajutorul urmă toarei sintaxe php care este
amplasată în acela și fișier rightblock_view.php
<?php foreach ($categories as $item):?>
<ahref="<?=base_url();? >sections/<?=$item['section_id'];?>">
<?=$item['section_id'];?></a>
<?php endforeach;?>
De incarcarea categoriilor din baza ra spunde functia get_categories()
public function get_categories()
{
$this ->db->order_by ('section_id','desc');
$query = $this ->db->get('sections');
return $query ->result_array();
}
Articolele populare sunt afi șate in functie de vizualizarile utilizatorilor.
Cu cît mai multe vizualizări are o postare anumită ea va fi prima in lista.
Deasemenea am concretizat limitele in listă nu apar mai mu lt de 5 postă ri.
Articolele populare deasemenea su nt afi șate cu ajutorul instruc țiunilor php
<?php foreach ($popular_materials as $item):?>
<?=$item['title'];?>
35
<?php endforeach;?>
Func ția raspunză toare de afi șaraea articolelor populare este get_popular()
public function get_popular(){
$this ->db->order_by('count_views','desc');
$this ->db->limit (5);
$query = $this ->db->get('materials');
return $query ->result_array(); }
Numarul de vizualiză ri a materialelo r este indicat cu ajutorul func ției
count_views()
Ultimele materiale adăugate sunt afi șate in lista dupa data adă ugarii si au limita 5.
Ele sun t chemate de următoarea instruc țiune:
<?php foreach ($latest_materials as $item):?>
<?=$item['title'];?>
<?php endforeach;?>
Functia raspunzatoare de aceasta se afla in fisierul materials_model.php
public function get_latest()
{
$this ->db->order_by ('material_id','desc');
$this ->db->limit (6);
$query = $this ->db->get('materials') ;
return $query ->result_array();
}
36
Pentru a putea accesa diferite compartimente al e sitelui care respectiv se află
pe alte pagini am creat controllerul pages.php.Controlerul pages.php raspunde de
lucrul cu paginile.Func ția show() descrisă in aces t controller se va ocupa de afi șarea
oricarui view pe orice pagin ă. În continuare vom decrie schema de lucru a
controllerului pages.
1.pages /show/page_id
2.pages_model.php
3.Crud
4.Display_lib
5.main_page_view
Controllerul pages cu ajutorul func ției show afișează orice pagina prin
page_id.Unde page_id este identifica torul paginii pe care o vom afi șa
.
public function show ($page_id)
{
$data = array();
$config['total_rows'] ='4';
37
$config['per_page'] ='2';
$data['latest_materials'] = $this ->materia ls_model ->get_latest();
$data['categories'] = $this ->materials_model ->get_categories();
$data['popular_materials'] = $this ->materials_model ->get_popular();
$data['archive_list'] = $this ->administration_model ->get_archive();
$data['main_info'] = $t his->pages_model ->get($page_id);
switch($page_id)
{
case 'index':
$name = 'pages/mainpage';
$this ->display_lib ->user_page($data,$name);
break;
default:
if (empty($data['main_info']))
{
$data['info'] = '';
$name = 'info';
$this ->display_lib ->user_info_page($data,$name);
}
else
{
$name = 'pages/page';
$this ->display_lib ->user_page($data,$name);
}
38
break;
}
}
În controllerul pages î ncarcam modelul pages_model.php care ne va permite
sa lucram cu baza de date.Modelul pages_model.php extinde modelul Crud.
Modelul Crud .php la rindul sau ras punde pentru executarea opera țiilor
esentiale cu obiecte. Func ția get($obj_id) care se afla in crud. php primeste informa ții
despre orice înregistrare, material, categorie, user, etc.
public function get($obj_id)
{
$this ->db->where($this ->idkey,$obj_id);
$query = $this ->db->get($this ->table);
return $query ->row_array();
}
Și la sfirsit cu ajutorul main_page_view scoatem pe ecran elementele pe care
le-am scos din baza cu ajutorul masivul ui data care are elementul main_ info care va
afișa informa ția despre pagină .
Deas emenea pentru ca acesta sa func ționeze avem nevoie sa scriem routere
pentru controllerul pages:
$route['default_controller'] = "pages/show/index";
$route['scaffolding_trigger'] = "";
$route['materials/(:num)'] = 'materials/show/$1';
$route['sections/show'] = 'pages/show /index';
$route['materials/show'] = 'pages/show/index';
$route['pages/show'] = "pages/show/index";
$route['user/show'] = 'pages/show/index';
39
$route['pages/abou t_me'] = 'pages/show/profile ';
$route['pages/contact'] = 'pages/show/contact';
$route['secti ons/Tehnologii_Informationale'] =
'sections/show/Tehnologii_Informationale';
$route['sections/Psihologia'] = 'sections/show/Psihologia';
$route['sections/Fizica -Matematica'] = 'sections/show/Fizica -Matematica';
$route['sections/Biologia_Chimia'] = 'sections/show/Biologia_Chimia';
$route['sections/Geografia -Turism'] = 'sections/show/Geografia -Turism';
$route['sections/Limbi_Moderne'] = 'sections/show/Limbi_Moderne';
$route['archive'] = 'administration/archive';
$route['archive/ (:any)'] = 'administration/archive/$1';
$route['search'] = 'administration/search';
$route['search/(:num)'] = 'administration/search/$1';
În cazul în care administratorul va adăuga o categorie sau o pagina noua el va
trebui sa adauge un router pen tru aceasta in fi șierul router.php . Paginarea se face cu
ajutorul biliotecii pagination_lib.php prin instructiunea
<?=$page_nav;?>
40
CONCLUZII
Dezvoltarea aplicației a necesitat utilizarea multor cunoștințe practice și
teoretice învățate în facultate, cum ar fi: dezvoltarea unui design cu aju torul
HTML, CSS și baze de date. În plus, au fost necesare acumularea unor cunoștințe
teoretice noi despre limbajul PHP și func ționalita țile acestuia , cum se face legatura
cu baza de date și afi șarea informa ției intr -un mod disponibil utilizatorului.
Deasemenea am învățat să utilizez tehnologii noi care se folosesc pe larg în
programarea aplica țiilor web la momentul actual .
Realizînd acest proiect am invațat cum se programeaza cu ajutorul unui
Model -View -Controller. Dezvoltarea aplica ției mi -a permis să st udiez framework -ul
Bootstrap pentru realizarea unei aplica ții web responsive și un design simplu dar
atragator. Am acumulat cuno ștințe despre Codie gniter care m -a ajutat mult sa imi
structurez aplica ția din punct de v edere al gândirii arhitecturale. Cu ajutorul lui am
separat funcționalitățile aplicației după modelul arhitectural Model -View -Controller
care permite
crearea unei aplica ții
unde aspectul vizual sau/ și nivelele inferioare ale
regulilor de business sunt mai u șor de modificat, fără a afecta alte nivele.
În lucrarea data am respectat cerin țele și scopul lucrarii stabilite la inceput.
Aplica ția dispune de un design simplu și placut. N avigarea se face usor si accesibil
pentru utilizatori. Aplica ția este bine structurată din perspectiva informa țiilor oferite
utilizatorilor, concisă și clară, cu con ținut informative și util.
.
41
BIBLIOGRAFIE
1. Jason Lengstorf: PHP for Absolute Beginners , Apress, New York, 2009.
2. MySQL 3.23, 4.0, 4.1 Reference Manual .
3. Robert Schifreen: How to create Web sites and applications with HTML, CSS,
Surse web:
1. w3schools: Bootstrap http://www.w3schools.com/bootstrap/default.asp
2.
code -igniter : Session
http://code -igniter.ru/user_guide/libraries/sessions.html
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: CATEDRA INFO RMATICĂ ȘI TEHNOLOGII INFORMAȚIONALE [631409] (ID: 631409)
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.
