Sunteți pe pagina 1din 16

Lucrarea_4 PRIMII PAI N PHP Tema 4 PHP

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 ;.

4.2.2 Aplicaii de nceput


Exemplul 1: Vom testa configuraia PHP cu ajutorul funciei phpinfo(), scriind urmtorul script ntr-un fiier nou php, cu ajutorul lui PHP Design 2005/2007 sau alt editor: <?php phpinfo(); ?> Se salveaz codul ca info.php i se ruleaza n browser /vezi lucrarea 1_last/. Se vor obine o mulime de informaii despre configuraia PHP, tipul serverului, etc. funcia phpinfo() are variabilele deja declarate n motorul PHP i de aceea nu este necesar dect s o declarm o singur dat. Exemplul 2: Scriem un exemplu PHP n stil clasic, prin care salutm utilizatorii. Iat codul: <?php echo(Salutare la toti cititorii); ?> Se salveaz sub numele salut.php i ruleaz n browser (ex. http://localhost/salut.php). Pe ecran apare afiat textul Salutare la toti cititorii. Acest lucru a fost posibil datorita functiei echo() cu ajutorul creia de acum nainte vom afia text pe ecran. Not: pe lng funcia echo() mai exist i print() care poate fi folosit n acelai mod. Observaie: echo() nu este totui o funcie, ea reprezint un constructor de limbaj dar pentru uurina exprimrii o vom numi funcie. O dovad bun n sensul c nu este funcie este aceea c nu suntem nevoii sa folosim paranteze. Sintaxa echo Salutare la toti cititorii; este de asemenea acceptat. S scriem mai multe exemple cu funcia echo(), pentru c va fi folosit foarte des, i s vedem ce se poate face cu ea: <?php echo(Salut); echo(Numele meu este); echo(Alex Maimescu); ?>

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

Variabile si tipuri de date n PHP

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).

4.3.1 Lucrul cu variabile si tipuri de date

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.3.2 Variabile dinamice


De multe ori este util s folosii variabile dinamice. O variabil normal se declar aa: $variabila = salutare ; Acum s zicem c vrem o variabil care s aib numele valorii lui $variabila, deci scriem: $$variabila = lume; Cu alte cuvinte, mai sus am creat o variabila cu numele $salutare i i-am dat valoarea lume. Ne putem juca cu variabile dinamice la infinit, dar atunci cnd s-a ajuns la un nivel mare deja se creaz confuzii iar dac cineva ar dori s citeasc, pentru a mbunti, codul scris de tine, atunci nu ar mai nelege nimic. Exist o sintax special care se folosete pentru variabilele complexe, i anume, ncadrarea ntre acolade {}: echo "Salutare ${$variabila}"; // rezulta: Salutare lume Atunci cnd folosim array-uri, o sintax ca $$variabila [1] este incorect pentru c PHP nu ar tii crui nivel s aplice indexul, de aceea se folosete expresia: {$variabila [1]} sau ${$variabila}[1].

4.4

Cod PHP n cod HTML


<html> <head> <title> <?php echo $titlu; ?> </title> </head>... </html>

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 Variabile PHP utilizate n paginile web dinamice 5.1 Obiective


Structura i elemente de baz pentru construirea unui site dinamic.

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

2. fie se creeaz un nou fiier antet.html, n care se creeaz un tabel cu o linie

i 23 celule n care se pot introduce: imagini, text sau alte informaii.

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"); } ?>

5.3.2 Fiierul antet.html


antet.html - n acest fiier se afieaz codul html pentru nceputul paginii, i dac exist, se ncarc i fiierele cu cod CSS i JavaScript folosite n pagin. <!doctype html public "-//W3C//DTD HTML 4.01//EN"> <head> <title>Managementul Informational</title> </head> </html> <table border="1" width="700" height="100" align="center"> <tr> <td><img src="img/antet.bmp" width="700" height="100" align="center"/></td> </tr> </table>

5.3.3 Corpul paginii


coprp.php - conine codul HTML existent ntre tagurile <body> i </body> Dac exist, se ncarc i fiierele care conin meniul vertical, precum i fiierul care afieaz coninutul paginii cerute. <?php echo'<body> <table border="1" width="700" align="center"> <tr> <td valign="top" width="70">'; if (file_exists("meniu_vertical.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

5.3.5 Pagina de afiat


pagina.php - afieaz coninutul paginilor, n funcie de linkul cerut. Dac se cer pagini externe, se verific dac acea pagin exist i se ncarc pentru afiare <?php // se verifica daca se cere o pagina if (isset($_GET['ID'])) { // daca se cere o pagina se verifica daca variabila nu este goala if (!empty($_GET['ID'])) { $ID = $_GET['ID']; } // daca este goala se ia pagina principala else { $ID = 'index'; };} // daca nu se cere nici o pagina inseamna ca trebuie afisata pagina principala else { $ID = 'index'; } // in continuare se prelucreaza pagina pentru afisare switch ($ID) //STUDENTI { case 'stud': 15

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

Se selecteaza directoriul SAIT_TEST


15

Se selecteaza mapa WWW

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

Structura mapei care contine pagina web test

15

Lansarea paginii web experimentale

15

S-ar putea să vă placă și