Professional Documents
Culture Documents
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>
<?php
echo "Acesta este un script PHP";
?>
<?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>
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:
/* Comentariul in PHP
scris pe doua linii */
Functia mail
Folosind functia mail() din php pot fi trimise mailuri utilizand urmatoarea
sintaxa:
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.
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.
$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);
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:
$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:
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);
Folosind aceste functii de baza putem incerca cateva exemple simple.
<?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";
}
?>
Functii
<?php
function adunare($a,$b) {
$suma=$a+$b;
return $suma;
}
$rezultat=adunare(5,16);
echo $rezultat;
?>
<?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
?>
$_POST["nume"];
php/exemplu5_1.html">Exemplu: formular cu un camp si scriptul php de preluare a
datelor
<?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 ||
<?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.
Structuri de control
Aceste structuri permit definirea unei conditii si apoi executarea unor operatii
functie de raspuns.
Vom discuta despre:
if while require
if (conditie) {
instructiuni executate daca este indeplinita conditia ;
}
<?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;
}
<?php
$a=2;
$b=9;
echo "$a=2<br>";
echo "$b=9<br>";
if ($a>$b) {
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.
<?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:
<?php
$numar=1;
while ($numar<=7) {
echo $numar."<br>";
$numar++;
}
?>
for este o instructiune de tip bucla.
<?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:
Exemplu:
<?php
$personal = array(
"Florin" => director,
"Catalin" => inginer,
"Mihai" => economist,
"Sorin" => sofer,
"Diana" => secretara
);
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.
<?php
for ($i=0; ;$i++) {
if ($i>6) {
break;
}
echo $i."<br>";
}
?>
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.
<?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.
Operatori
adunare $a+$b
scadere $a-$b
inmultire $a*$b
impartire $a/$b
modulo (restul impartirii celor 2 valori) $a%$b
php/exemplu3_1.php">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.
$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:
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.
<?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."";
?>
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)."";
?>
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().
php/exemplu2_1.php">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."";
?>
Variabile
<?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."";
?>
Exemplu:
<?php
$ziua="22";
$luna="12";
$anul="1995";
echo "Data nasterii este ".$ziua.".".$luna.".".$anul."";
?>
In PHP sunt opt tipuri de variabile primitive:
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.
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);
?>
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.
<?php
$matrice = array(1=>'calculator',3=>'monitor',5=>'imprimanta');
var_dump ($matrice);
?>
Pentru a sterge o pereche cheie/valoare se foloseste unset()
<?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.
$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.
Exemplu:
<?php
$a=10;
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.
<?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.
<?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>";
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.
<?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';
}
?>
Exemple
date returneaza un sir functie de parametri ceruti conform tabelului de mai jos
<?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
<?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
<?php
$a="Star Wars Episode III";
echo strtolower($a);
echo "<br>";
$b="atentie inalta tensiune";
echo strtoupper($b);
?>
array_merge() uneste mai multe matrici
<?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));
?>