Documente Academic
Documente Profesional
Documente Cultură
Ce inseamna server?
Toata lumea stie, probabil, ce inseamna Internet: acea colectie uriasa de echipamente legate
intre ele in scopul schimbului de informatii sau al furnizarii de servicii. Daca ar fi sa
simplificam mult ideea de internet, am putea considera ca acesta este o retea de calculatoare
in care fiecare nod (calculator) gazduieste informatii sau servicii ce pot fi accesate de publicul
larg. Aceste calculatoare din internet poarta numele de servere.
In sens larg, un server este un dispozitiv (combinatie de hardware si software) care ofera
servicii si/sau informatii utilizatorilor (clientilor).
Odata cu notiunea de server apare si cea de arhitectura client-server, care se refera la un
ansamblu format dintr-un dispozitiv server (furnizor de informatii) si un dispozitiv
(calculator) client, conectate prin intermediul unei retele si care fac schimb de informatii. Cel
mai comun exemplu al acestui ansamblu este dat de functionalitatea de partajare a fisierelor in
retea (File Sharing). Spre exemplu, un calculator contine un folder partajat (share-uit) si un alt
calculator copiaza folderul prin retea. In aceasta situatie, calculatorul care ofera folderul are
functia de server iar cel care preia folderul - pe cea de client. Rolul de client/server nu este
statornic in acest scenariu, oricare din cele doua calculatoare putand oricand sa detine oricare
din functii. Asadar notiunea de server se aplica in momentul in care dispozitivul din retea
(calculatorul) ofera informatii sau servicii.
Server web
Un tip particular de server, este server-ul web. Un server web este un sistem care gazduieste
si ofera pagini web prin intermediul unei retele. De cele mai multe ori, termenul de server
web desemneaza a aplicatie, un program care ruleaza pe calculatorul-server si care este
responsabil cu primirea cerintelor de la utilizatori si transferarea paginilor web catre ei.
Ce inseamna site?
Paginile stocate pe un calculator-server si oferite publicului larg sunt grupate sub denumirea
generica desite. Un site (denumit si website) este, asadar, o colectie de pagini web,
interconectate, stocate pe un server web.
Deservirea paginilor
In momentul in care un server web primeste o cerinta de la un utilizator pentru o pagina, se
verifica mai intai existenta acesteia. Daca pagina exista fizic pe server atunci este transmisa
catre utilizator. Paginile returnate de un server web sunt de obicei in format HTML.
Navigatoarele web (browserele) sunt capabile sa interpreteze codul HTML si sa afiseze
informatiile intr-un mod usor de citit.
In imaginea de mai jos este reprezentata o comunicare tipica intre un server web si un client.
Deservirea unei pagini statice, fara interventia interpretorului PHP
In lumea reala, paginile deservite de un server web sunt de cele mai multe
ori modificate inainte de a fi transmise catre clienti. Exista situatii cand paginile cerute nici
nu exista fizic pe calculatorul server si cu toate astea ele sunt construite si deservite la cerere.
Acest lucru este posibil gratie unor module sau aplicatii aditionale care functioneaza impreuna
cu aplicatia de server web. Unul din aceste module este PHP.
Lectia 2
PHP poate genera continut HTML pe baza unor fisiere existente sau pornind de la zero, poate
sa afiseze o imagine sau orice alt continut accesibil prin web, sau sa redirectioneze utilizatorul
catre alte pagini. In cadrul acestui proces, PHP poate consulta baze de date, fisiere externe sau
alte resurse, poate trimite email-uri sau executa comenzi ale sistemului de operare. Intrucat
procesarea se realizeaza la nivelul serverului web, inainte ca paginile web sa ajunga in
browser, PHP este considerat un limbaj de programare server-side.
Modul in care PHP genereaza continut pentru o pagina ce va fi afisata de browser este prin
instructiunile delimitate de etichetele <?php si ?>. Astfel, orice se afla intre aceste tag-uri va fi
considerat cod-sursa si va fi executat de interpretorul PHP si inlocuit cu rezultatul executiei.
Ce este in afara tag-urilor ramane neschimbat si este transmis catre browser. Spre exemplu,
avem o pagina ca mai jos.
<html>
<body>
Azi e <?php print date( 'd.m.Y' ); ?>
</body>
</html>
Rezultatul va fi o pagina HTML ce va contine cuvintele "Azi e" si rezultatul codului PHP (in
cazul acesta - data curenta). Codul HTML final, transmis de server in urma procesarii PHP
este urmatorul:
<html>
<body>
Azi e 11.11.2016
</body>
</html>
Codul PHP nu trebuie sa fie neaparat intercalat in pagina HTML. Secventa de mai jos produce
o pagina similara celei de mai sus (in acest caz PHP produce o pagina HTML de la zero).
<?php
print '<html><body>';
print 'Azi e' . date( 'd.m.Y' );
print '</body></html>';
?>
Nota: interpretorul PHP nu este instalat implicit pe orice calculator. Pentru ca toate exemplele
de pe site sa functioneze, trebuie sa instalati (manual) un interpretor. Vedeti sectiunea
"Instalare PHP" pentru detalii.
Programare web
PHP este un limbaj de programare de tip interpretat. Asta inseamna ca fisierele ce contin cod-
sursa PHP sunt interpretate ca atare in momentul executiei, de catre PHP. Asadar, pentru
executia unei portiuni de cod PHP este folosit codul-sursa asa cum a fost scris el, si nu este
transformat intr-o forma intermediara (binara sau cod-masina) cum se intampla la Java sau
C/C++. Acest lucru ofera flexibilitate, intrucat orice modificare a fisierelor sursa va fi aplicata
imediat la urmatoarea executie, fara alti pasi intermediari. Exista si dezavantaje la acest mod
de lucru, cum ar fi timp mai mare de executie a codului, dar in anumite situatii avantajele pot
cantari mai mult decat dezavantajele. Datorita faptului ca limbajul este unul interpretat, PHP
mai este numit si limbaj de scripting.
In sens mai larg, PHP este un limbaj de programare universal (sau general-purpose), oferind
toate facilitatile oricarui limbaj avansat. Codul scris in PHP poate face aproape aceleasi
lucruri ca un cod de C/C++ sau Java. Cu toate astea, PHP s-a impus in zona web, ca limbaj
server-side, ce extinde functionalitatea serverelor web. Din acest motiv programarea in PHP
mai este denumita si programare web sau programare web server-side.
In acest ghid ne vom axa pe programarea in PHP ca limbaj server-side. Desi notiunile
prezentate nu sunt legate de un mod de lucru anume si majoritatea exemplelor pot fi executate
si din linie de comanda, vom presupune ca PHP va fi folosit doar pentru programarea web, ca
modul al unui server web.
Static si dinamic
Din imaginile de mai sus, se observa ca atunci cand nu exista un interpretor PHP, paginile
sunt transmise direct catre utilizatori asa cum sunt salvate pe disc, fara modificari. Pentru a
actualiza continutul acestora, este nevoie de interventie directa asupra lor si salvarea
modificarilor pe server. Aceste pagini sunt denumite"pagini statice".
Spre exemplu, presupunand ca avem o pagina statica ce afiseaza membrii unei comunitati, la
fiecare inscriere a unei noi persoane, pagina ar trebui modificata manual de catre cineva cu
acces la serverul web. Lucrurile se complica daca acea lista este personalizata, cu trimiteri
catre alte informatii (cum ar fi detalii de contact pentru fiecare, etc) sau cu un design
intortocheat. Toate aceste probleme pot fi rezolvate cu ajutorul PHP.
Folosind o secventa de cod PHP am putea prelua lista de membri dintr-o baza de date,
eliminand problema actualizarii - nu va mai fi nevoie sa se modifice pagina odata cu fiecare
membru nou, scriptul PHP va afisa in mod automat noile persoane adaugate in baza de date.
Este rezolvata si problema linkurilor personalizate, sau a designului - toate elementele
specifice unei persoane pot fi generate in mod automat.
Aceste pagini sunt, asadar, modificate de catre PHP la momentul accesarii lor de catre
utilizatori. In functie de parametrii primiti si de secventa de cod definita de programator,
aceasi pagina poate avea continut diferit. Aceasta proprietate este denumita dinamism, iar o
astfel de pagina este considerata pagina dinamica.
Lectia 3
<?php print "Salut, ai reusit! Iata primul tau script PHP"; ?>
6. Intr-un browser mergeti la http://localhost/ (sau la http://127.0.0.1/). Va fi afisata o
pagina cu linkuri catre fisierele/folderelor din Document Root care pot fi accesate.
Faceti click pe test.php. O alta modalitate de a accesa un fisier este sa mergeti direct la
http://localhost/[cale]/[nume].php, de exemplu http://localhost/test.php.
7. Accesand http://localhost/test.php ar trebui sa fie afisata o pagina alba cu mesajul de
mai sus.
Retineti! Toate fisierele PHP pe care le scrieti (inclusiv cele de test preluate de pe acest
site) *trebuie*salvate in folderul Document Root (locatia implicita este C:\Program
Files\EasyPHP-12.0\www). Web-server-ul local instalat de EasyPHP va cauta fisierele doar in
aceasta locatie. Daca fisierele sunt salvate in alta parte ele nu vor fi disponibile.
Note:
Pe unele sisteme Windows, EasyPHP configureaza diferit serverul web local, astfel ca
scripturile sunt accesibile la http://localhost:8888/, caz in care aceasta adresa trebuie
folosita. In orice caz, indiferent de configurare, serverul local se poate accesa din
meniul EasyPHP (prin click-dreapta pe iconita EasyPHP de langa ceas si alegand
optiunea Local Web).
Pe majoritatea sistemelor Windows, fisierele PHP se salveaza cu extensie dubla
(fisier.php.txt) atunci cand este folosit Notepad. Acest lucru este gresit iar fisierele
trebuie redenumite astfel incat sa aiba doar extensia .php. Pentru a verifica extensia
fisierelor, debifati optiunea Hide extensions for known file types din Folder Options
(in Control Panel).
<?php
/* forma recomandata */
?>
<script language="php">
/* forma disponibila oricand, putin folosita */
</script>
<?
/* taguri scurte, acceptarea lor de catre web-server depinde de configurare */
?>
<%
/* taguri in stilul asp, acceptarea lor de catre web-server depinde de configurare */
%>
Codul PHP este format din instructiuni - comenzi date catre interpretor, in urma carora se
executa ceva. Asa cum s-a mai spus, PHP este folosit in principal pentru a genera cod HTML,
asa ca de cele mai multe ori instructiunile folosite sunt cele de afisare. In aplicatii mai
complexe se pot insa folosi si instructiuni de conectare la bazele de date, de
citire/scriere/manipulare fisiere, intructiuni de trimitere email-uri si altele. Instructiunile se pot
grupa in blocuri delimitate de acolade { }. Aceste blocuri, numite si "instructiuni complexe"
se comporta ca si cum ar fi o singura instructiune (vezi mai jos exemple de blocuri).
Toate instructiunile (in afara de blocuri) trebuie sa fie terminate cu punct si virgula ( ; ).
Lipsa acestuia genereaza o eroare.
# o singura instructiune echo poate primi mai multi parametri, separati prin virgula
echo "<br />", "Afisez", " un text din ", 4, " bucati";
Ce afiseaza PHP?
Rezultatul unui script PHP este de cele mai multe ori un text simplu in format HTML. Cu alte
cuvinte, in majoritatea cazurilor PHP returneaza o pagina HTML ce va fi afisata in browser.
La inceput, acest lucru poate genera confuzii, intrucat sursa HTML este diferita de ceea ce se
afiseaza efectiv in browser.
Spre exemplu, fie urmatoarea secventa de cod:
<?php
print "Salut";
print "Acesta este un script simplu";
?>
Probabil v-ati astepta ca rezultatul sa fie un text afisat pe 2 linii. Salvand aceasta secventa intr-
un fisier PHP si accesandu-l prin intermediul unui web-server, veti observa ca rezultatul este
urmatorul:
SalutAcesta este un script simplu
Desi este confuz, rezultatul este corect. Codul PHP afiseaza doar caracterele care i-au fost
indicate. Sfarsitul de linie reprezinta un caracter separat, ne-printabil, dar care controleaza
cum apare textul pe ecran. In cazul nostru, nu s-a transmis acest caracter (numit si new-line) si
prin urmare PHP nu l-a afisat.
Sa rescriem exemplul de mai sus pentru a se afisa si caracterul "sfarsit de linie"
<?php
print "Salut";
print "\n"; # se afiseaza caracterul "new-line" care determina trecerea la un rand nou
# randul nou va fi afisat in textul trimis catre browser
Verificand iar in browser veti constata ca nu s-a schimbat nimic. La prima vedere. In realitate
rezultatul este afisat pe 2 linii, in textul trimis de PHP catre browser. Intrucat pagina este
interpretata ca fiind HTML, browserul ignora caracterele new-line. Pentru verificare
vizualizati sursa paginii (meniul View din browser -> view source).
Pentru a ajunge la rezultatul dorit (acela de a afisa un text pe 2 linii in pagina) trebuie folosita
urmatoarea secventa:
<?php
print "Salut";
print "\n"; # se afiseaza caracterul "new-line" care determina trecerea la un rand nou
# randul nou va fi afisat in textul primit de browser (vizibil in sursa HTML)
Salut
<br>Acesta este un script simplu
In browser tagul BR este interpretat ca sfarsit de linie (line break). Caracterul "new-line"
afisat de noi (inprint "\n") este ignorat oricum in HTML. Rezutatul, asa cum se vede in
fereastra browser-ului:
Salut
Acesta este un script simplu
Nota: Este foarte important sa se inteleaga diferenta dintre ceea ce se returneaza in urma
executiei unui script PHP si ceea ce se afiseaza propriu-zis in browser. Pe scurt, PHP
printeaza cod HTML care este afisat diferit de browsere.
De asemenea, trebuie inteles faptul ca functia print nu afiseaza textul pe mai multe
linii daca nu se specifica acest lucru in mod express. Spre exemplu fie urmatoare secventa de
cod:
<?php
print "1";
print "2";
print "3";
?>
Rezultatul va fi
123
S-a afisat doar ce s-a indicat, 3 caractere, pe o singura linie, fara spatii.
Un alt lucru important de retinut este faptul ca odata printat, un text nu mai poate fi "sters".
Nu exista "undo" pentru un print. Se poate captura intregul continut ce se transmite la finalul
executiei, dar nu se poate altera textul afisat de o instructiune print anume.
Intelegand aceste aspecte va va fi mai usor in lucrul cu PHP si in modul in care verificati
rezultatele scripturilor voastre.
Siruri de caractere
In majoritatea scripturilor PHP se lucreaza cu bucati de text denumite siruri de
caractere sau string-uri. Sirurile de caractere reprezinta expresii (entitati ce au/returneaza o
valoare) si pot fi folosite, la afisare, in atribuiri, la verificari, etc.
In limbajul PHP, sirurile de caractere pot fi delimitate de ghilimele duble, ghilimele simple
sau printr-o notatie speciala folosind operatorul <<< (numit heredoc).
<?php
print "Salut, straine! "; // sir simplu, delimitat de ghilimele duble
print 'Salut din nou! '; // sir simplu, delimitat de apostrof
Nota: in acest exemplu nu este nici o diferenta intre modul de definire a sirurilor - toate cele 3
stringuri afisate sunt echivalente, indiferent ca au fost delimitate prin ghilimele, apostrof sau
operatorul heredoc. Cu toate astea, PHP trateaza in mod diferit aceste moduri de delimitare.
Mai multe explicatii si exemple sunt prezentate in pagina Operatii cu siruri.
Comentarii in PHP
Comentariile sunt portiuni de cod care nu se executa. Sunt folosite de programatori de regula
pentru a da diverse explicatii despre logica aplicatiei, variabile si altele. Comentariile nu
afecteaza executia unui script si pot fi sterse din cod fara nici un efect.
<?php
// acesta este un comentariu. intreaga linie nu va fi luata in considerare (doar o linie)
// print "hello";
// linia de mai sus nu se executa
/* afiseaza
Salut!
*/
?>
<?php
// exemplu gresit de comentariu PHP
/* comentariu /* altul */ inapoi la primul */
?>
Este un lucru foarte util sa folositi comentarii in cod pentru a explica modul de rezolvare a
problemei abordate, sau pentru a da detalii despre operatiile efectuate. Acestea va vor ajuta
mai tarziu daca veti vrea sa modificati codul scris, sau vor oferi altor persoane informatii
(valoroase) despre cum ati gandit codul respectiv.