Documente Academic
Documente Profesional
Documente Cultură
4.1 Obiective
Introducere n elem entele de baz ale lim bajului PHP; R e aliza re a u no r scripturi P H P , i m od ifica re a a ce stora p en tru a v ed ea d ife re n ele;
4.2 Introducere
PHP este un lim baj dinam ic, ceea ce nseam n c PH P com unic cu utilizatorul, el efectuea dinam ic operaii, iar coninutul paginii se schim b n real-tim e, n prefe rin e. D e de funcie e xe m plu n H T M L n u pute m m o difica con inu tul u n ei p ag in i de c t dac o nlocuim cu una nou (cu coninut nou). n PHP lucrurile stau m ai sim plu, script putem introduce tiri un printrpe pagina noastr sau putem m odifica titlul paginii, sau strui form ulare dinam ice pu tem con pe care utilizato rii s le foloseasc. T otu i cru nu n sea m n c ne de ba ra sa m de lu acest lim ba ju l H T M L, n icid ecum i ca re a u cu n o tin e H T M L v o r n e leg e i n v a m a i Ce. u o r P H P .
4.2.1 Sintaxa
La fel ca i n lim bajul HTM L, atunci cnd deschidem un tag, el trebuie autom at nchis, pentru a nu genera erori (ex. < table>i < /tab le> i n PH P, cu ajutorul ), tagurilor< ?p h pi respectiv vo m putea delim ita codul PH P de codu l H TM L. Este portan t de tiut, ?> foarte im pentru lejeritate se pot folosi m ai sim plu tagurile < ? i respectiv?>, cu toate acestea m etodele prin care putem delim ita tagurile PHP sunt m ai m u lte , spre exem plu: <script language="php"> echo "Acesta este un text"; </script> Sau <% echo "Acesta este un text"; %> atunci cnd este activat opiunea asp_tags php.ini. din Este recom andat utilizarea prim elor taguri descrise anterior, adic: <?php cod php aici ?> Ca n orice lim baj de program are/scripting, n PHP exist posibilitatea adugrii de com entarii sau note n codul surs. A cestea nu sunt luate n considerare de ctre Iat com pilator. cteva exem ple de com entarii acceptate n PHP: /* Comentariu in stil C */ // Comentariu in stil C++ # Comentariu in stil Bourne shell N o t :P en tru n cep tori n u este reco m a n d at folosire a co m en tariilo r d e tip she ll. O declaraie n PHP se ncheie tot tim pul cu punct i;). virgul (
15
Neterminarea unei declaraii cu punct i virgul va duce la eroare de tip parse error. Exemplu de cod care folosete un comentariu i o declaraie: <?php //mai jos va voi saluta echo("Salut!"); ?> Prima linie este comentariu i este ignorat de PHP, a doua linie reprezint o declaraie care se ncheie bineneles cu ;.
15
Salveaz codul de mai sus ca numelemeu.php i ruleaz-l n browser. Vei observa c n ciuda faptului c am scris textul pe mai multe linii, el va fi afiat n browser pe o singura linie. Fapt care evident nu ne convine, aa ca vom apela la tagul <br> din HTML: <?php echo(Salut<br>); echo(Numele meu este<br>); echo(Alex Maimescu); ?> Acum textul va apare pe 3 linii separate.!!!! Pentru coderii avansai care doresc s aib totul clar i afiat corect n conformitate cu toate standardele vor opta pentru urmtorul cod: <?php echo(Salut<br>\n); echo(Numele meu este<br>\n); echo(Alex Maimescu); ?> Caracterul \n este un caracter de tip escape. Diferena se poate observa cnd ne uitm n codul surs HTML generat. \n nseamn newline, adic indic faptul c urmeaz linie nou. Totui acesta nu este singurul caracter de tip escape, iat lista complet: Tabel caractere escape Caracter Descriere \a alarm a \cx control-x (x oate fi orice p \e escape \f form feed \n newline (linie noua) \r carriage return \t tab \xhh caracter cu codul hexa hh \ddd caracter cu codul octal ddd
4.3
n PHP toate variabilele ncep cu semnul de dolar ($). Dup semnul $ se poate introduce un ir de caractere care poate aprea n diferite combinaii: $variabila $variabila123 $prima_variabila $_VARIABILA Acestor variabile le pot fi asignate orice valori, fie c este vorba de un ir de caractere, numere, propoziii, fraze, etc. n funcie de rolul pe care l au ntr-un script, variabilele pot fi de dou feluri: variabile globale i variabile locale (ex. cele declarate n cmpul unei funcii).
15
n codul de mai jos vei regsi perfect conceptul de variabil: <?php $salut=Salutare natiune; echo($salut); ?> C o n in u tu l v a ria b $ sia lu te ste p a s a t fu n c e ch oc a re v a a fi a c o n in u tu l a ce s te ia , d e ci ile ie v a re zu lta te x tu l S a lu ta re n a tiu n e . U rm torul cod dem onstreaz con ceptul de variabil n capsulat. n cazu l de o rb a jo s e ste v m ai d e s p re o v a ria b il n c a p su la t <?php $nume = Alex Maimescu; echo(Numele meu este $nume); //folosim functia echo() pentru a afisa textul ?> R u lai n brow ser scriptul de m ai su s i v ei vedea c el a fieaz textu l e s temA le x m e u N u ele M a im e sc u . Probabil v-ai dat seam a pn acum de ce se lu creaz cu variabile. Pentru c ne fac via program ator m ai uoar, un ei variabile i putem asign a orice valoare, orice text orict ar fi m are, i care l putem m anipu la doar prin apelarea un eiria b ile a s ig n a te . pe v a sim ple <?php $numarul1 = 25; $numarul2 = 20; $numarul1 + $numarul2 = $rezultat; echo($rezultat); ?> n co d u l d e m a i su s a m d e c la ra t d o u v an u mileru l1 $ n u m a ru , c ro ra le -a m d a t $ ria b a i l2 v a lo rile 2 5 , re s p e c tiv 2 0 . M a i jo s a m e fe c tu a t o p e ra ia du n a re, d e c rei rezu lta t a sim p l a l este con in u t d e varia$ re zu lta t Pen tru a a fia a cea st b ila . valoare n e folosim de funcia ech o () Rezultatul este clar, pe ecran va fi afiat, 4 5 (2 0 + 2 5 = 4 5 ). . n um rul Pe ln g operaia de adunare (+ ) se m ai pot efectua opera urm toarele operaii m a te m a tice : (-) sc d e re , (* ) n m u lire, (/) m p rire , (% ) m o d u l. Tipu rile d e d ate n P H P su n t u rm toarele: array-uri; nu m ere de tip float sau dou ble; integer; object; strin g Aceste noiuni ar trebui s v fie cunoscute de la program area n C+ + . n con tinu are vom discuta despre strin gi in teg e.r tipurile U n strin geste form at dintr-o plaj de caractere. Acesta poate s fie u n ie, vnt, o lin cu sa u p oa te u n n tre g a rtico l. U n in te g e r ste u n n u m r n tre g ca re ia v a lori ntre 8 i 3 2 7 6 7 ). e (-3 2 7 6 Pentru a determ ina ce tip de dat este o anu m it variabila, pu temg folosipfun cia e tty e () . I a t u n e x e m p lu : <?php $variabila_mea=Salut, sunt o variabila; $tip=gettype($variabila_mea); echo(Aceasta este o variabila de tip $tip); ?>
15
Mai sus am creat o variabil numit $variabila_mea creia i-am dat valoarea Salut, sunt o variabila. Apoi prin funcia gettype() am chemat aceast variabil pentru a afla ce fel de tip este ea. Mai jos am utilizat echo() pentru a afia tipul variabilei. Pe ecran se va afia, Aceasta variabila este de tip string. Facei un test si pentru $variabila_mea=6
4.4
Codul de mai sus ilustreaz foarte bine colaborarea dintre PHP i HTML. Codul PHP poate fi asimilat cu uurin de tagurile HTML att timp ct el se afl ntre delimitrile <?php respectiv ?>. De asemenea se pot introduce mai multe declaraii ntre tagurile html, n diferite moduri: <html> .......... <body> <?php echo (Salut); echo (Ce mai faci?); 15
?> </body> ......... </html> Sau <?php for($i=0, $i<50, $i++) { ?> <br /> <?php } ?> Fiiere le d e tip P H P po t in clu d h tm d fie c fa ce p arte d in e le , fie c este scris se pa ra t. e co , l Priv ii u rm toru l co d : <?php $titlu = Pagina mea de web; include(index.inc); ?> Iar codul lui index.inc este urm torul: <html><head><title><?php echo $titlu; ?></titlu></head></html> E xe m p le le d e m a i su s su n t co n clu d e n te , n s tre b u ie sp ecifica t fiierelo sire a tip c fo lo r de .in c n u e ste recu no scuta d e A p ache i n u este parsataaa c fo rm a ii sen zitiv e se p h p ca in , p o t v e d e a prin in te rm e d iu l b ro w seru lu i, d e a ce ea tre b u ie s a pe lah ttp dsetn f m la .c o rile i s ad u g m urm to are le lin ii: <Files ~ "\.inc$"> Order allow,deny Deny from all </Files> n acest fel a m b lo ca t accesu l d in exterio ru l serverulu i la fiiere le.inc exten sia cu. Aceasta 1 este o practic foarte bun (care poate fi executat i prin interm ediul unui caz ca .htaccessn nu avem acces httpd.conf la , cum se ntm pl de obicei pe serverele le ). v irtu a Not: Totui nu este o practic bun i nu se recom and folosirea fiierelor cu extensii .in c ci m ai degrab cu extensia . .p hp Chiar i aa problem ele nu se term in, deoarece tre b u ie p ro te ja te m p o triv a aceste a accesu lu i d ire ct. Iat ce m etode de protecie se pot folosi: plasarea tuturor fiierelor cu inform aie sensibil ntr-un director sau m ai m u d irecto a re ca re urm e a z s fie pro te ja.h ta cc e s s A ici n e referim fiierele care nu te prin . la sunt accesate direct de user n pagin, ci la cele care se introduc funciile de obicei cu include(), include_once(), require(), require_once(). pla sarea tu tu ror fiierelor cu inform a ii sensibile n tr-un director sau directoare diferite de ce l din rdcin a w h ttp d o cs, w w w , ), n acest fel ele n u pot fi accesa te eb ( etc prin b row ser n n ici u n fel. Aceast m etod n u este ap licab il pen tru se rve re v irtua le sa u n tr-u n e n v irom en t tip serve r d e ho stin g drestriciilor sau din cauz c in ca u za PHP poate fi setatsafe_m ode n .
15
Un fiier .htaccess este un simplu fiier text ce conine comenzi, denumite directive Apache. Aceste directive se aplic i afecteaz fiierele din directorul n care se afl fiierul .htaccess precum i subdirectoarelor acelui director.
5.2 Introducere
n continuare se prezint o modalitate de cum se poate construi un site cu ajutorul limbajului HMTL i PHP. Ca exemplu, vom construi un site al studenilor de la specialitatea Managementul Informational. n acest sens, studenii vor crea n propriul director de pe server, un subdirector MI_101, n care vor mai crea urmtoarele subdirectoare: IMG, STUD, CATALOG i PROIECTE. Exemplul prezentat nu este un standard, este doar o modalitate de a vedea cum se poate construi un site i cum se preiau sau trimite variabilele prin intermediul site-ului. Putei, pe baza acestui exemplu, s v construii propriul site, n forma preferat de dvs. i adaptnd modelul acesta la necesitile voastre. Forma general a sitului este dat n figura de mai jos:
Pentru antent se poate opta pentru dou variante: 1. fie se realizeaz un desen n bmp, denumit antet.gif, de dimensiune 15
15
Studenii vor realiza imaginea n bmp, aa cum arat mai sus, sau dup propria imaginaie.
5.3
Elementele componente
5.3.1 Index
index.php - n care se seteaz nivelul de raportare al erorilor. Apoi, se verific dac exist fiierele antet.html , corp.php i subsol.html i se ncarc sau se oprete cu un mesaj de eroare. Scriptul acestui fiier este: <?php error_reporting(E_ALL); // se include antetul if (file_exists('antet.html')) { include_once('antet.html'); } else { die("<br>Eroare: Nu se gaseste fisierul antet.html"); } if (file_exists('corp.php')) { include_once('corp.php'); } else { die("<br>Eroare: Nu se gaseste fisierul corp.php"); } if (file_exists('subsol.html')) { include_once('subsol.html'); } else { die("<br>Eroare: Nu se gaseste fisierul subsol.html"); } ?>
15
{ include("meniu_vertical.html"); } echo' </td> <td width="">'; if (file_exists("pagina.php")) { include_once("pagina.php"); } echo '</td> </tr> </table>'; echo'</body>'; ?>
5.3.4
meniu_vertical.html - conine codul HTML pentru meniul vertical <table border="0" align="CENTER" width="100" cellpadding="1" cellspacing="1" id="vertical"> <tr> <td align="center" valign="center"><a href="index.php? ID=index"><b>HOME</a></td> </tr> <tr> <td align="center" valign="center"><a href="index.php? ID=stud"><b>Studenti</a></td> </tr> <tr> <td align="center" valign="center"><a href="index.php? ID=cat"><b>Catalog</a></td> </tr> <tr> <td align="center" valign="center"><a href="index.php? ID=pro"><b>Proiecte</a></td> </tr> <tr> <td align="center" valign="center"><a href="index.php? ID=contact"><b>Contact</td> </tr> </table>
M e n iu l v e r t ic a l
if (file_exists("studenti.html")) { include_once("studenti.html"); $afisare = ''; } else { $afisare = '<br>Eroare: Nu se gaseste fisierul studenti.html'; } break; //CATALOG case 'cat': if (file_exists("catalog.html")) { include_once("catalog.html"); $afisare = ''; } else { $afisare = '<br>Eroare: Nu se gaseste fisierul catalog.html'; } break; //PROIECTE case 'pro': if (file_exists("proiecte.html")) { include_once("proiecte.html"); $afisare = ''; } else { $afisare = '<br>Eroare: Nu se gaseste fisierul proiecte.html'; } break; //CONTACT case 'contact': if (file_exists("contact.html")) { $afisare = ''; include_once("contact.html"); } else { $afisare = '<br>Eroare: Nu se gaseste fisierul contact.html'; } break; case 'index': if (file_exists("primapagina.html")) { include_once("primapagina.html"); $afisare = ''; } else { $afisare = '<br>Eroare: Nu se gaseste fisierul primapagina.html'; } break; default: $afisare = '<br>Eroare: A fost ceruta pagina care nu exista pe server.'; } // se afiseaza codul html pentru pagina echo $afisare; ?> contact.html - poate fi o pagina extern, cu coninut HTML sau PHP, precum i formulare de contact. <h3>Pagina de contact</h3> <p>e-mail: <a href='mailto: mihaip52@hotmail.com'> mihaip52@hotmail.com </a><br> <br> telefon: 0373-0693.5333 <br> fax: 0373-0693.5333 <br> mobil: 0373-0693.5333 <br>
15
</p>
5.3.6 Subsolul
primapagina.html - este fiierul care afieaz informaii generale despre scopul si obiectivele sitului, i ncheie tagul html. <table border="1" align="CENTER" width="600" cellspacing="0"> <tr> <td> <b>Aceasta este prima pagina </b> <br>care trebuie sa contine Scopul Sitului. </td> </tr> </table> </html> cellpadding="2"
subsol.php - este fiierul care afieaz n josul paginii informaii referitoare la: data ultimei modificri; date despre dreptul de autor; informaii generale, i ncheie tagul html. <table border="1" align="CENTER" width="705" cellpadding="2" cellspacing="0"> <tr> <td><b>Subsolul paginii web. Ultima actualizare: <?php echo date("m.d.Y. " ); ?> </b> <br>Informatiile continute de aceste pagini apartin autorului sau sunt preluate din diverse surse (precizate). <br>Informatiile prezentate aici pot fi folosite in mod liber de catre oricine fara obligatii. <br>Autorul nu-si poate asuma nici un fel de responsabilitate legata de folosirea incorecta a informatiilor prezentate.</td> </tr> </table> </html>
5.4
Mod de lucru
n directorul C:\Program Files\EasyPHP2.0b1\www\.......\, sau directoriul Dvs de lucru unde este instalat Appache, se creeaz un subdirector, de exemplu Laborator, n care se creeaz toate fiierele enumerate mai sus, mai puin data_ora.php, care va fi plasat n directorul module (aa cum se vede n figura de mai jos).
Schema de lucru cu modul de instalare APPACHE si PHP conform lucrarii_1_LAST Se creeaza mapa SAIT_TEST in htdocs din Mapa APPACHE2.2. In aceasta mapa sa inscriu toate fisierele si mapele de lucru.
15
Apoi se lanseaza
In ultima mapa se testeaza fiecare fisier aparte si pentru a primi urmatoarea pagina WEB test, pe hostul local se lanseaza
15
Tem: n meniu_vertical, s se mai introduc un link, sub Contact, denumit Admin, care va deschide (pe viitor) o pagin pentru conectarea la o baz de date n care s se introduc datele ce vor fi afiate n paginile Studenti i Catalog. S se creeze un fiier stil.css n care s se defineasc stiluri particularizate pentru acest site (se va apela la laboratorul nr. 3).
In cazul in care veti incerca sa lucrati cu DENWER-ul Veti avea in directoriul home
15
15