Sunteți pe pagina 1din 19

TUTORIAL PHP

PHP - Notiuni de baza


PHP este prescurtarea de la Hypertext PreProcessor.
Spre deosebire de paginile HTML care puteau fi verificate si pe calculatorul local paginile PHP nu pot fi verificate decat daca
sunt gazduite pe un server web care are instalat PHP.
Cand accesam o pagina HTML serverul care o gazduieste trimite pagina HTML catre browser spre afisare. In cazul unei
pagini PHP serverul citeste codul PHP, il interpreteaza si genereaza dinamic pagina HTML care este trimisa browserului
spre afisare. Acesta este motivul pentru care utilizatorii folosesc PHP pentru construirea unor pagini cu continut dinamic.
Fisierele PHP au extensia php. Puteti scrie astfel de fisiere cu Notepad sau cel mai indicat cu un editor specializat care va
indica si numarul liniilor, lucru util la depanarea scripturilor. Verificati ca nu aveti extensiile ascunse (My Computer ->
Tools -> Folder Options -> View -> debifati Hide extensions for known file types). Pentru a putea crea fisiere php dati
clic dreapta New -> Text Document, apoi il redenumiti nume.php.
Cand PHP-ul parcurge un fisier de fapt "citeste" textul pana cand intalneste una din etichetele speciale care-i spun sa
inceapa sa interpreteze textul ca pe cod PHP. Se executata codul pana cand este intalnita eticheta de inchidere. Apoi se
"citeste" din nou textul mai departe. Acesta este motivul pentru care se poate adauga cod PHP in interiorul HTML-ului.
Important:

 in cazul functiilor nu se face diferenta intre utilizarea literelor mari sau mici
 pentru variabile se face diferenta intre utilizarea literelor mari sau mici
 inchiderea unui rand se face obligatoriu cu caracterul ;
 ghilimelele se folosesc pereche "..." sau '...', folosirea lor "...' sau '..." constituie o eroare
Codul PHP este delimitat de unul din urmatoarele seturi de etichete de deschidere si inchidere:
<?php ?> etichete recomandate
<script language="php"?> </script>
<? ?> folosirea lor necesita anumite setari pe server
<% %> etichete tip ASP, folosirea lor necesita anumite setari pe server
Exemplu: cel mai simplu script PHP este:
<?php
echo "Acesta este un script PHP";
?>

Daca veti verifica functionarea acestui script pe un server veti vedea ca este afisat textul delimitat de ghilimele.
Functia echo este folosita pentru afisarea informatiilor delimitate de ghilimele. Nu uitati sa inchideti randul cu ;. Similar
functiei echo este functia print.
In situatia in care scriptul nu este scris corect PHP-ul va afisa eroarea indicandu-va si locul unde aceasta apare. Erorile
sunt afisate doar daca serverul este setat corespunzator (in php.ini este setat display_errors=On si
error_reporting=E_ALL).
Exemplu: in interiorul scriptului puteti insera si etichete HTML
<?php
echo "Acesta este un script PHP
care contine si etichete HTML";
?>
Exemplu: fisierul PHP poate contine intre etichetele <html> si </html> blocuri PHP delimitate de <?php ?>
<html>
<head><title>Exemplu0_3</title>
</head>
<body>
Bloc HTML<br>
<?php
echo "Bloc PHP";
?>
</body>
</html>

1
In PHP sunt trei metode prin care se poate adauga un comentariu care evident nu va fi afisat in browser ci are ca scop
doar adaugarea de informatii necesare programatorului.
Tot ce urmeaza dupa caracterele // sau # este considerat comentariu. De exemplu:
// Urmeaza un comentariu in PHP
Un comentariu format din mai multe linii este incadrat de /* si */. De exemplu:
/* Comentariul in PHP
scris pe doua linii */
Acest tip de comentariu poate fi folosit si pentru ignorarea unor blocuri PHP. In exemplul urmator browserul va afisa doar
proba
/* echo "Tutorial";
echo "PHP"; */
echo "proba";

Variabile
Variabila este un container de date care poarta un nume si i se poate atribui o valoare care poate fi modificata de mai multe ori
sau salvata intr-o baza de date. Numele dat variabilei incepe cu simbolul $ urmat de orice litera mica (a-z) sau mare (A-Z) sau
cu caracterul _ dar niciodata cu o cifra si nu poate contine spatii goale. De exemplu: $nume_variabila
Este recomandat ca numele variabilei sa fie cat mai sugestiv pentru a evita incurcaturile in timpul scrierii scriptului.
Exemplu: atribuim variabilei $program valoarea PHP si apoi o tiparim
 
<?php
$program="PHP";
echo $program;
?>
Exemplu: in aceeasi constructie echo putem folosi text impreuna cu o variabila
 
<?php
$luna="iulie";
echo "Am concediu in luna ".$luna."";
?>

Modificand valoarea variabilei se modifica ceea ce este afisat de browser.


Intr-un script puteti folosi mai multe variabile care pot fi adaugate in aceeasi constructie echo.
Exemplu:
 
<?php
$ziua="22";
$luna="12";
$anul="1995";
echo "Data nasterii este ".$ziua.".".$luna.".".$anul."";
?>
In PHP sunt opt tipuri de variabile primitive:
 

 patru tipuri scalare: intregi, numere cu virgula flotanta, siruri si boleene


 doua tipuri compuse: matrice si obiecte
 doua tipuri speciale: resurse si NULL

Intreg (integer) este un simplu numar intreg exprimat in sistem zecimal, hexazecimal sau octal, optional putand purta si
semn (+ sau -).
In sistem octal numarul trebuie precedat de 0 iar pentru hexazecimal precedat de 0x.
 
$a=2006; //numar exprimat in sistem zecimal
$a=-52; //numar negativ exprimat in sistem zecimal

2
$a=0135; //numar octal (echivalent cu 207 zecimal)
$a=0x1D; //numar hexazecimal (echivalent cu 29 zecimal)
Numerul cu virgula flotanta (float) sau dubla precizie este un numar real care poate fi folosit cu urmatoarea sintaxa:
 
$a=3.14; //numar zecimal
$a=-2.59; //numar zecimal negativ
$a=1.3e2; //130
$a=6E+3; //6000
 
Exemplu:
 
<?php
$temperatura=-5;
$vant=8.5;
echo "La Sinaia sunt ".$temperatura."<sup>o</sup>C iar vantul bate cu ".$vant."m/s";
?>
Sirul (string) este o variabila care contine o combinatie de numere, litere, simboluri si spatii delimitate intre doua
ghilimele simple sau duble. Sirurile pot contine si nume de variabile.
Exemplu:
 
<?php
$nume="Ivan Paul";
$data="19 iulie 2005";
echo "Solicitarea a fost facuta de domnul ".$nume." pe data de ".$data."";
?>
Cea mai simpla cale pentru a specifica un sir este sa il incadram intre ghilimele simple (') dar eventualele ghilimele
simple continute vor fi precedate de caracterul \. In aceasta situatie variabilele si caracterele speciale vor fi ignorate.
 
echo "acesta este un sir"; //acesta este un sir
echo "variabila $a"; //variabila $a
echo "rand1 \n rand2"; //rand1 \n rand2
Daca sirul este definit prin ghilimele duble (") PHP-ul interpreteaza mai multe secvente pentru caracterele speciale:
Secventa Semnificatie
\n rand nou
\r sfarsit de linie
\t tab orizontal
\\ backslash
\$ simbol dolar
\" ghilimele duble
Variabila boleana exprima valoarea de adevar: TRUE sau FALSE. Orice valoare diferita de zero sau sir care nu este gol
(contine cel putin un caracter) sunt considerate ca TRUE.
Matricei (array) i se pot atribui mai multe valori comparativ cu numerele sau sirurile care pot contine doar o singura
valoare. Matricele folosesc chei sau indexi pentru a identifica valorile stocate.
O matrice se creaza folosind functia array():
 
$matrice = array('apa','aer','foc');
Exemplu: cream o matrice si ii tiparim elementele folosind functia print_r
 
<?php
$matrice = array('ocean','mare','lac');
print_r ($matrice);
?>

3
Exemplu: utilizam aceeasi matrice dar folosim functia var_dump() care ne arata cate elemente sunt in matrice si
lungimea fiecarei valori a sa
 
<?php
$matrice = array('ocean','mare','lac');
var_dump ($matrice);
?>
Primul index al unei matrici are valoarea 0. Valorile indexilor pot fi si declarate manual.
Exemplu: cream o matrice cu indexii 1, 3 si 5
 
<?php
$matrice = array(1=>'calculator',3=>'monitor',5=>'imprimanta');
var_dump ($matrice);
?>
Pentru a sterge o pereche cheie/valoare se foloseste unset()
 
unset($matrice[3]); //sterge cheia 3 din matrice
unset($matrice); //sterge intreaga matrice
Exemplu: stergem elementul 3 din matricea $matrice
 
<?php
$matrice = array(1=>'Matematica',2=>'Fizica',3=>'Biologie',4=>'Istorie');
unset($matrice[3]); //sterge cheia 3 Biologie
print_r ($matrice);
?>
Variabile predefinite
PHP ofera un mare numar de variabile predefinite oricarui script care ruleaza si sunt functie de serverul pe care
functioneaza.
Incepand cu PHP 4.2.0 valoarea default pentru directiva register_globals este off. Aceasta afecteaza setul de variabile
predefinite disponibile in scop global.
De exemplu pentru a obtine DOCUMENT_ROOT vom folosi $_SERVER['DOCUMENT_ROOT'] in loc de
$DOCUMENT_ROOT cum era in cazul in care register_globals erau on.
PHP Superglobals sunt variabile disponibile oriunde in script
 
$GLOBALS contine referinte catre toate variabilele care sunt disponibile in scop global scriptului
$_SERVER variabile furnizate scriptului de catre serverul web
$_GET variabile furnizate scriptului via HTTP GET (provin dintr-un formular in care method="GET")
$_POST variabile furnizate scriptului via HTTP POST (provin dintr-un formular in care method="POST")
$_COOKIE variabile furnizate scriptului via HTTP cookies
$_ENV variabile furnizate scriptului de catre mediu
In continuare voi prezenta cateva din cele mai des folosite variabile globale.
 
$_SERVER['REMOTE_ADDR'] Exemplu: adresa IP a vizitatorului
$_SERVER['HTTP_USER_AGENT'] Exemplu: informatii despre browserul folosit
$_SERVER['HTTP_REFERER'] Exemplu: pagina vizitata anterior
$_SERVER['SERVER_NAME'] Exemplu: numele serverului
$_SERVER['SCRIPT_NAME'] Exemplu: numele scriptului
Scopul variabilelor depinde de contextul in care sunt definite. Majoritatea variabilelor din PHP au un singur scop.
Acesta se aplica si pentru fisierele adaugate prin functiile include() si require().
Exemplu:
 
<?php
$a=10;

4
include "exemplu1_9b.php";
?>
/* urmeaza fisierul exemplu1_9b.php */
<?php
echo "Mihai are ".$a." ani";
?>
Orice variabila folosita in interiorul unei functii este limitata doar scopului functiei.
Exemplu: deoarece functia foloseste o variabila declarata in afara ei echo nu va afisa nimic
 
<?php
$a=10;
function mihai() {
echo "Mihai are ".$a." ani";
}
mihai();
?>
Exemplu: aceeasi functie dar acum declaram variabila de tip global motiv pentru care echo va afisa corect
 
<?php
$a=10;
function mihai() {
global $a; //declaram variabila $a de tip global
echo "Mihai are ".$a." ani";
}
mihai();
?>
Variabile statice
O alta caracteristica importanta a scopului variabilei este variabila statica care exista doar in scopul functiei locale dar
isi pierde valoarea cand executia scriptului inceteaza.
Exemplu: executarea succesiva a functiei va afisa tot timpul 0
 
<?php
function static1() {
$a=0;
echo $a;
$a++;
}
static1();
echo "<br>";
static1();
echo "<br>";
static1();
?>
Exemplu: aceeasi functie dar declaram variabila ca fiind statica. De cate ori functia va fi executata ea va incrementa
valoarea anterioara a variabilei $a
 
<?php
function static1() {
static $a=0;
echo $a;
$a++;
}
static1();
echo "<br>";
static1();
echo "<br>";

5
static1();
?>
Variabile variabile
Cateodata este util sa avem nume variabil pentru variabila
Exemplu:
 
<?php
$a="Mihai";
$$a="Ionescu";
echo "$a $Mihai";
?>
Exista functii care determina tipul variabilei.
Exemplu: verificam daca variabila $a este de tip intreg
 
<?php
$a=19;
if (is_integer($a)) {
echo '$a este intreg';
} else {
echo '$a nu este intreg';
}
?>
Exemplu: verificam daca variabila $a este de tip numar cu virgula flotanta
 
<?php
$a=3.14;
if (is_float($a)) {
echo '$a este numar cu virgula flotanta';
} else {
echo '$a nu este numar cu virgula flotanta';
}
?>
Exemplu: verificam daca variabila $a este de tip sir
 
<?php
$a="sir";
if (is_string($a)) {
echo '$a este un sir';
} else {
echo '$a nu este un sir';
}
?>
Exemplu: verificam daca variabila $a este o matrice
 
<?php
$a = array('fructe','legume','carne');
if (is_array($a)) {
echo '$a este o matrice';
} else {
echo '$a nu este o matrice';
}
?>

6
Constante
Caracteristici:

 au o valore, dar spre deosebire de variabile nu poate fi schimbata sau stearsa si nu sunt precedate de simbolul $
 numele este case sensitiv si va incepe obligatoriu cu o litera. Poate contine litere mari sau mici, cifre si caracterul
_ dar fara spatii
 este recomandat, dar nu obligatoriu, ca denumirea constantei sa fie scrisa cu majuscule pentru a fi mai usor
identificata de programator
 ca si in cazul variabilelor superglobale constantele au un caracter global.
 pot lua doar valori scalare

Pentru definirea constantei se foloseste functia define().


Exemplu: constanta NUME are valoarea Popescu
<?php
define('NUME','Popescu');
echo NUME;
?>
Ca si in cazul variabilelor constructia echo poate gazdui mai multe constante si text impreuna.
Exemplu:
<?php
define('NUME','Popescu');
define('PRENUME','Mihai');
echo "Unchiul meu este ".PRENUME. " ".NUME."";
?>

Operatori
Vom discuta despre operatori aritmetici, de atribuire, de comparatie, logici si multipli
Operatorii aritmetici sunt de adunare, scadere inmultire si impartire.
adunare $a+$b
scadere $a-$b
inmultire $a*$b
impartire $a/$b
modulo (restul impartirii celor 2 valori) $a%$b
Exemplu:
<?php
$a=12;
$b=3;
$c=7;
$adunare=$a+$b;
$scadere=$a-$b;
$inmultire=$a*$b;
$impartire=$a/$b;
$modulo=$a%$c;
echo $a."+".$b."=".$adunare."<br>";
echo $a."-".$b."=".$scadere."<br>";
echo $a."x".$b."=".$inmultire."<br>";
echo $a.":".$b."=".$impartire."<br>";
echo $a."%".$c."=".$modulo."";
?>
Operatorii de atribuire sunt:
Principalul operator de atribuire este = si inseamna asocierea operatorului din stanga cu valoarea expresiei din dreapta (a
nu se confunde cu egalitatea). Valoarea unei expresii de atribuire este valoarea atribuita, adica valoarea lui $a=5 este 5.

7
$a=7;
$a+=6; //atribuie lui $a valoarea 13, acelasi lucru cu $a=$a+6
$b="Buna ";
$b.="ziua"; // atribuie lui $b valoarea "Buna ziua", acelasi lucru cu $b=$b."ziua";
Operatorii de comparatie sunt:
egalitate $a==$b TRUE daca $a este egal cu $b
identic $a===$b TRUE daca $a este egal cu $b si sunt de acelasi tip
inegalitate (diferit) $a!=$b TRUE daca $a este diferit de $b
inegalitate (diferit) $a<>$b TRUE daca $a este diferit de $b
neidentic $a!==$b TRUE daca $a este diferit de $b si nu sunt de acelasi tip
mai mic $a<$b TRUE daca $a este mai mic decat $b
mai mare $a>$b TRUE daca $a este mai mare decat $b
mai mic sau egal $a<=$b TRUE daca $a este mai mic sau egal cu $b
mai mare sau egal $a>=$b TRUE daca $a este mai mare sau egal cu $b
Operatorii logici sunt:
NOT !$a TRUE daca $a nu este TRUE
AND $a && $b TRUE daca si $a si $b sunt TRUE
AND $a and $b TRUE daca si $a si $b sunt TRUE
OR $a || $b TRUE daca ori $a ori $b sunt TRUE
OR $a or $b TRUE daca ori $a ori $b sunt TRUE
OR $a xor $b TRUE daca ori $a ori $b sunt TRUE dar nu amandoua
Verificarea functionarii operatorilor de comparatie si logici se poate face folosind structurile de control care vor fi
prezentate in Capitolul 4.
Operatori multipli
Intr-o constructie PHP pot fi pot fi folositi impreuna mai multi operatori.
Exemplu:
<?php
$a=12;
$b=3;
$c=3;
echo $a."+".$b."+".$c."=".($a+$b+$c)."<br>";
echo $a."x".$b."-".$c."=".($a*$b-$c)."<br>";
?>
Incrementarea si decrementarea unui numar
Marirea unui numar cu o unitate se numeste incrementare, iar scaderea cu o unitate se numeste decrementare.
Incrementarea se poate realiza adunand o unitate la acel numar (sau variabila) sau putem folosi varianta prescurtata, si
similar pentru decrementare.
post incrementare $a++ incrementeaza $a cu 1 si returneaza $a
pre incrementare ++$a returneaza $a si incrementeaza $a cu 1
post decrementare $a-- decrementeaza $a cu 1 si returneaza $a
pre decrementare --$a returneaza $a si decrementeaza $a cu 1
Exemplu: incrementarea si decrementarea unui numar
<?php
$a=7;
$b=7;
$c=7;
$d=7;
echo "post incrementarea lui 7 este: ".$a++."<br>";
echo "post decrementarea lui 7 este: ".$b--."<br>";
echo "pre incrementarea lui 7 este: ".++$c."<br>";
echo "pre decrementarea lui 7 este: ".--$d."";
?>

8
Numere aleatoare
rand() este functia din PHP care genereaza automat numere aleatoare. Poate primi parametri limita minima si maxima a
numerelor generate.
Exemplu:
<?php
echo "numar generat aleator: ".rand()."<br>";
echo "numar generat aleator din intervalul 1-49: ".rand(1,49)."";
?>
Functia de rotunjire
round() este functia de rotunjire si poate primi ca parametru numarul de cifre zecimale dupa rotunjire
Exemplu:
<?php
echo "27,54621 rotunjit este: ".round(27.54621)."<br>";
echo "27,54621 rotunjit cu 2 zecimale este: ".round(27.54621,2)."";
?>

Structuri de control
Aceste structuri permit definirea unei conditii si apoi executarea unor operatii functie de raspuns.
Vom discuta despre:
if while require
else for break
elseif foreach continue
switch include return
if este instructiunea conditionala cea mai folosita avand urmatoarea sintaxa:
if (conditie) {
instructiuni executate daca este indeplinita conditia ;
}
Conditia este incadrata de paranteze rotunde iar instructiunea care se executa in cazul in care conditia este indeplinita
intre acolade. Neindeplinirea conditiei face sa se execute ce urmeaza dupa inchiderea acoladei.
Exemplu: se compara doua variabile si se afiseaza un mesaj
<?php
$a=4;
$b=3;
echo "$a=4<br>";
echo "$b=3<br>";
if ($a>$b) {
echo "$a>$b";
}
?>
else este alta instructiunea conditionala care indica ce se executa in cazul in care conditia mentionata in instructiunea if
nu este indeplinita si are sintaxa:
if (conditie) {
instructiuni executate daca este indeplinita conditia;
} else {
instructiuni executate daca nu este indeplinita conditia;
}
Exemplu: se compara doua variabile si se afiseaza un mesaj
<?php
$a=2;
$b=9;
echo "$a=2<br>";
echo "$b=9<br>";
if ($a>$b) {

9
echo "$a>$b";
} else {
echo "$a<$b";
}
?>
elseif este o combinatie intre if si else. In cazul in care conditia if nu este indeplinita se introduce elseif care testeaza inca
o conditie. Daca nu este indeplinita a doua conditie se executa declaratia introdusa prin else.
if (conditia1) {
instructiuni executate daca este indeplinita conditia 1;
} elseif (conditia2) {
instructiuni executate daca este indeplinita conditia 2;
} else {
instructiuni executate daca nu este indeplinita conditia 2;
}
Exemplu:
<?php
$a=19;
$b=23;
if ($a<$b) {
echo "$a<$b";
} elseif ($a==$b) {
echo "$a==$b";
} else {
echo "$a>$b";
}
?>
switch este asemanatoare functiei if dar conditia are mai mult de doua valori.
Exemplu: transforma numarul zilei in numele ei
<?php
$ziua=2;
echo $ziua;
echo "<br>";
switch ($ziua) {
case 1:
echo "Luni";
break;
case 2:
echo "Marti";
break;
case 3:
echo "Miercuri";
break;
case 4:
echo "Joi";
break;
case 5:
echo "Vineri";
break;
case 6:
echo "Sambata";
break;
case 7:
echo "Duminica";
break;
}
?>
while este o instructiune de tip bucla. Atat timp cat conditia este adevarata se repeta bucla.
Exemplu:

10
<?php
$numar=1;
while ($numar<=7) {
echo $numar."<br>";
$numar++;
}
?>
for este o instructiune de tip bucla.
for (expresia1; expresia2; expresia3) {
instructiuni de executat;
}
?>
expresia1 este evaluata la inceputul buclei
expresia2 se verifica la inceputul fiecarei iteratii
expresia3 se executa la sfarsitul fiecarei iteratii
constructia for poate functiona si fara una sau toate aceste expresii
Exemplu: se initializeaza variabila i cu valoarea 1, se verifica daca este mai mica sau egala cu 10 iar apoi se
incrementeaza. La fiecare iteratie se tipareste variabila i.
<?php
for ($i=1; $i<=10; $i++) {
echo $i."<br>";
}
?>
foreach este o constructie care functioneaza doar cu matrice generand erori cand sunt folosite variabile cu tipuri de date
diferite sau variabile neinitializate. Sintaxa folosita este:
foreach ($matrice as $cheie=>$valoare) {
instructiuni de executat;
}
Exemplu:
<?php
$personal = array(
"Florin" => director,
"Catalin" => inginer,
"Mihai" => economist,
"Sorin" => sofer,
"Diana" => secretara
);

foreach ($personal as $nume => $meserie) {


echo "$nume => $meserie<br>";
}
?>
include si require sunt doua functii asemanatoare folosite pentru includerea in paginile php a unor fisiere externe.
Diferenta intre cele doua functii consta in faptul ca daca include da gres scriptul genereaza o avertizare dar functioneaza
in continuare in timp ce la require se termina executarea scriptului.
include "fisier1.php";
require "fisier2.html";
break opreste fortat executia structurilor for, foreach, while, do..while sau switch.
break accepta optional un argument numeric care indica numarul de structuri imbricate a caror functionare este oprita.
Exemplu: la i=6 se opreste executia buclei
<?php
for ($i=0; ;$i++) {
if ($i>6) {
break;
}
echo $i."<br>";

11
}
?>
continue sare peste restul din iteratia buclei curente si continua executia la inceputul iteratiei urmatoare
continue accepta optional un argument numeric care indica numarul de bucle care vor fi sarite pana la sfarsit.
Exemplu: sare executia peste i==5
<?php
for ($i=0;$i<8;$i++) {
if ($i==5)
continue;
echo $i."<br>";
} ?>
return
Daca este chemata din interiorul unei functii declaratia return() opreste imediat executia functiei curente si furnizeaza
argumentul ca valoare a functiei.
Daca este chemata in scop global executia scriptului curent se opreste.

Preluarea datelor din formularele HTML


Recapitulare: in tutorialul de HTML la capitolul Formulare am mentionat ca eticheta form are atributele action si method iar
fiecare camp din formular avea un name.
action indica fisierul care prelucreaza datele introduse in formular cand este apasat butonul Trimite
method indica modul in care datele sunt trimise spre prelucrare pe server si poate avea valorile: POST cand datele
trimise nu sunt vizibile utilizatorului si GET cand datele sunt adaugate la adresa URL. Metoda POST permite trimiterea
unei cantitati mai mari de date decat metoda GET.
name este un atribut care identifica datele introduse in fiecare camp al formularului
Sa presupunem ca intr-un formular avem un camp cu name="nume" si method="POST". Fisierul indicat de action va
prelua datele introduse in campul "nume" astfel:
$_POST["nume"];
Exemplu: formular cu un camp si scriptul php de preluare a datelor
<form action="exemplu5_1.php" method="POST">
Nume: <input type="text" name="nume"><br>
<input type="submit" value="Trimite">
</form>
/* urmeaza fisierul exemplu5_1.php */
<?php
$nume=$_POST["nume"];
echo $nume;
?>
Verificarea datelor introduse in formular
Pentru a fi siguri ca utilizatorul a completat campurile trebuie sa adaugam scriptului partea de verificare.
Exemplu: folosim acelasi formular dar adaugam partea de verificare
<?php
$nume=$_POST["nume"];
if ($nume=="") {
echo "Campul nume nu este completat";
} else {
echo $nume;
}
?>
Partea de verificare poate avea mai multe conditii simultane.
Exemplu: acelasi formular dar partea de verificare are doua conditii legate prin operatorul OR sau ||

12
<?php
$nume=$_POST["nume"];
if (($nume=="") || (strlen($nume)<5)) {
echo "Campul nume nu este completat corect";
} else {
echo $nume;
}
?>
Folosind modelele anterioare puteti prelua date si face verificarea pentru toate campurile formularului.
Datele preluate pot fi eventual introduse intr-o baza de date sau prelucrate in vederea trimiterii prin email functie de
cerintele aplicatiei.
In afara preluarii datelor putem folosi formularul si pentru upload-ul fisierelor pe server dar cu masurile de precautie
necesare pentru a evita eventualele upload-uri de fisiere nedorite pe server.
Pentru upload formularul va contine un camp de tip input cu type="file" iar eticheta form va contine in plus un argument
enctype="multipart/form-data".
Exemplu: formular pentru upload fisiere. Folderul in care se face upload trebuie sa permita operatia de scriere. Din
motive de securitate acest exemplu nu este activ.
<form method="post" action="exemplu5_4.php" enctype="multipart/form-data">
Fisier pentru upload: <input type="file" name="file"><br>
<input type="submit" value="Trimite">
</form>
/* urmeaza fisierul exemplu5_4.php */
<?php
$a=$_FILES["file"]["size"];
$b=$_FILES["file"]["name"];
$c=$_FILES["file"]["tmp_name"];
$d=$_FILES["file"]["type"];
if(($a<10000) && ($a>0)) {
move_uploaded_file($c,$b);
echo "Original file name: ".$b."<br>";
echo "File name after upload: ".$b."<br>";
echo "File size: ".$a."<br>";
echo "File type: ".$d."";
}
?>

Functii
Functia este o secventa de cod ce poate fi utilizata de mai multe ori in interiorul marilor scripturi si este prezentata in script
prin declaratia ei.
Functia chemata (invocata) va contine acelasi numar de argumente ca in declaratie.
function foo($arg_1,$arg_2, $arg_n) {
echo "Exemplu.\n";
return $val
}
unde:
foo este numele functiei
$arg_1, $arg_2, ... , $arg_n sunt argumentele functiei
$val este valoarea returnata de functie
Exemplu: construim o functie care aduna 2 variabile
<?php
function adunare($a,$b) {
$suma=$a+$b;
return $suma;
}

13
$rezultat=adunare(5,16);
echo $rezultat;
?>
Exemplu: o functie care genereaza un tabel
<?php
function tabel($lim) {
echo "<table border=\"1\">\n";
for ($i=0; $i<=$lim; $i++) {
echo "<tr><td>randul ".$i."</td></tr>\n";
}
echo "</table>";
}
tabel(9); //tabel cu 10 randuri
?>

Lucrul cu fisiere
Folosind PHP-ul se pot executa anumite operatii asupra fisierelor aflate pe server cum ar fi:
fopen() = deschide fisierul indicat
fclose() = inchide fisierul
fread() = citeste continutul fisierului
fwrite() = scrie in fisier
filesize() = indica dimensiunea fisierului
Deschiderea fisierelor
Sintaxa functiei fopen() este:
fopen(param1, param2);
param1 = fisierul, calea catre fisier sau adresa fisierului care va fi deschis
param2 = modul in care va fi deschis fisierul, si poate avea valorile:
r = fisier deschis doar pentru citire
r+ = fisier deschis doar pentru citire si scriere
w = fisier deschis doar pentru scriere
w+ = fisier deschis pentru citire si scriere iar daca nu exista fisierul il creza
a = fisier deschis pentru adaugare la sfarsit
a+ = fisier deschis adaugare la sfarsit iar daca nu exista fisierul il creza
t = fisier deschis in mod text
b = fisier deschis in mod binar
sau combinatii ale acestora.
Citirea fisierelor
Sintaxa functiei fread() este:
$filename="proba.txt";
$handle=fopen($filename, "r");
$contents=fread($handle, filesize($filename));
variabila $handle va fi folosita ulterior si in alte functii
Scrierea in fisiere
Sintaxa functiei fwrite() este:
fwrite($handle, "continut ce va fi scris in fisier");
Verificarea drepturilor de acces asupra fisierului
Sintaxa functiei is_writable este:
is_writable($filename);
returneaza TRUE daca se poate si FALSE daca nu se poate scrie in fisier
Inchiderea fisierului
Sintaxa functiei fclose() este:
fclose($handle);

14
Folosind aceste functii de baza putem incerca cateva exemple simple.
Exemplu: se verifica dreptul de scriere in fisier. Primul pas este crearea fisierului proba.txt apoi se verifica exemplul care
va returna mesajul Acces interzis scrierii in fisier. Se modifica drepturile asupra fisierului conform Q5 din FAQ
adaugand scrierea. Se verifica iar exemplul care va returna mesajul Acces permis scrierii in fisier.
<?php
$filename="proba.txt";
if(is_writable($filename)) { //se verifica dreptul de scriere in fisier
echo "Acces permis scrierii in fisier";
} else {
echo "Acces interzis scrierii in fisier";
}
?>
Exemplu: adaugam exemplului anterior verificarea deschiderii fisierului.
<?php
$filename="proba.txt";
if(is_writable($filename)) { //se verifica dreptul de scriere in fisier
if(!$handle=fopen($filename, 'a')) { //se verifica deschiderea fisierului
echo "Fisierul <b>".$filename."</b> nu poate fi deschis";
exit; //se incheie executia scriptului
}
echo "Fisierul <b>".$filename."</b> poate fi deschis";
} else {
echo "Acces interzis pentru scriere in fisier";
}
?>
Exemplu: adaugam exemplului anterior scrierea in fisier si tiparirea continutului sau
<?php
$filename="proba.txt";
if(is_writable($filename)) { //se verifica dreptul de scriere in fisier
if(!$handle=fopen($filename, 'a')) { //se verifica deschiderea fisierului
echo "Fisierul <b>".$filename."</b> nu poate fi deschis";
exit; //se incheie executia scriptului
}
if(fwrite($handle, date("j-n-Y g:ia")."\r\n")===FALSE) { //testeaza daca se poate scrie in fisier
die ("Nu se poate scrie in ".$filename.""); //iesire
}
fclose($handle);
$matrice=file($filename); //se citeste continutul fisierului si se stocheaza intr-o matrice
foreach ($matrice as $cheie =>$valoare) {
echo $valoare."<br>"; //printeaza cate o valoare pe un rand
}
} else {
echo "Acces interzis pentru scriere in fisier";
}
?>

Functia mail
Folosind functia mail() din PHP pot fi trimise mailuri utilizand urmatoarea sintaxa:

mail(destinatar, subiect, mesaj, header aditional);


destinatar este adresa unde va fi trimis mailul iar daca este necesar mailul poate fi trimis mai multor destinatari, situatie
in care adresele vor fi separate prin virgula
subiect este informatia care va fi afisata in campul subiect
mesaj este corpul mailului. Fiecare linie va fi separata prin LF (\n) si nu va avea mai mult de 70 de caractere
header aditional contine informatii optionale, de exemplu: From, Cc, Bcc fiind separate de caracterele CRLF (\r\n)
Toate mailurile trimise trebuie sa aibe campul From completat. Acest lucru poate fi facut prin adaugarea acestuia in
header aditional sau prin setarea corespunzatoare a adresei in fisierul php.ini din PHP.

15
Executia functiei mail returneaza TRUE daca mailul a fost acceptat pentru trimitere, altfel FALSE.
Acceptarea mailului pentru trimitere nu inseamna obligatoriu si ca a fost trimis.
Exemplu: trimiterea unui simplu mail
$to="proba@test.ro";
$subject="functia mail";
$mesaj="Mail trimis cu functia mail din PHP";
mail($to, $subiect, $mesaj);
Exemplu: trimiterea unui mail la care adaugam header aditional cu campurile From, Cc, Bcc. Pentru ca mailul sa poata
contine etichete HTML trebuie adaugat Content-type. S-au folosit caracterele speciale \r\n pentru afisarea fiecarei
informatii pe un nou rand
$to="proba@test.ro";
$subject="functia mail";
$mesaj="Mail trimis cu functia mail din PHP";
$headers = 'MIME-Version: 1.0'."\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1'."\r\n";
$headers .= 'From: sender@test.ro'."\r\n";
$headers .= 'Cc: cc@test.ro'."\r\n";
$headers .= 'Bcc: bcc@test.ro'."\r\n";
mail($to, $subiect, $mesaj, $headers);

Exemple
md5 este o metoda de criptare folosind un algoritm special care furnizeaza ca rezultat un numar hexazecimal de 32 caractere
Exemplu: introduceti in formular datele care ulterior vor fi criptate md5
/* urmeaza fisierul test1.html */
<form action="test1.php" method="POST">
Introduceti date spre criptare: <input type="text" name="date"><br>
<input type="submit" value="Trimite">
</form>
/* urmeaza fisierul test1.php */
<?php
$a=$_POST['date']; //preluare date din formular
echo md5($a); //tiparire codare md5
?>
date returneaza un sir functie de parametri ceruti conform tabelului de mai jos
Parametru Semnificatie Exemplu
Y An format 4 cifre 2006
y An format 2 cifre 06
n Luna format 1 sau 2 cifre 7
m Luna format 2 cifre 07
F Luna June
M Luna format 3 litere Jun
j Zi din luna format 1 sau 2 cifre 9
d Zi din luna format 2 cifre 09
l (L mic) Zi din saptamana Friday
D Zi din saptamana format 3 litere Wed
w Zi din saptamana format 1 cifra 0=duminica 6=sambata
z Zi din an (0-365) 123
t Numarul zilelor dintr-o anumita luna 30
g Ora 12h format 1 sau 2 cifre 3
G Ora 24h format 1 sau 2 cifre 21
h Ora 12h format 2 cifre 03
H Ora 24h format 2 cifre 21
i Minute 32
s Secunde 17
a am sau pm pm

16
A AM sau PM PM
Exemplu: data si ora afisate in mai multe moduri
<?php
echo date("d-m-Y g:i A");
echo"<br>";
echo date("j-F-Y H:i" );
echo"<br>";
echo date("l-M-Y");
?>
strlen returneaza lungimea unui string
Exemplu: returneaza lungimea sirului Another brick in the wall
<?php
$sir="Another brick in the wall";
echo strlen($sir);
?>
trim() elimina spatiile albe din sir
ltrim() elimina spatiile albe din stanga sir
rtrim() elimina spatiile albe din dreapta sir
Exemplu: se elimina succesiv spatiile libere din sir " 234 " folosind ltrim() si apoi rtrim()
<?php
$a=" 234 ";
echo $a."<br>";
echo strlen($a);
$b=ltrim($a);
echo "<br>".$b."<br>";
echo strlen($b);
$c=rtrim($b);
echo "<br>".$c."<br>";
echo strlen($c);
?>
strtolower() converteste un sir la litere mici
strtoupper() converteste un sir la litere mari
Exemplu: se converteste primul sir la litere mici si al doilea la litere mari
<?php
$a="Star Wars Episode III";
echo strtolower($a);
echo "<br>";
$b="atentie inalta tensiune";
echo strtoupper($b);
?>
array_merge() uneste mai multe matrici
Exemplu: uneste doua matrici si tipareste matricea rezultata
<?php
$a=array(apa, aer, foc);
$b=array(fructe, legume, carne);
print_r(array_merge($a,$b));
?>
count() numara elemetele unei matrici
Exemplu:
<?php
$a=array(fructe, legume, carne, lactate);
echo (count($a));
?>

17
PHP - GD Library
Functiile GD sunt folosite pentru crearea imaginilor. Verificati folosind phpinfo(), ca serverul de gazduire suporta aceste
functii, inainte de a le utiliza.

Pentru a insera in paginile web o imagine creata cu functiile din php folositi eticheta img

<img src="imagine.php" alt="Imagine creata cu GD Library">

In urmatorul exemplu vom genera o imagine in format JPEG, cu dimensiunile 200px x 100px, fond verde.

<?php
header ("Content-type: image/jpeg");
$img = ImageCreate (200,100);
$fond = ImageColorAllocate ($img,0,200,0);
ImageJPEG ($img, '', 100);
?>

header - declara tipul imaginii


Content-type poate avea valorile:
image/jpeg - pentru JPEG
image/gif - pentru GIF
image/png - pentru PNG
Cu ImageCreate sunt declarate dimensiunile imaginii
Culoarea fondului imaginii este declarata in ImageColorAllocate, prin cele 3 culori de baza R-G-B, in format zecimal (0-255)
ImageJPEG - afiseaza imaginea in browser (pentru GIF se foloseste ImageGIF, iar pentru PNG ImagePNG). Calitatea
imaginii generate va fi "best quality" (100).

Adaugam exemplului anterior textul "Proba text", cu caractere albe.

<?php
header ("Content-type: image/jpeg");
$img = ImageCreate (200,100);
$fond = ImageColorAllocate ($img,0,200,0);
$text = ImageColorAllocate ($img,255,255,255);
ImageString ($img,5,10,10,"Proba text",$text);
ImageJPEG ($img, '', 100);
?>

Culoarea fontului este declarata tot cu ImageColorAllocate, similar culorii fondului


ImageString contine 3 valori numerice si textul continut de imagine. Prima este marimea fontului, urmatoarele 2 sunt
distantele in pixeli (coordonatele pe X si pe Y) fata de coltul stanga sus, stabilind pozitia textului in interiorul imaginii.

Cream o linie din punctul (10,90) in punctul (190,90). Referinta coordonatelor este coltul stanga sus.

<?php
header ("Content-type: image/jpeg");
$img = ImageCreate (200,100);
$fond = ImageColorAllocate ($img,0,200,0);
$col = ImageColorAllocate ($img,255,255,255);
ImageLine ($img,10,90,190,90,$col);
ImageJPEG ($img, '', 100);
?>

Cu ImageLine cream linia. Cele 4 valori numerice continute reprezinta coordonatele x si y pentru punctul de inceput si de
sfarsit al liniei, iar ultima este declarata culoarea.

18
Completam exemplul anterior cu inca 2 linii pentru a desena un triunghi.

<?php
header ("Content-type: image/jpeg");
$img = ImageCreate (200,100);
$fond = ImageColorAllocate ($img,0,200,0);
$col = ImageColorAllocate ($img,255,255,255);
ImageLine ($img,10,90,190,90,$col);
ImageLine ($img,10,90,100,10,$col);
ImageLine ($img,100,10,190,90,$col);
ImageJPEG ($img, '', 100);
?>

Cream o elipsa in centrul imaginii (100,50), avand latimea 180 si inaltimea 80.

<?php
header ("Content-type: image/jpeg");
$img = ImageCreate (200,100);
$fond = ImageColorAllocate ($img,0,200,0);
$col = ImageColorAllocate ($img,255,255,255);
ImageEllipse ($img,100,50,180,80,$col);
ImageJPEG ($img, '', 100);
?>

Cream un trapez.

<?php
header ("Content-type: image/jpeg");
$img = ImageCreate (200,100);
$fond = ImageColorAllocate ($img,0,200,0);
$col = ImageColorAllocate ($img,255,255,255);
ImagePolygon ($img,array(60,10,140,10,190,90,10,90),4,$col);
ImageJPEG ($img, '', 100);
?>

ImagePolygon contine o matrice (care indica coordonatele pentru fiecare colt in parte) si numarul de colturi

Vom genera o imagine care va avea ca fundal un fisier JPG (fond.jpg), peste care aplicam textul "Text proba", de culoarea
neagra (0,0,0), folosind fontul "verdana.ttf", marime 18. Textul va fi amplasat, fata de coltul stanga sus, la 30px pe orizontala
si 40px pe verticala, si va avea o inclinare de 10 grade. Calitatea imaginii generate va fi "best quality" (100).

<?php
header("Content-Type: image/jpeg");
$im = ImageCreateFromJpeg("fond.jpg");
$text="Text proba";
$black = ImageColorAllocate($im, 0, 0, 0);
$start_x = 30;
$start_y = 60;
Imagettftext($im, 18, 10, $start_x, $start_y, $black, 'verdana.ttf', $text);
Imagejpeg($im, '', 100);
ImageDestroy($im);
?>

19

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