Introducere(PHP – Hypertext Preprocessor) 1
Introducere
(PHP – Hypertext Preprocessor)
Limbajul PHP a fost creat in anul 1994 de catre Rasmus Lerdorf, care incerca sa-si personalizeze propria pagina Web; din acest motiv limbajul a fost numit initial PHP adica: Personal Home Page (pagina de baza personala). Ulterior limbajul a fost perfectionat, utilitatea si caracteristicile sale s-au dezvoltat treptat, ajungand sa aiba semnificatia Hypertext Preprprocesor (PHP). Preprocesarea consta in aceea ca datele sunt interpretate(preprocesate) de catre serverul Web inainte ca acesta sa genereze cod HTML.
PHP este una dintre cele mai interesante tehnologii pentru site-uri si programare web, imbina caracteristici dintre cele mai complexe cu simplitatea în utilizare. PHP a devenit un instrument de frunte pentru dezvoltarea aplicatiilor Web. Spre deosebire de alte instrumente pentru aplicatii Web, cum este Perl, PHP este un limbaj de programare comod pentru începatori, chiar si pentru cei care nu au mai desfasurat activitati de programare.
Daca sunteti un cunoscator al limbajului HTML, dar nu aveti experienta în materie de programare, va puteti pune întrebarea: care sunt functionalitatile suplimentare pe care le poate asigura cunoasterea limbajului PHP? Ca si alte limbaje de scripting pentru Web, PHP va permite sa furnizati un continut Web dinamic, adica un continut Web care se modifica automat de la o zi la alta sau chiar de la un minut la altul. Continutul Web este un element important în sustinerea traficului unui sit Web; de regula, vizitatorii nu vor mai reveni la o pagina Web care contine aceleasi informatii ca si cele prezentate la ultima vizita. Pe de alta parte, siturile Web frecvent actualizate pot atrage cantitati enorme de trafic.
Mai mult, spre deosebire de limbajele de scripting, precum JavaScript, PHP ruleaza pe serverul Web, nu în navigatorulul Web. În consecinta, PHP poate obtine accesul la fisiere, baze de date si alte resurse inaccesibile programului JavaScript. Acestea constituie bogate surse de continut dinamic, care atrag vizitatorii. In plus, putem folosi limbajul PHP pentru a generera cod Java Script.
Secventele de cod PHP pot fi incluse intr-un fisier HTML; ulterior serverul Web va identifica aceasta secventa de cod , va procesa acesta secventa de cod generand cod HTML iar la final va inlocui secventa de cod PHP cu codul HTML.
Printre caracteristicile cele mai importante ale imbajului enumeram:
– simplicitate : acest limbaj este simplu de folosit, fiind accesibil si ne-programatorilor. Datorita acestui fapt el a devenit cel mai popular limbaj de script pentru generarea de pagini HTML dinamice.
– usor de folosit : limbajul are o sintaxa asemanatoare limbajului C, care este foarte popular in randul programatorilor. De aceea programatorii care au cunostine de C sau Perl vor face foarte rapid trecerea spre PHP. Pe de alta parte anumite aspecte cum ar fi: declararea si folosirea variabilelor este mult simplificata in PHP, spre deosebire de C++ sau alte limbaje de nivel inalt.
– eficienta : specificatiile limbajului includ folositea tehnicilor de POO (Programare orientata pe obiecte) iar acest lucru contribuie la marirea productivitatii: un programator PHP poate folosi module scrise de un alt programator fara sa fie nevoit sa cunoasca detalii specifice de implementare a codului.
– cross-platform : exista implementari ale limbajului pe mai multe sisteme de operare, cele mai populare fiind cele de pe sistemele Linux si Windows. In acest caz daca scriem cod PHP care ruleaza pe un sistem Linux, ulterior vom putea folosi acest cod pe un server care ruleaza Windows si viceversa.
– gratis : PHP reprezinta un program Open Source, oricine poate folosi acest limbaj fara a fi nevoit sa plateasca ceva. De asemenea utilizatorii au access la sursele PHP (scrise in limbajul C). Site-ul oficial al limbajului PHP se afla la : www.php.net , datorita popularitatii acestui limbaj exista numeroase site-uri Web care prezinta informatii despre PHP, exemple de cod, forum de discutii , etc.
Acest curs de initiere in PHP si MySQL este menit a prezenta elemente introductive de programare si dezvoltare a paginilor web folosind PHP. Este important sa retineti ca nu reprezinta decat un punct de plecare cu lectii si tutoriale php introductive. Dezvoltarea Web este o activitate solicitanta, iar viitorul dezvoltator Web trebuie sa dispuna de multe abilitati, printre care si pe aceea de programator. Dezvoltatorii Web începatori vor gasi în aceast curs un prim pas util si amical în activitatea de programare în PHP.
Scrierea scripturilor PHP elementare
- Invatati sa creati un script PHP cu cele mai simple instructiuni PHP
- Invatati sa documentati si sa executati un script PHP
Un script PHP poate fi foarte simplu sau foarte complex. Totusi, scrierea chiar si a unui script PHP complex este relativ simpla, necesitand doar un editor de texte obisnuit. In aceasta lectie veti invata modul de creare si de executare a programelor PHP, veti invata sa creati scripturi PHP simple, care afiseaza in navigatorul web un text simplu. De asemenea, veti invata sa va documentati scripturile, astfel incat dumneavoastra si alte persoane sa puteti intelege rapid scopul si structura acestora.
Mai intai trebuie sa instalati un server web (Apache) si modulul pt. limbajul PHP, acestea sunt gratuite, le puteti gasi pe net si instala pe fiecare, dar pentru incepatori e recomandat un program care le are deja configurate (si cu MySQL), precum WampServer, sau sa incarcati scriptul pe un server web unde este instalat PHP.
Daca nu aveti deja instalat PHP, descarcati de aici -> www.wampserver.com, dezarhivati si instalati programul. (cand este pornit, veti observa o iconita specifica in colltul cu ceasul).
Fisierele .php in care veti scrie scripturile trebuie sa le salvati in directorul www din „wamp”, apoi, ca sa le testati scrieti in browser adresa http://localhost/fisier.php
1. Scrierea scripturilor PHP
Pentru a crea scripturi PHP, majoritatea programatorilor PHP folosesc un editor de texte obisnuit. Puteti folosi orice editor de texte doriti. Sub Microsoft Windows puteti utiliza programul Windows Notepad. Daca preferati, puteti folosi editoare specializate, gen Notepad++. Totusi, trebuie sa tineti cont sa fie un editor de text ce salveaza fisierele cu format text obisnuit simplu.
Daca folositi UNIX sau Linux, puteti crea scripturi PHP folosind un program precum „vi”, „emacs” sau „pico”.
Programul in sine nu conteaza, atata vreme cat poate crea fisiere text ASCII.
Nota : – Unele editoare de texte, precum „Notepad++” sau „vi”, asigura un suport special pentru scrierea programelor PHP. De exemplu, au o caracteristica de colorare a elementelor de sintaxa ce determina scrierea diferitelor elemente ale codului PHP in culori diferite. Procedeul de colorare a elementelor de sintaxa faciliteaza depistarea erorilor din programele proprii.
2. Scrierea scheletului programelor PHP
Fiecare program PHP include doua linii speciale, care indica serverului PHP ca textul cuprins intre cele doua linii este alcatuit din instructiuni PHP. Practic, aceste linii pot fi asimilate copertelor unei carti, care pastreaza unitatea programului dumneavoastra PHP. Intre aceste doua linii vor fi scrise instructiunile PHP. Pentru a incepe sa scrieti un program PHP, deschideti editorul dumneavoastra de texte si introduceti urmatoarele doua linii :
<?php
?>
– Acesta este un cod de inceput si nu afiseaza nimic.
Apoi, salvati scriptul dumneavoastra sub forma de fisier text, in directorul „www” din „wamp”, cu un nume care respecta urmatoarele reguli:
- Este recomandat ca numele fisierului sa fie alcatuit numai din caractere minuscule, cifre si liniute. Utilizarea de spatii, majuscule si alte caractere ar putea crea probleme pe sisteme de operare diferite.
- Extensia numelui fisierelor trebuie sa fie .php.
- Asigurati-va ca ati ales un nume semnificativ, care sa descrie functia scriptului dumneavoastra, astfel incat sa-l puteti identifica rapid dupa saptamani sau chiar luni de la crearea acestuia. Veti descoperi ca liniutele sunt utile pentru separarea cuvintelor care alcatuiesc numele fisierului, marind astfel lizibilitatea acestuia. De exemplu, un fisier care contine un script PHP ce va permite sa vizualizati salariile angajatilor poate primi numele „saarii-angajati.php”. Chiar si la mult timp dupa crearea fisierului respectiv, nu veti avea probleme in a determina scopul acestuia.
3. Afisarea datelor de iesire intr-un browser Web
Programele PHP executa trei categorii de operatii elementare:
- Obtin date de la un utilizator.
- Executa prelucrari ale datelor, respectiv obtine accesul la datele stocate in fisiere si baze de date si le manipuleaza.
- Afiseaza date astfel incat un utilizator sa le poata vizualiza.
Primele doua operatii sunt oarecum mai dificil de realizat decat cea de-a treia. Totusi, afisarea datelor astfel incat acestea sa fie vizibile utilizatorului este o operatie foarte simpla. Asa cum paragrafele unui text scris sunt compuse din propozitii, programele PHP sunt alcatuite din instructiuni. Regulile care controleaza formarea propozitiilor se numesc sintaxa. Acelasi termen este folosit si pentru a desemna regulile care guverneaza formarea instructiunilor PHP.
Iata un exemplu pentru crearea instructiunii PHP care trimite date de iesire la un browser Web, astfel incat acestea sa fie vizibile pentru un utilizator:
<?php
echo „scrieti aici un text oarecare”;
?>
Observati ca instructiunea incepe cu un cavant „echo” si se incheie cu un caracter punct si virgula (;).
Constructia echo trimite datele de iesire care vor fi afisate de browser.
Ghilimelele duble se folosesc pentru delimitarea unei expresii de tip text, in cazul nostru „scrieti aici un text oarecare” (se pot folosi si ghilimele simple).
In locul propozitiei „scrieti aici un text oarecare” puteti plasa aproape orice text, cu exceptia altor ghilimele. Totusi, pentru moment, trebuie sa includeti numai litere, cifre, spatii si semne de punctuatie folosite in alfabetul latin, precum virgula, caracterul punct si virgula, punctul, semnul de intrebare si semnul exclamarii. De asemenea, puteti include caracterele < >, folosite pentru delimitarea etichetelor HTML, respectiv caracterul /, folosit pentru a indica membrul de inchidere al unei perechi de etichete HTML.
De exemplu, iata o instructiune PHP care are drept date de iesire un fragment dintr-un vers din Scrisoarea a III-a de Eminescu:
<?php
echo „<h2> Iata vine-un sol de pace…</h2>”;
?>
– Ca sa vedeti rezultatul, salvati fisierul cu acest cod in directorul www din „wamp”, de exemplu cu denumirea teste.php si apelati in browser adresa http://localhost/teste.php (programul WampServer trebuie sa fie pornit).
Perechea de etichete H2 determina formatarea datelor de iesire ca titlu HTML de nivel 2.
Scripturile PHP pot fi incluse si in fisiere cu cod HTML, ca in urmatorul exemplu (dar salvate cu extensia „.php”):
<!DOCTYPE HTML PUBLIC „-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php
echo „<h4> Exemplu de script PHP inclus in HTML</h4>” ;
?>
</body>
</html>
In browser va aparea :
Exemplu de script PHP inclus in HTML
Pot fi incluse si scripturi mai complicate ce contin zeci sau chiar sute de linii, atata timp cat acestea sunt incluse intre cele doua linii specifice limbajului PHP:
<?php
?>
4. Documentarea unui script PHP
In afara de a furniza nume descriptive fisierelor ce contin scripturile dumneavoastra PHP, e necesar sa includeti in interiorul fiecarui script atat comentarii care sa permita unui cititor sa determine cu usurinta utilitatea scriptului, cat si alte informatii referitoare la script. De exemplu, puteti include un comentariu care precizeaza numele autorului scriptului si ce face acesta.
Iata un model sintactic pentru comentariile PHP:
// Scrieti aici comentariul dumneavoastra (pe o singura linie)
Dupa cum se poate vedea, un comentariu incepe cu doua caractere slash, urmate de un spatiu. În continuare, linia contine comentariul dumneavoastra, care poate include orice caractere doriti, inclusiv caractere speciale.
Iata un exemplu simplu de script PHP care include comentarii:
<?php
// Script de la Ceva.net
// Acest script afiseaza un mesaj vizibil pentru utilizator.
echo „Acesta este un script foarte simplu.”;
?>
Nota: Fiecare linie a comentariului trebuie sa inceapa cu doua caractere slash //. Totusi, puteti crea un comentariu din mai multe linii si in alte moduri. Iata un exemplu:
/*
Acesta este un comentariu pe mai multe linii.
Poate fi alcatuit dintr-un numar oricat de mare de linii.
*/
Pentru a adauga un comentariu alcatuit din mai multe linii, scrieti la inceput caracterele /*, iar la sfarsit trebuie sa se incheie cu caracterele */. Intre cele doua perechi de caractere, puteti scrie orice text doriti, folosind oricate linii doriti.
5. Executarea unui script PHP
Dupa ce ati creat un script PHP, veti dori sa-l executati.
Sa luam un alt exemplu, ce contine cod HTML si comentarii:
Deschideti editorul dumneavoastra de texte si introduceti urmatoarele linii :
<!DOCTYPE HTML PUBLIC „-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php
// Script test
// Acest script afiseaza un mesaj vizibil pentru utilizator.
echo „Primul meu script PHP.”;
?>
</body>
</html>
Salvati fisierul cu numele test-script.php
Daca ati instalat un server de PHP pe calculatorul dumneavoastra, salvati fisierul in directorul www al serverului.
Deschideti browserul si scrieti adresa URL http://localhost/test-script.php
Daca nu aveti instalat un server de PHP pe calculator, incarcati (prin FTP) fisierul test-script.php pe un server pe web unde este instalat PHP.
Dupa ce v-ati incarcat fisierul cu scriptul, sunteti pregatit pentru a obtine accesul la acesta. Deschideti browserul Web si apelati adresa URL asociata scriptului dumneavoastra. Adresa URL trebuie sa fie alcatuita din adresa URL identificata de administratorul serverului unde ati incarcat scriptul, urmata de un slash (/), urmata de numele fisierului care contine scriptul dumneavoastra. Daca adresa URL se incheie deja cu un caracter slash, nu trebuie sa mai inserati inca un asemenea caracter inainte de numele scriptului dumneavoastra.
De exemplu, daca domeniul serverului unde ati incarcat scriptul e http://www.ceva.net/ ca adresa URL a catalogului care contine scripturile dumneavoastra PHP, puteti obtine accesul la scriptul dumneavoastra prin intermediul adresei URL http://www.ceva.net/test-script.php
Daca ati tastat corect adresa URL a scriptului dumneavoastra, iar scriptul respectiv nu contine erori, veti vedea datele de iesire ale scriptului dumneavoastra. Felicitari! Ati devenit programator PHP!
In browser va aparea:
Primul meu script PHP.
Tipuri de siruri si variabile
- Învatati tipul variabilelor in PHP
- Învatati sa folositi ghilimele si caractere escape pentru a specifica valori de tip sir speciale
Numere si siruri, tipul variabilelor
Programele de calculator manipuleaza datele, care reprezinta informatii. Programele PHP folosesc doua categorii principale de date: numere si siruri. Numerele sunt compuse mai ales din cifre, în timp ce un sir poate contine orice caracter, inclusiv cifre, litere si simboluri speciale.
Decizia privind modul de stocare a datelor este importanta, în mod caracteristic, datele se stocheaza sub forma de numere atunci când se doreste executarea unor operatii matematice asupra datelor, deoarece numerele sunt stocate într-un mod care permite efectuarea de calcule. Pe de alta parte, sirurile sunt stocate folosind o modalitate care faciliteaza întelegerea lor de catre operatorul uman. Datele trebuie stocate sub forma de siruri daca formatul acestora nu este numeric sau daca doriti ca operatorul uman sa fie capabil de a introduce sau de a vizualiza datele. Practic, puteti asimila numerele cu un mod de stocare a datelor în interiorul calculatorului. Sirurile se pot asimila unui mod de stocare a datelor în afara calculatorului.
Aceste doua mari categorii de date: numere si siruri, formeaza opt tipuri principale de variabile :
- – Boolean
- – Integer
- – Float
- – String
- – Array
- – Object
- – Resource
- – Null
In mod normal tipul variabilelor nu este specificat explicit; acesta va fi evaluat de catre interpretorul PHP la momentul run-time (in momentul executarii scriptului).
- 1. Tipul boolean
Variabilelele de tipul boolean pot lua doar doua valori : FALSE sau TRUE
Variabilele de alt tip decat boolean pot fi convertite la tipul boolean prin operatorul cast (bool) sau (boolean), plasate inaintea valorilor, desi in general nu e nevoie de aceasta converrire, valoarea fiind automat recunoscuta de PHP.
- . Tipul integer
PHP foloseste doua categorii de numere: întregi (tipul integer) si duble, cu virgula (tipul float)
Variabilele integer reprezinta numerele intregi, ele pot fi specificate in format zecimal, hexazecimal sau octal.
Numerele întregi reprezinta numerele fara parte fractionara folosite la numarare, plus zero si numerele negative. Cu alte cuvinte, în PHP termenul de întreg are aceeasi semnificatie ca si în matematica. De exemplu, numarul 100 poate fi reprezentat în PHP sub forma de întreg.
Scrierea numerelor PHP este simpla. Un întreg PHP se obtine prin scrierea cifrelor care îi alcatuiesc valoarea. Daca valoarea este negativa, scrieti un semn minus imediat la stânga numarului. Evitati sa scrieti spatii sau virgule ca parte a unui întreg PHP.
Iata câteva exemple de numere PHP întregi :
215678 – Numar in reprezentare zecimala
0x1A8; – Numar in reprezentare hexazecimala (reprezinta: 1*16*16 + 10*16 + 8 = 424 (in zecimal))
067 – Reprezinta: 6*8 + 7 = 55 (in zecimal)
Valorile minime, respectiv maxime pe care le poate lua o variabila de tip integer depind de sistemul de operare pe care ruleaza modulul PHP. De exemplu pentru un sistem Windows valoarea unui integer se memoreaza pe 32 de biti: 31 bit pentru numar si un bit pentru semn. In acest caz valorile unui intreg se afla in intervalul :-231 repectiv: 231. Daca incercam sa folosim un integer cu valori care ies din acest inteval vor avea de-a face cu un fenomen de depasire : integer overflow. In acest caz interpretorul PHP converteste acesta valoare intr-o valoare de tip float (care are un interval mai extins de valori).
In PHP simpla impartire a doua valori intregi va produce ca rezultat o variabila de tip float. Pentru a obtine doar partea intreaga acestui rezultat putem folosi operatorul cast (int) in fata rezultatului.
Ex.: echo (int)8.7; (va returna 8)
Pentru a rotunji rezultatul la intregul cel mai apropiat de valoarea reala se poate folosi functia round(), unde intre paranteze se adauga valoarea.
Ex.: echo round(8.7); (va returna 9)
- 3. Tipul float
Reprezinta variabile de tip real [numerele cu virgula], (în lb. engleza se foloseste punctul zecimal în loc de virgula). De exemplu 2.5
In general, numerele duble (tipul float) sunt stocate folosindu-se formatul standard IEEE-64, care furnizeaza 64 de biti. Acest format va permite sa stocati valori care pot merge pâna la 1,8 x 10 la puterea 308 sub forma de numere duble si furnizeaza aproximativ 14 cifre dupa punctul zecimal (sau cifre semnificative) de precizie.
Iata câteva exemple de numere duble (tipul float)
- 123.4567 – Numar de tip float
- 1.2e3; – Reprezinta: 1.2 * 103
- 4. Tipul string
Reprezinta o insiruire de caractere, fiecare caracter este memorat pe 1 byte; setul de caractere este limitat la 256 valori distincte. Dimensiunea sirurilor poate fi oricat de mare in PHP, nu exista specificatii care sa limiteze numarul maxim de caractere dintr-un sir.
Spre deosebire de întregi si de numere float, care contin cifre, sirurile pot contine orice caracter. Ca atare, sirurile sunt utile pentru stocarea datelor care nu pot fi calculate, precum nume, fraze si adrese.
In PHP, un sir poate fi declarat in mai multe feluri:
1) Un mod simplu de a declara un sir este prin delimitarea cu ghilimele simple (‘ ‘)
Daca dorim ca sirul sa contina caracterul ‘ va trebui sa inseram inaintea lui caracterul escape \. Daca dorim ca sirul sa contina caracterul \ va trebui sa dublam acest caracter. Acest comportament este exemplificat in exemplul urmator:
<?php
$var1 = ‘Acesta este un sir de test’;
echo ‘Curs \’PHP\”;
echo ‘<br />Vrei sa stergi C:\\*.* ?’;
echo ‘<br />Variabila var1=$var1’;
echo „<br />Variabila var1=$var1”;
?>
In browser va aparea:
Curs ‘PHP’
Vrei sa stergi C:\*.* ?
Variabila var1=$var1
Variabila var1=Acesta este un sir de test
Observati diferenta dintre ultimile doua linii!
In penultima linie, unde s-a folosit gilimele simple pentru delimitarea sirului, variabila $var1 nu este expandata adica nu este afisat valoarea variabilei var1=Acesta este un sir de test ci exact textul scris (numele ei). Pentru a realiza afisarea valorii variabilei si nu numele acesteia, se folosesc ghilimelele duble, precum in ultima linie a exemplului de mai sus.
2) O alta metoda pentru a specifica un sir în PHP este prin folosirea ghiimelelor duble (” „).
Daca intr-un sir delimitat prin ghilimele duble vrem ca acesta sa afiseze numele unei variabile, nu valoarea acesteia, adaugam un caracter backslash (\) inaintea numelui variabiei.
Exemplu; echo „Numele variabilei este \$var”;
Acest cod va afisa Numele variabilei este $var, oricare ar fi valoarea variabilei „$var”.
Caracterele care alcatuiesc sirul sunt incluse între ghilimele duble (” „);
De exemplu, sirul reprezentând numele fizicianului care a formulat teoria relativitatii este „Albert Einstein”. Asa cum s-a explicat, un sir poate contine date numerice; de exemplu, „3.14159”.
Daca se doreste adaugarea de ghilimele duble intr-un sir delimitat de ghilimele duble, se adauga caracterul \ in fata acestora.
Exemplu; echo „Numele programului este \”PHP\”.”;
Prin delimitarea cu ghilimele duble PHP faciliteaza includerea în siruri a unor caractere speciale, precum caracterele de salt la linie noua sau retur de car, prin furnizarea de secvente escape care reprezinta caractere speciale.
Iata secventele escape folosite în PHP:
- \n – salt la linie noua
- \r – retur de car (rand nou)
- \t – caracter de tabulare pe orizontala
- \\ – backslash
- \$ – simbolul dolarului
- \” – ghilimele duble
Ca exemplu, iata un sir care include un retur de car, urmat de un salt la linie noua: „Salut, lume!\r\n”.
Retineti ca fiecare secventa escape începe cu un backslash (\). Pentru a include un backslash într-un sir, trebuie sa folositi doua caractere backslash.
Pe langa imbricarea variabilelor in cadrul sirurilor delimitate prin ghilimele duble, PHP pune la dispozitie operatorul de concatenare a sirurilor: . (punct) . Acest operator adauga un sir la sfarsitul altui sir. De exemplu:
<?php
$nume = ‘Popescu’;
$prenume=’Costel’;
echo ‘Numele de familie este ‘.$nume. ‘iar prenumele este ‘.$prenume;
?>
In browser va aparea:
Numele de familie este Popescu iar prenumele este Costel
In anumite situatii este necesar sa accesam unul dintre caracterele unui sir. Pentru aceasta putem folosi parantezele{} ca in exemplul de mai jos:
<?php
$var1 = ‘Acesta este un sir de test’;
echo $var1{0}; // Afisaza A (primul caracter din sir)
echo $var1{2}; // Afisaza e (al treilea caracter din sir)
?>
Rezultatul afisat va fi
Ae
3) Sintaxa heredoc este o alta modalitate de a delimita siruri
In acest caz delimitatorul este („<<<„); acesta trebuie urmat de un identificator unic, dupa care urmeaza sirul de caractere, iar secventa se incheie din nou cu identificatorul mentionat. Identificatorul de incheiere trebuie sa se afle in prima coloana a liniei, acesta poate contine caractere alfanumerice dar neaparat trebuie sa inceapa cu o litera, nu cu o cifra sau alt semn.
Veti intelege mai bine studiind exemplu de mai jos:
<?php
$var1 = <<< EOT
Exemplu de sir care foloseste delimitatorul heredoc.
EOT;
echo $var1;
?>
Rezultatul afisat va fi:
Exemplu de sir care foloseste delimitatorul heredoc.
- 5. Tipul array
Reprezinta un vector de valori, fiecare element al matricei are asociat o cheie. Aceasta cheie va fi folosita ulterior la identificarea unui element specific at matricei. In PHP tipul array se mai numeste si tip map ordonat, deoarece elemente vectorului sunt ordonate dupa campul cheie.
Variabilele de tip array si lucrul cu acestea vor fi prezentate mai detaliat in lectiile urmatoare. Iata un exemplu simplu de variabile array:
<?php
$fructe[0] = ‘mere’;
$fructe[1] = ‘caise’;
$fructe[2] = ‘piersici’;
?>
- 6. Tipul object
Reprezinta de fapt instanta unei clase declarate in PHP. O clasa este o structura care contine variabile membru si functii membru.
Variabilele de tip object si lucrul cu acestea vor fi prezentate detaliat in lectiile urmatoare.
- 7. Tipul resource
Este un tip special de variabila care pastreaza o legatura spre resurse externe. Exemple de resurse externe: manipulatori pentru deschidere de fisiere, conectare la baze de date, compresia fisierelor, resurse COM, etc…
- 8. Tipul NULL
Reprezinta varibilele care nu au inca atribuita o valoare.
O variabila se considera a avea valoarea Null daca:
- – este setata explicit prin atribuirea valorii NULL
- – nu a fost asignata inca o valoare acestei variabile
- – variabila a fost stearsa prin functia unset();
Putem afla tipul unei variabile folosind functia gettype() care returneaza un string (sir) continand tipul variabilei cercetate.
Observati si studiati exemplul de mai jos
<?php
$var1 = TRUE;
$var2 = 100;
$var3 = 23.88;
$var4 = „Nume”;
$var[5] = „fructe”;
echo gettype($var1);
echo ‘<br />’.gettype($var2);
echo ‘<br />’.gettype($var3);
echo ‘<br />’.gettype($var4);
echo ‘<br />’.gettype($var[5]);
echo ‘<br />’.gettype($var6);
?>
In browser va aparea:
boolean
integer
double
string
string
NULL
Observati ca utima linie afisata este NULL, asta deoarece $var6 nu are nici o valoare determinata
Variabile si operatori PHP
- Intelegeti diferenta dintre valori si variabile
- Invatati modul de utilizare a operatorilor pentru combinarea valorilor în expresii
- Invatati modul de utilizare a functiilor pentru executarea operatiilor elementare
1. Valori si variabile
Daca se asociaza o valoare cu un nume, ca si in algebra, este posibila modificarea acelei valorii prin referire la numele respectiv. O valoare cu nume se numeste variabila, deoarece.
In limbajul PHP variabilele sunt reprezentate prin semnul $ urmat de numele variabilei.
Numele variabilei este case sensitive, adica conteaza daca numele este scris cu litere mari sau mici. Intotdeuna numele variabilelor trebuie sa inceapa cu o litera sau o liniuta de subliniere (_) si poate fi urmat de litere sau cifre.
Iata cateva exemple de nume de variabila:
- $var
- $Numar
- $_elemente
Pentru a asocia o valoare unei variabile, veti scrie cu un semn egal, asa:
$temperatura = 33.5;
Semnul egal este urmat de valoarea care urmeaza a fi atribuita variabilei, in acest exemplu, valoarea este data de valoarea literala dubla (float) 33.5. Caracterul punct si virgula (;) marcheaza sfarsitul instructiunii.
De asemenea, puteti atribui valoarea unei variabile catre o alta variabila, prin scrierea unei instructiuni de atribuire astfel:
$castigator = $nume;
In acest caz, valoarea variabilei $nume devine valoarea variabilei $castigator. Acest procedeu se numeste. Astfel o modificare facuta asupra lui $nume se va propaga automat si asupra variabilei $castigator.
Iata exemplul de mai sus asa cum va aparea intr-un script PHP simplu :
<?php
$nume = „Cosmin”;
$castigator = $nume;
echo $castigator;
?>
Rezultatul afisat va fi:
Cosmin
• Exista si un alt tip de atribuire valoare de la o variabila la alta, denumita atribuire prin referinta (folosind si caracterul „&”), aceasta de fapt leaga cele doua variabile, vedeti tutorialul: Atribuire valoare prin referinta
Forma valorii unei variabile se numeste tipul variabilei. Tipul unei variabile se poate modifica daca atribuiti variabilei o valoare de un tip diferit fata de cel al valorii curente a variabilei.
De exemplu, instructiunea de atribuire
$x = 3;
Atribue variabilei $x tipul integer.
Daca instructiunea de atribuire
$x = 3.5;
va fi executata ulterior, variabila $x devine de tip float.
Desi instructiunile de atribuire din limbajul PHP si ecuatiile matematice folosesc ambele semnul egal, cele doua notiuni sunt foarte diferite, deoarece atribuirea nu este acelasi lucru cu egalitatea. Atribuirea este o operatie care inlocuieste o valoare cu o alta. Pe de alta parte, egalitatea este o relatie intre doua valori. Cand doua valori sunt egale, acestea raman egale pentru totdeauna. Totusi, puteti atribui o valoare unei variabile si ulterior puteti atribui aceleiasi variabile o alta valoare. Cu alte cuvinte, egalitatea este permanenta; atribuirea nu este.
Variabilele declarate mai sus sunt definite de utilizator. In PHP exista si alte variabile numite „variabile predefinite” care rezida in nucleul PHP, sunt alocate automat de catre modulul PHP, si sunt accesibile in program.
In continuare enumeram citeva dintre aceste „Variabile Superglobale” (accesibile din toate scripturile PHP):
- $GLOBALS – contine referinte la variabilele globale disponibile in scriptul curent.
- $_SERVER – variabile definite de server sau relative la contextul in care se executa scriptul curent
- $_GET – variabile furnizate scriptului prin adresa URL
- $_POST – variabile furnizate scriptului prin metoda HTTP POST (in general prin formulare)
- $_COOKIE – variabile furnizate scriptului prin HTTP cookie
- $_FILES – furnizeaza scriptului fisierele uploadate
- $_SESSION – variabile care sunt inregistrate in sesiunea scriptului
2. Operatori
Pentru a va ajuta sa efectuati calcule si prelucrari ale datelor, PHP include o diversitate de operatori si functii utile. Cand combinati valorile literale si variabilele cu operatori si functii, construiti ceea ce este cunoscut sub numele de expresii.
Operatorii sunt simboluri specifice care realizeaza o actiune specifica in cadrul unei expresii.
Operatorii actioneaza asupra variabilelor prezente in expresie. De exemplu in cadrul expresiilor matematice vom folosi operatori aritmetici.
$a + $b | Adunare : a+b |
$a – $b | Scadere : a-b |
$a * $b | Inmultire: a*b |
$a / $b | Impartire: a/b |
$a%$a | Moule :restul impartirii lui a la b |
$a +=$b | Echivalent cu: $a = $a + $b |
$a -=$b | Echivalent cu: $a = $a – $b |
$a *=$b | Echivalent cu: $a = $a * $b |
$a /=$b | Echivalent cu: $a = $a / $b |
$a++ | Incrementare ; Ecivalent cu $a = $a +1 |
$a– | Decrementare; Echivalent cu $a = $a -1 |
O proprietate interesanta a operatorului de impartire este aceea ca returneaza o valoare intreaga daca ambii sai operanzi sunt intregi si rezultatul este un intreg; in caz contrar, returneaza o valoare cu virgula (de tip float). Astfel, instructiunea de atribuire
$x = 10/3;
atribuie valorii $x valoarea cu virgula 3.3333333333333, chiar daca operanzii operatorului de impartire sunt ambii intregi.
Similar operatorului de impartire, operatorul modulo executa o impartire; cu toate acestea, operatorul modulo returneaza restul, nu catul impartirii. De exemplu, prin impartirea lui 10 la 3 se obtine catul 3 si restul 1. Deci, instructiunea de atribuire
$x = 10%3;
atribuie variabilei $x valoarea 1.
Operatorii de incrementare $a++ si decrementare $a– au un efect diferit daca sunt scrisi ++$a respectiv –$a
In primul caz, daca avem de exemplu
$x= $a++;
i-se atribue lui $x valoarea variabilei $a dupa care se efectueaza operatia de incrementare ($a = $a + 1)
Dar daca avem
$x = ++$a=
se efectueaza operatia de incrementare ($a = $a + 1) dupa care i-se atribue lui $x noua valoarea a lui $a
Ca in matematica, PHP evalueaza operatorii de inmultire si de impartire anterior operatorilor de adunare, respectiv scadere. Aceasta caracteristica se numeste precedenta.
Datorita precedentei, instructiunea
$x=1+2*3;
atribuie variabilei $x valoarea 7, chiar daca operatorul de adunare apare inaintea celui de inmultire. Se respecta regulile din matematica. Daca doriti sa controlati precedenta unei expresii, puteti folosi paranteze. De exemplu, instructiunea
$x=(1+2)*3;
atribuie variabilei $x valoarea 9, deoarece partea inclusa intre paranteze a expresiei este evaluata prima, asa cum se procedeaza in algebra.
In afara de acesti operatori numerici, PHP include un operator de concatenare a sirurilor (.), denumit uneori operator de unire, deoarece functia sa consta in unirea sirurilor.
Sa observam urmatorul exemplu:
<?php
$var1 = ‘Ionescu’;
echo ‘Numele candidatului este ‘.$var1;
$var2 = ‘Candidat: ‘;
$var2 .= $var1;
echo „<br />$var2”;
?>
Rezutatul afisat va fi:
Numele candidatului este Ionescu
Candidat: Ionescu
In exemplul de mai sus se observa folosirea operatorului de concatenare . (punct)
Acest operator adauga la sfarsitul sirului curent noul sir furnizat ca parametru.
Expresia $a .= ‘Sir de test’ este echivalenta cu : $a = $a . ‘Sir de test’.
3. Functii
In afara de operatori, PHP include functii care executa operatii utile. Iata unele exemple de functii:
- abs(x) – Returneaza valoarea absoluta a lui ‘x’
- ceil(x) – Returneaza valoarea ‘x’, rotunjita la intregul imediat superior
- floor(x) – Returneaza valoarea ‘x’, rotunjita la intregul imediat inferior
- max(x,y,…) – Returneaza valoarea maxima a unui set de valori
- min(x,y,…) – Returneaza valoarea minima a unui set de valori
- pow(x,n) – Returneaza numarul ‘x’, ridicat la puterea specificata ‘n’
- strftime(f) – Returneaza data curenta, formatata conform continutului parametrului ‘f’
- sqrt(x) – Returneaza radacina patrata a lui ‘x’
– In afara de acestea, PHP include multe alte functii. Consultati site-ul www.php.net.
Majoritatea functiilor necesita una sau mai multe valori de intrare, cunoscute sub numele de argumente. De exemplu, functia „sqrt” necesita un argument (aici este ‘x’) care specifica valoarea a carei radacina patrata trebuie calculata.
Unele functii, precum min() si max(), preiau un numar nedefinit de argumente. Alte functii nu necesita nici un fel de argumente. Pentru a putea folosi o functie in mod corespunzator, trebuie sa cunoasteti:
- Numele functiei
- Actiunea functiei si valoarea returnata de aceasta, daca exista
- Numarul argumentelor preluate de functie
- Semnificatia fiecarui argument
Iata un exemplu simplu care foloseste o functie pentru calculul lungimii laturilor unui patrat, daca este cunoscuta aria patratului:
- $latura=sqrt($arie);
Retineti modul in care argumentul functiei este inclus intre paranteze, precum si modul in care functia si argumentul sau sunt folosite intr-un mod asemanator cu o valoare literala sau o variabila.
Iata un exemplu care prezinta modul de utilizare a functiei „max”, care preia mai multe argumente:
- $punctaj_maxim=max($punctaj1, $punctaj2, $punctaj3);
Rezultatul dat variabilei „$punctaj maxim” va fi determinat de functia „max”, aceasta determinand valoarea cea mai mare a argumentelor din paranteza.
Observati ca fiecare argument este separat de vecinul sau printr-o virgula.
Utilizare formulare HTML cu PHP, $_GET si $_POST
- Invatati sa trimiteti date prin formulare HTML
- Invatati sa preluati date trimise prin GET si POST
1. Proiectarea unui formular
Principalele sarcini în proiectarea unui formular HTML le constituie alegerea controalelor HTML care vor fi incluse în formular, selectarea amplasamentului controalelor si alegerea numelui acestora.
Studiati lectia HTML despre Formulare, aceasta explica modul de realizare a fiecarui obiect dintr-un formular HTML si va va ajuta sa invatati rolul acestor elemente HTMLL.
2. Crearea unui formular
Un formular HTML trebuie sa contina un buton de expediere, submit, pe care utilizatorul executa clic pentru a trimite datele din formular la scriptul PHP.
Formularele se creaza folosind etichete specifice incadrate in tag-ul <form> </form> ca in exemplul de mai jos:
<form action=”script.php” method=”post”>
Nume:<input type=”text” name=”nume” />
<br /><input type=”submit” name=”submit” value=”Trmite formular” />
</form>
In browser se va vedea:
Nume:
Fiecare element al formularului trebuie introdus intre etichetele <form> si </form>.
Atributul „action” indica fisierul cu scriptul care va primi datele de la formular si reprezinta una dintre cele mai importante precizari.
Fiecare element, camp dintr-un formular trebuie sa aibe un nume distinct, dat prin atributul „name”; acest nume este folosit de scriptul PHP la care sunt trimise datele, astfel, scriptul PHP recunoaste datele din campul respectiv folosind numele acestuia.
3. Utilizarea metodelor GET si POST
Atributul „method” poate avea doua valori : GET si POST. Diferenta intre metodele GET si POST consta in modul in care informatia din formular este transmisa scriptului care o prelucreaza.
– Metoda GET trimite toate informatiile adunate ca parte a adresei URL; aceste informatii sunt vizibile pentru utilizator.
– Metoda POST transmite informatia intr-o maniera invizibila pentru utilizator si poate transmite o cantitate mai mare de date decat GET.
Folosind exemplul de formular de mai sus, metoda GET va transmite serverului o adresa URL ca cea de mai jos:
- http://www.ceva.net/script.php?nume=Popescu
iar in cazul folosirii metodei POST, in URL va aparea doar:
- http://www.ceva.net/script.php
Metoda GET permite transmiterea unui volum limitat de informatii catre server; de asemenea nu este recomandata folosirea acestei metode in cazul in care dorim sa transmitem date personale(de exemplu parolele introduse intr-un formular pot fi vizualizate de oricine in browserul de Web).
4. Receptionarea datelor de la un formular HTML
In general datele din formular sunt preluate de scriptul PHP prin urmatoarea formula:
- $_POST[‘nume’] – daca este folosit method=”post”
- $_GET[‘nume’] – daca este folosit method=”get”
– unde „nume este valoarea atributului name al elementului din formularul HTML.
Sa luam un exemplu practic de formular HTML care trimite date (prin method=”post”) la un script PHP unde acestea vor putea fi vizualizate.
Salvam scriptul de mai jos intr-un fisier pe care-l numim „test-form.php”
<?php
$nume = $_POST[‘nume’];
$email = $_POST[‘email’];
$parola = $_POST[‘parola’];
echo „Nume = $nume”;
echo „<br />E-mail = $email”;
echo „<br />Parola = $parola”;
?>
Scriem urmatorul cod HTML intr-un alt fisier „form.html”, pe care-l salvam in acelasi director cu scriptul PHP de mai sus.
<!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Transitional//EN”
„http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”ro” lang=”ro”>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ />
<title> Test-Form </title>
</head>
<body>
<form action=”test-form.php” method=”POST”>
Nume:<input type=”text” name=”nume” />
<br />Email:<input type=”text” name=”email” />
<br />Parola:<input type=”password” name=”parola” />
<br /><input type=”submit” name=”submit” value=”Trmite datele” />
</form>
</body>
</html>
In browser va aparea:
Nume:
Email:
Parola:
Completam datele din formular, de exemplu: la Nume : Popescu, la Email : plomar@uv.ro si Parola : parola_mea
Dupa ce am competat datele, apasam clic pe butonul „Trimite datele”, acestea vor fi trimise la scriptul PHP „test-form.php”, care le va prelucra si va afisa urmatorul rezultat:
Nume = Popescu
E-mail = plomar@uv.ro
Parola = parola_mea
Sa intelegem exemplu de mai sus.
Folosind formularul de mai sus, atributul NAME din fiecare eticheta INPUT atribuie fiecarei casete cu text un nume, astfel scriptul PHP va putea recunoaste datele scrise in casete. In scriptul „test-form”.php” vom accesa variabilele:
- $nume – va primi informatia introdusa in campul Nume
- $email – va primi informatia introdusa in campul Email
- $parola – va primi informatia introdusa in campul Parola
Deoarece cunoastem metoda prin care trimitem datele catre scriptul PHP, „POST”, am folosit variabila PHP globala _POST pentru a prelua datele din formular:
- $_POST[‘nume’]
- $_POST[‘email’]
- $_POST[‘parola’]
Constructia echo trimite datele de iesire care vor fi afisate de browser
Variabile PHP globale: _GET si _POST reprezinta de fapt variabile de tip array, fiecare element se poate accesa prin cheia sa; in cazul nostru cheia fiecarui element este data de atributul : NAME al casetelor din formular
5. Trimiterea de date unui script prin adresa URL
In afara de a expedia unui script datele printr-un formular, puteti expedia date cu ajutorul adresei URL a paginii. Pentru aceasta, atasati la sfarsitul adresei URL un semn al întrebarii (?) si apoi includeti o serie de perechi „nume-valoare” (separate prin &), ca in exemplu urmator:
- http://www.ceva.net/fisier.php?nume1=valoare1&nume2=valoare2
Exemplul include numai doua perechi „nume-valoare”; cu toate acestea, puteti include oricâte asemenea perechi doriti (separate prin caracterul &), in functie de limita impusa de browser.
Pentru a prelua si folosi datele dintr-o astfel de adresa URL, folositi in interiorul scriptului PHP expresia „$_GET[‘nume’], ca in exemplu urmator”
- $var1 = $_GET[‘nume1’]
- $var2 = $_GET[‘nume2’]
Unde „nume1” si „nume2” sunt numele variabilelor din adresa URL, iar „$var1” si „$var2” sunt variabilele care vor fi folosite in scriptul PHP (din „fisier.php„) si a caror valori vor fi „valoare1” respectiv „valoare2” continute in adresa URL.
Daca doriti sa trimiteti unui script, prin intermediul adresei sale URL, caractere speciale precum un semn al intrebarii, un semn egal sau un ampersand, se poate crea confuzie.
Pentru a functiona corect, un sir trebuie sa fie codificat URL. Pentru a codifica URL un sir, caracterele speciale se înlocuiesc cu echivalentele lor hexazecimale, precedate de un simbol procent (%). Pentru alte detalii, consultati lectia despre Utilizarea caracterelor special , subtitlul 4 ( Conversia adreselor URL).
De exemplu, forma codificata URL a sirului „la multi ani!” este %22la multi ani%21%22.
Adresa URL rezultanta se numeste „sir de interogare” si nu poate contine spatii. Daca doriti sa trimiteti un spatiu ca parte a unui sir de interogare, trimiteti în locul spatiului un semn plus (+). Iata un exemplu de sir de interogare care codifica numele autorului acestui site:
- http://www.ceva.net/script.php?autor=Dis+cant
Unele dintre cele mai comune caractere speciale si echivalentele lor codificate URL sunt prezentate în tabelul de mai jos:
Caracter special | Echivalentul codificat URL |
. | *%2e |
> | %3e |
^ | %5e |
~ | %7e |
+ | %2b |
, | %2c |
/ | %2f |
: | %3a |
; | %3b |
%3c | |
= | %3d |
> | %3e |
[ | %5b |
\ | %5c |
] | %5d |
_ | %5f |
{ | %7b |
| | %7c |
} | %7dc |
tab | %09 |
spatiu | %20 |
! | %21 |
“ | %22 |
# | %23 |
$ | %24 |
% | %25 |
& | %26 |
` | %27 |
( | %28 |
) | %29 |
@ | %40 |
` | %60 |
Variabile de mediu si erori
- In aceasta lectie invatati sa obtineti accesul la valorile variabilelor de mediu.
- Invatati despre depanarea si tratarea erorilor.
1. Obtinerea si utilizarea datelor de la o variabila de mediu
Variabilele de mediu sunt folosite pentru stocarea optiunilor si a parametrilor care personalizeaza mediul de aplicatie. Aplicatiile pot obtine accesul la valorile variabilelor de mediu si in functie de acestea îsi pot ajusta comportamentul.
De exemplu, calea de cautare a programelor MS-DOS este stocata într-o variabila de mediu denumita PATH. In general, comenzile sistemelor de operare sunt folosite pentru a configura variabilele de mediu si pentru a stabili valorile acestora. Cu toate acestea, unele aplicatii manipuleaza valorile variabilelor de mediu.
Atât serverul Web Apache, cât si serverul de aplicatie PHP folosesc variabile de mediu pentru a prezenta informatii de stare. Unele dintre cele mai importante variabile de mediu folosite de Apache si PHP sunt rezumate în tabelul de mai jos. Numeroase servere Web, altele decât Apache, furnizeaza o parte din aceste variabile de mediu sau chiar pe toate.
Multe dintre aceste variabile reflecta caracteristicile cererii HTTP care a solicitat executia PHP. Puteti vizualiza toate variabilele de mediu disponibile pentru programele PHP prin invocarea functiei phpinfo() si vizualizarea datelor de iesire generate de aceasta.
Vizualizarea datelor unei variabile de mediu se poate face folosind variabila $_SERVER si o cheie (intre paranteze patrate) ce repreinta numele variabilei de mediu.
- De exemplu, pt. afisarea domeniului serverului unde ruleaza scriptul
echo $_SERVER[‘SERVER_NAME’];
Variabila de mediu | Descriere |
CONTENT_LENGTH | – Lungimea, în octeti, a corpului cererii. |
CONTENT_TYPE | – Tipul MIME al datelor din corpul cererii. |
DOCUMENT_ROOT | – Calea care constituie radacina arborelui catalogului cu documente al serverului Web. |
GATEWAY_INTERFACE | – Returneaza ersiunea protocolului CGI (Common Gateway Interface) folosit de serverul Web. |
HTTP_ACCEPT | – Continutul antetului HTTP Accept. |
HTTP_ACCEPT_CHARSET | – Continutul antetului HTTP Accept-Charset:, care specifica seturile de caractere întelese de client. |
HTTP_ACCEPT_ENCODING | – Continutul antetului HTTP Accept-Encoding:, care specifica tipurile de continuturi întelese de client. |
HTTP_ACCEPT_LANGUAGE | – Continutul antetului HTTP Accept-Language:, care specifica limbajele preferate de client. |
HTTP_CONNECTION | – Continutul antetului HTTP Connection:, care indica optiunile solicitate de client. |
HTTP_HOST | – Continutul antetului HTTP Host:, care indica numele de gazda, folosit de client la prezentarea cererii. |
HTTP_REFERER | – Adresa URL a paginii Web care a trimis clientul la pagina curenta. |
HTTP_USER_AGENT | – Continutul antetului HTTP user-Agent, care indica tipul si versiunea browser-ului folosit. |
PATH | – Calea de executie asociata cu mediul serverului. |
QUERY_STRING | – Sirul de interogare, daca exista, prin care a fost accesata pagina. |
REMOTE_ADDR | – Adresa IP a clientului (vizitatorului). |
REMOTE_HOST | – Numele de gazda al clientului. |
REMOTE_PORT | – Adresa portului clientului de unde a pornit cererea. |
REQUEST_METHOD | – Metoda de cerere HTTP folosita; de exemplu, GET, POST, PUT sau HEAD. |
REQUEST_URI | – URI folosit pentru accesul la pagina curenta. URI este alcatuit dintr-un URL si un sir optional de interogare. |
SCRIPT_FILENAME | – Numele de cale absolut al scriptului curent. |
SCRIPT_NAME | – Adresa URL a scriptului curent. |
SERVER_ADMIN | – Adresa de e-mail a administratorului serverului Web. |
SERVER_HOST | – Numele de gazda asociat serverului Web care prelucreaza cererea. |
SERVER_PORT | – Portul folosit de serverul Web pentru comunicatii. |
SERVER_PROTOCOL | – Numele si versiunea protocolului prin intermediul caruia s-a executat cererea. |
SERVER_SIGNATURE | – Sirul care identifica versiunea serverului Web si numele de gazda folosit pentru prelucrarea cererii. |
SERVER_SOFTWARE | – Sirul care identifica programul server Web si versiunea acestuia. |
– O lista completa a acestor variabile de mediu o gasiti la pagina oficiala $_SERVER
Puteti obtine accesul la variabila de mediu folosind variabila $_SERVER care este de fapt un Array in care cheile elementelor sunt numele variabilelor de mediu
De exemplu, urmatoarea instructiune echo trimite browserului adresa IP a clientului (vizitatorului):
<?php
$ip = $_SERVER[‘REMOTE_ADDR’];
echo „Adresa dv. IP este $ip”;
?>
Afisarea sau nu a acestor variabile globale depinde de permisiunile facute la configurarea serverului PHP si de datele transmise.
2. Depanarea unui script
Uneori, în locul datelor de iesire ale scriptului dumneavoastra, puteti vedea unul din urmatoarele:
- Textul scriptului, în loc de datele de iesire ale acestuia
- O caseta de dialog, prin care sunteti întrebat daca doriti sa descarcati fisierul care contine scriptul
- Un mesaj în care se spune ca scriptul nu exista
- Un mesaj în care se spune ca browserul dumneavoastra Web nu are permisiunea de a obtine accesul la script
- Un mesaj în care se spune ca scriptul dumneavoastra contine o eroare
La vizualizarea rezultatelor unui script PHP se pot produce numeroase erori, chiar daca scriptul în sine este corect.
– Daca vedeti textul scriptului dumneavoastra sau o caseta de dialog prin care sunteti întrebat daca doriti sa descarcati fisierul care contine scriptul, este posibil ca extensia fisierului script sa fie incorecta sau ca serverul PHP sa nu functioneze. Desi fisierele script PHP trebuie sa aiba, în general, extensia .php, este posibil (dar mai rar) ca un administrator de sistem sa configureze un server PHP astfel încât acesta sa impuna o alta extensie de fisier. Astfel, daca scriptul dumneavoastra esueaza din unul dintre aceste doua motive, luati legatura cu administratorul dumneavoastra de sistem.
– Daca vedeti un mesaj în care se spune ca scriptul nu exista, este posibil ca dumneavoastra sa fi tastat incorect adresa URL. Verificati daca ati tastat corect adresa URL identificata de administratorul dumneavoastra de sistem, precum si daca ati atasat corect la aceasta numele fisierului care contine scriptul, folosind un slash numai daca adresa URL identificata de administratorul dumneavoastra de sistem nu se încheie cu acest caracter.
– Daca vedeti un mesaj în care se arata ca browserul dumneavoastra Web nu are permisiunea de a obtine accesul la script, poate ca este necesar sa modificati permisiunile fisierului script. Pentru a afla cum trebuie procedat, consultati-va cu administratorul de sistem.
– Daca vedeti un mesaj în care se spune ca scriptul dumneavoastra contine o eroare, verificati daca nu a aparut vreuna din urmatoarele probleme:
- O eroare de tastare, cum ar fi scrierea gresita a cuvântului echo
- O eroare de punctuatie, cum ar fi paranteze, ghilimele sau punct si virgula, lipsa sau inserate gresit
- Neincluderea sau includerea eronata a liniilor de delimitare a scriptului, în speta <?php si ?>
- Un marcaj de comentariu ( / / ) care lipseste sau care a fost introdus gresit
De exemplu, iata un script care contine un tip de eroare frecvent întâlnit. Puteti identifica eroarea?
<?php
// Acest script contine o eroare de sintaxa
echo „Salut, World Wide Web!;
?>
Din script lipseste caracterul ghilimele duble de închidere, care trebuie sa delimiteze expresia de tip text. Daca încercati sa executati acest script, puteti vedea doar o pagina goala sau o eroare similara celei prezentate în continuare.
Parse error. Parse error in /home/bmccarty/public_html/php/module-01/syntax-error.php On line 7
Mesajul de eroare încearca sa va indice sursa erorii, indicând numarul liniei la care s-a produs eroarea. Totusi, remarcati ca mesajul va îndruma spre linia 7 a unui script care contine numai 4 linii. Din moment ce ghilimelele duble de închidere lipsesc, serverul PHP cauta dincolo de sfârsitul scriptului pentru a gasi ghilimelele duble respective. Ca atare, serverul PHP este oarecum derutat cu privire la sursa erorii.
Morala este aceea ca nu puteti conta în totalitate pe serverul PHP pentru a determina locatia erorii; folositi numarul de linie furnizat de server numai ca îndrumar pentru a depista locatia probabila a erorii.
3. Tratarea erorilor
Modulul PHP poate fi configurat astfel incat sa afiseze erorile intilnite in codul PHP. Acest lucru poate fi foarte util in cazul depanarii programelor. Pentru a activa afisarea erorilor exista doua metode:
- – modificarea parametrului display_errors din fisierul de configurare „php.ini”
- – folosirea functiei ini_set(‘display_errors’);
In cazul primei metode trebuie sa avem drepturi de administrator pentru a modifica fisierul php.ini. Nu se recomanda setarea parametrului display_errors la valoarea 1(TRUE) in cazul site-urilor de productie; mesajele de eroare afisate nu sint folositoare utilizatorului. Pe de alta parte aceasta ar contribui la marirea riscului unui atac.
A doua metoda consta in folositrea functiei ini_set, care permite unui script sa redefineasca temporar un parametru din fisierul de configurare php.ini.
Consideram un exemplu de cod in care intentionat incercam sa citim variabile care nu exista:
<?php
ini_set(‘display_errors’,1);
echo „Valoarea transmisa este „.$var;
?>
In exemplul de mai sus daca variabila cu nume: „var” nu exista PHP va afisa un mesaj de eroare de genul:
Notice: Undefined variable: var
Putem determina tipurile de erori pe care le semnaleaza PHP folosind functia: error_reporting(). Aceasta preia o constanta care specifica nivelul la care se afiseaza erorile.
- error_reporting(E_ALL) – semnaleaza toate tipurile de erori
- error_reporting(E_ALL & ~E_NOTICE) – semnaleaza toate erorile in afara de anunturi
- error_reporting(0) – dezactiveaza acesta caracteristica.
Exemplu:
<?php
ini_set(‘display_errors’,1);
error_reporting(E_ALL & ~E_NOTICE);
echo „Valoarea transmisa este „.$_GET[‘orase’];
?>
– Testati acest exemplu pentru a vedea rezultatul.
Constante si tipuri de variabile
- învatati sa definiti si sa utilizati constantele
- învatati sa folositi variabilele dinamice
- învatati sa convertiti valorile dintr-un tip în altul
În aceasta lectie vom discuta despre constante si variabile dinamice. Puteti scrie programe PHP utile si complexe fara a utiliza constante sau variabile dinamice. Daca utilizarea constantelor poate facilita citirea programelor dumneavoastra, variabilele dinamice au un efect contrar. Din acest motiv, în general se recomanda evitarea variabilelor dinamice, mai ales de catre programatorii PHP începatori. Totusi, va puteti afla în situatia de a lucra la un program PHP scris de o persoana care foloseste aceste variabile; prin urmare, trebuie sa aveti cunostinte despre variabilele dinamice, indiferent daca le folositi sau nu în propriile dumneavoastra programe.
1. Utilizarea constantelor
O constanta este pur si simplu o valoare care este… constanta, cu alte cuvinte o valoare care nu se modifica, în acest sens, constantele sunt opusele variabilelor, deoarece valoarea unei variabile se poate modifica pe durata executiei unui program.
Pentru a defini o constanta, folositi functia define().
Sa consideram urmatorul exemplu:
- define(„PI”, 3.14159);
– Aceasta instructiune defineste constanta „PI”, atribuindu-i valoarea 3.14159. Dupa ce a fost definita, o constanta se poate folosi în cadrul unei expresii.
De exemplu, puteti calcula aria unui cerc dupa cum urmeaza:
- $arie = PI * $raza * $raza;
– Observati ca referintele la o constanta nu folosesc simbolul dolarului. Astfel, o constanta poate fi cu usurinta deosebita de o variabila. Multi programatori scriu numele constantelor folosind numai majuscule, ceea ce le face si mai simplu de identificat.
O functie conexa, defined(), poate determina daca o anumita constanta a fost definita.
De exemplu, cu ajutorul urmatoarei instructiuni PHP puteri determina daca fost definita constanta Pi:
- echo defined(„PI”);
– Retineti ca numele care va fi testat este delimitat prin ghilimele duble.
Functia defined() returneaza valoarea 1 (unu) daca respectiva constanta a fost specificata; în caz contrar, returneaza zero
In acest exemplu, instructiunea echo va afisa valoarea 1.
Pe lânga sporirea lizibilitatii programelor, constantele pot facilita modificarea acestora.
Sa presupunem ca ati scris un program care contine multe calcule ce folosesc valoarea 3,14159, iar ulterior ati descoperit ca trebuia sa folositi valoarea mai exacta 3,1415926535898. Descoperirea si modificarea fiecarei aparitii a valorii originale poate fi o activitate mare consumatoare de timp. Dar, daca ati definit o constanta pentru reprezentarea valorii, numarul 3,14159 va aparea o singura data în program si va fi necesara doar o singura modificare a constantei.
Valoarea „pi” este folosita extrem de frecvent în unele calcule. Pentru comoditate, PHP furnizeaza o functionalitate mai indicata decât definirea unei constante cu valoarea pi, functia pi() returneaza valoarea respectiva, cu 14 cifre semnificative (3.1415926535898).
Astfe, puteti calcula aria unui cerc folosind urmatoarea expresie:
- $arie= pi() * $raza * $raza;
2. Lucrul cu variabile dinamice
Daca o constanta poate spori lizibilitatea si simplitatea modificarii programelor, variabilele dinamice îngreuneaza întelegerea si posibilitatea de a opera schimbari în program.
Iata un exemplu simplu de variabila dinamica, denumita „$$film” :
<?php
$oameni_buni = 12;
$film = „oameni_buni”;
echo $$film;
?>
O variabila dinamica este denumita folosind doua simboluri ale dolarului ($$) si este asociata cu o variabila obisnuita care are un nume similar si include un singur simbol al dolarului.
In exemplul de mai sus, variabila dinamica $$film este asociata cu variabila obisnuita, dar cu aceasi nume, $film.
Valoarea unei variabile obisnuite da numele (fara un simbol al dolarului) unei a doua variabile ordinare, în exemplu nostru, a doua variabila obisnuita este $oameni_buni. Valoarea acestei a doua variabile obisnuite este valoarea variabilei dinamice: în exemplu, aceasta este valoarea 12. Deci valoarea variabiei dinamice $$film, si care va fi afisata de functia „echo” este 12.
O variabila dinamica nu contine, practic, propria sa valoare. În schimb, contine amplasamentul unde se poate gasi valoarea; cu alte cuvinte, numele unei alte variabile.
Daca variabilele dinamice vi se par derutante, asa e, variabilele dinamice sunt derutante. Sunt rar folosite, uneori este posibila reducerea dimensiunilor unui program folosind una sau mai multe variabile dinamice.
3. Lucrul cu tipuri de variabile
In lectia 2 ati invatat despre tipul variabilelor: Boolean, Integer, Float, String, Array, Object, Resource, Null.
. O consecinta a caracterului dinamic al tipurilor de variabile din limbajului PHP este aceea ca nu trebuie sa specificati tipul variabilelor. PHP determina tipul variabilei în functie de tipul ultimei valori atribuite variabilei. Cu toate acestea, caracterul dinamic al tipurilor nu va scuteste de problemele legate de tipuri. Trebuie sa cunoasteti tipurile acceptate si ceea ce se întâmpla când în cadrul expresiilor se folosesc doua sau mai multe tipuri.
Sa luam în considerare urmatorul script PHP scurt:
- $x = 1;
- $y = 2.5;
- $z = $x+$y;
- echo $z;
– Instructiunea de atribuire care stocheaza o valoare în variabila $z este interesanta, deoarece expresia din membrul drept include un operand Integer (întreg) si un operand de tip float. Ce valoare va aparea la iesire? Raspunsul corect este 3.5, o valoare de tip float.
Când o expresie aritmetica foloseste mai multe tipuri de variabile, PHP executa conversia automata a tipului. Daca unul dintre operanzi este de tip float, PHP trateaza ceilalti operanzi ca si cum ar fi de tip float, executa calculele si returneaza rezultatul ca valoare de tip float.
Este important sa întelegeti faptul ca prin conversia de tip nu se modifica tipurile variabilelor unei expresii; acestia sunt pur si simplu tratati ca si cum ar fi fost de un alt tip.
In cadrul exemplului, variabila $x ramâne de tip înteger, chiar daca PHP o trateaza ca o valoare de tip float pentru a executa calculele.
Sirurile (variabilele de tip string) pot fi de asemenea supuse unei conversii de tip. Sa examinam urmatorul exemplu:
- $x = 1;
- $y = $x+ „inca 1”;
- echo $y
– Aici cuvântul „inca” din sirul text este ignorat.
Valoarea afisata este 2, adica suma dintre valoarea variabilei $x si valoarea numerica a sirului text, care este 1. Valoarea numerica si tipurile unui sir sunt determinate prin respectarea urmatoarelor reguli:
- 1. Daca sirul începe cu o valoare numerica, valoarea sirului este data de valoarea numerica respectiva; în caz contrar, valoarea sirului este zero.
- 2. Daca un punct zecimal sau un exponent (e sau E), este asociat cu valoarea numerica, tipul variabilei rezultante este float; în caz contrar, tipul valorii rezultante este un întreg.
4. Conversia manuala a tipului variabilelor
Daca preferati, puteti prelua controlul conversiei tipului variabilei sau puteti modifica tipul unei variabile. Pentru a prelua controlul conversiei de tip, puteti converti fortat un operand de la un tip la altul, proces cunoscut sub numele de „conversie fortata de tip” sau pur si simplu conversie fortata.
În continuare, este dat un exemplu unei astfel de conversie de tip, unde puteti vedea modul de efectuare a acesteia:
- $x = 1;
- $y = 2.5;
- $z = $x + (int)$y;
- echo $z
Conversia fortata de tip, si anume (int), determina tratarea variabilei $y ca pe un întreg (integer), iar valoarea acesteia devine 2, în loc de 2.5, care este valoarea reala a variabilei $y. Astfel valoarea lui $z care va fi afisata de expresia „echo” este 3.
Tabelul urmator indica si alte conversii fortate de tip care se pot folosi si expresiile care trebuesc utiizate:
Conversie fortata | Rezultat |
(int), (integer) | – Conversie fortata la întreg |
(real), (double), (float) | – Conversie fortata la dublu |
(string) | – Conversie fortata la sir |
(array) | – Conversie fortata la tablou (matrice) |
(object) | – Conversie fortata la obiect |
O alta modalitate de a trata o variabila ca si cum ar fi de un tip specificat este folosirea unor functii specifice.
Ca exemplu de utilizare a uneia dintre functiile respective, luati în considerare si studiati urmatorul exemplu:
<?php
$x = 1.5;
$y = intval($x);
echo $x;
echo „<br />$y”;
?>
Rezultatul afisat va fi:
1.5
1
Valoarea 1.5 este afisata ca valoare a variabilei $x, iar valoarea l este afisata ca valoare a variabilei $y.
Tabelul urmator prezinta si alte functii foosite pentru a trata o variabila ca si cum ar fi de alt tip.
Functie | Operatie |
doubleval(), floatval() | – Trateaza argumentul ca fiind de tip dublu. |
intval() | – Trateaza argumentul ca fiind de tip întreg. |
strval() | – Trateaza argumentul ca fiind de tip string |
Nici conversia normala si nici cea fortata nu modifica tipul unei variabile. Ambele mecanisme determina tratarea variabilelor doar in expresia respectiva ca si cum ar fi de un alt tip.
Totusi, modificarea tipului unei variabile este posibila prin utilizarea functiei settype().
Acest procedeu este ilustrat în urmatorul exemplu:
- $x = 1.5;
- settype($x,”integer”);
- echo $x; // Va afisa valoarea 1
– Tipul variabilei $x va fi schimbat in „integer”, astfel valoarea afisata a variabilei $x este 1, deoarece fractia zecimala se pierde atunci când functia settype() converteste valoarea float la o valoare întreaga.
Valorile posibile pentru al doilea argument al functiei settype(), si anume argumentul care specifica tipul dorit, sunt:
- „integer”
- „double”
- „string”
- „array”
- „object”
Sa ne amintim din lectia 2 ca exista o functie conexa, gettype(), care returneaza un sir care indica tipul variabilei specificate. Scriptul urmator afiseaza „integer”, care indica tipul variabilei $x:
$x = 1;
echo gettype($x);
– O lista cu mai multe functii utile in lucru cu tipuri de variabile si valorile lor gasiti la pagina -> Functii pentru tipuri de variabile si valori.
Instructiuni conditionale if() else
- Invatati sa definiti si sa folositi valorile de tip adevarat/fals
- Invatati sa întelegeti si sa scrieti instructiunile if si else
1. Utilizarea valorilor de tip adevarat / fals
Majoritatea programelor utile nu se comporta în exact acelasi mod la fiecare rulare a acestora, în schimb, programele iau decizii, executând uneori o operatie si alteori alta, în functie de circumstante.
Programele PHP iau decizii prin evaluarea unor expresii conditionale si executa instructiuni bazate pe rezultatele acestor evaluari. Expresiile conditionale sunt asimilate ca având una din doua valori: TRUE (adevarat) sau FALSE (fals). Uneori, expresiile conditionale se mai numesc si expresii booleene, în onoarea matematicianului care le-a studiat, George Boole. Constanta TRUE are valoarea l, iar FALSE are valoarea 0.
O modalitate utila de a forma o expresie conditionala consta în utilizarea operatorilor logici pentru compararea a doua valori numerice. Sa luam urmatorul exemplu:
$a < 1;
Aceasta expresie conditionala foloseste operatorul <, care are, în esenta, aceeasi semnificatie ca în algebra. Expresia are valoarea TRUE daca si numai daca valoarea variabilei $a este mai mica decât 1; în toate celelalte cazuri, are valoarea FALSE.
Puteti forma expresii conditionale complexe prin unirea a doua expresii conditionale cu ajutorul unui operator logic. De exemplu, expresia urmatoare este adevarata daca ambele expresii conditionale care o compun sunt adevarate:
$a < 1 AND $b < 1
Cu alte cuvinte, expresia este adevarata daca atât variabila $a, cât si variabila $b au valori mai mici decât 1.
PHP furnizeaza un set de asemenea operatori relationali, prezentati pe scurt în tabelul de mai jos.
Puteti folosi operatorii logici pentru compararea sirurilor; cu toate acestea, un sir care apare într-o expresie conditionala este convertit la o valoare numerica înainte de evaluarea expresiei. Deseori, se ajunge la rezultate neasteptate, în general, valorile sirurilor trebuie sa fie comparate folosind o functie de comparare a sirurilor; aceste functii vor fi explicate în lectiile urmatoare.
Operatori logici | |
Operator | Descriere |
$a < $b | – TRUE daca valoarea lui $a este mai mica decât valoarea lui $b. |
$a > $b | – TRUE daca valoarea lui $a este mai mare decât valoarea lui $b. |
$a >= $b | – TRUE daca valoarea lui $a este mai mare sau egala cu valoarea lui $b |
$a <= $b | – TRUE daca valoarea lui $a este mai mica sau egala cu valoarea lui $b |
$a = $b | – TRUE daca valoarea lui $a este egala cu valoarea lui $b. |
$a == $b | – TRUE daca $a si $b sunt identice; cu alte cuvinte, daca $a si $b au acelasi tip si aceeasi valoare |
$a != $b | – TRUE daca valoarea lui $a este diferita de valoarea lui $b |
$a !== $b | – TRUE daca $a si $b nu sunt identice; cu alte cuvinte, daca $a si $b nu sunt de acelasi tip si aceeasi valoare |
$x AND $y | – TRUE daca atât $x, cât si $y sunt adevarate |
$x && $y | – TRUE daca atât $x, cât si $y sunt adevarate. |
$x OR $y | – TRUE daca minimum una din expresiile $x sau $y este adevarata. |
$x || $y | – TRUE daca minimum una din expresiile $x sau $y este adevarata. |
$x XOR $y | – TRUE daca numai una din expresiile $x sau $y este adevarata. |
!$x | – TRUE daca $x este FALSE |
NOT $x | – TRUE daca $x este FALSE |
Retineti ca puteti prefixa o expresie conditionala cu operatorul !, care inverseaza valoarea „TRUE” sau „FALSE” a operandului sau.
Observati ca PHP foloseste doi operatori logici care executa aceeasi operatie (AND si &&) respectiv (OR si ||).
Cu toate acestea, operatorii difera din punctul de vedere al precedentei – caracteristica care determina ordinea în care sunt executate operatiile în timpul evaluarii expresiilor. Operatorii && si || au o precedenta relativ ridicata, în timp ce operatorii AND si OR au o precedenta relativ redusa. Este la fel ca in aritmetica unde, intr-o ecuatie ca aceasta: a + b * c se executa intai inmultirea si apoi adunarea, chiar daca ordinea lor este alta (daca nu sunt folosite paranteze). La fel si in PHP, se pot folosi paranteze rotunde pentru a controla ordinea executarii operatiilor.
Pentru comoditate, puteti forma expresii conditionale fara un operator logic. De exemplu, daca $a este o variabila numerica, puteti folosi expresia $a ca expresie conditionala. Expresia este considerata ca având valoarea FALSE daca valoarea variabilei $a este zero, respectiv valoarea TRUE daca valoarea variabilei respective este diferita de zero.
Daca folositi un sir ca expresie conditionala, expresia are valoarea FALSE daca sirul este vid sau daca are valoarea speciala „\0”, care simbolizeaza un octet cu valoarea zero.
Similar, utilizarea unei valori nedefinite ca expresie conditionala determina obtinerea valorii FALSE. Daca folositi un tablou sau un obiect ca expresie conditionala, aceasta are valoarea FALSE daca tabloul sau obiectul sunt vide (fara vreo valoare); în caz contrar, expresia are valoarea TRUE.
2. Scrierea instructiunilor „if”
Expresiile conditionale sunt esentiale pentru scrierea instructiunilor conditionale, prin care se iau decizii.
Una dintre cele mai simple si folosite instructiuni conditionale este instructiunea : if.
If(conditie) {
Instructiune(1);
Instructiune(2);
..................
}
– Dupa cum se observa dupa if urmeaza o pereche de paranteze rotunde in interiorul carora se plaseaza conditia, adica o expresie logica a carei rezultat poate fi TRUE sau FALSE. Daca si numai daca rezultatul expresiei logice (conditia) este TRUE se vor executa instuctiunile : Instructiune(1), apoi Instructiune(2), etc…
Se observa ca acest set de instructiune se plaseaza intre acolade. Doar intr-un singur caz aceste acolade nu sunt necesare si anume: in cazul in care este scrisa doar o singura instructiune.
Daca rezultatul expresiei logice dintre paranteze rotunde este FALSE , setul de instructiuni dintre acolade nu se va executa, controlul programului va trece mai departe.
Iata inca un exemplu, practic:
<?php
$numar = 12;
if ($numar > 10) {
echo "Acesta este un numar mai mare decat 10";
}
?>
– Atunci când este executat scriptul, instructiunea if evalueaza expresia conditionala $numar > 10, care este adevarata (TRUE) numai daca valoarea variabilei $numar este mai mare decât 10. Daca valoarea variabilei $numar este mai mare decat 10, se va executa instructiunea echo, in caz contrar programul va trece mai departe.
In general, limbajul PHP ignora spatiile albe. In mod conventional, o instructiune asociata unei instructiuni „if” este scrisa decalat în raport cu aceasta. Acest procedeu este recomandat deoarece prin utilizarea sa este facilitata citirea programului.
Utilizarea instructiunii „else”
Sa presupunem ca doriti sa executati o instructiune atunci când o conditie este TRUE si o alta instructiune când conditia este FALSE. Instructiunea else va permite sa procedati astfel, dupa cum urmeaza:
If(conditie) {
Instructiune(1);
Instructiune(2);
..................
}
else {
Instructiune(3);
Instructiune(4);
..................
}
In acest din urma caz daca expresia logica din paranteze: conditie este adevarata se vor executa instructiunile: Instructiune(1); Instructiune(2); , iar daca valoarea expresiei logice : conditie are valoarea FALSE se vor executa instructiunile: Instructiune(3); Instructiune(4);
Instructiunea asociata unei instructiuni if sau else poate fi ea însasi o instructiune if. O asemenea instructiune if se numeste „instructiune if imbricata”.
Iata un exemplu de instructiune if imbricata:
<?php
$numar = 88;
if ($numar > 10) {
if ($numar > 100) {
echo "Acesta este un numar mai mare decat 100";
}
else {
echo "Acesta este un numar mai mic decat 100, dar mai mare decat 10";
}
}
else {
echo "Acesta este un numar mic";
}
?>
Exemplul afiseaza mesajul „Acesta este un numar mai mare decat 100” daca valoarea variabilei $numar depaseste 100; în caz contrar, daca valoarea variabilei $numar este mai mare decât 10 si mai mica decat 100, se afiseaza mesajul „Acesta este un numar mai mic decat 100, dar mai mare decat 10”. Daca valoarea variabilei $numar este mai mica sau egala cu 10, exemplul afiseaza mesajul „Acesta este un numar mic”.
Instructiunile if imbricate pot deveni extrem de dificil de înteles daca numarul de instructiuni si nivelul de imbricare nu sunt relativ reduse. Deci trebuie sa le folositi cu economie.
O instructiune corelata atât cu instructiunea if, cât si cu instructiunea else, este instructiunea elseif. Când este folosita corect, poate fi mai simplu de înteles decât o instructiune if imbricata, logic echivalenta cu aceasta.
Iata un exemplu de instrutiune else if():
<?php
$numar = 88;
if ($numar > 100 ) {
echo "Acesta este un numar mai mare decat 100";
}
elseif ($numar > 10) {
echo "Acesta este un numar mai mic decat 100, dar mai mare decat 10";
}
elseif ($numar > 1) {
echo "Acesta este un numar mic";
}
else {
echo "Acesta este un numar foarte mic";
}
?>
Exemplul extinde functionalitatea exemplului anterior, afisând mesajul „Acesta este un numar foarte mic” pentru valori ale variabilei $numar mai mici sau egale cu 1.
Într-un caz general, cu o instructiune if si cu o instructiune else poate fi asociat un numar mult mai mare de instructiuni elseif. PHP evalueaza expresiile conditionale în mod succesiv, pornind de la expresia conditionala asociata instructiunii „if”. PHP executa instructiunea asociata primei expresii conditionale care are valoarea TRUE; daca nici o expresie conditionala nu are valoarea TRUE, PHP executa instructiunea asociata cu instructiunea else. Este permisa omiterea instructiunii else, caz în care nu este executata nici o instructiune daca nici una din expresiile conditionale nu are valoarea TRUE.
Instructiuni conditionale switch
- Invatati sa întelegeti si sa scrieti instructiunea switch si instructiunile conexe acesteia: break, default.
Scrierea instructiunilor switch, break si default
In cazul in care vrem sa comparam valoarea unei singure variabile cu o succesiune de valori, in locul instructiunii „if” putem folosi instructiunea switch:
De exemplu, sa presupunem ca valoarea variabilei $numar este l, 2 sau 3, reprezentând respectiv dimensiunile „mica”, „medie” si „mare”. Iata un mic script care afiseaza dimensiunile asociate valorilor variabilei $numar, folosind functia switch alaturi de break si default care vor fi explicate mai jos:
<?php
switch($numar) {
case(1):
echo „mic”;
break;
case(2):
echo „mediu”;
break;
case(3):
echo „mare”;
break;
default:
echo „Acesta nu este un cod valabil”;
}
?>
– Actiunea unei instructiuni switch este determinata de valoarea unei expresii întregi, nu de valoarea unei expresii conditionale. Numele variabilei este dat între parantezele care urmeaza dupa cuvântul cheie switch. Acoladele delimiteaza o serie de instructiuni case si o instructiune default optionala, fiecare dintre instructiunile cuprinse între acolade putând avea instructiuni asociate.
Când este executata, instructiunea switch încearca sa stabileasca o identitate între valoarea variabilei sale si valoarea asociata unei instructiuni case. Se vor executa instructiunile asociate primei instructiuni „case” pentru care identitatea respectiva este valabila.
Daca valoarea variabilei din instructiunea switch nu corespunde nici uneia din valorile asociate instructiunilor case, se vor executa instructiunile asociate instructiunii default, daca exista o asemenea instructiune (ne este obligatorie).
Un procedeu de programare indicat consta în aceea ca fiecare instructiune case din cadrul unei instructiuni switch sa se încheie cu o instructiune break.
; Instructiunea break determina încheierea executiei instructiunii switch, sare peste „case-urile” ramase si se executa codurile care mai sunt (daca exista) dupa „switch”. În absenta instructiunii „break”, executia trece la urmatoarea instructiune „case” sau „default”, fapt nedorit în majoritatea cazurilor.
• Nu este necesar sa folositi numere întregi consecutive în instructiunile case ale unei instructiuni switch. Daca preferati, puteti folosi numere întregi non-consecutive, numere cu virgula sau siruri. Valoarea de la „case” se poate adauga si fara paranteze, separata prin spatiu.
– Exemplu:
<?php
$site = 'ceva';
switch($site) {
case 1:
echo 'php.net';
break;
case 'coursesweb':
echo 'http://coursesweb.net';
break;
case 'ceva':
echo 'www.ceva.net';
break;
default: echo 'google.com';
}
?>
2. Operatorul ? :
Operatorul conditional ?:, denumit uneori „operator ternar” sau „operator întrebare-doua puncte„, constituie o alta modalitate de a scrie decizii în PHP.
Acest operator formeaza o expresie care se poate folosi în multe contexte PHP. Iata sintaxa de utilizare a acestuia:
expresie-conditionala ? valoare-TRUE : valoare-FALSE
Observati cum semnul întrebarii este separat de caracterul doua puncte prin valoarea valoare-TRUE.
Operatorul conditional îsi evalueaza expresia conditionala. Daca expresia este evaluata la valoarea TRUE, operatorul conditional returneaza valoarea valoare-TRUE; în caz contrar, returneaza valoarea valoare-FALSE.
De exemplu, sa luam în considerare urmatoarea instructiune de atribuire, care foloseste un operator conditional:
$a = ($b > $c) ? 10 : 20;
Aceasta instructiune de atribuire compara valorile variabilelor $b si $c. Daca valoarea variabilei $b este mai mare decât aceea a variabilei $c (adica TRUE), atunci variabilei $a îi este atribuita valoarea 10; în caz contrar, variabilei respective îi este atribuita valoarea 20.
Instructiuni repetitive for() si while()
- Invatati sa întelegeti si sa scrieti instructiunile while(), do while si for()
Scrierea instructiunilor „for”
Instructiunea for() este o instructiune bucla sau o instructiune iterativa; cu alte cuvinte, o instructiune care executa în mod repetat instructiunile asociate.
Sintaxa generala a instructiunii for este urmatoarea:
for(expresie1; conditie; expresie2) {
Instructiune(1);
Instructiune(2);
Instructiune(3);
………….
}
expresie1 se executa o singura data si anume la inceputul instructiunii; conditie este o expresie logica ; instructiunea for() se executa atita timp cat valoarea expresiei : conditie are valoarea TRUE.
De fiecare data dupa executia instructiunilor dintre acolade se executa : expresie2.
Iata un exemplu practic de utilizare a unei instructiuni „for”:
<?php
$suma = 0;
for ($n=1; $n<=3; $n++) {
$suma += $n;
echo „<br /> Suma intregilor de la 1 la $n este $suma.”;
}
?>
Rezultatul afisat va fi:
Suma intregilor de la 1 la 1 este 1
Suma intregilor de la 1 la 2 este 3
Suma intregilor de la 1 la 3 este 6
În exemplu se calculeaza suma întregilor cuprinsi între l si 3. Pentru aceasta, mai întâi se initializeaza variabila $suma la valoarea 0. Apoi se executa o instructiune for() care incrementeaza în mod repetat valoarea variabilei $suma.
Pentru a vedea cum functioneaza mecanismul acestei instructiuni, sa examinam componentele instructiunilor for().
Instructiunea „for” include trei expresii, care apar între paranteze; fiecare expresie este separata de vecina sa printr-un caracter punct si virgula(;).
- Prima expresie este expresia de initializare. Aceasta se executa atunci când PHP ajunge la instructiunea for(). In exemplu, expresia de initializare atribuie valoarea variabilei $n, ($n=1) variabila denumita „variabila de ciclare” sau „index”.
- A doua expresie este expresia de test. Aceasta este o expresie conditionala care indica daca se executa sau nu corpul instructiunii, în general, face referire la variabila de ciclare. In cadrul exemplului, expresia de test compara valoarea variabilei $n cu valoarea 3 ($n <= 3).
Expresia de test este evaluata pentru prima data imediat dupa evaluarea expresiei de initializare. - Cea de-a treia expresie este expresia pas. în general, aceasta modifica una sau mai multe variabile la care se face referire în expresia test. în cadrul exemplului, expresia pas incrementeaza valoarea variabilei $n ($n++).
Dupa care se trece la corpul instructiunii for(), aici, instructiunea $suma += $n si echo „Suma intregilor de la 1 la $n este $suma.”; reprezinta corpul instructiunii for.
Dupa executarea corpului functiei se verifica din nou expresia de test (conditie) dintre paranteze, daca rezultatul este TRUE se trece mai departe la expresia „pas” (a treia din paranteze) si mai departe la corpul functiei for(). Dupa aia din nou la expresia de test dintre paranteze…, pana cand rezultatul este FALSE (in exemplu nostru, $n>3).
Instructiunea for() este utila pentru numarare si executarea în mod repetat a unor actiuni.
Scrierea instructiuni while
O instructiune while() sau do while are o singura conditie. Fara o expresie de initializare sau o expresie pas; opereaza similar ca o instructiune „for()”. în consecinta, urmatoarele doua instructiuni sunt echivalente:
for ( ; $i<= 3; ) { $suma += $i; }
while ($i <= 3) { $suma ++ $i; }
Instructiunea while() executa un set de instructiuni atita timp cit valoarea expresiei „conditie” este adevarata:
Forma generala a instructiuni while() este urmatoarea :
while(conditie) {
Instructiune(1);
Instructiune(2);
Instructiune(3);
………….
}
Setul de instructiuni Instructiune(1), Instructiune(2), etc… se vor executa atita timp cit valoarea expresiei logice „conditie” are valoarea TRUE.
Sa studiem un exemplu practic:
<?php
$n = 0;
$suma = 0;
while ($n <= 3) {
$suma = $suma +$n;
$n++;
}
echo „Suma este $suma”;
?>
In scriptul de mai sus avem la inceput (in afara lui „while”) $n = 0 si $suma = 0, se verifica conditia din paranteza a functiei while() ($n<=3), cum aceasta este TRUE (deoarece la aceasta etapa $n = 0), se trece la executarea corpului functiei unde : $suma = $suma + $n si $n++ (adica $n = $n + 1), astfel acum $n va fi egal cu 1, se verifica din nou conditia din paranteze, care este TRUE ($n fiind acum egal cu 1), se executa iar corpul functiei…, si tot asa se executa aceasta „bucla” pana cand la verificarea conditiei din paranteze rezultatul este FALSE, in acest moment se incheie executia functiei while() si se trece mai departe la urmatoarea functie (in cazul nostru: echo „Suma este $suma”;, unde dupa executia functiei while() $suma a devenit egala cu 6).
In browser va aparea urmatorul rezultat:
Suma este 6
Scrierea instructiuni do while
Diferenta dintre instructiunea while() si instructiunea do while este urmatoarea: daca la instructiunea while() se verifica intai conditia si numai daca rezultatul este TRUE se trece la executarea corpului functiei, in cazul functiei do while intai se executa corpul functiei si dupa aceea se verifica conditia. De la do while corpul functiei va fi executat cel putin o singura data, indiferent de rezultatul conditiei.
Forma generala a instructiuni do while este urmatoarea :
do {
Instructiune(1);
Instructiune(2);
Instructiune(3);
………….
} while(conditie);
Iata exemplul prezentat la functia while(), de data aceasta folosind functia do while :
<?php
$n = 0;
$suma = 0;
do {
$suma = $suma +$n;
$n++;
} while ($n <= 3);
echo „Suma este $suma”;
?>
Rezultatul va fi acelasi: „Suma exte 6„.
În general, este bine sa fiti prudent si sa folositi instructiunea while(), care evalueaza o conditie de test înainte, de executarea corpului acesteia. Astfel, se evita executarea eronata a corpului buclei.
Limbajul PHP a fost creat in anul 1994 de catre Rasmus Lerdorf, care incerca sa-si personalizeze propria pagina Web; din acest motiv limbajul a fost numit initial PHP adica: Personal Home Page (pagina de baza personala). Ulterior limbajul a fost perfectionat, utilitatea si caracteristicile sale s-au dezvoltat treptat, ajungand sa aiba semnificatia Hypertext Preprprocesor (PHP). Preprocesarea consta in aceea ca datele sunt interpretate(preprocesate) de catre serverul Web inainte ca acesta sa genereze cod HTML.
PHP este una dintre cele mai interesante tehnologii pentru site-uri si programare web, imbina caracteristici dintre cele mai complexe cu simplitatea în utilizare. PHP a devenit un instrument de frunte pentru dezvoltarea aplicatiilor Web. Spre deosebire de alte instrumente pentru aplicatii Web, cum este Perl, PHP este un limbaj de programare comod pentru începatori, chiar si pentru cei care nu au mai desfasurat activitati de programare.
Daca sunteti un cunoscator al limbajului HTML, dar nu aveti experienta în materie de programare, va puteti pune întrebarea: care sunt functionalitatile suplimentare pe care le poate asigura cunoasterea limbajului PHP? Ca si alte limbaje de scripting pentru Web, PHP va permite sa furnizati un continut Web dinamic, adica un continut Web care se modifica automat de la o zi la alta sau chiar de la un minut la altul. Continutul Web este un element important în sustinerea traficului unui sit Web; de regula, vizitatorii nu vor mai reveni la o pagina Web care contine aceleasi informatii ca si cele prezentate la ultima vizita. Pe de alta parte, siturile Web frecvent actualizate pot atrage cantitati enorme de trafic.
Mai mult, spre deosebire de limbajele de scripting, precum JavaScript, PHP ruleaza pe serverul Web, nu în navigatorulul Web. În consecinta, PHP poate obtine accesul la fisiere, baze de date si alte resurse inaccesibile programului JavaScript. Acestea constituie bogate surse de continut dinamic, care atrag vizitatorii. In plus, putem folosi limbajul PHP pentru a generera cod Java Script.
Secventele de cod PHP pot fi incluse intr-un fisier HTML; ulterior serverul Web va identifica aceasta secventa de cod , va procesa acesta secventa de cod generand cod HTML iar la final va inlocui secventa de cod PHP cu codul HTML.
Printre caracteristicile cele mai importante ale imbajului enumeram:
– simplicitate : acest limbaj este simplu de folosit, fiind accesibil si ne-programatorilor. Datorita acestui fapt el a devenit cel mai popular limbaj de script pentru generarea de pagini HTML dinamice.
– usor de folosit : limbajul are o sintaxa asemanatoare limbajului C, care este foarte popular in randul programatorilor. De aceea programatorii care au cunostine de C sau Perl vor face foarte rapid trecerea spre PHP. Pe de alta parte anumite aspecte cum ar fi: declararea si folosirea variabilelor este mult simplificata in PHP, spre deosebire de C++ sau alte limbaje de nivel inalt.
– eficienta : specificatiile limbajului includ folositea tehnicilor de POO (Programare orientata pe obiecte) iar acest lucru contribuie la marirea productivitatii: un programator PHP poate folosi module scrise de un alt programator fara sa fie nevoit sa cunoasca detalii specifice de implementare a codului.
– cross-platform : exista implementari ale limbajului pe mai multe sisteme de operare, cele mai populare fiind cele de pe sistemele Linux si Windows. In acest caz daca scriem cod PHP care ruleaza pe un sistem Linux, ulterior vom putea folosi acest cod pe un server care ruleaza Windows si viceversa.
– gratis : PHP reprezinta un program Open Source, oricine poate folosi acest limbaj fara a fi nevoit sa plateasca ceva. De asemenea utilizatorii au access la sursele PHP (scrise in limbajul C). Site-ul oficial al limbajului PHP se afla la : www.php.net , datorita popularitatii acestui limbaj exista numeroase site-uri Web care prezinta informatii despre PHP, exemple de cod, forum de discutii , etc.
Acest curs de initiere in PHP si MySQL este menit a prezenta elemente introductive de programare si dezvoltare a paginilor web folosind PHP. Este important sa retineti ca nu reprezinta decat un punct de plecare cu lectii si tutoriale php introductive. Dezvoltarea Web este o activitate solicitanta, iar viitorul dezvoltator Web trebuie sa dispuna de multe abilitati, printre care si pe aceea de programator. Dezvoltatorii Web începatori vor gasi în aceast curs un prim pas util si amical în activitatea de programare în PHP.
Scrierea scripturilor PHP elementare
- Invatati sa creati un script PHP cu cele mai simple instructiuni PHP
- Invatati sa documentati si sa executati un script PHP
Un script PHP poate fi foarte simplu sau foarte complex. Totusi, scrierea chiar si a unui script PHP complex este relativ simpla, necesitand doar un editor de texte obisnuit. In aceasta lectie veti invata modul de creare si de executare a programelor PHP, veti invata sa creati scripturi PHP simple, care afiseaza in navigatorul web un text simplu. De asemenea, veti invata sa va documentati scripturile, astfel incat dumneavoastra si alte persoane sa puteti intelege rapid scopul si structura acestora.
Mai intai trebuie sa instalati un server web (Apache) si modulul pt. limbajul PHP, acestea sunt gratuite, le puteti gasi pe net si instala pe fiecare, dar pentru incepatori e recomandat un program care le are deja configurate (si cu MySQL), precum WampServer, sau sa incarcati scriptul pe un server web unde este instalat PHP.
Daca nu aveti deja instalat PHP, descarcati de aici -> www.wampserver.com, dezarhivati si instalati programul. (cand este pornit, veti observa o iconita specifica in colltul cu ceasul).
Fisierele .php in care veti scrie scripturile trebuie sa le salvati in directorul www din „wamp”, apoi, ca sa le testati scrieti in browser adresa http://localhost/fisier.php
1. Scrierea scripturilor PHP
Pentru a crea scripturi PHP, majoritatea programatorilor PHP folosesc un editor de texte obisnuit. Puteti folosi orice editor de texte doriti. Sub Microsoft Windows puteti utiliza programul Windows Notepad. Daca preferati, puteti folosi editoare specializate, gen Notepad++. Totusi, trebuie sa tineti cont sa fie un editor de text ce salveaza fisierele cu format text obisnuit simplu.
Daca folositi UNIX sau Linux, puteti crea scripturi PHP folosind un program precum „vi”, „emacs” sau „pico”.
Programul in sine nu conteaza, atata vreme cat poate crea fisiere text ASCII.
Nota : – Unele editoare de texte, precum „Notepad++” sau „vi”, asigura un suport special pentru scrierea programelor PHP. De exemplu, au o caracteristica de colorare a elementelor de sintaxa ce determina scrierea diferitelor elemente ale codului PHP in culori diferite. Procedeul de colorare a elementelor de sintaxa faciliteaza depistarea erorilor din programele proprii.
2. Scrierea scheletului programelor PHP
Fiecare program PHP include doua linii speciale, care indica serverului PHP ca textul cuprins intre cele doua linii este alcatuit din instructiuni PHP. Practic, aceste linii pot fi asimilate copertelor unei carti, care pastreaza unitatea programului dumneavoastra PHP. Intre aceste doua linii vor fi scrise instructiunile PHP. Pentru a incepe sa scrieti un program PHP, deschideti editorul dumneavoastra de texte si introduceti urmatoarele doua linii :
<?php
?>
– Acesta este un cod de inceput si nu afiseaza nimic.
Apoi, salvati scriptul dumneavoastra sub forma de fisier text, in directorul „www” din „wamp”, cu un nume care respecta urmatoarele reguli:
- Este recomandat ca numele fisierului sa fie alcatuit numai din caractere minuscule, cifre si liniute. Utilizarea de spatii, majuscule si alte caractere ar putea crea probleme pe sisteme de operare diferite.
- Extensia numelui fisierelor trebuie sa fie .php.
- Asigurati-va ca ati ales un nume semnificativ, care sa descrie functia scriptului dumneavoastra, astfel incat sa-l puteti identifica rapid dupa saptamani sau chiar luni de la crearea acestuia. Veti descoperi ca liniutele sunt utile pentru separarea cuvintelor care alcatuiesc numele fisierului, marind astfel lizibilitatea acestuia. De exemplu, un fisier care contine un script PHP ce va permite sa vizualizati salariile angajatilor poate primi numele „saarii-angajati.php”. Chiar si la mult timp dupa crearea fisierului respectiv, nu veti avea probleme in a determina scopul acestuia.
3. Afisarea datelor de iesire intr-un browser Web
Programele PHP executa trei categorii de operatii elementare:
- Obtin date de la un utilizator.
- Executa prelucrari ale datelor, respectiv obtine accesul la datele stocate in fisiere si baze de date si le manipuleaza.
- Afiseaza date astfel incat un utilizator sa le poata vizualiza.
Primele doua operatii sunt oarecum mai dificil de realizat decat cea de-a treia. Totusi, afisarea datelor astfel incat acestea sa fie vizibile utilizatorului este o operatie foarte simpla. Asa cum paragrafele unui text scris sunt compuse din propozitii, programele PHP sunt alcatuite din instructiuni. Regulile care controleaza formarea propozitiilor se numesc sintaxa. Acelasi termen este folosit si pentru a desemna regulile care guverneaza formarea instructiunilor PHP.
Iata un exemplu pentru crearea instructiunii PHP care trimite date de iesire la un browser Web, astfel incat acestea sa fie vizibile pentru un utilizator:
<?php
echo „scrieti aici un text oarecare”;
?>
Observati ca instructiunea incepe cu un cavant „echo” si se incheie cu un caracter punct si virgula (;).
Constructia echo trimite datele de iesire care vor fi afisate de browser.
Ghilimelele duble se folosesc pentru delimitarea unei expresii de tip text, in cazul nostru „scrieti aici un text oarecare” (se pot folosi si ghilimele simple).
In locul propozitiei „scrieti aici un text oarecare” puteti plasa aproape orice text, cu exceptia altor ghilimele. Totusi, pentru moment, trebuie sa includeti numai litere, cifre, spatii si semne de punctuatie folosite in alfabetul latin, precum virgula, caracterul punct si virgula, punctul, semnul de intrebare si semnul exclamarii. De asemenea, puteti include caracterele < >, folosite pentru delimitarea etichetelor HTML, respectiv caracterul /, folosit pentru a indica membrul de inchidere al unei perechi de etichete HTML.
De exemplu, iata o instructiune PHP care are drept date de iesire un fragment dintr-un vers din Scrisoarea a III-a de Eminescu:
<?php
echo „<h2> Iata vine-un sol de pace…</h2>”;
?>
– Ca sa vedeti rezultatul, salvati fisierul cu acest cod in directorul www din „wamp”, de exemplu cu denumirea teste.php si apelati in browser adresa http://localhost/teste.php (programul WampServer trebuie sa fie pornit).
Perechea de etichete H2 determina formatarea datelor de iesire ca titlu HTML de nivel 2.
Scripturile PHP pot fi incluse si in fisiere cu cod HTML, ca in urmatorul exemplu (dar salvate cu extensia „.php”):
<!DOCTYPE HTML PUBLIC „-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php
echo „<h4> Exemplu de script PHP inclus in HTML</h4>” ;
?>
</body>
</html>
In browser va aparea :
Exemplu de script PHP inclus in HTML
Pot fi incluse si scripturi mai complicate ce contin zeci sau chiar sute de linii, atata timp cat acestea sunt incluse intre cele doua linii specifice limbajului PHP:
<?php
?>
4. Documentarea unui script PHP
In afara de a furniza nume descriptive fisierelor ce contin scripturile dumneavoastra PHP, e necesar sa includeti in interiorul fiecarui script atat comentarii care sa permita unui cititor sa determine cu usurinta utilitatea scriptului, cat si alte informatii referitoare la script. De exemplu, puteti include un comentariu care precizeaza numele autorului scriptului si ce face acesta.
Iata un model sintactic pentru comentariile PHP:
// Scrieti aici comentariul dumneavoastra (pe o singura linie)
Dupa cum se poate vedea, un comentariu incepe cu doua caractere slash, urmate de un spatiu. În continuare, linia contine comentariul dumneavoastra, care poate include orice caractere doriti, inclusiv caractere speciale.
Iata un exemplu simplu de script PHP care include comentarii:
<?php
// Script de la Ceva.net
// Acest script afiseaza un mesaj vizibil pentru utilizator.
echo „Acesta este un script foarte simplu.”;
?>
Nota: Fiecare linie a comentariului trebuie sa inceapa cu doua caractere slash //. Totusi, puteti crea un comentariu din mai multe linii si in alte moduri. Iata un exemplu:
/*
Acesta este un comentariu pe mai multe linii.
Poate fi alcatuit dintr-un numar oricat de mare de linii.
*/
Pentru a adauga un comentariu alcatuit din mai multe linii, scrieti la inceput caracterele /*, iar la sfarsit trebuie sa se incheie cu caracterele */. Intre cele doua perechi de caractere, puteti scrie orice text doriti, folosind oricate linii doriti.
5. Executarea unui script PHP
Dupa ce ati creat un script PHP, veti dori sa-l executati.
Sa luam un alt exemplu, ce contine cod HTML si comentarii:
Deschideti editorul dumneavoastra de texte si introduceti urmatoarele linii :
<!DOCTYPE HTML PUBLIC „-//W3C//DTD HTML 4.01 Transitional//EN”>
<html>
<head>
<title>Test PHP</title>
</head>
<body>
<?php
// Script test
// Acest script afiseaza un mesaj vizibil pentru utilizator.
echo „Primul meu script PHP.”;
?>
</body>
</html>
Salvati fisierul cu numele test-script.php
Daca ati instalat un server de PHP pe calculatorul dumneavoastra, salvati fisierul in directorul www al serverului.
Deschideti browserul si scrieti adresa URL http://localhost/test-script.php
Daca nu aveti instalat un server de PHP pe calculator, incarcati (prin FTP) fisierul test-script.php pe un server pe web unde este instalat PHP.
Dupa ce v-ati incarcat fisierul cu scriptul, sunteti pregatit pentru a obtine accesul la acesta. Deschideti browserul Web si apelati adresa URL asociata scriptului dumneavoastra. Adresa URL trebuie sa fie alcatuita din adresa URL identificata de administratorul serverului unde ati incarcat scriptul, urmata de un slash (/), urmata de numele fisierului care contine scriptul dumneavoastra. Daca adresa URL se incheie deja cu un caracter slash, nu trebuie sa mai inserati inca un asemenea caracter inainte de numele scriptului dumneavoastra.
De exemplu, daca domeniul serverului unde ati incarcat scriptul e http://www.ceva.net/ ca adresa URL a catalogului care contine scripturile dumneavoastra PHP, puteti obtine accesul la scriptul dumneavoastra prin intermediul adresei URL http://www.ceva.net/test-script.php
Daca ati tastat corect adresa URL a scriptului dumneavoastra, iar scriptul respectiv nu contine erori, veti vedea datele de iesire ale scriptului dumneavoastra. Felicitari! Ati devenit programator PHP!
In browser va aparea:
Primul meu script PHP.
Tipuri de siruri si variabile
- Învatati tipul variabilelor in PHP
- Învatati sa folositi ghilimele si caractere escape pentru a specifica valori de tip sir speciale
Numere si siruri, tipul variabilelor
Programele de calculator manipuleaza datele, care reprezinta informatii. Programele PHP folosesc doua categorii principale de date: numere si siruri. Numerele sunt compuse mai ales din cifre, în timp ce un sir poate contine orice caracter, inclusiv cifre, litere si simboluri speciale.
Decizia privind modul de stocare a datelor este importanta, în mod caracteristic, datele se stocheaza sub forma de numere atunci când se doreste executarea unor operatii matematice asupra datelor, deoarece numerele sunt stocate într-un mod care permite efectuarea de calcule. Pe de alta parte, sirurile sunt stocate folosind o modalitate care faciliteaza întelegerea lor de catre operatorul uman. Datele trebuie stocate sub forma de siruri daca formatul acestora nu este numeric sau daca doriti ca operatorul uman sa fie capabil de a introduce sau de a vizualiza datele. Practic, puteti asimila numerele cu un mod de stocare a datelor în interiorul calculatorului. Sirurile se pot asimila unui mod de stocare a datelor în afara calculatorului.
Aceste doua mari categorii de date: numere si siruri, formeaza opt tipuri principale de variabile :
- – Boolean
- – Integer
- – Float
- – String
- – Array
- – Object
- – Resource
- – Null
In mod normal tipul variabilelor nu este specificat explicit; acesta va fi evaluat de catre interpretorul PHP la momentul run-time (in momentul executarii scriptului).
- 1. Tipul boolean
Variabilelele de tipul boolean pot lua doar doua valori : FALSE sau TRUE
Variabilele de alt tip decat boolean pot fi convertite la tipul boolean prin operatorul cast (bool) sau (boolean), plasate inaintea valorilor, desi in general nu e nevoie de aceasta converrire, valoarea fiind automat recunoscuta de PHP.
- . Tipul integer
PHP foloseste doua categorii de numere: întregi (tipul integer) si duble, cu virgula (tipul float)
Variabilele integer reprezinta numerele intregi, ele pot fi specificate in format zecimal, hexazecimal sau octal.
Numerele întregi reprezinta numerele fara parte fractionara folosite la numarare, plus zero si numerele negative. Cu alte cuvinte, în PHP termenul de întreg are aceeasi semnificatie ca si în matematica. De exemplu, numarul 100 poate fi reprezentat în PHP sub forma de întreg.
Scrierea numerelor PHP este simpla. Un întreg PHP se obtine prin scrierea cifrelor care îi alcatuiesc valoarea. Daca valoarea este negativa, scrieti un semn minus imediat la stânga numarului. Evitati sa scrieti spatii sau virgule ca parte a unui întreg PHP.
Iata câteva exemple de numere PHP întregi :
215678 – Numar in reprezentare zecimala
0x1A8; – Numar in reprezentare hexazecimala (reprezinta: 1*16*16 + 10*16 + 8 = 424 (in zecimal))
067 – Reprezinta: 6*8 + 7 = 55 (in zecimal)
Valorile minime, respectiv maxime pe care le poate lua o variabila de tip integer depind de sistemul de operare pe care ruleaza modulul PHP. De exemplu pentru un sistem Windows valoarea unui integer se memoreaza pe 32 de biti: 31 bit pentru numar si un bit pentru semn. In acest caz valorile unui intreg se afla in intervalul :-231 repectiv: 231. Daca incercam sa folosim un integer cu valori care ies din acest inteval vor avea de-a face cu un fenomen de depasire : integer overflow. In acest caz interpretorul PHP converteste acesta valoare intr-o valoare de tip float (care are un interval mai extins de valori).
In PHP simpla impartire a doua valori intregi va produce ca rezultat o variabila de tip float. Pentru a obtine doar partea intreaga acestui rezultat putem folosi operatorul cast (int) in fata rezultatului.
Ex.: echo (int)8.7; (va returna 8)
Pentru a rotunji rezultatul la intregul cel mai apropiat de valoarea reala se poate folosi functia round(), unde intre paranteze se adauga valoarea.
Ex.: echo round(8.7); (va returna 9)
- 3. Tipul float
Reprezinta variabile de tip real [numerele cu virgula], (în lb. engleza se foloseste punctul zecimal în loc de virgula). De exemplu 2.5
In general, numerele duble (tipul float) sunt stocate folosindu-se formatul standard IEEE-64, care furnizeaza 64 de biti. Acest format va permite sa stocati valori care pot merge pâna la 1,8 x 10 la puterea 308 sub forma de numere duble si furnizeaza aproximativ 14 cifre dupa punctul zecimal (sau cifre semnificative) de precizie.
Iata câteva exemple de numere duble (tipul float)
- 123.4567 – Numar de tip float
- 1.2e3; – Reprezinta: 1.2 * 103
- 4. Tipul string
Reprezinta o insiruire de caractere, fiecare caracter este memorat pe 1 byte; setul de caractere este limitat la 256 valori distincte. Dimensiunea sirurilor poate fi oricat de mare in PHP, nu exista specificatii care sa limiteze numarul maxim de caractere dintr-un sir.
Spre deosebire de întregi si de numere float, care contin cifre, sirurile pot contine orice caracter. Ca atare, sirurile sunt utile pentru stocarea datelor care nu pot fi calculate, precum nume, fraze si adrese.
In PHP, un sir poate fi declarat in mai multe feluri:
1) Un mod simplu de a declara un sir este prin delimitarea cu ghilimele simple (‘ ‘)
Daca dorim ca sirul sa contina caracterul ‘ va trebui sa inseram inaintea lui caracterul escape \. Daca dorim ca sirul sa contina caracterul \ va trebui sa dublam acest caracter. Acest comportament este exemplificat in exemplul urmator:
<?php
$var1 = ‘Acesta este un sir de test’;
echo ‘Curs \’PHP\”;
echo ‘<br />Vrei sa stergi C:\\*.* ?’;
echo ‘<br />Variabila var1=$var1’;
echo „<br />Variabila var1=$var1”;
?>
In browser va aparea:
Curs ‘PHP’
Vrei sa stergi C:\*.* ?
Variabila var1=$var1
Variabila var1=Acesta este un sir de test
Observati diferenta dintre ultimile doua linii!
In penultima linie, unde s-a folosit gilimele simple pentru delimitarea sirului, variabila $var1 nu este expandata adica nu este afisat valoarea variabilei var1=Acesta este un sir de test ci exact textul scris (numele ei). Pentru a realiza afisarea valorii variabilei si nu numele acesteia, se folosesc ghilimelele duble, precum in ultima linie a exemplului de mai sus.
2) O alta metoda pentru a specifica un sir în PHP este prin folosirea ghiimelelor duble (” „).
Daca intr-un sir delimitat prin ghilimele duble vrem ca acesta sa afiseze numele unei variabile, nu valoarea acesteia, adaugam un caracter backslash (\) inaintea numelui variabiei.
Exemplu; echo „Numele variabilei este \$var”;
Acest cod va afisa Numele variabilei este $var, oricare ar fi valoarea variabilei „$var”.
Caracterele care alcatuiesc sirul sunt incluse între ghilimele duble (” „);
De exemplu, sirul reprezentând numele fizicianului care a formulat teoria relativitatii este „Albert Einstein”. Asa cum s-a explicat, un sir poate contine date numerice; de exemplu, „3.14159”.
Daca se doreste adaugarea de ghilimele duble intr-un sir delimitat de ghilimele duble, se adauga caracterul \ in fata acestora.
Exemplu; echo „Numele programului este \”PHP\”.”;
Prin delimitarea cu ghilimele duble PHP faciliteaza includerea în siruri a unor caractere speciale, precum caracterele de salt la linie noua sau retur de car, prin furnizarea de secvente escape care reprezinta caractere speciale.
Iata secventele escape folosite în PHP:
- \n – salt la linie noua
- \r – retur de car (rand nou)
- \t – caracter de tabulare pe orizontala
- \\ – backslash
- \$ – simbolul dolarului
- \” – ghilimele duble
Ca exemplu, iata un sir care include un retur de car, urmat de un salt la linie noua: „Salut, lume!\r\n”.
Retineti ca fiecare secventa escape începe cu un backslash (\). Pentru a include un backslash într-un sir, trebuie sa folositi doua caractere backslash.
Pe langa imbricarea variabilelor in cadrul sirurilor delimitate prin ghilimele duble, PHP pune la dispozitie operatorul de concatenare a sirurilor: . (punct) . Acest operator adauga un sir la sfarsitul altui sir. De exemplu:
<?php
$nume = ‘Popescu’;
$prenume=’Costel’;
echo ‘Numele de familie este ‘.$nume. ‘iar prenumele este ‘.$prenume;
?>
In browser va aparea:
Numele de familie este Popescu iar prenumele este Costel
In anumite situatii este necesar sa accesam unul dintre caracterele unui sir. Pentru aceasta putem folosi parantezele{} ca in exemplul de mai jos:
<?php
$var1 = ‘Acesta este un sir de test’;
echo $var1{0}; // Afisaza A (primul caracter din sir)
echo $var1{2}; // Afisaza e (al treilea caracter din sir)
?>
Rezultatul afisat va fi
Ae
3) Sintaxa heredoc este o alta modalitate de a delimita siruri
In acest caz delimitatorul este („<<<„); acesta trebuie urmat de un identificator unic, dupa care urmeaza sirul de caractere, iar secventa se incheie din nou cu identificatorul mentionat. Identificatorul de incheiere trebuie sa se afle in prima coloana a liniei, acesta poate contine caractere alfanumerice dar neaparat trebuie sa inceapa cu o litera, nu cu o cifra sau alt semn.
Veti intelege mai bine studiind exemplu de mai jos:
<?php
$var1 = <<< EOT
Exemplu de sir care foloseste delimitatorul heredoc.
EOT;
echo $var1;
?>
Rezultatul afisat va fi:
Exemplu de sir care foloseste delimitatorul heredoc.
- 5. Tipul array
Reprezinta un vector de valori, fiecare element al matricei are asociat o cheie. Aceasta cheie va fi folosita ulterior la identificarea unui element specific at matricei. In PHP tipul array se mai numeste si tip map ordonat, deoarece elemente vectorului sunt ordonate dupa campul cheie.
Variabilele de tip array si lucrul cu acestea vor fi prezentate mai detaliat in lectiile urmatoare. Iata un exemplu simplu de variabile array:
<?php
$fructe[0] = ‘mere’;
$fructe[1] = ‘caise’;
$fructe[2] = ‘piersici’;
?>
- 6. Tipul object
Reprezinta de fapt instanta unei clase declarate in PHP. O clasa este o structura care contine variabile membru si functii membru.
Variabilele de tip object si lucrul cu acestea vor fi prezentate detaliat in lectiile urmatoare.
- 7. Tipul resource
Este un tip special de variabila care pastreaza o legatura spre resurse externe. Exemple de resurse externe: manipulatori pentru deschidere de fisiere, conectare la baze de date, compresia fisierelor, resurse COM, etc…
- 8. Tipul NULL
Reprezinta varibilele care nu au inca atribuita o valoare.
O variabila se considera a avea valoarea Null daca:
- – este setata explicit prin atribuirea valorii NULL
- – nu a fost asignata inca o valoare acestei variabile
- – variabila a fost stearsa prin functia unset();
Putem afla tipul unei variabile folosind functia gettype() care returneaza un string (sir) continand tipul variabilei cercetate.
Observati si studiati exemplul de mai jos
<?php
$var1 = TRUE;
$var2 = 100;
$var3 = 23.88;
$var4 = „Nume”;
$var[5] = „fructe”;
echo gettype($var1);
echo ‘<br />’.gettype($var2);
echo ‘<br />’.gettype($var3);
echo ‘<br />’.gettype($var4);
echo ‘<br />’.gettype($var[5]);
echo ‘<br />’.gettype($var6);
?>
In browser va aparea:
boolean
integer
double
string
string
NULL
Observati ca utima linie afisata este NULL, asta deoarece $var6 nu are nici o valoare determinata
Variabile si operatori PHP
- Intelegeti diferenta dintre valori si variabile
- Invatati modul de utilizare a operatorilor pentru combinarea valorilor în expresii
- Invatati modul de utilizare a functiilor pentru executarea operatiilor elementare
1. Valori si variabile
Daca se asociaza o valoare cu un nume, ca si in algebra, este posibila modificarea acelei valorii prin referire la numele respectiv. O valoare cu nume se numeste variabila, deoarece.
In limbajul PHP variabilele sunt reprezentate prin semnul $ urmat de numele variabilei.
Numele variabilei este case sensitive, adica conteaza daca numele este scris cu litere mari sau mici. Intotdeuna numele variabilelor trebuie sa inceapa cu o litera sau o liniuta de subliniere (_) si poate fi urmat de litere sau cifre.
Iata cateva exemple de nume de variabila:
- $var
- $Numar
- $_elemente
Pentru a asocia o valoare unei variabile, veti scrie cu un semn egal, asa:
$temperatura = 33.5;
Semnul egal este urmat de valoarea care urmeaza a fi atribuita variabilei, in acest exemplu, valoarea este data de valoarea literala dubla (float) 33.5. Caracterul punct si virgula (;) marcheaza sfarsitul instructiunii.
De asemenea, puteti atribui valoarea unei variabile catre o alta variabila, prin scrierea unei instructiuni de atribuire astfel:
$castigator = $nume;
In acest caz, valoarea variabilei $nume devine valoarea variabilei $castigator. Acest procedeu se numeste. Astfel o modificare facuta asupra lui $nume se va propaga automat si asupra variabilei $castigator.
Iata exemplul de mai sus asa cum va aparea intr-un script PHP simplu :
<?php
$nume = „Cosmin”;
$castigator = $nume;
echo $castigator;
?>
Rezultatul afisat va fi:
Cosmin
• Exista si un alt tip de atribuire valoare de la o variabila la alta, denumita atribuire prin referinta (folosind si caracterul „&”), aceasta de fapt leaga cele doua variabile, vedeti tutorialul: Atribuire valoare prin referinta
Forma valorii unei variabile se numeste tipul variabilei. Tipul unei variabile se poate modifica daca atribuiti variabilei o valoare de un tip diferit fata de cel al valorii curente a variabilei.
De exemplu, instructiunea de atribuire
$x = 3;
Atribue variabilei $x tipul integer.
Daca instructiunea de atribuire
$x = 3.5;
va fi executata ulterior, variabila $x devine de tip float.
Desi instructiunile de atribuire din limbajul PHP si ecuatiile matematice folosesc ambele semnul egal, cele doua notiuni sunt foarte diferite, deoarece atribuirea nu este acelasi lucru cu egalitatea. Atribuirea este o operatie care inlocuieste o valoare cu o alta. Pe de alta parte, egalitatea este o relatie intre doua valori. Cand doua valori sunt egale, acestea raman egale pentru totdeauna. Totusi, puteti atribui o valoare unei variabile si ulterior puteti atribui aceleiasi variabile o alta valoare. Cu alte cuvinte, egalitatea este permanenta; atribuirea nu este.
Variabilele declarate mai sus sunt definite de utilizator. In PHP exista si alte variabile numite „variabile predefinite” care rezida in nucleul PHP, sunt alocate automat de catre modulul PHP, si sunt accesibile in program.
In continuare enumeram citeva dintre aceste „Variabile Superglobale” (accesibile din toate scripturile PHP):
- $GLOBALS – contine referinte la variabilele globale disponibile in scriptul curent.
- $_SERVER – variabile definite de server sau relative la contextul in care se executa scriptul curent
- $_GET – variabile furnizate scriptului prin adresa URL
- $_POST – variabile furnizate scriptului prin metoda HTTP POST (in general prin formulare)
- $_COOKIE – variabile furnizate scriptului prin HTTP cookie
- $_FILES – furnizeaza scriptului fisierele uploadate
- $_SESSION – variabile care sunt inregistrate in sesiunea scriptului
2. Operatori
Pentru a va ajuta sa efectuati calcule si prelucrari ale datelor, PHP include o diversitate de operatori si functii utile. Cand combinati valorile literale si variabilele cu operatori si functii, construiti ceea ce este cunoscut sub numele de expresii.
Operatorii sunt simboluri specifice care realizeaza o actiune specifica in cadrul unei expresii.
Operatorii actioneaza asupra variabilelor prezente in expresie. De exemplu in cadrul expresiilor matematice vom folosi operatori aritmetici.
$a + $b | Adunare : a+b |
$a – $b | Scadere : a-b |
$a * $b | Inmultire: a*b |
$a / $b | Impartire: a/b |
$a%$a | Moule :restul impartirii lui a la b |
$a +=$b | Echivalent cu: $a = $a + $b |
$a -=$b | Echivalent cu: $a = $a – $b |
$a *=$b | Echivalent cu: $a = $a * $b |
$a /=$b | Echivalent cu: $a = $a / $b |
$a++ | Incrementare ; Ecivalent cu $a = $a +1 |
$a– | Decrementare; Echivalent cu $a = $a -1 |
O proprietate interesanta a operatorului de impartire este aceea ca returneaza o valoare intreaga daca ambii sai operanzi sunt intregi si rezultatul este un intreg; in caz contrar, returneaza o valoare cu virgula (de tip float). Astfel, instructiunea de atribuire
$x = 10/3;
atribuie valorii $x valoarea cu virgula 3.3333333333333, chiar daca operanzii operatorului de impartire sunt ambii intregi.
Similar operatorului de impartire, operatorul modulo executa o impartire; cu toate acestea, operatorul modulo returneaza restul, nu catul impartirii. De exemplu, prin impartirea lui 10 la 3 se obtine catul 3 si restul 1. Deci, instructiunea de atribuire
$x = 10%3;
atribuie variabilei $x valoarea 1.
Operatorii de incrementare $a++ si decrementare $a– au un efect diferit daca sunt scrisi ++$a respectiv –$a
In primul caz, daca avem de exemplu
$x= $a++;
i-se atribue lui $x valoarea variabilei $a dupa care se efectueaza operatia de incrementare ($a = $a + 1)
Dar daca avem
$x = ++$a=
se efectueaza operatia de incrementare ($a = $a + 1) dupa care i-se atribue lui $x noua valoarea a lui $a
Ca in matematica, PHP evalueaza operatorii de inmultire si de impartire anterior operatorilor de adunare, respectiv scadere. Aceasta caracteristica se numeste precedenta.
Datorita precedentei, instructiunea
$x=1+2*3;
atribuie variabilei $x valoarea 7, chiar daca operatorul de adunare apare inaintea celui de inmultire. Se respecta regulile din matematica. Daca doriti sa controlati precedenta unei expresii, puteti folosi paranteze. De exemplu, instructiunea
$x=(1+2)*3;
atribuie variabilei $x valoarea 9, deoarece partea inclusa intre paranteze a expresiei este evaluata prima, asa cum se procedeaza in algebra.
In afara de acesti operatori numerici, PHP include un operator de concatenare a sirurilor (.), denumit uneori operator de unire, deoarece functia sa consta in unirea sirurilor.
Sa observam urmatorul exemplu:
<?php
$var1 = ‘Ionescu’;
echo ‘Numele candidatului este ‘.$var1;
$var2 = ‘Candidat: ‘;
$var2 .= $var1;
echo „<br />$var2”;
?>
Rezutatul afisat va fi:
Numele candidatului este Ionescu
Candidat: Ionescu
In exemplul de mai sus se observa folosirea operatorului de concatenare . (punct)
Acest operator adauga la sfarsitul sirului curent noul sir furnizat ca parametru.
Expresia $a .= ‘Sir de test’ este echivalenta cu : $a = $a . ‘Sir de test’.
3. Functii
In afara de operatori, PHP include functii care executa operatii utile. Iata unele exemple de functii:
- abs(x) – Returneaza valoarea absoluta a lui ‘x’
- ceil(x) – Returneaza valoarea ‘x’, rotunjita la intregul imediat superior
- floor(x) – Returneaza valoarea ‘x’, rotunjita la intregul imediat inferior
- max(x,y,…) – Returneaza valoarea maxima a unui set de valori
- min(x,y,…) – Returneaza valoarea minima a unui set de valori
- pow(x,n) – Returneaza numarul ‘x’, ridicat la puterea specificata ‘n’
- strftime(f) – Returneaza data curenta, formatata conform continutului parametrului ‘f’
- sqrt(x) – Returneaza radacina patrata a lui ‘x’
– In afara de acestea, PHP include multe alte functii. Consultati site-ul www.php.net.
Majoritatea functiilor necesita una sau mai multe valori de intrare, cunoscute sub numele de argumente. De exemplu, functia „sqrt” necesita un argument (aici este ‘x’) care specifica valoarea a carei radacina patrata trebuie calculata.
Unele functii, precum min() si max(), preiau un numar nedefinit de argumente. Alte functii nu necesita nici un fel de argumente. Pentru a putea folosi o functie in mod corespunzator, trebuie sa cunoasteti:
- Numele functiei
- Actiunea functiei si valoarea returnata de aceasta, daca exista
- Numarul argumentelor preluate de functie
- Semnificatia fiecarui argument
Iata un exemplu simplu care foloseste o functie pentru calculul lungimii laturilor unui patrat, daca este cunoscuta aria patratului:
- $latura=sqrt($arie);
Retineti modul in care argumentul functiei este inclus intre paranteze, precum si modul in care functia si argumentul sau sunt folosite intr-un mod asemanator cu o valoare literala sau o variabila.
Iata un exemplu care prezinta modul de utilizare a functiei „max”, care preia mai multe argumente:
- $punctaj_maxim=max($punctaj1, $punctaj2, $punctaj3);
Rezultatul dat variabilei „$punctaj maxim” va fi determinat de functia „max”, aceasta determinand valoarea cea mai mare a argumentelor din paranteza.
Observati ca fiecare argument este separat de vecinul sau printr-o virgula.
Utilizare formulare HTML cu PHP, $_GET si $_POST
- Invatati sa trimiteti date prin formulare HTML
- Invatati sa preluati date trimise prin GET si POST
1. Proiectarea unui formular
Principalele sarcini în proiectarea unui formular HTML le constituie alegerea controalelor HTML care vor fi incluse în formular, selectarea amplasamentului controalelor si alegerea numelui acestora.
Studiati lectia HTML despre Formulare, aceasta explica modul de realizare a fiecarui obiect dintr-un formular HTML si va va ajuta sa invatati rolul acestor elemente HTMLL.
2. Crearea unui formular
Un formular HTML trebuie sa contina un buton de expediere, submit, pe care utilizatorul executa clic pentru a trimite datele din formular la scriptul PHP.
Formularele se creaza folosind etichete specifice incadrate in tag-ul <form> </form> ca in exemplul de mai jos:
<form action=”script.php” method=”post”>
Nume:<input type=”text” name=”nume” />
<br /><input type=”submit” name=”submit” value=”Trmite formular” />
</form>
In browser se va vedea:
Nume:
Fiecare element al formularului trebuie introdus intre etichetele <form> si </form>.
Atributul „action” indica fisierul cu scriptul care va primi datele de la formular si reprezinta una dintre cele mai importante precizari.
Fiecare element, camp dintr-un formular trebuie sa aibe un nume distinct, dat prin atributul „name”; acest nume este folosit de scriptul PHP la care sunt trimise datele, astfel, scriptul PHP recunoaste datele din campul respectiv folosind numele acestuia.
3. Utilizarea metodelor GET si POST
Atributul „method” poate avea doua valori : GET si POST. Diferenta intre metodele GET si POST consta in modul in care informatia din formular este transmisa scriptului care o prelucreaza.
– Metoda GET trimite toate informatiile adunate ca parte a adresei URL; aceste informatii sunt vizibile pentru utilizator.
– Metoda POST transmite informatia intr-o maniera invizibila pentru utilizator si poate transmite o cantitate mai mare de date decat GET.
Folosind exemplul de formular de mai sus, metoda GET va transmite serverului o adresa URL ca cea de mai jos:
- http://www.ceva.net/script.php?nume=Popescu
iar in cazul folosirii metodei POST, in URL va aparea doar:
- http://www.ceva.net/script.php
Metoda GET permite transmiterea unui volum limitat de informatii catre server; de asemenea nu este recomandata folosirea acestei metode in cazul in care dorim sa transmitem date personale(de exemplu parolele introduse intr-un formular pot fi vizualizate de oricine in browserul de Web).
4. Receptionarea datelor de la un formular HTML
In general datele din formular sunt preluate de scriptul PHP prin urmatoarea formula:
- $_POST[‘nume’] – daca este folosit method=”post”
- $_GET[‘nume’] – daca este folosit method=”get”
– unde „nume este valoarea atributului name al elementului din formularul HTML.
Sa luam un exemplu practic de formular HTML care trimite date (prin method=”post”) la un script PHP unde acestea vor putea fi vizualizate.
Salvam scriptul de mai jos intr-un fisier pe care-l numim „test-form.php”
<?php
$nume = $_POST[‘nume’];
$email = $_POST[‘email’];
$parola = $_POST[‘parola’];
echo „Nume = $nume”;
echo „<br />E-mail = $email”;
echo „<br />Parola = $parola”;
?>
Scriem urmatorul cod HTML intr-un alt fisier „form.html”, pe care-l salvam in acelasi director cu scriptul PHP de mai sus.
<!DOCTYPE html PUBLIC „-//W3C//DTD XHTML 1.0 Transitional//EN”
„http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd”>
<html xmlns=”http://www.w3.org/1999/xhtml” xml:lang=”ro” lang=”ro”>
<head>
<meta http-equiv=”content-type” content=”text/html; charset=UTF-8″ />
<title> Test-Form </title>
</head>
<body>
<form action=”test-form.php” method=”POST”>
Nume:<input type=”text” name=”nume” />
<br />Email:<input type=”text” name=”email” />
<br />Parola:<input type=”password” name=”parola” />
<br /><input type=”submit” name=”submit” value=”Trmite datele” />
</form>
</body>
</html>
In browser va aparea:
Nume:
Email:
Parola:
Completam datele din formular, de exemplu: la Nume : Popescu, la Email : plomar@uv.ro si Parola : parola_mea
Dupa ce am competat datele, apasam clic pe butonul „Trimite datele”, acestea vor fi trimise la scriptul PHP „test-form.php”, care le va prelucra si va afisa urmatorul rezultat:
Nume = Popescu
E-mail = plomar@uv.ro
Parola = parola_mea
Sa intelegem exemplu de mai sus.
Folosind formularul de mai sus, atributul NAME din fiecare eticheta INPUT atribuie fiecarei casete cu text un nume, astfel scriptul PHP va putea recunoaste datele scrise in casete. In scriptul „test-form”.php” vom accesa variabilele:
- $nume – va primi informatia introdusa in campul Nume
- $email – va primi informatia introdusa in campul Email
- $parola – va primi informatia introdusa in campul Parola
Deoarece cunoastem metoda prin care trimitem datele catre scriptul PHP, „POST”, am folosit variabila PHP globala _POST pentru a prelua datele din formular:
- $_POST[‘nume’]
- $_POST[‘email’]
- $_POST[‘parola’]
Constructia echo trimite datele de iesire care vor fi afisate de browser
Variabile PHP globale: _GET si _POST reprezinta de fapt variabile de tip array, fiecare element se poate accesa prin cheia sa; in cazul nostru cheia fiecarui element este data de atributul : NAME al casetelor din formular
5. Trimiterea de date unui script prin adresa URL
In afara de a expedia unui script datele printr-un formular, puteti expedia date cu ajutorul adresei URL a paginii. Pentru aceasta, atasati la sfarsitul adresei URL un semn al întrebarii (?) si apoi includeti o serie de perechi „nume-valoare” (separate prin &), ca in exemplu urmator:
- http://www.ceva.net/fisier.php?nume1=valoare1&nume2=valoare2
Exemplul include numai doua perechi „nume-valoare”; cu toate acestea, puteti include oricâte asemenea perechi doriti (separate prin caracterul &), in functie de limita impusa de browser.
Pentru a prelua si folosi datele dintr-o astfel de adresa URL, folositi in interiorul scriptului PHP expresia „$_GET[‘nume’], ca in exemplu urmator”
- $var1 = $_GET[‘nume1’]
- $var2 = $_GET[‘nume2’]
Unde „nume1” si „nume2” sunt numele variabilelor din adresa URL, iar „$var1” si „$var2” sunt variabilele care vor fi folosite in scriptul PHP (din „fisier.php„) si a caror valori vor fi „valoare1” respectiv „valoare2” continute in adresa URL.
Daca doriti sa trimiteti unui script, prin intermediul adresei sale URL, caractere speciale precum un semn al intrebarii, un semn egal sau un ampersand, se poate crea confuzie.
Pentru a functiona corect, un sir trebuie sa fie codificat URL. Pentru a codifica URL un sir, caracterele speciale se înlocuiesc cu echivalentele lor hexazecimale, precedate de un simbol procent (%). Pentru alte detalii, consultati lectia despre Utilizarea caracterelor special , subtitlul 4 ( Conversia adreselor URL).
De exemplu, forma codificata URL a sirului „la multi ani!” este %22la multi ani%21%22.
Adresa URL rezultanta se numeste „sir de interogare” si nu poate contine spatii. Daca doriti sa trimiteti un spatiu ca parte a unui sir de interogare, trimiteti în locul spatiului un semn plus (+). Iata un exemplu de sir de interogare care codifica numele autorului acestui site:
- http://www.ceva.net/script.php?autor=Dis+cant
Unele dintre cele mai comune caractere speciale si echivalentele lor codificate URL sunt prezentate în tabelul de mai jos:
Caracter special | Echivalentul codificat URL |
. | *%2e |
> | %3e |
^ | %5e |
~ | %7e |
+ | %2b |
, | %2c |
/ | %2f |
: | %3a |
; | %3b |
%3c | |
= | %3d |
> | %3e |
[ | %5b |
\ | %5c |
] | %5d |
_ | %5f |
{ | %7b |
| | %7c |
} | %7dc |
tab | %09 |
spatiu | %20 |
! | %21 |
“ | %22 |
# | %23 |
$ | %24 |
% | %25 |
& | %26 |
` | %27 |
( | %28 |
) | %29 |
@ | %40 |
` | %60 |
Variabile de mediu si erori
- In aceasta lectie invatati sa obtineti accesul la valorile variabilelor de mediu.
- Invatati despre depanarea si tratarea erorilor.
1. Obtinerea si utilizarea datelor de la o variabila de mediu
Variabilele de mediu sunt folosite pentru stocarea optiunilor si a parametrilor care personalizeaza mediul de aplicatie. Aplicatiile pot obtine accesul la valorile variabilelor de mediu si in functie de acestea îsi pot ajusta comportamentul.
De exemplu, calea de cautare a programelor MS-DOS este stocata într-o variabila de mediu denumita PATH. In general, comenzile sistemelor de operare sunt folosite pentru a configura variabilele de mediu si pentru a stabili valorile acestora. Cu toate acestea, unele aplicatii manipuleaza valorile variabilelor de mediu.
Atât serverul Web Apache, cât si serverul de aplicatie PHP folosesc variabile de mediu pentru a prezenta informatii de stare. Unele dintre cele mai importante variabile de mediu folosite de Apache si PHP sunt rezumate în tabelul de mai jos. Numeroase servere Web, altele decât Apache, furnizeaza o parte din aceste variabile de mediu sau chiar pe toate.
Multe dintre aceste variabile reflecta caracteristicile cererii HTTP care a solicitat executia PHP. Puteti vizualiza toate variabilele de mediu disponibile pentru programele PHP prin invocarea functiei phpinfo() si vizualizarea datelor de iesire generate de aceasta.
Vizualizarea datelor unei variabile de mediu se poate face folosind variabila $_SERVER si o cheie (intre paranteze patrate) ce repreinta numele variabilei de mediu.
- De exemplu, pt. afisarea domeniului serverului unde ruleaza scriptul
echo $_SERVER[‘SERVER_NAME’];
Variabila de mediu | Descriere |
CONTENT_LENGTH | – Lungimea, în octeti, a corpului cererii. |
CONTENT_TYPE | – Tipul MIME al datelor din corpul cererii. |
DOCUMENT_ROOT | – Calea care constituie radacina arborelui catalogului cu documente al serverului Web. |
GATEWAY_INTERFACE | – Returneaza ersiunea protocolului CGI (Common Gateway Interface) folosit de serverul Web. |
HTTP_ACCEPT | – Continutul antetului HTTP Accept. |
HTTP_ACCEPT_CHARSET | – Continutul antetului HTTP Accept-Charset:, care specifica seturile de caractere întelese de client. |
HTTP_ACCEPT_ENCODING | – Continutul antetului HTTP Accept-Encoding:, care specifica tipurile de continuturi întelese de client. |
HTTP_ACCEPT_LANGUAGE | – Continutul antetului HTTP Accept-Language:, care specifica limbajele preferate de client. |
HTTP_CONNECTION | – Continutul antetului HTTP Connection:, care indica optiunile solicitate de client. |
HTTP_HOST | – Continutul antetului HTTP Host:, care indica numele de gazda, folosit de client la prezentarea cererii. |
HTTP_REFERER | – Adresa URL a paginii Web care a trimis clientul la pagina curenta. |
HTTP_USER_AGENT | – Continutul antetului HTTP user-Agent, care indica tipul si versiunea browser-ului folosit. |
PATH | – Calea de executie asociata cu mediul serverului. |
QUERY_STRING | – Sirul de interogare, daca exista, prin care a fost accesata pagina. |
REMOTE_ADDR | – Adresa IP a clientului (vizitatorului). |
REMOTE_HOST | – Numele de gazda al clientului. |
REMOTE_PORT | – Adresa portului clientului de unde a pornit cererea. |
REQUEST_METHOD | – Metoda de cerere HTTP folosita; de exemplu, GET, POST, PUT sau HEAD. |
REQUEST_URI | – URI folosit pentru accesul la pagina curenta. URI este alcatuit dintr-un URL si un sir optional de interogare. |
SCRIPT_FILENAME | – Numele de cale absolut al scriptului curent. |
SCRIPT_NAME | – Adresa URL a scriptului curent. |
SERVER_ADMIN | – Adresa de e-mail a administratorului serverului Web. |
SERVER_HOST | – Numele de gazda asociat serverului Web care prelucreaza cererea. |
SERVER_PORT | – Portul folosit de serverul Web pentru comunicatii. |
SERVER_PROTOCOL | – Numele si versiunea protocolului prin intermediul caruia s-a executat cererea. |
SERVER_SIGNATURE | – Sirul care identifica versiunea serverului Web si numele de gazda folosit pentru prelucrarea cererii. |
SERVER_SOFTWARE | – Sirul care identifica programul server Web si versiunea acestuia. |
– O lista completa a acestor variabile de mediu o gasiti la pagina oficiala $_SERVER
Puteti obtine accesul la variabila de mediu folosind variabila $_SERVER care este de fapt un Array in care cheile elementelor sunt numele variabilelor de mediu
De exemplu, urmatoarea instructiune echo trimite browserului adresa IP a clientului (vizitatorului):
<?php
$ip = $_SERVER[‘REMOTE_ADDR’];
echo „Adresa dv. IP este $ip”;
?>
Afisarea sau nu a acestor variabile globale depinde de permisiunile facute la configurarea serverului PHP si de datele transmise.
2. Depanarea unui script
Uneori, în locul datelor de iesire ale scriptului dumneavoastra, puteti vedea unul din urmatoarele:
- Textul scriptului, în loc de datele de iesire ale acestuia
- O caseta de dialog, prin care sunteti întrebat daca doriti sa descarcati fisierul care contine scriptul
- Un mesaj în care se spune ca scriptul nu exista
- Un mesaj în care se spune ca browserul dumneavoastra Web nu are permisiunea de a obtine accesul la script
- Un mesaj în care se spune ca scriptul dumneavoastra contine o eroare
La vizualizarea rezultatelor unui script PHP se pot produce numeroase erori, chiar daca scriptul în sine este corect.
– Daca vedeti textul scriptului dumneavoastra sau o caseta de dialog prin care sunteti întrebat daca doriti sa descarcati fisierul care contine scriptul, este posibil ca extensia fisierului script sa fie incorecta sau ca serverul PHP sa nu functioneze. Desi fisierele script PHP trebuie sa aiba, în general, extensia .php, este posibil (dar mai rar) ca un administrator de sistem sa configureze un server PHP astfel încât acesta sa impuna o alta extensie de fisier. Astfel, daca scriptul dumneavoastra esueaza din unul dintre aceste doua motive, luati legatura cu administratorul dumneavoastra de sistem.
– Daca vedeti un mesaj în care se spune ca scriptul nu exista, este posibil ca dumneavoastra sa fi tastat incorect adresa URL. Verificati daca ati tastat corect adresa URL identificata de administratorul dumneavoastra de sistem, precum si daca ati atasat corect la aceasta numele fisierului care contine scriptul, folosind un slash numai daca adresa URL identificata de administratorul dumneavoastra de sistem nu se încheie cu acest caracter.
– Daca vedeti un mesaj în care se arata ca browserul dumneavoastra Web nu are permisiunea de a obtine accesul la script, poate ca este necesar sa modificati permisiunile fisierului script. Pentru a afla cum trebuie procedat, consultati-va cu administratorul de sistem.
– Daca vedeti un mesaj în care se spune ca scriptul dumneavoastra contine o eroare, verificati daca nu a aparut vreuna din urmatoarele probleme:
- O eroare de tastare, cum ar fi scrierea gresita a cuvântului echo
- O eroare de punctuatie, cum ar fi paranteze, ghilimele sau punct si virgula, lipsa sau inserate gresit
- Neincluderea sau includerea eronata a liniilor de delimitare a scriptului, în speta <?php si ?>
- Un marcaj de comentariu ( / / ) care lipseste sau care a fost introdus gresit
De exemplu, iata un script care contine un tip de eroare frecvent întâlnit. Puteti identifica eroarea?
<?php
// Acest script contine o eroare de sintaxa
echo „Salut, World Wide Web!;
?>
Din script lipseste caracterul ghilimele duble de închidere, care trebuie sa delimiteze expresia de tip text. Daca încercati sa executati acest script, puteti vedea doar o pagina goala sau o eroare similara celei prezentate în continuare.
Parse error. Parse error in /home/bmccarty/public_html/php/module-01/syntax-error.php On line 7
Mesajul de eroare încearca sa va indice sursa erorii, indicând numarul liniei la care s-a produs eroarea. Totusi, remarcati ca mesajul va îndruma spre linia 7 a unui script care contine numai 4 linii. Din moment ce ghilimelele duble de închidere lipsesc, serverul PHP cauta dincolo de sfârsitul scriptului pentru a gasi ghilimelele duble respective. Ca atare, serverul PHP este oarecum derutat cu privire la sursa erorii.
Morala este aceea ca nu puteti conta în totalitate pe serverul PHP pentru a determina locatia erorii; folositi numarul de linie furnizat de server numai ca îndrumar pentru a depista locatia probabila a erorii.
3. Tratarea erorilor
Modulul PHP poate fi configurat astfel incat sa afiseze erorile intilnite in codul PHP. Acest lucru poate fi foarte util in cazul depanarii programelor. Pentru a activa afisarea erorilor exista doua metode:
- – modificarea parametrului display_errors din fisierul de configurare „php.ini”
- – folosirea functiei ini_set(‘display_errors’);
In cazul primei metode trebuie sa avem drepturi de administrator pentru a modifica fisierul php.ini. Nu se recomanda setarea parametrului display_errors la valoarea 1(TRUE) in cazul site-urilor de productie; mesajele de eroare afisate nu sint folositoare utilizatorului. Pe de alta parte aceasta ar contribui la marirea riscului unui atac.
A doua metoda consta in folositrea functiei ini_set, care permite unui script sa redefineasca temporar un parametru din fisierul de configurare php.ini.
Consideram un exemplu de cod in care intentionat incercam sa citim variabile care nu exista:
<?php
ini_set(‘display_errors’,1);
echo „Valoarea transmisa este „.$var;
?>
In exemplul de mai sus daca variabila cu nume: „var” nu exista PHP va afisa un mesaj de eroare de genul:
Notice: Undefined variable: var
Putem determina tipurile de erori pe care le semnaleaza PHP folosind functia: error_reporting(). Aceasta preia o constanta care specifica nivelul la care se afiseaza erorile.
- error_reporting(E_ALL) – semnaleaza toate tipurile de erori
- error_reporting(E_ALL & ~E_NOTICE) – semnaleaza toate erorile in afara de anunturi
- error_reporting(0) – dezactiveaza acesta caracteristica.
Exemplu:
<?php
ini_set(‘display_errors’,1);
error_reporting(E_ALL & ~E_NOTICE);
echo „Valoarea transmisa este „.$_GET[‘orase’];
?>
– Testati acest exemplu pentru a vedea rezultatul.
Constante si tipuri de variabile
- învatati sa definiti si sa utilizati constantele
- învatati sa folositi variabilele dinamice
- învatati sa convertiti valorile dintr-un tip în altul
În aceasta lectie vom discuta despre constante si variabile dinamice. Puteti scrie programe PHP utile si complexe fara a utiliza constante sau variabile dinamice. Daca utilizarea constantelor poate facilita citirea programelor dumneavoastra, variabilele dinamice au un efect contrar. Din acest motiv, în general se recomanda evitarea variabilelor dinamice, mai ales de catre programatorii PHP începatori. Totusi, va puteti afla în situatia de a lucra la un program PHP scris de o persoana care foloseste aceste variabile; prin urmare, trebuie sa aveti cunostinte despre variabilele dinamice, indiferent daca le folositi sau nu în propriile dumneavoastra programe.
1. Utilizarea constantelor
O constanta este pur si simplu o valoare care este… constanta, cu alte cuvinte o valoare care nu se modifica, în acest sens, constantele sunt opusele variabilelor, deoarece valoarea unei variabile se poate modifica pe durata executiei unui program.
Pentru a defini o constanta, folositi functia define().
Sa consideram urmatorul exemplu:
- define(„PI”, 3.14159);
– Aceasta instructiune defineste constanta „PI”, atribuindu-i valoarea 3.14159. Dupa ce a fost definita, o constanta se poate folosi în cadrul unei expresii.
De exemplu, puteti calcula aria unui cerc dupa cum urmeaza:
- $arie = PI * $raza * $raza;
– Observati ca referintele la o constanta nu folosesc simbolul dolarului. Astfel, o constanta poate fi cu usurinta deosebita de o variabila. Multi programatori scriu numele constantelor folosind numai majuscule, ceea ce le face si mai simplu de identificat.
O functie conexa, defined(), poate determina daca o anumita constanta a fost definita.
De exemplu, cu ajutorul urmatoarei instructiuni PHP puteri determina daca fost definita constanta Pi:
- echo defined(„PI”);
– Retineti ca numele care va fi testat este delimitat prin ghilimele duble.
Functia defined() returneaza valoarea 1 (unu) daca respectiva constanta a fost specificata; în caz contrar, returneaza zero
In acest exemplu, instructiunea echo va afisa valoarea 1.
Pe lânga sporirea lizibilitatii programelor, constantele pot facilita modificarea acestora.
Sa presupunem ca ati scris un program care contine multe calcule ce folosesc valoarea 3,14159, iar ulterior ati descoperit ca trebuia sa folositi valoarea mai exacta 3,1415926535898. Descoperirea si modificarea fiecarei aparitii a valorii originale poate fi o activitate mare consumatoare de timp. Dar, daca ati definit o constanta pentru reprezentarea valorii, numarul 3,14159 va aparea o singura data în program si va fi necesara doar o singura modificare a constantei.
Valoarea „pi” este folosita extrem de frecvent în unele calcule. Pentru comoditate, PHP furnizeaza o functionalitate mai indicata decât definirea unei constante cu valoarea pi, functia pi() returneaza valoarea respectiva, cu 14 cifre semnificative (3.1415926535898).
Astfe, puteti calcula aria unui cerc folosind urmatoarea expresie:
- $arie= pi() * $raza * $raza;
2. Lucrul cu variabile dinamice
Daca o constanta poate spori lizibilitatea si simplitatea modificarii programelor, variabilele dinamice îngreuneaza întelegerea si posibilitatea de a opera schimbari în program.
Iata un exemplu simplu de variabila dinamica, denumita „$$film” :
<?php
$oameni_buni = 12;
$film = „oameni_buni”;
echo $$film;
?>
O variabila dinamica este denumita folosind doua simboluri ale dolarului ($$) si este asociata cu o variabila obisnuita care are un nume similar si include un singur simbol al dolarului.
In exemplul de mai sus, variabila dinamica $$film este asociata cu variabila obisnuita, dar cu aceasi nume, $film.
Valoarea unei variabile obisnuite da numele (fara un simbol al dolarului) unei a doua variabile ordinare, în exemplu nostru, a doua variabila obisnuita este $oameni_buni. Valoarea acestei a doua variabile obisnuite este valoarea variabilei dinamice: în exemplu, aceasta este valoarea 12. Deci valoarea variabiei dinamice $$film, si care va fi afisata de functia „echo” este 12.
O variabila dinamica nu contine, practic, propria sa valoare. În schimb, contine amplasamentul unde se poate gasi valoarea; cu alte cuvinte, numele unei alte variabile.
Daca variabilele dinamice vi se par derutante, asa e, variabilele dinamice sunt derutante. Sunt rar folosite, uneori este posibila reducerea dimensiunilor unui program folosind una sau mai multe variabile dinamice.
3. Lucrul cu tipuri de variabile
In lectia 2 ati invatat despre tipul variabilelor: Boolean, Integer, Float, String, Array, Object, Resource, Null.
. O consecinta a caracterului dinamic al tipurilor de variabile din limbajului PHP este aceea ca nu trebuie sa specificati tipul variabilelor. PHP determina tipul variabilei în functie de tipul ultimei valori atribuite variabilei. Cu toate acestea, caracterul dinamic al tipurilor nu va scuteste de problemele legate de tipuri. Trebuie sa cunoasteti tipurile acceptate si ceea ce se întâmpla când în cadrul expresiilor se folosesc doua sau mai multe tipuri.
Sa luam în considerare urmatorul script PHP scurt:
- $x = 1;
- $y = 2.5;
- $z = $x+$y;
- echo $z;
– Instructiunea de atribuire care stocheaza o valoare în variabila $z este interesanta, deoarece expresia din membrul drept include un operand Integer (întreg) si un operand de tip float. Ce valoare va aparea la iesire? Raspunsul corect este 3.5, o valoare de tip float.
Când o expresie aritmetica foloseste mai multe tipuri de variabile, PHP executa conversia automata a tipului. Daca unul dintre operanzi este de tip float, PHP trateaza ceilalti operanzi ca si cum ar fi de tip float, executa calculele si returneaza rezultatul ca valoare de tip float.
Este important sa întelegeti faptul ca prin conversia de tip nu se modifica tipurile variabilelor unei expresii; acestia sunt pur si simplu tratati ca si cum ar fi fost de un alt tip.
In cadrul exemplului, variabila $x ramâne de tip înteger, chiar daca PHP o trateaza ca o valoare de tip float pentru a executa calculele.
Sirurile (variabilele de tip string) pot fi de asemenea supuse unei conversii de tip. Sa examinam urmatorul exemplu:
- $x = 1;
- $y = $x+ „inca 1”;
- echo $y
– Aici cuvântul „inca” din sirul text este ignorat.
Valoarea afisata este 2, adica suma dintre valoarea variabilei $x si valoarea numerica a sirului text, care este 1. Valoarea numerica si tipurile unui sir sunt determinate prin respectarea urmatoarelor reguli:
- 1. Daca sirul începe cu o valoare numerica, valoarea sirului este data de valoarea numerica respectiva; în caz contrar, valoarea sirului este zero.
- 2. Daca un punct zecimal sau un exponent (e sau E), este asociat cu valoarea numerica, tipul variabilei rezultante este float; în caz contrar, tipul valorii rezultante este un întreg.
4. Conversia manuala a tipului variabilelor
Daca preferati, puteti prelua controlul conversiei tipului variabilei sau puteti modifica tipul unei variabile. Pentru a prelua controlul conversiei de tip, puteti converti fortat un operand de la un tip la altul, proces cunoscut sub numele de „conversie fortata de tip” sau pur si simplu conversie fortata.
În continuare, este dat un exemplu unei astfel de conversie de tip, unde puteti vedea modul de efectuare a acesteia:
- $x = 1;
- $y = 2.5;
- $z = $x + (int)$y;
- echo $z
Conversia fortata de tip, si anume (int), determina tratarea variabilei $y ca pe un întreg (integer), iar valoarea acesteia devine 2, în loc de 2.5, care este valoarea reala a variabilei $y. Astfel valoarea lui $z care va fi afisata de expresia „echo” este 3.
Tabelul urmator indica si alte conversii fortate de tip care se pot folosi si expresiile care trebuesc utiizate:
Conversie fortata | Rezultat |
(int), (integer) | – Conversie fortata la întreg |
(real), (double), (float) | – Conversie fortata la dublu |
(string) | – Conversie fortata la sir |
(array) | – Conversie fortata la tablou (matrice) |
(object) | – Conversie fortata la obiect |
O alta modalitate de a trata o variabila ca si cum ar fi de un tip specificat este folosirea unor functii specifice.
Ca exemplu de utilizare a uneia dintre functiile respective, luati în considerare si studiati urmatorul exemplu:
<?php
$x = 1.5;
$y = intval($x);
echo $x;
echo „<br />$y”;
?>
Rezultatul afisat va fi:
1.5
1
Valoarea 1.5 este afisata ca valoare a variabilei $x, iar valoarea l este afisata ca valoare a variabilei $y.
Tabelul urmator prezinta si alte functii foosite pentru a trata o variabila ca si cum ar fi de alt tip.
Functie | Operatie |
doubleval(), floatval() | – Trateaza argumentul ca fiind de tip dublu. |
intval() | – Trateaza argumentul ca fiind de tip întreg. |
strval() | – Trateaza argumentul ca fiind de tip string |
Nici conversia normala si nici cea fortata nu modifica tipul unei variabile. Ambele mecanisme determina tratarea variabilelor doar in expresia respectiva ca si cum ar fi de un alt tip.
Totusi, modificarea tipului unei variabile este posibila prin utilizarea functiei settype().
Acest procedeu este ilustrat în urmatorul exemplu:
- $x = 1.5;
- settype($x,”integer”);
- echo $x; // Va afisa valoarea 1
– Tipul variabilei $x va fi schimbat in „integer”, astfel valoarea afisata a variabilei $x este 1, deoarece fractia zecimala se pierde atunci când functia settype() converteste valoarea float la o valoare întreaga.
Valorile posibile pentru al doilea argument al functiei settype(), si anume argumentul care specifica tipul dorit, sunt:
- „integer”
- „double”
- „string”
- „array”
- „object”
Sa ne amintim din lectia 2 ca exista o functie conexa, gettype(), care returneaza un sir care indica tipul variabilei specificate. Scriptul urmator afiseaza „integer”, care indica tipul variabilei $x:
$x = 1;
echo gettype($x);
– O lista cu mai multe functii utile in lucru cu tipuri de variabile si valorile lor gasiti la pagina -> Functii pentru tipuri de variabile si valori.
Instructiuni conditionale if() else
- Invatati sa definiti si sa folositi valorile de tip adevarat/fals
- Invatati sa întelegeti si sa scrieti instructiunile if si else
1. Utilizarea valorilor de tip adevarat / fals
Majoritatea programelor utile nu se comporta în exact acelasi mod la fiecare rulare a acestora, în schimb, programele iau decizii, executând uneori o operatie si alteori alta, în functie de circumstante.
Programele PHP iau decizii prin evaluarea unor expresii conditionale si executa instructiuni bazate pe rezultatele acestor evaluari. Expresiile conditionale sunt asimilate ca având una din doua valori: TRUE (adevarat) sau FALSE (fals). Uneori, expresiile conditionale se mai numesc si expresii booleene, în onoarea matematicianului care le-a studiat, George Boole. Constanta TRUE are valoarea l, iar FALSE are valoarea 0.
O modalitate utila de a forma o expresie conditionala consta în utilizarea operatorilor logici pentru compararea a doua valori numerice. Sa luam urmatorul exemplu:
$a < 1;
Aceasta expresie conditionala foloseste operatorul <, care are, în esenta, aceeasi semnificatie ca în algebra. Expresia are valoarea TRUE daca si numai daca valoarea variabilei $a este mai mica decât 1; în toate celelalte cazuri, are valoarea FALSE.
Puteti forma expresii conditionale complexe prin unirea a doua expresii conditionale cu ajutorul unui operator logic. De exemplu, expresia urmatoare este adevarata daca ambele expresii conditionale care o compun sunt adevarate:
$a < 1 AND $b < 1
Cu alte cuvinte, expresia este adevarata daca atât variabila $a, cât si variabila $b au valori mai mici decât 1.
PHP furnizeaza un set de asemenea operatori relationali, prezentati pe scurt în tabelul de mai jos.
Puteti folosi operatorii logici pentru compararea sirurilor; cu toate acestea, un sir care apare într-o expresie conditionala este convertit la o valoare numerica înainte de evaluarea expresiei. Deseori, se ajunge la rezultate neasteptate, în general, valorile sirurilor trebuie sa fie comparate folosind o functie de comparare a sirurilor; aceste functii vor fi explicate în lectiile urmatoare.
Operatori logici | |
Operator | Descriere |
$a < $b | – TRUE daca valoarea lui $a este mai mica decât valoarea lui $b. |
$a > $b | – TRUE daca valoarea lui $a este mai mare decât valoarea lui $b. |
$a >= $b | – TRUE daca valoarea lui $a este mai mare sau egala cu valoarea lui $b |
$a <= $b | – TRUE daca valoarea lui $a este mai mica sau egala cu valoarea lui $b |
$a = $b | – TRUE daca valoarea lui $a este egala cu valoarea lui $b. |
$a == $b | – TRUE daca $a si $b sunt identice; cu alte cuvinte, daca $a si $b au acelasi tip si aceeasi valoare |
$a != $b | – TRUE daca valoarea lui $a este diferita de valoarea lui $b |
$a !== $b | – TRUE daca $a si $b nu sunt identice; cu alte cuvinte, daca $a si $b nu sunt de acelasi tip si aceeasi valoare |
$x AND $y | – TRUE daca atât $x, cât si $y sunt adevarate |
$x && $y | – TRUE daca atât $x, cât si $y sunt adevarate. |
$x OR $y | – TRUE daca minimum una din expresiile $x sau $y este adevarata. |
$x || $y | – TRUE daca minimum una din expresiile $x sau $y este adevarata. |
$x XOR $y | – TRUE daca numai una din expresiile $x sau $y este adevarata. |
!$x | – TRUE daca $x este FALSE |
NOT $x | – TRUE daca $x este FALSE |
Retineti ca puteti prefixa o expresie conditionala cu operatorul !, care inverseaza valoarea „TRUE” sau „FALSE” a operandului sau.
Observati ca PHP foloseste doi operatori logici care executa aceeasi operatie (AND si &&) respectiv (OR si ||).
Cu toate acestea, operatorii difera din punctul de vedere al precedentei – caracteristica care determina ordinea în care sunt executate operatiile în timpul evaluarii expresiilor. Operatorii && si || au o precedenta relativ ridicata, în timp ce operatorii AND si OR au o precedenta relativ redusa. Este la fel ca in aritmetica unde, intr-o ecuatie ca aceasta: a + b * c se executa intai inmultirea si apoi adunarea, chiar daca ordinea lor este alta (daca nu sunt folosite paranteze). La fel si in PHP, se pot folosi paranteze rotunde pentru a controla ordinea executarii operatiilor.
Pentru comoditate, puteti forma expresii conditionale fara un operator logic. De exemplu, daca $a este o variabila numerica, puteti folosi expresia $a ca expresie conditionala. Expresia este considerata ca având valoarea FALSE daca valoarea variabilei $a este zero, respectiv valoarea TRUE daca valoarea variabilei respective este diferita de zero.
Daca folositi un sir ca expresie conditionala, expresia are valoarea FALSE daca sirul este vid sau daca are valoarea speciala „\0”, care simbolizeaza un octet cu valoarea zero.
Similar, utilizarea unei valori nedefinite ca expresie conditionala determina obtinerea valorii FALSE. Daca folositi un tablou sau un obiect ca expresie conditionala, aceasta are valoarea FALSE daca tabloul sau obiectul sunt vide (fara vreo valoare); în caz contrar, expresia are valoarea TRUE.
2. Scrierea instructiunilor „if”
Expresiile conditionale sunt esentiale pentru scrierea instructiunilor conditionale, prin care se iau decizii.
Una dintre cele mai simple si folosite instructiuni conditionale este instructiunea : if.
If(conditie) {
Instructiune(1);
Instructiune(2);
..................
}
– Dupa cum se observa dupa if urmeaza o pereche de paranteze rotunde in interiorul carora se plaseaza conditia, adica o expresie logica a carei rezultat poate fi TRUE sau FALSE. Daca si numai daca rezultatul expresiei logice (conditia) este TRUE se vor executa instuctiunile : Instructiune(1), apoi Instructiune(2), etc…
Se observa ca acest set de instructiune se plaseaza intre acolade. Doar intr-un singur caz aceste acolade nu sunt necesare si anume: in cazul in care este scrisa doar o singura instructiune.
Daca rezultatul expresiei logice dintre paranteze rotunde este FALSE , setul de instructiuni dintre acolade nu se va executa, controlul programului va trece mai departe.
Iata inca un exemplu, practic:
<?php
$numar = 12;
if ($numar > 10) {
echo "Acesta este un numar mai mare decat 10";
}
?>
– Atunci când este executat scriptul, instructiunea if evalueaza expresia conditionala $numar > 10, care este adevarata (TRUE) numai daca valoarea variabilei $numar este mai mare decât 10. Daca valoarea variabilei $numar este mai mare decat 10, se va executa instructiunea echo, in caz contrar programul va trece mai departe.
In general, limbajul PHP ignora spatiile albe. In mod conventional, o instructiune asociata unei instructiuni „if” este scrisa decalat în raport cu aceasta. Acest procedeu este recomandat deoarece prin utilizarea sa este facilitata citirea programului.
Utilizarea instructiunii „else”
Sa presupunem ca doriti sa executati o instructiune atunci când o conditie este TRUE si o alta instructiune când conditia este FALSE. Instructiunea else va permite sa procedati astfel, dupa cum urmeaza:
If(conditie) {
Instructiune(1);
Instructiune(2);
..................
}
else {
Instructiune(3);
Instructiune(4);
..................
}
In acest din urma caz daca expresia logica din paranteze: conditie este adevarata se vor executa instructiunile: Instructiune(1); Instructiune(2); , iar daca valoarea expresiei logice : conditie are valoarea FALSE se vor executa instructiunile: Instructiune(3); Instructiune(4);
Instructiunea asociata unei instructiuni if sau else poate fi ea însasi o instructiune if. O asemenea instructiune if se numeste „instructiune if imbricata”.
Iata un exemplu de instructiune if imbricata:
<?php
$numar = 88;
if ($numar > 10) {
if ($numar > 100) {
echo "Acesta este un numar mai mare decat 100";
}
else {
echo "Acesta este un numar mai mic decat 100, dar mai mare decat 10";
}
}
else {
echo "Acesta este un numar mic";
}
?>
Exemplul afiseaza mesajul „Acesta este un numar mai mare decat 100” daca valoarea variabilei $numar depaseste 100; în caz contrar, daca valoarea variabilei $numar este mai mare decât 10 si mai mica decat 100, se afiseaza mesajul „Acesta este un numar mai mic decat 100, dar mai mare decat 10”. Daca valoarea variabilei $numar este mai mica sau egala cu 10, exemplul afiseaza mesajul „Acesta este un numar mic”.
Instructiunile if imbricate pot deveni extrem de dificil de înteles daca numarul de instructiuni si nivelul de imbricare nu sunt relativ reduse. Deci trebuie sa le folositi cu economie.
O instructiune corelata atât cu instructiunea if, cât si cu instructiunea else, este instructiunea elseif. Când este folosita corect, poate fi mai simplu de înteles decât o instructiune if imbricata, logic echivalenta cu aceasta.
Iata un exemplu de instrutiune else if():
<?php
$numar = 88;
if ($numar > 100 ) {
echo "Acesta este un numar mai mare decat 100";
}
elseif ($numar > 10) {
echo "Acesta este un numar mai mic decat 100, dar mai mare decat 10";
}
elseif ($numar > 1) {
echo "Acesta este un numar mic";
}
else {
echo "Acesta este un numar foarte mic";
}
?>
Exemplul extinde functionalitatea exemplului anterior, afisând mesajul „Acesta este un numar foarte mic” pentru valori ale variabilei $numar mai mici sau egale cu 1.
Într-un caz general, cu o instructiune if si cu o instructiune else poate fi asociat un numar mult mai mare de instructiuni elseif. PHP evalueaza expresiile conditionale în mod succesiv, pornind de la expresia conditionala asociata instructiunii „if”. PHP executa instructiunea asociata primei expresii conditionale care are valoarea TRUE; daca nici o expresie conditionala nu are valoarea TRUE, PHP executa instructiunea asociata cu instructiunea else. Este permisa omiterea instructiunii else, caz în care nu este executata nici o instructiune daca nici una din expresiile conditionale nu are valoarea TRUE.
Instructiuni conditionale switch
- Invatati sa întelegeti si sa scrieti instructiunea switch si instructiunile conexe acesteia: break, default.
Scrierea instructiunilor switch, break si default
In cazul in care vrem sa comparam valoarea unei singure variabile cu o succesiune de valori, in locul instructiunii „if” putem folosi instructiunea switch:
De exemplu, sa presupunem ca valoarea variabilei $numar este l, 2 sau 3, reprezentând respectiv dimensiunile „mica”, „medie” si „mare”. Iata un mic script care afiseaza dimensiunile asociate valorilor variabilei $numar, folosind functia switch alaturi de break si default care vor fi explicate mai jos:
<?php
switch($numar) {
case(1):
echo „mic”;
break;
case(2):
echo „mediu”;
break;
case(3):
echo „mare”;
break;
default:
echo „Acesta nu este un cod valabil”;
}
?>
– Actiunea unei instructiuni switch este determinata de valoarea unei expresii întregi, nu de valoarea unei expresii conditionale. Numele variabilei este dat între parantezele care urmeaza dupa cuvântul cheie switch. Acoladele delimiteaza o serie de instructiuni case si o instructiune default optionala, fiecare dintre instructiunile cuprinse între acolade putând avea instructiuni asociate.
Când este executata, instructiunea switch încearca sa stabileasca o identitate între valoarea variabilei sale si valoarea asociata unei instructiuni case. Se vor executa instructiunile asociate primei instructiuni „case” pentru care identitatea respectiva este valabila.
Daca valoarea variabilei din instructiunea switch nu corespunde nici uneia din valorile asociate instructiunilor case, se vor executa instructiunile asociate instructiunii default, daca exista o asemenea instructiune (ne este obligatorie).
Un procedeu de programare indicat consta în aceea ca fiecare instructiune case din cadrul unei instructiuni switch sa se încheie cu o instructiune break.
; Instructiunea break determina încheierea executiei instructiunii switch, sare peste „case-urile” ramase si se executa codurile care mai sunt (daca exista) dupa „switch”. În absenta instructiunii „break”, executia trece la urmatoarea instructiune „case” sau „default”, fapt nedorit în majoritatea cazurilor.
• Nu este necesar sa folositi numere întregi consecutive în instructiunile case ale unei instructiuni switch. Daca preferati, puteti folosi numere întregi non-consecutive, numere cu virgula sau siruri. Valoarea de la „case” se poate adauga si fara paranteze, separata prin spatiu.
– Exemplu:
<?php
$site = 'ceva';
switch($site) {
case 1:
echo 'php.net';
break;
case 'coursesweb':
echo 'http://coursesweb.net';
break;
case 'ceva':
echo 'www.ceva.net';
break;
default: echo 'google.com';
}
?>
2. Operatorul ? :
Operatorul conditional ?:, denumit uneori „operator ternar” sau „operator întrebare-doua puncte„, constituie o alta modalitate de a scrie decizii în PHP.
Acest operator formeaza o expresie care se poate folosi în multe contexte PHP. Iata sintaxa de utilizare a acestuia:
expresie-conditionala ? valoare-TRUE : valoare-FALSE
Observati cum semnul întrebarii este separat de caracterul doua puncte prin valoarea valoare-TRUE.
Operatorul conditional îsi evalueaza expresia conditionala. Daca expresia este evaluata la valoarea TRUE, operatorul conditional returneaza valoarea valoare-TRUE; în caz contrar, returneaza valoarea valoare-FALSE.
De exemplu, sa luam în considerare urmatoarea instructiune de atribuire, care foloseste un operator conditional:
$a = ($b > $c) ? 10 : 20;
Aceasta instructiune de atribuire compara valorile variabilelor $b si $c. Daca valoarea variabilei $b este mai mare decât aceea a variabilei $c (adica TRUE), atunci variabilei $a îi este atribuita valoarea 10; în caz contrar, variabilei respective îi este atribuita valoarea 20.
Instructiuni repetitive for() si while()
- Invatati sa întelegeti si sa scrieti instructiunile while(), do while si for()
Scrierea instructiunilor „for”
Instructiunea for() este o instructiune bucla sau o instructiune iterativa; cu alte cuvinte, o instructiune care executa în mod repetat instructiunile asociate.
Sintaxa generala a instructiunii for este urmatoarea:
for(expresie1; conditie; expresie2) {
Instructiune(1);
Instructiune(2);
Instructiune(3);
………….
}
expresie1 se executa o singura data si anume la inceputul instructiunii; conditie este o expresie logica ; instructiunea for() se executa atita timp cat valoarea expresiei : conditie are valoarea TRUE.
De fiecare data dupa executia instructiunilor dintre acolade se executa : expresie2.
Iata un exemplu practic de utilizare a unei instructiuni „for”:
<?php
$suma = 0;
for ($n=1; $n<=3; $n++) {
$suma += $n;
echo „<br /> Suma intregilor de la 1 la $n este $suma.”;
}
?>
Rezultatul afisat va fi:
Suma intregilor de la 1 la 1 este 1
Suma intregilor de la 1 la 2 este 3
Suma intregilor de la 1 la 3 este 6
În exemplu se calculeaza suma întregilor cuprinsi între l si 3. Pentru aceasta, mai întâi se initializeaza variabila $suma la valoarea 0. Apoi se executa o instructiune for() care incrementeaza în mod repetat valoarea variabilei $suma.
Pentru a vedea cum functioneaza mecanismul acestei instructiuni, sa examinam componentele instructiunilor for().
Instructiunea „for” include trei expresii, care apar între paranteze; fiecare expresie este separata de vecina sa printr-un caracter punct si virgula(;).
- Prima expresie este expresia de initializare. Aceasta se executa atunci când PHP ajunge la instructiunea for(). In exemplu, expresia de initializare atribuie valoarea variabilei $n, ($n=1) variabila denumita „variabila de ciclare” sau „index”.
- A doua expresie este expresia de test. Aceasta este o expresie conditionala care indica daca se executa sau nu corpul instructiunii, în general, face referire la variabila de ciclare. In cadrul exemplului, expresia de test compara valoarea variabilei $n cu valoarea 3 ($n <= 3).
Expresia de test este evaluata pentru prima data imediat dupa evaluarea expresiei de initializare. - Cea de-a treia expresie este expresia pas. în general, aceasta modifica una sau mai multe variabile la care se face referire în expresia test. în cadrul exemplului, expresia pas incrementeaza valoarea variabilei $n ($n++).
Dupa care se trece la corpul instructiunii for(), aici, instructiunea $suma += $n si echo „Suma intregilor de la 1 la $n este $suma.”; reprezinta corpul instructiunii for.
Dupa executarea corpului functiei se verifica din nou expresia de test (conditie) dintre paranteze, daca rezultatul este TRUE se trece mai departe la expresia „pas” (a treia din paranteze) si mai departe la corpul functiei for(). Dupa aia din nou la expresia de test dintre paranteze…, pana cand rezultatul este FALSE (in exemplu nostru, $n>3).
Instructiunea for() este utila pentru numarare si executarea în mod repetat a unor actiuni.
Scrierea instructiuni while
O instructiune while() sau do while are o singura conditie. Fara o expresie de initializare sau o expresie pas; opereaza similar ca o instructiune „for()”. în consecinta, urmatoarele doua instructiuni sunt echivalente:
for ( ; $i<= 3; ) { $suma += $i; }
while ($i <= 3) { $suma ++ $i; }
Instructiunea while() executa un set de instructiuni atita timp cit valoarea expresiei „conditie” este adevarata:
Forma generala a instructiuni while() este urmatoarea :
while(conditie) {
Instructiune(1);
Instructiune(2);
Instructiune(3);
………….
}
Setul de instructiuni Instructiune(1), Instructiune(2), etc… se vor executa atita timp cit valoarea expresiei logice „conditie” are valoarea TRUE.
Sa studiem un exemplu practic:
<?php
$n = 0;
$suma = 0;
while ($n <= 3) {
$suma = $suma +$n;
$n++;
}
echo „Suma este $suma”;
?>
In scriptul de mai sus avem la inceput (in afara lui „while”) $n = 0 si $suma = 0, se verifica conditia din paranteza a functiei while() ($n<=3), cum aceasta este TRUE (deoarece la aceasta etapa $n = 0), se trece la executarea corpului functiei unde : $suma = $suma + $n si $n++ (adica $n = $n + 1), astfel acum $n va fi egal cu 1, se verifica din nou conditia din paranteze, care este TRUE ($n fiind acum egal cu 1), se executa iar corpul functiei…, si tot asa se executa aceasta „bucla” pana cand la verificarea conditiei din paranteze rezultatul este FALSE, in acest moment se incheie executia functiei while() si se trece mai departe la urmatoarea functie (in cazul nostru: echo „Suma este $suma”;, unde dupa executia functiei while() $suma a devenit egala cu 6).
In browser va aparea urmatorul rezultat:
Suma este 6
Scrierea instructiuni do while
Diferenta dintre instructiunea while() si instructiunea do while este urmatoarea: daca la instructiunea while() se verifica intai conditia si numai daca rezultatul este TRUE se trece la executarea corpului functiei, in cazul functiei do while intai se executa corpul functiei si dupa aceea se verifica conditia. De la do while corpul functiei va fi executat cel putin o singura data, indiferent de rezultatul conditiei.
Forma generala a instructiuni do while este urmatoarea :
do {
Instructiune(1);
Instructiune(2);
Instructiune(3);
………….
} while(conditie);
Iata exemplul prezentat la functia while(), de data aceasta folosind functia do while :
<?php
$n = 0;
$suma = 0;
do {
$suma = $suma +$n;
$n++;
} while ($n <= 3);
echo „Suma este $suma”;
?>
Rezultatul va fi acelasi: „Suma exte 6„.
În general, este bine sa fiti prudent si sa folositi instructiunea while(), care evalueaza o conditie de test înainte, de executarea corpului acesteia. Astfel, se evita executarea eronata a corpului buclei.