Tutorial PHP.Notiuni elementare
2 participanți
Tutorial PHP.Notiuni elementare
1.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:
etichete recomandate
?> folosirea lor necesita anumite setari pe server <% %> etichete tip ASP, folosirea lor necesita anumite setari pe server Exemplu: cel mai simplu script PHP este: 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 echo "Acesta este un script PHP
care contine si etichete HTML";
?>
Exemplu: fisierul PHP poate contine intre etichetele si blocuri PHP
delimitate de
Exemplu0_3
Bloc HTML
echo "Bloc PHP";
?>
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 */ 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. 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);
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.
2.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); 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.
$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. $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 ".$filename." nu poate fi deschis";
exit; //se incheie executia scriptului
}echo "Fisierul ".$filename." poate fi deschis";
} else {
echo "Acces interzis pentru scriere in fisier";
}?>
Exemplu: adaugam exemplului anterior scrierea in fisier si tiparirea continutului
sau $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 ".$filename." 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."
"; //printeaza cate o valoare pe un rand
}} else {
echo "Acces interzis pentru scriere in fisier"; }?>
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
php/exemplu6_1.php">Exemplu: construim o functie care aduna 2 variabile function adunare($a,$b) {
$suma=$a+$b;
return $suma;
}$rezultat=adunare(5,16);
echo $rezultat; ?> Exemplu: o functie care genereaza un tabel function tabel($lim) {
echo "\n";
";
}tabel(9); //tabel cu 10 randuri
?>
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"];
php/exemplu5_1.html">Exemplu: formular cu un camp si scriptul php de preluare a
datelor
/* urmeaza fisierul exemplu5_1.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 $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 || $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.
/* urmeaza fisierul exemplu5_4.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."
";
echo "File name after upload: ".$b."
";
echo "File size: ".$a."
";
echo "File type: ".$d."";
}?>
Structuri de control Aceste structuri permit definirea unei conditii si apoi executarea unor operatii functie de raspuns
Vom discuta despre:
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:
$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 $ziua=2;
echo $ziua;
echo "
";
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: $numar=1;
while ($numar<=7) {
echo $numar."
";
$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. for ($i=1; $i<=10; $i++) {
echo $i."
";
}?>
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:
$personal = array(
"Florin" => director,
"Catalin" => inginer,
"Mihai" => economist,
"Sorin" => sofer,
"Diana" => secretara
); foreach ($personal as $nume => $meserie) {
echo "$nume => $meserie
";
}?>
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 for ($i=0; ;$i++) {
if ($i>6) {
break;
}echo $i."
";
}?> 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 for ($i=0;$i<8;$i++) {
if ($i==5)
continue;
echo $i."
";
} ?>
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 om 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
php/exemplu3_1.php">Exemplu: $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."
";
echo $a."-".$b."=".$scadere."
";
echo $a."x".$b."=".$inmultire."
";
echo $a.":".$b."=".$impartire."
";
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:
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: $a=12;
$b=3;
$c=3;
echo $a."+".$b."+".$c."=".($a+$b+$c)."
";
echo $a."x".$b."-".$c."=".($a*$b-$c)."
";
?>
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 $a=7;
$b=7;
$c=7;
$d=7;
echo "post incrementarea lui 7 este: ".$a++."
";
echo "post decrementarea lui 7 este: ".$b--."
";
echo "pre incrementarea lui 7 este: ".++$c."
";
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: echo "numar generat aleator: ".rand()."
";
echo "numar generat aleator din intervalul 1-49: ".rand(1,49)."";
$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 $a = array('fructe','legume','carne');
if (is_array($a)) {
echo '$a este o matrice';
} else {
echo '$a nu este o matrice';
}?>
Exemple md5 este o metoda de criptare folosind
un algoritm special care furnizeaza ca rezultat un numar hexazecimal de 32
caractere
php/test1.html">Exemplu: introduceti in formular datele care ulterior vor fi
criptate md5
/* urmeaza fisierul test1.html */
/* urmeaza fisierul test1.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
A AM sau PM PM
Exemplu: data si ora afisate in mai multe moduri echo date("d-m-Y g:i A");
echo"
";
echo date("j-F-Y H:i" );
echo"
";
echo date("l-M-Y");
?>
strlen returneaza lungimea unui string
Exemplu: returneaza lungimea sirului Another brick in the wall $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() $a=" 234 ";
echo $a."
";
echo strlen($a);
$b=ltrim($a);
echo "
".$b."
";
echo strlen($b);
$c=rtrim($b);
echo "
".$c."
";
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 $a="Star Wars Episode III";
echo strtolower($a);
echo "
";
$b="atentie inalta tensiune";
echo strtoupper($b);
?>
array_merge() uneste mai multe matrici
Exemplu: uneste doua matrici si tipareste matricea rezultata $a=array(apa, aer, foc);
$b=array(fructe, legume, carne);
print_r(array_merge($a,$b));
?>
count() numara elemetele unei matrici
Exemplu: $a=array(fructe, legume, carne, lactate);
echo (count($a));
?>
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:
etichete recomandate
?> folosirea lor necesita anumite setari pe server <% %> etichete tip ASP, folosirea lor necesita anumite setari pe server Exemplu: cel mai simplu script PHP este: 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 echo "Acesta este un script PHP
care contine si etichete HTML";
?>
Exemplu: fisierul PHP poate contine intre etichetele si blocuri PHP
delimitate de
Bloc HTML
echo "Bloc PHP";
?>
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 */ 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. 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);
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.
2.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); 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.
$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. $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 ".$filename." nu poate fi deschis";
exit; //se incheie executia scriptului
}echo "Fisierul ".$filename." poate fi deschis";
} else {
echo "Acces interzis pentru scriere in fisier";
}?>
Exemplu: adaugam exemplului anterior scrierea in fisier si tiparirea continutului
sau $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 ".$filename." 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."
"; //printeaza cate o valoare pe un rand
}} else {
echo "Acces interzis pentru scriere in fisier"; }?>
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
php/exemplu6_1.php">Exemplu: construim o functie care aduna 2 variabile function adunare($a,$b) {
$suma=$a+$b;
return $suma;
}$rezultat=adunare(5,16);
echo $rezultat; ?> Exemplu: o functie care genereaza un tabel function tabel($lim) {
echo "
randul ".$i." |
}tabel(9); //tabel cu 10 randuri
?>
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"];
php/exemplu5_1.html">Exemplu: formular cu un camp si scriptul php de preluare a
datelor
/* urmeaza fisierul exemplu5_1.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 $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 || $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.
/* urmeaza fisierul exemplu5_4.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."
";
echo "File name after upload: ".$b."
";
echo "File size: ".$a."
";
echo "File type: ".$d."";
}?>
Structuri de control Aceste structuri permit definirea unei conditii si apoi executarea unor operatii functie de raspuns
Vom discuta despre:
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:
$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 $ziua=2;
echo $ziua;
echo "
";
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: $numar=1;
while ($numar<=7) {
echo $numar."
";
$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. for ($i=1; $i<=10; $i++) {
echo $i."
";
}?>
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:
$personal = array(
"Florin" => director,
"Catalin" => inginer,
"Mihai" => economist,
"Sorin" => sofer,
"Diana" => secretara
); foreach ($personal as $nume => $meserie) {
echo "$nume => $meserie
";
}?>
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 for ($i=0; ;$i++) {
if ($i>6) {
break;
}echo $i."
";
}?> 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 for ($i=0;$i<8;$i++) {
if ($i==5)
continue;
echo $i."
";
} ?>
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 om 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
php/exemplu3_1.php">Exemplu: $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."
";
echo $a."-".$b."=".$scadere."
";
echo $a."x".$b."=".$inmultire."
";
echo $a.":".$b."=".$impartire."
";
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:
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: $a=12;
$b=3;
$c=3;
echo $a."+".$b."+".$c."=".($a+$b+$c)."
";
echo $a."x".$b."-".$c."=".($a*$b-$c)."
";
?>
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 $a=7;
$b=7;
$c=7;
$d=7;
echo "post incrementarea lui 7 este: ".$a++."
";
echo "post decrementarea lui 7 este: ".$b--."
";
echo "pre incrementarea lui 7 este: ".++$c."
";
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: echo "numar generat aleator: ".rand()."
";
echo "numar generat aleator din intervalul 1-49: ".rand(1,49)."";
$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 $a = array('fructe','legume','carne');
if (is_array($a)) {
echo '$a este o matrice';
} else {
echo '$a nu este o matrice';
}?>
Exemple md5 este o metoda de criptare folosind
un algoritm special care furnizeaza ca rezultat un numar hexazecimal de 32
caractere
php/test1.html">Exemplu: introduceti in formular datele care ulterior vor fi
criptate md5
/* urmeaza fisierul test1.html */
/* urmeaza fisierul test1.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
A AM sau PM PM
Exemplu: data si ora afisate in mai multe moduri echo date("d-m-Y g:i A");
echo"
";
echo date("j-F-Y H:i" );
echo"
";
echo date("l-M-Y");
?>
strlen returneaza lungimea unui string
Exemplu: returneaza lungimea sirului Another brick in the wall $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() $a=" 234 ";
echo $a."
";
echo strlen($a);
$b=ltrim($a);
echo "
".$b."
";
echo strlen($b);
$c=rtrim($b);
echo "
".$c."
";
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 $a="Star Wars Episode III";
echo strtolower($a);
echo "
";
$b="atentie inalta tensiune";
echo strtoupper($b);
?>
array_merge() uneste mai multe matrici
Exemplu: uneste doua matrici si tipareste matricea rezultata $a=array(apa, aer, foc);
$b=array(fructe, legume, carne);
print_r(array_merge($a,$b));
?>
count() numara elemetele unei matrici
Exemplu: $a=array(fructe, legume, carne, lactate);
echo (count($a));
?>
[MOD]Anonym- Moderator
- Mesaje : 108
Reputatie : 7
Varsta : 27
Localizare : Maramures
Stare de spirit : :)
[MOD]Anonym- Moderator
- Mesaje : 108
Reputatie : 7
Varsta : 27
Localizare : Maramures
Stare de spirit : :)
Subiecte similare
» AutoIT Tutorial Partea I
» AutoIT Tutorial Part II
» AutoIT Tutorial Part III
» AutoIT Tutorial Part IV
» [Tutorial] Prescurtari in Photoshop
» AutoIT Tutorial Part II
» AutoIT Tutorial Part III
» AutoIT Tutorial Part IV
» [Tutorial] Prescurtari in Photoshop
Permisiunile acestui forum:
Nu puteti raspunde la subiectele acestui forum