120956012 despre limbajul php

Upload: sebastian-david

Post on 03-Jun-2018

260 views

Category:

Documents


0 download

TRANSCRIPT

  • 8/11/2019 120956012 Despre Limbajul PHP

    1/217

    PHPhttp://etutoriale.ro/articles/2268/1/Linkuri-active-cu-PHP/

    1.Unelte de baza - ce aveti nevoie pentru un site profesionist.2. Despre PHP - ce este i instruciuni pentru nceptori.

    3. ariabile n PHP - ce sunt i cu! se folosesc.". ariabile predefinite#. Do!eniul de vizibilitate al variabilelor - $u! se pot accesa variabilele.%. &ipuri de variabile'. (fiarea !esa)elor n PHP*. $onstruiete un site cu p+p,. $teva infor!aii despre docu!entarea i depanarea unui script.1. /peratori PHP11. $teva idei utile pentru securitatea pa0inilor eb12. tructuri de control n PHP13. Despre funcii n PHP1". $lase i obiecte n PHP1#. $rearea i!a0inilor t+u!bnails1%. (utentificarea n pa0inile restricionate i cteva infor!aii despre cooie4 uploadul

    fiierelor i includerea lor n pa0ini4 precu! i infor!aii despre starea cone5iunii.1'. Descrierea funciilor care pot fi utilizate la !anipularea tablourilor1*. 6ucrul cu fiiere i directoare1,. Descrierea funciilor de prelucrare a fiierelor2. 7uncii care faciliteaza lucrul cu directoare21. alori scalare i tablouri22. 6ucrul cu for!ulare23. $onversia tipurilor de variabile2". crierea instruciunilor sic+4 brea i default2#. crierea instruciunilor for2%. crierea instruciunilor +ile i do +ile2'. 8ntroducere n $lase PHP2*. esiuni n PHP2,. $rearea i utilizarea funciilor

    3. Utilizarea fiierelor incluse31. 7uncii PHP pentru e5presii re0ulate32. Utilizarea referinelor n PHP33. 6ucrul cu funcii list3". 8nteroperabilitate PHP-9ava3#. &rans!iterea !esa)elor prin e-!ail folosind PHP i P:(;3%. 8nfor!aii despre clasele ncrcate3'. Prelucrarea dina!ic a i!a0inilor3*. 7uncii PHP utilizate pentru accesarea i intero0area bazelor de date 63,. Utilizarea irurilor". 6ite n 7actor=?

    http://etutoriale.ro/articles/2268/1/Linkuri-active-cu-PHP/http://etutoriale.ro/articles/2268/1/Linkuri-active-cu-PHP/
  • 8/11/2019 120956012 Despre Limbajul PHP

    2/217

    Unelte de baza - ce aveti nevoie pentru un site profesionist.

    De ce s folosii PHP n loc de H&

  • 8/11/2019 120956012 Despre Limbajul PHP

    3/217

    ineneles c putei scrie cod i n Aotepad i desena n Paint dar aplicaiile pe care vi le-a!reco!andat v uureaz e5traordinar de !ult !unca i v se!naleaz rapid erorile din pa0ini.

    (lte editoare pe care vi le reco!and s le testai suntB PPadCun bun nlocuitor al Aotepad-ului4 !ai ales c este freeareE4 Iend tudioCdestinat profesionitilorE.

    Dup ce ai fcut rost de tot ce v trebuie ca s ncepei treaba4 v reco!and s citii n

    continuare celelalte articole4 eventual s vizitai i pa0ina de donload4 si0ur 0sii ceva utilacolo pentru nceput4 apoi pa0ina de lin-uri4 unde 0siti resurse 0ratuite i s discut! peforu! eventualele proble!e pe care le nt!pinai.

    Despre PHP - ce este i instruciuni pentru nceptori.

    Despre PHP

    PHP este li!ba)ul ideal pentru construirea de pa0ini eb dina!ice. :ste usor de nvat4 open-source4 poate fi rulat pe !ai !ulte platfor!e i se poate conecta la !ai !ulte tipuri de bazede date. $el !ai i!portant aspect al li!ba)ului este nsa posibilitatea de a fi !bricat cu codH&

  • 8/11/2019 120956012 Despre Limbajul PHP

    4/217

    docu!entul s respecte specificaiile F

  • 8/11/2019 120956012 Despre Limbajul PHP

    5/217

    "od#

    Dup cu! se vede4 !odificarea valorii variabilei Qb a dus auto!at la !odificarea auto!at avalorii variabilei Qa. disec! codul pentru a nva cteva lucruriB- toate instruciunile PHP se ter!in cu punct i vir0ul. /!iterea se!nului /$/ este cea !aifrecvent 0reeal pe care o fac pro0ra!atorii nceptori.- codul PHP ncepe ntotdeauna cu JL?p+pJ i se ter!in cu J01J. :l poate fi !bricat cu codH&

  • 8/11/2019 120956012 Despre Limbajul PHP

    6/217

    curent. ( fost introdus ncepnd de la versiunea ".1.. @n versiunile anterioare se folosea*H88P+SE7(E7+(,7.:ste o variabil care conine infor!aii cu! ar fi +eadere4 locaia scriptului4 sau infor!aiidespre vizitator i broser. :ste posibil ca n funcie de setrile fiecrui server i broser s nufie active toate infor!aiile specificate de aceast variabil. (ceast variabil este dease!enea 0lobal4 adic se poate folosi oriunde n script4 fr apelarea ei ca funcie 0lobalCadic nu trebuie s o cerei cu 3lobal *+SE7(E7n funciile dvs.E @n sc+i!b

    $HTTP_SERVER_VARS conine aceleai infor!aii dar nu este o funcie 0lobal Catenie*H88P+SE7(E7+(,7Si *+SE7(E7sunt dou variabile diferite4 c+iar dac aparent facaceleai lucruriE Dac directiva register_globalseste /A atunci aceste variabile vor deveni larndul lor variabile 0lobale n cadrul scriptului.:le!entele acestor variabile sunt cele de !ai )os CatenieB n funcie de setrile serverului ibroserului unele ele!ente pot lipsiE

    9 PHP+SE5: 9 - conine nu!ele fiierului unde se e5ecut scriptul curent4 relativ la rdacinCdocu!ent rootE De e5e!plu4 $_SERVER['PHP_SELF'ntr-un script la adresahttp!""e#aple.%o"test.php"&oo.barva fi"test.php"&oo.bar. $onstanta++:;5E++coninetoat calea i nu!ele fiierului curent.

    9 ar3v N - Un arra= al ar0u!entului tri!is ctre script. $nd scriptul ruleaz n linie deco!and4 va da acces $-st=le la para!etrii liniei de co!anda. $nd este accesat prin !etoda

    K:&4 acesta va conine un sir de intero0are.

    9 ar3c 9- $onine un nu!r al para!etrilor liniei de co!and tri!ise ctre script Cdaca esterulat n linie de co!andaE.

    9 4,8E8E7:,"E 9- ;eturneaza versiunea $K8 utilizat pe server Ce5e!plu N $K8G1.1NE.

    9 SE7(E7+>,?E 9- Au!ele server-ului de +ostin0 unde se e5ecut scriptul curent. Dacscriptul ruleaz pe un +ost virtual4 aceasta va conine valoarea definit pentru acel +ostvirtual.

    9 SE7(E7+S6:88+7668N - Directorul radcin unde este rulat scriptul curent4 aa cu! este

    definit n fiierul de confi0uraie al serverului.

    N H88P+,""EP8N - $oninutul +eader-ului acceptat de la cererea curent4 dac este unul.

    N H88P+,""EP8+"H,7SE8 N - $onine setul de caractere acceptate i care este tri!is de+eader-ul cererii respective4 dac e5ist. :5e!pluB N iso-**#,-14S4utf-* N.

    N H88P+,""EP8+E>"6D;>4 N - $onine tipul de encodare tri!is de cerera curent prin+eader4 dac e5ist.. :5e!pluB N 0zip N.

  • 8/11/2019 120956012 Despre Limbajul PHP

    7/217

    N H88P+,""EP8+5,>4U,4E N - $onine li!ba)ul tri!is de cererea curent prin +eader4 dace5ista. :5e!pluB N en N.

    N H88P+"6>>E"8;6>N - $onine infor!aii despre conecsiiunea tri!is de cererea curentprin +eader4 dac e5ist. :5e!pluB N Teep-(live N.

    N H88P+H6S8N - $onine infor!aii despre +ost4 +eader-ul de la cererea curent4 dac e5ist.

    N H88P+7E:E7E7N - (dresa pa0inii Cdac esteE de unde a venit userul n pa0ina curent.(ceasta este setat de ctre broser. Au toate broserele seteaz aceast valoare4 i c+iarunele au posibilitatea de a !odifica HTTP_REFERERaa cu! vor. Pe scurt4 nu este de

    ncredere.

    N H88P+USE7+,4E>8N - $onine se!ntura broser-ului tri!is prin +eader la cerereacurent4 dac e5ist. Un e5e!plu tipic esteB ,?EN - $alea absolut unde se e5ecut scriptul curent. (tenieB Dacscriptul este rulat cu $684 ca i cale relativ4 cu! ar fi file.p+p sau ..Gfile.p+p 4QR:;:;N$;8P&R786:A(N - aloarea dat de directiva SERVER_A(-NCpentru (pac+eE n fiierulde confi0urare al eb serverului. Dac scriptul ruleaz pe un +ost virtual4 acesta va coninevaloarea definit pentru acel +ost virtual.

    N SE7(E7+P678N - Portul de pe server care este folosit pentru co!unicare pe eb. Pentrusetrile standard4 acesta este N * N pentru 64 de e5e!plu4 se va sc+i!ba cu oricare portdefinit n trans!isia securizat H&&P.

    N SE7(E7+S;4>,8U7EN - $onine un ir care cuprinde versiunea serverului i nu!ele+ostului virtual dac este.

    N P,8H+87,>S5,8EDN - $alea de baz a siste!ul de fiiere Cnu rdacina docu!entuluiE dela scriptul curent4 dup ce serverul a ter!inat !aparea oricror cai C virtual-to-real !appin0E

    (tenieB @ncepnd de la PHP ".3.24 P,8H+87,>S5,8EDnu !ai este setat i!plicit n (pac+e2 (P8 n contrast cu situaia din (pac+e 14 unde este setat aceeai valoare ca i laS"7;P8+:;5E>,?E. (ceast sc+i!bare a fost fcut pentru a fi co!patibil cu specificaiile$K8 n care P,8H+87,>S5,8EDtrebuie s e5iste doar dac P,8H+;>:6este definit.Utilizatorii (pac+e 2 pot utilizaA%%eptPath-n&o = Onn fiierul de confi0uraie http,.%on&pentru a defini P,8H+;>:6.

    N S"7;P8+>,?EN - $onine calea ctre scriptul curent. (cesta este util pentru pa0ini caretrebuiesc definite ctre ele nsui. $onstanta RR786:RR conine calea co!plet i nu!ele defiier al scriptului curent.

  • 8/11/2019 120956012 Despre Limbajul PHP

    8/217

    N 7E@UES8+U7;N - U;8 care este dat pentru accesarea pa0inii curente4 de e5e!plu NGinde5.+t!l N.

    N PHP+,U8H+D;4ES8N - $nd rulai sub (pac+e ca !odul4 aciunea (igest HTTPvaloareaacestei variabile este setat n N(ut+orizationN +eader tri!is ctre client Ccare ar trebui utilizatpentru a face o validare corespunztoareE.

    N PHP+,U8H+USE7N - $nd este rulat sub (pac+e sau 88 C8(P8 pe PHP #E ca !odul4actiunea HTTP a*thenti%ation4 aceast variabil conine nu!ele userului tri!is de ctre user.

    N PHP+,U8H+P(*+E>(conine variabile disponibile prin inter!ediul !ediului n care este e5ecutat. ( fostintrodus n versiunea ".1.. @n versiunile anterioare4 utilizai *H88P+E>(+(,7S.

    (ariabilele pentru cereri#*+7E@UES8conine variabile disponibile prin inter!ediul oricrui tip de !ecanis! cu a)utorulcruia utilizatorul poate introduce date. :ste de tip arra= i conine valorile variabilelor*+4E84 *+P6S84 i *+"66;E. ( fost introdus n versiunea ".1.. @ncepnd de laversiunea ".3.4 infor!aiile din *+:;5ESau fost de ase!enea incluse n *+7E@UES8

    (ariabile de sesiune#QR:8/A conine variabile care corespund sesiunii curente a script-ului4 sub for! de arra=.( fost introdus n versiunea ".1. i este de ase!enea 0lobal. @n versiunile anterioarefolosii *H88P+SESS;6>+(,7S.

    (ariabile de )esaFe de eroare#*p!p+error)s3- este o variabil ce conine ulti!ul !esa) 0enerat de ctre PHP (ceastvariabil este folosit n scopul de a vedea ce eroare apare i doar dac opiunile deconfi0urare a erorilor trac+errors este pornita Cstandard este pe /77E

  • 8/11/2019 120956012 Despre Limbajul PHP

    9/217

    "onstante predefinite#PHP conine un !are nu!r de constante predefinite pentru fiecare script care ruleaz. &otui4sunt # constante J!a0iceJ pe care le prezint n continuareB

    ++5;>E++ - $onine nu!rul curent al liniei din fisier.++:;5E++ - toat calea i nu!ele fiierului curent. Dac este folosit n interiorul unui fiierinclus4 va returna nu!ele fiierului inclus. @ncepnd de la versiunea "..2 conine ntotdeauna

    calea absolut la fiier4 pe cnd n versiunile anterioare conine calea relativ4 n afar decteva cazuri.

    ++:U>"8;6>++ - Au!ele funciei Cadu0at n versiunea ".3.E @n PHP # aceast constantreturneaz nu!ele funciei care a fost declarat Ccase-sensitiveE. @n PHP " aceast valoareeste ntotdeauna loercased Ccu litere !iciE

    ++"5,SS++ - Au!ele clasei Cadau0at n versiunea ".3.E @n PHP # aceast constantreturneaz nu!ele clasei care a fost declarat Ccase-sensitiveE. @n PHP " aceast valoare este

    ntotdeauna loercased Ccu litere !iciE++?E8H6D++ - Au!ele !etodei clasei Cadau0at n versiunea #...E Au!ele !etodei estereturnat asa cu! este declarat Ccase-sensitiveE

    Do)eniul de vizibilitate al variabilelor - "u) se pot accesa variabilele.

    @n PHP o variabil poate fi accesat doar n conte5tul n care a fost definit. De e5e!plu4 ovariabil definit n interiorul unei funcii nu va putea fi accesat dect de instruciunile dininteriorul acelei funcii.

  • 8/11/2019 120956012 Despre Limbajul PHP

    10/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    11/217

    ntre0 1 Cca n $G$OO sau 9avaE4 ci nu!rul real C&loatE 1.#Wi pentru nu!erele ntre0i e5ist posibilitatea efecturii de conversiiB- valoarea lo0ic TR5Eeste convertit la valoarea ntrea0 1- valoarea lo0ic FALSEeste convertit la valoarea ntrea0 - un nu!r real este convertit prin Jrotun)ire nspre J asadar4 valoarea real 2.# va ficonvertit la valoarea ntrea0 24 n ti!p ce valoarea real -2.# va fi convertit la valoarea

    ntrea0 -2

    - un sir de caractere este convertit lund n considerare doar pri!ele caractere care conininfor!aii nu!erice aadar irul J1J va fi convertit la valoarea ntrea0 1 de ase!eneairul J1 aniJ va fi convertit tot la valoarea 1 dac pri!ele caractere nu conin infor!aiinu!erice4 rezultatul conversiei va fi valoarea .

    Tipul float:/ variabil de tip &loatpoate fi specificat folosind fie for!a zeci!ala4 fie ceatiinific Ccu e5ponentE. 6a fel ca i n cazul tipului integer4 precizia variabilelor de tipul floateste dependent de platfor!a utilizat. De obicei se folosete standardul 8::: %". :5istposibilitatea de a converti o variabil de orice tip la tipul &loat. Pentru nu!erele reale se potefectua ur!toarele conversiiB- un ir de caractere este convertit lund n considerare doar pri!ele caractere care conininfor!aii nu!erice aadar irul J1.2J va fi convertit la valoarea real 1.2 irul J1.23:1aniJ va fi convertit la valoarea 12.3- n toate celelalte cazuri se realizeaz conversii la nu!ere ntre0i care apoi sunt convertite la

    valorile reale corespunztoare.

    Tipul stringB / variabil de tip stringreprezint un ir de caractere. Un caracter se reprezintpe un octet4 deci sunt 2#% de caractere distincte. (cest lucru i!plic faptul c interpretorulPHP nu ofer suport nativ pentru setul de caractere5ni%o,e. 6un0i!ea variabilelor de tipstringnu este li!itat de ctre interpretor. 6iteralii de tip ir de caractere pot fi specificai ntrei !oduri diferiteB- prin folosirea 0+ili!elelor si!ple Ce5e!plu QaXNacesta este un sir de caractereNE. Pentru aavea n cadrul irului si!bolul JGJ4 atunci naintea acestuia trebuie scris caracterul JYJ4 iarpentru a putea specifica si!bolul JYJ acesta trebuie dublat.- prin folosirea 0+ili!elelor duble. 7olosind aceast notaie pot fi specificate !ai !ultecaractere speciale4 pe ln0 caracterele de la varianta anterioara4 printre careB sfrit de linieCJYrJE4 rnd nou CJYnJE4 tab orizontal CJYtJE4 se!nul dolar CJYQJE4 0+ili!elele duble CJYJJE4secvene de caractere pentru specificarea faptului c o e5presie re0ular este n notaie octal

    CJY-'VZ143[JE i secvenele de caractere pentru specificarea faptului c o e5presie re0ulareste n notaie +e5azeci!al CJY5-,(-7a-fVZ142[JE. $el !ai i!portant lucru este acela c4folosind acest !od de specificare a literalilor de acest tip4 nu!erele de variabile care apar ninterior vor fi transfor!ate n valoarea lor. De e5e!plu dac Qa este o variabil de tipulintegeri are valoarea 24 atunci sirul de caractere Jariabila a are valoarea Qa.J va fitransfor!at n irul Jariabila a are valoarea 2J.- notaia here,o%. (cest tip de notaie a fost introdus la versiunea " a interpretorului PHP.Pentru a specifica un sir de caractere folosind aceast notaie trebuie utilizat operatorul JLLLJur!at de un identificator ales de utilizator. &oate caracterele care se afl ntre operatorulJLLLJ ur!at de un identificator pe o sin0ur linie4 i acelai identificator pe o alt linie vorconstitui valoarea sirului de caractere. De e5e!plu4 instruciuneaB

    Cod:

    $str=

  • 8/11/2019 120956012 Despre Limbajul PHP

    12/217

    Pentru a accesa un anu!it caracter din irul de caractere se folosete4 dup nu!ele variabileide tip strin04 indicile caracterului care trebuie accesat scris ntre acolade. De e5e!plu4 QstrZ[returneaz pri!ul caracter din irul de caractere Qstr.@n cazul n care dori! s concatern! dou iruri de caractere vo! folosi operatorul J.J7olosirea operatorului JOJ nu va concaterna cele dou iruri.:5ist posibilitatea de a converti o variabil de orice tip la tipul string. Pentru irurile decaractere se pot efectua ur!toarele conversiiB

    - valoarea lo0ic &;U: va fi convertit la irul J1J4 iar valoarea lo0ic 7(6: va fi convertit lairul vid CJJE- un nu!r ntre0 va fi convertit la un ir de caractere care reprezint valoarea nu!rului nbaza 1- un nu!r real va fi convertit la un ir de caractere care reprezint notaia tiinific aacestuia- obiectele sunt ntotdeauna convertite la irul JOb4e%tJ- variabilele de tipul reso*r%esunt convertite la irul JReso*r%e i, 6nJ4 unde n reprezint unnu!r unic ataat resursei respective de ctre interpretorul PHP- valoarea N5LLeste convertit la irul vid CJJE.

    Tipul array- ectorii n PHP sunt nite !uli!i for!ate din %hei. 7iecarei c+ei din vector i seataeaz o valoare. (cest tip de date este opti!izat astfel nct s poat fi folosit n loculur!toarelor structuri de dateB liste4 tabele de dispersie4 dicionare4 colecii4 stive4 cozi i

    altele. Datorit faptului c o valoare poate fi reprezentat de un alt vector4 se pot si!ulafoarte uor arborii n-di!ensionali sau tablourile n-di!ensionale. aloarea unei variabile de tipvector se poate specifica folosind construciaarra= Cc+eie XM valoare4 c+eie XM valoare4 ...EDe e5e!plu4 ur!toarea nstruciune PHP va construi un vector cu dou ele!ente4 dintre careunul este de tip string4 iar cellalt de tip booleanBQa X arra= CJc+J XM Jstrin0J4 12 XM &;U:Eariabila Qa reprezinta un vector4 Qa Jc+JV are valoarea string4 iar Qa 12V are valoarea TR5E.@n cazul n care nu se specific o c+eie pentru o valoare4 atunci acea valoare va fi ataat uneic+ei care va fi c+eia !a5i! de tip integerfolosit anterior4 la care se adau0 valoarea 1.$+eile pot avea i valori ne0ative. Dac nu e5ist c+ei de tip integer4 atunci valoarea va fiataata c+eii . De e5e!plu4 ur!toarele dou instruciuni sunt ec+ivalenteBarra= C# XM "34 324 #%4 JbJ XM 12Earra= C# XM "34 % XM 324 ' XM #%4 JbJ XM 12E

    Dac se folosete valoarea lo0ic TR5Eca i c+eie4 atunci aceasta va fi convertit la c+eia detip ntre0 14 iar valoarea FALSEva fi convertit la nu!rul ntre0 . Au se pot folosi pentruc+ei variabile de tipul arra3sau ob4e%t./ variabil de tip arra= se poate !odifica prin setarea e5plicit de valori. De e5e!pluinstruciunea Qa J5JV X "2 adau0 n vectorul Qa valoarea "2 ataat c+eii J5J. Dac sefolosete un vector care nu a fost definit anterior4 atunci acesta este creat auto!at. (adarprintr-o instruciune de for!a Qa #V X "24 n cazul n care vectorul Qa nu e5ist4 atunci se vacrea un vector cu un sin0ur ele!ent. $+eia acestuia va fi nu!rul ntre0 #4 iar valoarea sa vafi "2.De ase!enea4 e5ist posibilitatea de a crea un ele!ent nou fr a-i preciza c+eia. inta5a arefor!a Qvector V X valoare aceast instruciune are ca efect adu0area unui ele!ent a cruic+eie este un nu!ar ntre0 !ai !are cu 1 dect cel !ai !are nu!r ntre0 care este c+eie aunui alt ele!ent al vectorului. Dac nu e5ist nici o astfel de c+eie4 atunci noul ele!ent vaavea c+eia . De e5e!plu4 ur!toarele dou secvente sunt ec+ivalenteBQa #V X 1 ............................ Qa #V X 1Qa %V X 2 ............................ Qa V X 2Prin conversia la un vector a unei variabile de tip scalar /boolean integer &loat stringE saureso*r%ese creeaz un vector cu un sin0ur ele!ent c+eia acestui ele!ent este nu!rul

    ntre0 4 iar valoarea este cea a variabilei convertite.Dac se convertete un obiect Cvariabila de tip ob4e%tE4 atunci vectorul rezultat va conine cteun ele!ent pentru fiecare variabil !e!bru a obiectului. $+eile ele!entelor vor fi date dedenu!irile proprietilor obiectului Cvariabilele !e!bru ale obiectuluiE4 iar valorile ele!entelorvor fi valorile proprietilor obiectului.Dac realiz! o conversie a unei variabile de tip AU664 atunci rezultatul va fi un vector vid

  • 8/11/2019 120956012 Despre Limbajul PHP

    13/217

    Ccare nu conine nici un ele!entE.@n continuare sunt prezentate cteva e5e!ple care descriu !ai detaliat posibilitile oferite defolosirea vectorilor n PHP. Pentru nceput4 prezint un vector al crui ele!ente reprezintcaracteristicile unei portocaleBCod:

    $a = array ('denumire' => 'portocala',

    'familie' => 'citrice',

    'culoare' => 'portocaliu',

    'forma' => 'rotunda',

    'ust' => 'dulce'

    !;

    Pute! adu0a i alte ele!ente care s reprezinte diferite alte proprieti. De e5e!plu4 a!putea avea nevoie de o valoare supli!entar creia nu dori! s i atribui! nici un nu!e deidentificare Cc+eieE. Pentru ca vectorul s conina un ele!ent supli!entar cu valoarea "4 vo!putea defini vectorul astfelBCod:

    $a = array ('denumire' => 'portocala',

    'familie' => 'citrice',

    'culoare' => 'portocaliu',

    'forma' => 'rotunda',

    'ust' => 'dulce',

    "!;

    $+eia ele!entului cu valoarea " va fi nu!rul ntre0 deoarece nu e5ist nici o alt c+eiecare este nu!r ntre0. / alternativ de construire a acestui vector este ur!toareaBCod:

    $#'denumire'% = 'portocala';

    $#'familie'% = 'citrice';

    $#'culoare'% = 'portocaliu';

    $#'forma'% = 'rotunda';

    $#'ust'% = 'dulce';

    $#% = ";

    :5e!plul ur!tor ilustreaz cu! putei folosi vectorii la afiarea unei pa0ini cu te5t coloratBCod:

    $colo!s = a!!a8 09!ed9:9g!een9:9blue9:

    9s%le!9 1;

    o!each 0$colo!s as $colo!1 2 echo "";

    echo "7ces e ese $colo!";echo "";3

  • 8/11/2019 120956012 Despre Limbajul PHP

    14/217

    Tipul objectB Pentru a defini un obiect care poate fi folosit pentru afiarea !esa)uluiSAL5TARE L5E7se scrie ur!toarea secvenB

    Cod:

    class salua!e2unc%on %spla8salua!e 01

    2echo "S75T7R 5@";3

    3Pentru a utiliza o variabil de tip obiect va trebui s realiz! o instan8iereprin inter!ediulinstruciunii ne9. inta5a esteBQa X ne salutare(stfel4 variabila Qa devine un obiect ale crui !etode pot fi utilizate. Pentru afiarea propriu-zis a !esa)ului va trebui s e5ecut! !etoda (ispla3sal*tare/0printr-o instruciune de tipulQa -M Displa=salutareCE/rice variabil de un anu!it tip poate fi convertit ntr-un obiect. Dac variabila respectiveste un obiect4 atunci ea nu va fi !odificat. @n caz contrar4 efectul conversiei este creareaunei noi instane a clasei st,:lass. Dac variabila are tipul N5LL4 atunci noua instan va fi

    vid. @n toate celelalte cazuri instana va conine o variabil !e!bru nu!it s%alara creivaloare va fi cea a variabilei convertite. Pentru conversii vo! folosi instruciuni de tipulQobiect X Cob)ectE J(6U&(;: 6U

    8nstruciunea de !ai sus va afia n broser !esa)ul introdus ntre 0+ili!ele. 7uncia e%ho4 lafel ca iprint4 nu este c+iar o funcie4 ci !ai de0rab un constructor al li!ba)ului i nu estenevoie s folosii parantezele ca pentru o funcie. De fapt4 dac dorii s tri!itei !ai !ulipara!etri ctre e%ho4 nu trebuie s includei aceti para!etrii ntre paranteze. :5ist c+iar i o

  • 8/11/2019 120956012 Despre Limbajul PHP

    15/217

    variant !ai scurt a lui e%ho4 dar aceasta funcioneaz doar dac este setat n confi0uraiaphp.inidirectiva short_open_tagpe ON. inta5a pentru varianta scurt esteB

    @n cazul de !ai sus4 i!ediat dup desc+iderea ta0ului p+p se va afia valoarea variabilei $&oo.Au reco!and aceast abordare4 deoarece nu toate serverele au setat n confi0uraia lor

    short_open_tagpe ONi nu va funciona./ funcie ase!ntoare cu e%hoesteprint. 6a fel ca i e%ho4 nici aceasta nu este c+iar ofuncie ci un constructor al li!ba)ului4 i nu trebuie s utilizai parantezele. &e5tul ce ur!eaza fi afiat trebuie introdus ntre 0+ili!ele si!ple sau duble4 rezultatul fiind uor diferit.7olosind 0+ili!elele duble4 orice variabil din cadrul strin0ului este parsat. (stfel4 dac a!avea de e5e!pluB

  • 8/11/2019 120956012 Despre Limbajul PHP

    16/217

    echo $;

    ?>

    (lte infor!aii despre aceste funcii4 precu! i altele ase!ntoare cu acestea4 de 0enulprint&/04 i &l*sh/0putei 0si n !anualul oficial pe care l putei lua 0ratuit de pe site-ul oficialal PHP - .p+p.net.

    "onstruiete un site cu p!p

    @n continuare4 o s ncerc s v prezint cu! se poate construi un site cu a)utorul li!ba)uluiPHP. :5e!plul prezentat nu este un standard4 este doar o !odalitate de a vedea cu! se poateconstrui un site i cu! se preiau sau tri!ite variabilele prin inter!ediul site-ului. Putei4 pebaza acestui e5e!plu4 s v construii propriul site4 n for!a preferat de dvs. i adaptnd!odelul acesta la necesitaile voastre.@n e5e!plul !eu4 a! preferat s a! o sin0ur pa0in4 anu!e inde5.p+p4 n care s includdina!ic coninutul i !eniul4 n funcie de ce lin acceseaz vizitatorul. Putei vedea acest!odel ntr-un fel !odular4 fiecare script fiind de fapt un !odul care e5ecut anu!ite operaiispecifice. (stfel4 n pa0ina inde5.p+p se includ !ai !ulte !odule CscripturiE care luate separat4

    fiecare fac anu!ite lucruri4 dar puse !preun4 for!eaz pa0ina de eb 0enerat dina!ic. @nacest e5e!plu4 nu a! folosit o baz de date4 dar pe acelai principiu se poate adapta ideea laun site care preia datele din baza de date.

    Partea de sus a pa0inii C+eadEPartea cu !eniul orizontal 0enerat dina!icCpartea de bod=E

    !eniullateral

    partea in care se afiseazacontinutul pa0inilor4 si alteinfor!atii

    aici se potpune alteinfor!atii0eneratedina!ic

    partea de inc+eiere a pa0inii CfooterE

    Dup cu! putei vedea alturat4 a! despritfiecare parte a unei pa0ini n buci4 fiecarebucat este colorat diferit pentru o !ai bunvizualizare. Putei introduce n fiecare bucatcte un script p+p care s 0enereze respectivabucat dina!ic. (stel4 n cazul unei !odificri4va fi !ult !ai uor s !odificai doar scriptulcare se ocupa de o anu!it parte a pa0inii4 pecnd daca tot site-ul ar fi fost facut static nH&

  • 8/11/2019 120956012 Despre Limbajul PHP

    17/217

    e5ist fisierul hea,.phpi bo,3.phpi se ncarc sau se oprete cu un !esa) de eroare.!ead.p!p- n acest fiier se afiseaz codul +t!l pentru nceputul pa0inii4 i dac e5ist4 se

    ncarc i fiierele cu cod $ i 9avacript folosite n pa0in.css.p!p- acest fiier conine codul $ folosit pentru for!atarea i afiarea pa0inii H&

  • 8/11/2019 120956012 Despre Limbajul PHP

    18/217

    - / caset de dialo04 prin care suntei ntrebat dac dorii s descrcai fiierul care coninescriptul.- Un !esa) n care se spune c scriptul nu e5ist- Un !esa) n care se spune c broserul eb nu are per!isiunea de a obine accesul la script- Un !esa) n care se spune c scriptul conine o eroare

    6a vizualizarea rezultatelor unui script PHP se pot produce nu!eroase erori4 c+iar dac scriptul

    n sine e corect. Dac vedei te5tul scriptului sau o caset de dialo0 prin care suntei ntrebatdac dorii s descrcai fiierul care conine scriptul4 este posibil ca e5tensia fiierului scripts fie incorect sau ca serverul PHP s nu funcioneze. Dei fiierele script PHP trebuie s aib4

    n 0eneral4 e5tensia .php4 este posibil ca un ad!inistrator de siste! s confi0ureze un serverPHP astfel nct acesta s i!pun o alt e5tensie de fiier.Dac vedeti un !esa) n care se spune c scriptul nu e5ist4 este posibil ca s fi tastat incorectadresa U;6. erificai dac ai tastat corect adresa U;6 precu! i dac ai ataat corect laaceasta nu!ele fiierului care conine scriptul4 folosind un slas+ nu!ai dac adresa U;6 nu se

    nc+eie cu un atare caracter.Dac vedei un !esa) n care se arat c broserul eb nu are per!isiunea de a obineaccesul la script4 poate c este necesar s !odificai per!isiunile fiierului script Cc!odE.Dac vedei un !esa) n care se spune c scriptul conine o eroare4 verificai dac nu auaprut ur!toarele proble!eB- / eroare de tastare4 cu! ar fi scrierea 0reit a cuvntului ec+o

    - / eroare de punctuaie4 cu! ar fi paranteze4 0+ili!ele duble sau punct i vir0ul lips sauinserate 0reit.- Aeincluderea sau includerea eronat a liniilor de deli!itare a scriptului4 n spe L?p+p i ?M- Un !arca) de co!entariu CGGE care lipsete sau a fost introdus 0resit.

    irurile i caracterele speciale

    pre deosebire de nu!ere ntre0i i de nu!ere duble4 care conin cu precdere cifre4 irurilepot conine orice caracter. $a atare4 irurile sunt utile pentru stocarea datelor care nu pot ficalculate4 precu! nu!e i adrese. De ase!enea4 irurile pot fi utilizate pentru stocareadatelor nu!erice. Pentru a specifica un ir n PHP4 caracterele care alctuiesc irul sunt incluse

    ntre 0+ili!ele duble de e5e!plu4 irul reprezentnd nu!ele J(lbert :insteinJ. (a cu! a!!ai spus4 un ir poate conine date nu!erice de e5e!plu 4 J3.1"1#1%J. PHP faciliteazincluderea n iruri a unor caractere speciale4 precu! caracterele de salt la linie nou sau returde car4 prin furnizarea de secvene escape care reprezint caractere speciale. 8at secveneleescape folosite n PHPB

    Yn - salt la linie nouaYr - retur de carYt - caracter de tabulare pe orizontalYY - bacslas+YQ - si!bolul dolaruluiYJ - 0+ili!ele duble

    $a e5e!plu4 iat un ir care include un retur de car4 ur!at de un salt la linie nouB

    Jalut\ YrYnJ.

    ;einei c fiecare secven escape ncepe cu un bacslas+ CYE. Pentru a include un bacslas+ntr-un ir4 trebuie s folosii secvena escape adecvat4 care este alctuit din dou caracterebacslas+. Pentru a introduce 0+ili!ele duble n cadrul unui ir fr a folosi secventa escape4putei include irul ntre 0+ili!ele si!ple astfelB

    NPe ea o c+ea!a JAiitaJN

    (ceasta este util cnd dorii s introducei ntr-un ir ta0uri H&

  • 8/11/2019 120956012 Despre Limbajul PHP

    19/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    20/217

    2p!%n "$ ese egal cu $8";3

    % 0$ = $812p!%n "$ ese d%e!% de $8";3

    ?>

    (li operatori folosii pentru co!pararea valorilor variabilelor suntB919!ai !are91K9!ai !are sau e0al929!ai !ic92K9!ai !ic sau e0al

    :5e!pluB

    Cod:

    9KK9- rezultatul este truedac cele dou e5presii au aceeai valoare9KKK9- rezultatul este truedac cele dou e5presii au aceeai valoare i au acelai tip

    9LK9sau NLMN - rezultatul este truedac cele dou e5presii au valori diferite9LKK9- rezultatul este truedac cele dou e5presii au valori diferite sau au tipuri diferite929- rezultatul este truedac valoarea pri!ei e5presii este !ai !ic dect valoarea celei de-a doua e5presii919- rezultatul este truedac valoarea pri!ei e5presii este !ai !are dect valoarea celei de-a doua e5presii92K9- rezultatul este truedac valoarea pri!ei e5presii este !ai !ic sau e0al cu valoareacelei de-a doua e5presii91K9- rezultatul este truedac valoarea pri!ei e5presii este !ai !are sau e0al cu valoareacelei de-a doua e5presii.

    Pe ln0 acestea e5ist i operatorul condiional 909care are for!a e#presie

  • 8/11/2019 120956012 Despre Limbajul PHP

    21/217

    // concae!na!ea s!%ngu!%lo!$es = .7# sc!%s un .B.e.B.oa!eca!e.;p!%n $es;// pe ec!an a % a%sa "7# sc!%s un e oa!eca!e"

    // concae!na!ea s!%ngu!%lo! cu a!%ab%le$n! = G;p!%n .7# sc!%s nu#a!ul .B$n!B. s% un e .B. oa!eca!e.;// pe ec!an a % a%sa "7# sc!%s nu#a!ul G s% un e oa!eca!e"

    // a!%bu%!ea concae!na!%%$n! = ;$e = "n e ";$e B= "oa!eca!e ";$e B= "s% nu#a!ul "B$n!;p!%n $e;// pe ec!an a % a%sa "n e oa!eca!e s% nu#a!ul "?>

    Operatori pe bii i operatori logici:

    8nterpretorul PHP pune la dispoziie ase operatori care opereaz asupra biilor unui nu!rntre0 sau ai unui ir de caractere. (cetia suntB- con)uncie CN^NE - 8 C(ADE- dis)uncie CN_NE - (U C/;E- dis)uncie e5clusiv CN`NE - (U e5clusiv CF/;E- ne0aie CNNE - AU CA/&E- deplasare la stn0a CNLLNE- deplasare la dreapta CNMMNE.

    /peratorii lo0ici v vor veni la nde!n n e5ecuia scriptului atunci cnd avei nevoie slucrai cu valori de adevr. presupune! c la intrarea n seciunea de ad!inistrare ave!un for!ular care cere nu!ele i parola de acces n seciune. Pentru contruirea e5presiilorlo0ice operanzii trebuie s aib tipul boolean dac operatorii au alt tip4 valoarea esteconvertit la o valoare boolean. criptul PHP ar putea verifica aceste infor!aii pentru a

    autoriza accesul n seciune folosind operatorii lo0ici astfelB- operatorul 9or9C(U e5clusivE:5presia n care apare operatorul 9or9va avea valoarea truedac e5act unul dintre operanziare valuarea true

    - operatorul 9L9CA/&Eif C\parolaReRbunaE ... parola nu este bun4 accesul este interzisif C\parolaRnuReRbunaE ... parola e bun4 accesul este per!is/peratorul 9L9returneaza 87UEdac valoarea iniial de adevr e :,5SEi :,5SEdacvaloarea iniial este 87UE.

    - operatorul 9MM9C/;Eif Cnu!eleResteRvalidE __ parolaResteRbunaE ...verific dac nu!ele sau parola sunt valide i dac oricare dintre ele este4 returneaz valoarea

    de adevr 87UE. @n acest e5e!plu de pseudocod dac nu!ele ar fi valid dar parola nu4 i-a!acorda utilizatorului acces !ai departe4 ceea ce nu este de dorit. &rebuie s fi! si0uri c inu!ele i parola sunt valide. /peratorul 9MM9returneaz 87UEdac oricare din valorileverificate e 87UE. ;eturneaz :,5SEdoar dac a!ndou sunt :,5SE.

    - operatorul 99C(ADEif Cnu!eleResteRvalid ^ parolaResteRbunaE ...dac att nu!ele ct i parola sunt valide pute! acorda utilizatorului acces n seciunea dead!inistrare. /peratorul 99returneaz 87UEdoar dac a!bele valori verificate sunt 87UE.:l returneaz :,5SEdac oricare dintre ele este :,5SECsau dac a!ndou sunt :,5SEE.

  • 8/11/2019 120956012 Despre Limbajul PHP

    22/217

    Operatori de atribuire:Pri!ul operand asupra cruia este aplicat un astfel de operator de atribuire trebuie s fie ovariabil4 iar al doilea poate fi o e5presie./peraia arianta scurt arianta standardadunare CNOXNE Qa OX 2 Qa X Qa O 2scdere CN-XNE Qa -X 2 Qa X Qa - 2

    n!ulire CNSXNE Qa SX 2 Qa X Qa S 2!prire CNGXNE Qa GX 2 Qa X Qa G 2rest CN]XNE Qa ]X 2 Qa X Qa ] 2con)uncie CN^XNE Qa X 2 Qa X Qa 2dis)uncie CN_XNE Qa _X 2 Qa X Qa _ 2dis)uncie e5clusiv CN`XNE Qa X 2 Qa X Qa 2deplasare la stn0a CNLLXNE Qa LLX 2 Qa X Qa LL 2deplasare la dreapta CNMMXNE Qa MMX 2 Qa X Qa MM 2concaternare CN.XNE Qa .X J2J Qa X Qa . J2J

    :5e!pluB

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    23/217

    $b = ;$a = ';echo "$a M= $b = ";echo $a M= $b;

    $b = ;$a = ';echo "$a >= $b = ";echo $a >>= $b;

    $b = ;$a = ';echo "$a B= $b = ";echo $a B= $b;echo "";

    ?>

    ;ezultatul codului de !ai sus esteB

    ' J= = N' E= = E'' A= = ' /= = OBG' K= = '' &= = O' L= = N' M= = N'

  • 8/11/2019 120956012 Despre Limbajul PHP

    24/217

    ne!odificate. :5ist o sin0ur e5cepie i anu!e irurile care reprezint nu!ere ntre0i saureale. (cestea sunt incre!entate sau decre!entate potrivit re0ulilor pentru valorile nu!erice.

    :5e!pluB

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    25/217

    echo "B +oua aloa!e a a!%ab%le% a ese $aB";$a = "PHP";echo "a = $a";echo ") Reulaul ope!a%e% aJJ ese ";echo $aJJ;echo "B +oua aloa!e a a!%ab%le% a ese $aB";echo "a = $a";echo ") Reulaul ope!a%e% JJa ese ";echo JJ$a;echo "B +oua aloa!e a a!%ab%le% a ese $aB";echo "a = $a";echo ") Reulaul ope!a%e% aEE ese ";echo $aEE;echo "B +oua aloa!e a a!%ab%le% a ese $aB";echo "a = $a";echo ") Reulaul ope!a%e% EEa ese ";echo EE$a;echo "B +oua aloa!e a a!%ab%le% a ese $aB";echo "";?>

    ;ezultatul codului de !ai sus esteB

    a = F) Re;*ltat*l operatiei aJJeste F. No*a Caloare a Cariabilei aeste Ba = ) Re;*ltat*l operatiei JJaeste Q. No*a Caloare a Cariabilei aeste QBa = Q) Re;*ltat*l operatiei aEEeste Q. No*a Caloare a Cariabilei aeste Ba = ) Re;*ltat*l operatiei EEaeste F. No*a Caloare a Cariabilei aeste FBa = FBG) Re;*ltat*l operatiei aJJeste FBG. No*a Caloare a Cariabilei aeste BGBa = BG) Re;*ltat*l operatiei JJaeste QBG. No*a Caloare a Cariabilei aeste QBGBa = QBG) Re;*ltat*l operatiei aEEeste QBG. No*a Caloare a Cariabilei aeste BGBa = BG) Re;*ltat*l operatiei EEaeste FBG. No*a Caloare a Cariabilei aeste FBGBa = PHP) Re;*ltat*l operatiei aJJeste PHP. No*a Caloare a Cariabilei aeste PHBa = PH) Re;*ltat*l operatiei JJaeste PHR. No*a Caloare a Cariabilei aeste PHRBa = PHR) Re;*ltat*l operatiei aEEeste PHR. No*a Caloare a Cariabilei aeste PHRBa = PHR) Re;*ltat*l operatiei EEaeste PHR. No*a Caloare a Cariabilei aeste PHRB

    (ceti operatori sunt utili de e5e!plu pentru !onitorizarea unui donload4 dac dorii s tiide cte ori a fost descrcat un fiier dintr-o anu!it pa0in. 6a fiecare accesare a fiierului4scriptul incre!enteaz cu 1 i afieaz valoarea. Cscriptul l 0ndii voi4 doar nu vrei totul latavE

    Operatori pentru controlul erorilor:@n PHP e5ist un operator ARcare per!ite i0norarea erorilor. Dac este aplicat asupra uneie5presii care ar duce la afiarea unui !esa) de eroare4 atunci !esa)ul respectiv nu va fi afiat.

    Operatori de eecuie:

  • 8/11/2019 120956012 Despre Limbajul PHP

    26/217

    8nterpretorul PHP per!ite e5ecutarea unor co!enzi siste! prin inter!ediul operatoruluiAG G. $o!anda respectiv este cuprins ntre apostroafele inverse Ctasta de ln0 1 deasupratastei tabE4 iar rezultatul acestei co!enzi este un ir de caractere care reprezint i rezultatule5presiei.Ur!atorul s%riptPHP deter!in e5ecuia pe serCera co!enzii !elp %0i afiarea rezultatului

    n fereastra pro0ra!ului de navi0are.

    Cod:

    (tenie\Pe unele confi0uraii de server nu se per!ite e5ecutarea de co!enzi prin inter!ediul PHP Cca!sur de si0uran4 altfel oricine ar putea da un for!at sau reboot la server prin inter!ediulunui script PHPE.

    Operatori pentru !ectori:

    in0urul operator care poate fi aplicat asupra vectorilor este cel de concaternare AN;ezultatul concaternrii a doi vectori este un vector care conine ele!entele din cei doi vectori.Dac cei doi vectori conin ele!ente cu aceeai c+eie4 atunci este pstrat doar ele!entul dinvectorul care reprezint pri!ul operand.

    :5e!pluB

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    27/217

    operaiile se vor efectua n ordinea deter!inat de asociativitatea acestor operatori care poatefi de la dreapta la stn0a sau de la stn0a la dreapta. &oi operatorii cu aceeai precedent auaceeai tip de asociativitate.:vident4 pentru a !odifica ordinea i!plicit de efectuare a operaiilor pot fi folosite parantezepentru a indica faptul c o anu!it operaie trebuie efectuat naintea altora4 c+iar dacacestea din ur! au o precedent !ai !are.&rebuie observat faptul c4 datorit asociativitii de la dreapta spre stn0a a operatorilor de

    atribuire4 e5presiile de tipul 'a ( 'b ( "sunt valide.

  • 8/11/2019 120956012 Despre Limbajul PHP

    28/217

    OO--

    CintECfloatECstrin0ECarra=E

    Cob)ectE

    de la stn0a la dreapta unar fr asociativitate unar ne

    @n tabel este prezentat i nu!rul e5presiilor asupra crora acioneaz un operand. /peratoriiunari acioneaz asupra unei sin0ure e5presii4 cei binari asupra a dou e5presii i sin0uruloperator ternar asupra a trei e5presii.

    @n continuare sunt civa operatori care e5ecut operaii utileB

    - absC5E - returneaz valoarea absolut a lui 5- ceilC5E - returneaz valoarea 54 rotun)it la ntre0ul i!ediat superior- floorC5E - returneaz valoarea 54 rotun)it la ntre0ul i!ediat inferior

    - !a5C54 =4 ...E - returneaz valoarea !a5i! a unui set de valori- !inC54 =4 ...E - returneaz valoarea !ini! a unui set de valori- poC54 nE - returneaz nu!rul 54 ridicat la puterea specificat n- strfti!eCfE - returneaz data curent4 for!atat confor! coninutului para!etrului f- srtC5E - returneaz rdcina ptrat a lui 5

    "Iteva idei utile pentru securitatea pa3inilor web

  • 8/11/2019 120956012 Despre Limbajul PHP

    29/217

    ;e0ula nu!rul unu a securitii online esteB nu v ncredei niciodat n utilizator.@ntotdeauna verificai datele tri!ise ctre server i Jcurai-leJ nainte de a le utiliza. Pentruaceasta trebuie s luai n considerare cteva posibile J0uriJ de securitate. 6 de verificare a nu!elui i a parolei pentru

    nre0istrarea pe site este

    :6:$& S 7;/< users H:;: nu!eXNQnu!eN (AD parolaXNQparolaN

    i dac intero0area este e5ecutat cu succes4 utilizatorul este lo0at. @n acest caz4 folosindparola N/;N 1X1 oricine poate avea acces pe site deoarece intero0area

    :6:$& S 7;/< user H:;: nu!eXNun nu!e oarecareN (AD parolaXJ /; N1X1N

    este e5ecutat cu succes i returneaz un rezultat Ctoate nre0istrarile din baza de date4 defaptE.

  • 8/11/2019 120956012 Despre Limbajul PHP

    30/217

    rezolva uor folosind sesiunile. @n !o!entul cnd cineva ncearc s tri!ita nu!ele i paroladin for!ular pute! seta o variabil de sesiune $_SESS-ON['login_%o*nt'care s in !intenu!rul de ncercri. $nd valoarea acesteia trece de 3 Cncercri nereuiteE nici !car nu!ai intero0ai baza de date pentru a verifica datele tri!ise. ariabila de sesiune va r!ne n!e!orie ct ti!p broserul este desc+is i sesiunea activ Copiunea i!plicit a PHP de!eninere a sesiunilor active este de o orE. Dac atacatorul ateapt o ora sau i nc+idebroserul4 sesiunea va fi nc+is i va putea de alte F ori s se lo0+eze. De cele !ai !ulte ori

    acest !sur de si0uranta este suficient pentru a preveni ncercrile de aflare a parolelor.

    W. Etensii/ practic obinuit este de a acorda e5tensia .in%fiierelor care conin biblioteci de funcii ceur!eaz a fi incluse i folosite n cod. PHP nu parseaz fiierele cu e5tensia .in%i dacacestea sunt apelate direct ele sunt tri!ise plain te5t ctre broser. Au punei infor!aiisensibile Cprecu! nu!e i parolaE n fiiere cu e5tensia .in%4 .t#t4 sau .htlcare pot fiaccesate i vzute. 7olosii pentru aceste fiiere e5tensia .phpcare4 dac sunt accesate direct4vor fi rulate fr s afieze infor!aiile coninute n ele.

    X. "o)anda "H?6D- setarea atributelor$o!anda $H

  • 8/11/2019 120956012 Despre Limbajul PHP

    31/217

    session_start/0i& /$_SESS-ON [')e3_a,in' 7= session_i, /00

    print 'A%%es nea*tori;at7'e#it

    I

    Z. 5o3uri de accesPentru o verificare ulterioar a persoanelor care ncearc s intre n pa0inile restrictionate depe site4 este bine s salv! n baza de date Csau ntr-un fiier te5tE nu!ele4 parola criptata4ora4 data4 se!ntura broserului i ip-ul. (a vei tii cine a ncercat s v spar0 site-ul iputei crea un script care sa verifice de e5e!plu ip-ul i dac corespunde cu unul din cele caresunt blocate s nu aib acces la nici una din pa0ini Cc+iar dac 0sete userul i parolacorecteE

    O. "riptarea parolelor cu ?DWParolele care sunt salvate n baza de date este reco!andat s le inei criptate4 astfel daccineva ncearc s citeasca parolele le va vedea criptate.

    -NSERT -NTO a,in VAL5ES />a,inistrator> ,J/>parola>00

    $riptarea folosind !d# nu este reversibila Ci astfel nici dvs.4 nici altcineva nu o va putea aflac+iar dac are acces la baza de dateE.

    Q. Pa3ina inde.p!p n subdirectoareDac avei !ai !ulte directoare i subdirectoare pe server este reco!andat pentru a preveniaccesul la datele aflate n aceste directoare s introducei n fiecare director o pa0in nu!itin,e#.htlsau in,e#.phpcare s fac redirectarea auto!at ctre pa0ina principal a site-ului.(stfel !ini!izati riscul s intre cineva i s vad tot ce este n aceste subdirectoare.

    QQ. :iierul .!taccessPentru a bloca accesul la un anu!it director Csau c+iar la tot site-ulE puteti crea un fiier nu!it.hta%%essCcu punct nainteE n care s introducei ip-ul care dorii s l blocai Csau care s aibaccesE

    Or,er (en3Allo9Allo9 &ro all

    @n e5e!plul de !ai sus4 toat lu!ea are acces. Dac de e5e!plu ip-ul 1,2.1%*.1.1 nu doriis aib acces la acel director scriei

    (en3 &ro

  • 8/11/2019 120956012 Despre Limbajul PHP

    32/217

    disallow# %searc!

    unde pentru fiecare director sau fiier se specific locaia i nu!ele. Pentru !ai !ultsi0uran4 a! 0sit pe ebun !ic script care verific tipul de broser i dac nu este unbroser cunoscut nu per!ite accesul Cdac cineva ncearc s citeasc pa0inile cu pro0ra!espion sau 0en eb offlineE.

    $u! a! specificat i la nceputul acestui articol4 cele spuse !ai sus nunt doar cateva indicii iidei pentru a v putea prote)a !ai bine pa0inile.

    Structuri de control n PHP

    Dup cu! tii4 instruciunile PHP sunt separate prin caracterul NN. Deseori4 sunte! nevoii s0rup! !ai !ulte instruciuni pentru a for!a un bloc. (stfel4 obine! instruciunile co!pusecare sunt for!ate din !ai !ulte instruciuni si!ple4 separate prin caracterul NN. @n PHP4instruciunile co!puse au ur!toarea sinta5aB

    instr*%ti*ne 6< instr*%ti*ne 6 ... instr*%ti*ne 6n I

    8nstruciunile care for!eaz instruciunea co!pus pot fi de orice tipB orice structur decontrol4 alte instruciuni co!puse etc. (adar un bloc de instructiuni Co instruciune co!pusE4

    n PHP4 este deli!itat de acolade.

    Structura if

    Una dintre cele !ai i!portante structuri n orice li!ba) este cea alternativa. @n PHP sinta5aacestei structuri este ur!toareaB

    i& /%on,itie0 instr*%ti*ne

    7olosirea unei astfel de structuri indic faptul c instruciunea se va e5ecuta dac i nu!aidac valoarea e5presiei %on,itieCeventual dup conversia la tipul booleanE este true.

    "onstrucia if - else

    @n foarte !ulte cazuri dori! s e5ecut! o alt instruciune dac valoarea e5presiei condiieeste false. @n PHP pute! utiliza o construcie de tipul if ) elsen acest scop. inta5a esteB

    i& /%on,itie0 instr*%ti*ne 6 $n";3

    // o #a!%ce$b-O-O = "a";$b-O-' = "b";$b-'-O = "c";$b-'-' = "d";echo "Pa!cu!ge!ea une% #a!%ce)";o!each 0$b as $'1

    2echo "";o!each 0$' as $1

    echo "$n";echo "";

    3echo "Pa!cu!ge!ea unu% eco! gene!a d%na#%c) ";

    // un eco! gene!a d%na#%c

    o!each 0a!!a8 0': : N: 4: G1 as $1echo "$n";

    echo "";?>

    ;ezultatul codului de !ai sus esteBParcur3erea unui vector#

    1. Valoarea %*renta este B'

    2. Valoarea %*renta este B

    3. Valoarea %*renta este BN

    4. Valoarea %*renta este B

    'O

    6 alta parcur3ere#

    $a-O => ' $a-' => $a- => N

    $a-N => 'O

    Parcur3ere cu afisarea c!eilor#

    $a-unu => ' $a-do% => $a-!e% => N $a-ece => 'O

    Parcur3erea unei )atrice# a b

    c d

    Parcur3erea unui vector 3enerat dina)ic#' N 4 G

    Structura switc!

    @n anu!ite cazuri trebuie s efectu! anu!ite operaii n funcie de anu!ite valori ale uneie5presii. / soluie ar fi folosirea unor structuri if!bricate sau a uneia sin0ure n care apar!ai !ulte construcii elseif. presupune! c o anu!it variabil poate avea cinci valori distincte i pentru fiecarevaloare trebuie e5ecutat o anu!it instruciune. Dac folosi! structura if4 secvena de codva fi ur!toareaB

    i& /$Cariabila == Caloare 6

  • 8/11/2019 120956012 Despre Limbajul PHP

    38/217

    elsei& /$Cariabila == Caloare 60instr*%ti*ne 6elsei& /$Cariabila == Caloare 6B0instr*%ti*ne 6Belsei& /$Cariabila == Caloare 60instr*%ti*ne 6else

    instr*%ti*ne 6J

    7olosind structuras*itch4 secvena ec+ivalent esteB

    s9i%h /$Cariabila0 %ase Caloare 6

    brea)I

    Prezent! n continuare sinta5a 0eneral a structuriis*itchB

    s9it%h /e#presie0 %ase Caloare 6

    I

    Pentru nceput se deter!in valoarea e5presiei i apoi se verific dac aceasta apare ca

    valoare pentru una dintre construciile case. @n caz afir!ativ4 toate instruciunile ncepnd cucea corespunztoare valorii respective Cpn la sfritul bloculuis*ichE vor fi e5ecutate.:5ecuia acestor instruciuni poate fi ntrerupt dac este folosit instruciunea brea,4 care vafi prezentat !ai )os. Dac valoarea e5presiei nu corespunde nici uneia dintre valorilecorespunztoare construciilor case4 se e5ecut instruciunile corespunztoare construcieidefault. Dac aceasta lipseste4 atunci nu se e5ecut nici o instruciune. &rebuie precizat faptulc valorile corespunztoare construciilor casepot fi nu!ere ntre0i4 nu!ere reale sau iruride caractere nu pot fi utilizate obiecte sau vectori.

    ;nstruciunea brea

    (ceast instruciune poate fi folosit pentru a ntrerupe forat e5ecuia unui ciclu sau asecvenei de instruciuni corespunztoare unei structuris*itch. 8nstruciunea poate fi ur!atde un ar0u!ent care indic nu!rul de structuri !bricate a cror e5ecuie se nc+eie.aloarea i!plicit este 14 deci se ntrerupe e5ecuia unei sin0ure structuri. Ur!toareasecven de cod PHP realizeaz parcur0erea ele!entelor unui vector de nu!ere ntre0i pn n!o!entul n care se ntlnete un nu!r ne0ativ.

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    39/217

    % 0$ < O1b!eaD;

    ?>

    8nstruciunea brea,poate fi utilizat pentru ntreruperea e5ecuiei secvenelor de instruciunicorespunztoare structurilor for4 foreach4 *hile4 do ) *hileis*itch.

    ;nstruciunea continue

    (ceast instruciune este folosit pentru a ntrerupe e5ecuia secvenei de instruciuni dininteriorul unui ciclu i trecerea la ur!toarea iteraie. @n cazul instruciunii for4 nainte deur!toarea iteraie se evalueaz Ce5ecutE e5presia de incre!entare Ce5presia 3 din sinta5a0eneralE. 6a fel ca i n cazul instruciunii brea,4 poate aprea un ar0u!ent care indicnu!rul structurilor !bricate asupra crora are efect. :5e!plul ur!tor realizeaz afiareaele!entelor unui ir de nu!ere ntre0i care sunt !ai !ari dect 1.

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    40/217

    2echo "??C%clul V n";h%le 0'1

    2echo "??C%clul VNn";con%nue N;3

    echo "7ces #esaU nu a % a%sa n%c%odaaBn";3

    echo "+%c% aces #esaU nu a % a%sa n%c%odaaBn";3

    ?>

    ;ezultatul codului de !ai sus esteB

    $iclul 1$iclul 2$iclul 3

    $iclul 1$iclul 2

    $iclul 3$iclul 1$iclul 2$iclul 3

    $iclul 1$iclul 2$iclul 3

    $iclul 1$iclul 2$iclul 3

    ,lte structuri PHP

    :5ist !ai !ulte alte structuri PHP care pot fi utilizate n anu!ite scopuri. o! a!inti acu!cteva dintre eleBtructurile include4 re-uire4 includeoncei re-uireoncepot fi utilizate pentru a JinseraJanu!ite instruciuni care sunt pstrate ntr-un alt fiier Cdocu!entE. 8nterpretorul PHPconsider c secvena din fiierul inserat se afl n fiierul din care s-a Jco!andatJ inserarea npoziia n care apare structura de inserare./ alt structur este declarecare per!ite crearea unor directive n e5ecuie.7unciile PHP trebuie s utilizeze instruciunea returnpentru a furniza un rezultat.

    Despre funcii n PHP

    @n PHP funciile pot fi definite de ctre utilizator folosind ur!toarea sinta5B

    &*n%tion n*e& /$para

  • 8/11/2019 120956012 Despre Limbajul PHP

    41/217

    (r0u!entele unei funcii trebuie separate prin vir0ul4 i4 i!plicit4 acestea sunt trans!ise prinvaloare. Pentru ca funcia s returneze un rezultat se folosete construcia returncarepri!ete ca para!etru o e5presie care reprezint valoarea funciei. @n !o!entul n care este

    ntlnit construcia return4 e5ecuia funciei se nc+eie. @n e5e!plul ur!tor se calculeaz cua)utorul unei funcii PHP4 ptratul unui nu!r.

    Cod:

    ;ezultatul codului va fiB

    "`2XQX

    8rans)iterea para)etrilor prin referin

    Pentru a trans!ite para!etri unei funcii prin referin4 fapt care i!plic !odificarea valoriipara!etrilor i pstrarea noii valori dup ce e5ecuia funciei s-a nc+eiat4 se foloseteoperatorul NN naintea nu!elui para!etrului for!al4 n !o!entul definirii funciei. Ur!torule5e!plu indic !odul n care se !odific valoarea unei variabile n interiorul unie funcii i!odul n care aceast !odificare este resi!it n e5teriorul acesteiaB

    Cod:

    ;ezultatB

  • 8/11/2019 120956012 Despre Limbajul PHP

    42/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    43/217

    - funcnumargs/ 0- aceast funcie returneaz nu!rul para!etrilor funciei care aapelat-o dac aceast funcie este apelat din e5teriorul unei funcii definite de utilizator seva 0enera un !esa) de avertizare- funcgetarg/argnum0- returneaz valoarea para!etrului care se afl pe pozitiaargnumn lista de para!etri pri!ul para!etru are nu!rul de ordine dac este apelatdin e5teriorul unei funcii definite de utilizator se va 0enera un !esa) de avertizare- funcgetargs/ 0- returneaz un tablou unidi!ensional care conine valorile para!etrilor

    pe care funcia apelant i-a pri!it dac aceast funcie este apelat din e5teriorul unei funciidefinite de utilizator se va 0enera un !esa) de avertizare.

    @n continuare avei 2 e5e!ple de utilizare a acestor funcii. Pri!ul e5e!plu afieaz listapara!etrilor funciei folosind funcia funcnumargsi funcgetarg4 iar al doilea e5e!pluafieaz aceeai list folosind nu!ai funcia funcgetargs.

    Cod:

    ;ezultatB

    $o!andaB1calculator2procesoareconfi0uratie(rra= C V XM local 1V XM 2 2V XM 3 E

  • 8/11/2019 120956012 Despre Limbajul PHP

    44/217

    (alorile returnate de funcii

    ;ezultatul obinut dup apelarea unei funcii poate avea orice tip. / funcie poate s returnezec+iar i liste sau obiecte. @n PHP e5ist un caz special de rezultat nu!it referin. Pentru ca ofuncie s poat returna o referin4 aceasta trebuie declarat folosindu-se operatorul NN

    naintea nu!elui funciei. (cest operator trebuie s apar naintea nu!elui funciei i n!o!entul cnd o variabil pri!ete ca valoare referina rezultat din apelul funciei. @ne5e!plul ur!tor se definete o funcie al crui rezultat l constituie o referinB

    Cod:

    ;ezultatB

    (cesta este continutul variabilei referite cu a)utorul functiei.

    pre deosebire de !a)oritatea li!ba)elor de pro0ra!are !oderne4 o funcie PHP poate sreturneze o referin la o variabil care a fost declarat n interiorul funciei4 ns acest lucru

    nu este indicat deoarece4 n anu!ite cazuri4 poate duce la efecte neateptate ale e5ecutriiunui script PHP. @n alte li!ba)e de pro0ra!are efectele devin uneori fatale.

    (ariabilele de tip funcie

    / alt facilitate a li!ba)ului PHP n ceea ce privete funciile este aceea c suport variabile detip funcie. (cest lucru este util atunci cnd se folosesc liste de funcii pentru prelucrareaanu!itor tipuri de date. Pentru a atribui un nu!e de funcie unei variabile n PHP se foloseteaceeai construcie ca n cazul atribuirii unui ir de caractere4 i anu!e4 o variabil va pri!i cavaloare nu!ele funciei scris ntre 0+ili!ele si!ple sau duble. @n cazul n care interpretorulPHP 0sete un nu!e de variabil ur!at de o list de para!etri4 acesta caut funcia pe carevariabila o refer i n cazul n care e5ist4 o e5ecut. ariabilele de tip funcie nu funcioneazacu construcii ale li!ba)ului ca echo4 unset4 isset4 empty4 includeetc.

  • 8/11/2019 120956012 Despre Limbajul PHP

    45/217

    unc%on su#a0$a: $b12!eu!n $a J $b;3

    $ope!a%e = .p!odus.;$!e = $ope!a%e04: G1;echo "4 A G = "B$!eB"";$ope!a%e = .su#a.;$!e = $ope!a%e04: G1;echo "4 J G = "B$!eB"";?>

    ;ezultatB

    " S # X " O # X O

    "lase i obiecte n PHP

    / clas este o colecie de variabile i funcii care opereaz asupra variabilelor respective.inta5a folosit pentru declararea unei clase n PHP esteB

    Cod:

    Pentru nu!ele unei clase poate fi utilizat orice identificator per!is n PHP cu o sin0ure5cepieBsdtclass acest identificator este folosit de PHP n scopuri interne.@n PHP funciile ale cror identificatori ncep cu+sunt considerate funcii !a0ice i utilizareaacestora nu este reco!andat.

  • 8/11/2019 120956012 Despre Limbajul PHP

    46/217

    @n PHP4 datele !e!bre nu pot fi iniializate dect cu valori constante. Pentru a iniializavariabilele cu valori care nu sunt constante trebuie folosit un constructor.

    6biecte

    @n PHP clasele sunt considerate a fi tipuri de date ele pot fi privite ca fiind Ja!prenteleJvariabilelor propriu-zise. Pentru a crea o variabil al crei tip este o clas trebuie utilizatoperatorul new. @n continuare vo! defini o clas1ritmeticacu dou date !e!bre 5 i = caresunt nu!ere ntre0i i dou !etode care realizeaz adunarea4 respectiv n!ulirea lor.

    Cod:

    Pentru a crea un obiect de tipul1ritmeticavo! utiliza o instruciune de tipulB

    $arit = ne9 Ariteti%a

    (cu! pute! utiliza !etodele clasei pentru a afia su!a sau produsul celor dou nu!ere vo!putea apela cele dou !etode astfelB

    e%ho $arit S*a / 0e%ho $arit Pro,*s / 0

    o! obine rezultatele #4 respectiv %. alorile datelor !e!bre pot fi i ele !odificate prininstruciuni de tipulB

  • 8/11/2019 120956012 Despre Limbajul PHP

    47/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    48/217

    unc%on P!odusN012!eu!n $h%s E> A $h%s E> 8 A $h%s E> ;3

    3?>

    Dac defini! un obiect prin inter!ediul unei instruciuni de 0enulB

    $aritB = ne9 Ariteti%aB

    atunci pentru acest obiect vo! putea utiliza att !etodele definite n cadrul claseiAriteti%aB! S*aB/ 0i Pro,*sB/ 04 ct i !etodele definite n cadrul clasei de bazAriteti%a! S*a/ 0i Pro,*s/ 0.@n continuare avei un e5e!plu care ilustreaz !odul n care pot fi create i utilizate claselederivate.

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    49/217

    echo $a!%#N E>Su#a01B"";echo "P!odusul celo! !e% nu#e!e) ";echo $a!%#N E> P!odus01B"";

    $a!%#N E> = G;$a!%#N E> 8 = 4;$a!%#N E> = N;echo "";echo "upa #od%%ca!eB";echo "";echo "Su#a p!%#elo! doua nu#e!e) ";echo $a!%#N E> Su#aN01B"";echo "P!odusul p!%#elo! doua nu#e!e) ";echo $a!%#N E> P!odusN01B"";echo "Su#a celo! !e% nu#e!e) ";echo $a!%#N E> Su#aN01B"";echo "P!odusul celo! !e% nu#e!e) ";echo $a!%#N E> P!odusN01B"";?>

    ;ezultatul codului de !ai sus esteB

    Citat:

    Inainte de modificare.Suma primelor doua numere& rodusul primelor doua numere& )Suma celor trei numere& rodusul celor trei numere& )

    Dupa modificare.

    Suma primelor doua numere& *+rodusul primelor doua numere& )Suma celor trei numere& *+rodusul celor trei numere& )

    @n PHP clasele trebuie definite naintea utilizrii lor aadar clasa printe va fi definitntotdeauna naintea clasei fiu.

    "onstructori

    Un constructor este o !etod CfuncieE a unei clase care este apelat auto!at n !o!entul ncare este creat o nou instan a clasei Ccu a)utorul operatorului newE. @n PHP4 esteconsiderat ca fiind un constructor4 orice funcie care are acelai nu!e cu clasa n interiorulcreia este definit.$onstructorii pot fi folosii pentru iniializarea datelor !e!bre cu valori care nu suntconstante. :i pot avea ar0u!ente4 iar acestea pot fi optionale. Pentru a putea utiliza clasa fra specifica nici un para!etru n !o!entul crerii unui obiect4 se reco!and stabilirea unorvalori i!plicite pentru toate ar0u!entele constructorului. @n cazul n care nu este definit unconstructor pentru o anu!it clas4 se utilizeaz constructorul clasei de baz4 dac aceastae5ist. De e5e!plu4 pentru ur!toarea secven de cod4 n !o!entul crerii obiectuluicorespunztor variabilei 'b4 va fi apelat constructorul clasei1.

    http://www.tutoriale.far-php.ro/index.php?p=Clase%20%26%23351%3Bi%20obiecte%20%26icirc%3Bn%20PHP#%23http://www.tutoriale.far-php.ro/index.php?p=Clase%20%26%23351%3Bi%20obiecte%20%26icirc%3Bn%20PHP#%23
  • 8/11/2019 120956012 Despre Limbajul PHP

    50/217

    Cod:

    @n PHP apelul constructorului clasei de baz trebuie s fie e5plicit dac este necesare5ecutarea operaiilor corespunztoare. @n !a)oritatea li!ba)elor de pro0ra!are e5ist funciispeciale nu!ite destructori care sunt apelate auto!at n !o!entul Jdistru0eriiJ unui obiect. @nPHP nu e5ist destructori.

    6peratorul ##

    Uneori este util folosirea unor !etode sau variabile ale clasei de baz sau ale unei clase carenu a fost instaniat nc. @n acest scop a fost introdus operatorul##Pentru a descrie !odul de utilizare al acestui operator voi prezenta !ai nti un e5e!pluB

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    51/217

    33

    7 )) ee#plu01;$b = ne 6;$b E> ee#plu01;$b = ne 6;?>

    Prin inter!ediul instruciunii

    A !! e#epl*/ 0

    este apelat !etoda e#epl*/ 0a clasei (4 aadar se afieaz !esa)ul NF*n%tia %lasei ,e ba;aNcu toate c nu e5ist nici un obiect care este o instan a acestei clase4 deci nu pute! scrie oinstruciune de tipul $a e#epl*/ 0@n sc+i!b apel! !etoda

    $b e#epl*/ 0

    ca Jo funcie a claseiJ i nu ca Jo funcie a unui obiectJ. Pute! avea funcii ale claselor4 dar nupute! avea variabile ale claselor. De fapt4 n !o!entul unui astfel de apel nu se creeaza niciun obiect care este instan a clasei respective. $a ur!are4 o funcie a unei clase nu poateopera asupra unor proprieti ale clasei4 dar poate utiliza variabile locale sau 0lobale. @n plus4o astfel de funcie nu poate utiliza pseudo-variabila *t!is.@n e5e!plul anterior4 n cadrul clasei 3este redefinit funcia e#epl*/ 0. (adar4 definiiaJori0inalJ Cdin cadrul clasei1E nu poate fi accesat n interiorul clasei dect dac ne referi!la ea e5plicit prin inter!ediul operatorului ##.

    ,ccesarea clasei de baza

    @n e5e!plul anterior a! utilizat o funcie a clasei de baz. @n locul utilizrii denu!irii clasei de

    baza poate fi folosit denu!irea specialparentcare este o referin la clasa de baz definitn cadrul construciei e#ten,s. 7olosirea denu!irii speciale este util n cazul n care ierar+iade clase se !odific. @n acest caz este suficient o sin0ur !odificare n cadrul construcieie#ten,s4 fr a !ai fi necesare !odificri n interiorul clasei derivate. (adar4 definiia clasei 3poate fi rescris astfelB

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    52/217

    a variabilei respective. (adar4 serializarea per!ite JsalvareaJ valorilor unei variabile. Daceste serializat un obiect sunt salvate doar proprietile acestuia Cvariabilele !e!breE inu!ele clasei din care face parte4 nu i !etodele4 deoarece funciile nu reprezint valori.Pentru a serializa un obiect este utilizat funciaseriali4e/ 0care returneaz irul de octeicare conine reprezentarea binar.Pentru a deserializa un obiect se folosete funcia perec+e unseriali4e/ 0.Pentru ca o astfel de operaie s funcioneze corect este necesar definirea clasei din care face

    parte obiectul respectiv. 7uncia returneaz valoarea variabilei serializate. @n e5e!plul ur!toravei prezentat !odul n care poate fi serializat i deserializat un obiect. Wirul de octei obinut

    n ur!a serializrii va fi scris ntr-un fiier i va fi citit din fiierul respectiv pentru efectuareadeserializrii. De obicei serializarea i deserializarea sunt realizate n docu!ente p+p diferitedeoarece aeste operaii nu au aproape nici o utilitate dac sunt folosite n cadrul aceluiaidocu!ent. Pri!ul docu!ent n care se realizeaz serializarea trebuie s conin o secvenase!ntoare cu ur!toareaB

    Cod:

    Pentru deserializare al doilea docu!ent va conine ur!toarea secvenB

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    53/217

    $a E> sho*one01;?>

    ;eferinele pot fi utilizate pentru a accesa coninutul unei variabile folosind !ai !ulte nu!e.pre deosebire de li!ba)ul $4 n PHP referinele nu sunt pointeri4 ci alias-uri ntr-o tabela desi!boluri. @n PHP denu!irile variabilelor i coninutul acestora nu sunt unul i acelai lucru.(adar este posibil ca acelai coninut s aib denu!iri diferite.

    Utilizarea referinelor

    ;eferinele PHP per!it unor variabile cu denu!iri diferite s corespund unui acelai coninut.$u alte cuvinte4 instruciunea

    $a = $b

    are ca efect faptul c 'ai 'brefer aceeai variabil. @n aceast situaie 'ai 'b"e a*a%elai stat*t. N* se poate sp*ne %U 'are&erU 'bsa* inCers. O altU posibilitate ,e *tili;are are&erin8elor este transiterea prin re&erin8U a paraetrilor *nei &*n%8ii. E&e%t*l *nei ast&el ,etransisii este %rearea *nei Cariabile lo%ale %are re&erU spre a%elai %on8in*t %a Cariabila ,in%onte#t*l apelant. SU l*U n %onsi,erare *rUtor*l e#epl*!

    Cod:

    -ni8ial Caloarea Cariabilei 'aeste J. (*pU apel Cariabila lo%alU $Car i Cariabila ,in %onte#t*lapelant 'ain,i%U spre a%elai %on8in*t. Valoarea pUstratU n lo%a8ia ,e eorie respe%tiCUeste in%reentatU /,eCine 0 prin intere,i*l instr*%8i*nii $Car@@.(atoritU &apt*l*i %U %ele ,o*U Cariabile a* a%elai %on8in*t Caloarea Cariabilei 'aCa &i ,*pUe#e%*tarea &*n%8iei.5n paraetr* transis prin re&erin8U poate &i! o CariabilU o instr*%8i*ne ne* o re&erin8U ret*rnatU ,e o &*n%8ie.(a%U *nei ast&el ,e &*n%8ii i se transite %a paraetr* *n alt tip ,e e#presie re;*ltat*l estene,e&init. Aa,ar pentr* o &*n%8ie %are are *n paraetr* transis prin re&erin8U n* se poate&olosi o %onstantU n oent*l apel*l*i. (e e#epl* pentr* &*n%8ia in%/ 0 pre;entatU anteriorn* este peris *n apel ,e &ora in%/J0.

    5eferine globale

    Wn oent*l ,e%larUrii *nei Cariabile globale /printro instr*%8i*ne ,e tip*l global$Car0 se%reea;U ,e &apt o re&erin8U spre o CariabilU globalU. :* alte %*Cinte a%eastU instr*%8i*ne estee%hiCalentU %* $Car = $1LO2ALS [>Car>.

  • 8/11/2019 120956012 Despre Limbajul PHP

    54/217

    5eferina 'this

    Wn %a,r*l *nei eto,e a *n*i obie%t 'thiseste ntot,ea*na o re&erin8U spre obie%t*l %are*tili;ea;U &*n%8ia /obie%t*l %*rent0.

    "rearea i)a3inilor t!u)bnails

    (cest tutorial v va nva cu! s creai t+u!bnail-uri ale unor i!a0ini !ai !ari cadi!ensiune. &+u!bnail-urilesunt nite i!a0ini n !iniatur de o rezoluie !ai !ic. /datapsat un t+u!bnail vo! desc+ide poza ori0inal. vede! n continuare cu! vo! faceacest lucru posibil. @n pri!ul rnd ave! nevoie de dou foldereB unul pentru i!a0inileori0inale4 i l vo! denu!ipicturesi unul pentru t+u!nail-uri pe care l vo! denu!ithumbnails. $eea ce este foarte i!portant este c n aceste dou foldere nu trebuie s se0seasc dect i!a0ini de tip 9PK altfel vo! nt!pina erori. :ste evident c pute! adaptascriptul pentru orice for!at de i!a0ine4 K87 sau PAK ns scopul principal al acestui tutorial

    este acela de a v face s ntele0ei care sunt paii pe care trebuie sa i ur!ai cnd facei unase!enea script.PHP-ul pe care l rulai trebuie s aib activat libraria KD2pentru a rula acest script4 altfelvei nt!pina o eroare prin care v va fi adus la cunotin c funcia pentru i!a0ini nu poatefi 0sit. Dac librria KD2 nu este activ o putei activa n felul ur!tor n !ediul 8AD/Badu0ai liniile ur!toare n p+p.iniB

    e#tension=php_g,.,ll

    o! desc+ide directorulpicturesi thumbnailsi vo! citi nu!ele fiecrui fiier care e5istn aceste directoare i le vo! !e!ora n vectorul $pi%t*resi $th*bnails

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    55/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    56/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    57/217

    3else

    2$hu#bna%ls = a!!a801;3

    3closed%!0$open*hu#bna%ls1;

    $d%*p%c = a!!a8*d%0$p%cu!es: $hu#bna%ls1;$d%*u#b = a!!a8*d%0$hu#bna%ls: $p%cu!es1;o!each0$d%*p%c as $De8 => $alue1

    2$%#age*na#e = .p%cu!es/.B$alue;$%#age*a!%bs = ge%#ages%e0$%#age*na#e1;$#a*%dh = 'OO;$#a*he%gh = 'OO;$!a%o = 0$%#age*a!%bs-O > $%#age*a!%bs-'1 ? $#a*%dh / $%#

    age*a!%bs-O ) $#a*he%gh / $%#age*a!%bs-';$hu#bna%l*%dh = $%#age*a!%bs-O A $!a%o;$hu#bna%l*he%gh = $%#age*a!%bs-' A $!a%o;

    $%#age = %#agec!eae!o#Upeg0$%#age*na#e1;$%#age*ne = %#agec!eae!uecolo!0$hu#bna%l*%dh: $hu#bna%l*he%g

    h1;%#agean%al%as0$%#age*ne: !ue1;$hu#bna%l*na#e = .hu#bna%ls/.B$alue;%#agecop8!esa#pled0$%#age*ne: $%#age: O: O: O: O: $hu#bna%l*%dh:

    $hu#bna%l*he%gh: $%#age*a!%bs-O: $%#age*a!%bs-'1;%#ageUpeg0$%#age*ne: $hu#bna%l*na#e1;%#agedes!o80$%#age1;3

    o!each0$d%*u#b as $De8 => $alue1 2

    unl%nD0"hu#bna%ls/"B$alue1;3

    $open*hu#bna%ls = opend%!0"hu#bna%ls"1;$l = O;$#odulo = 4;

    echo ..;h%le0$%le = !eadd%!0$open*hu#bna%ls11

    2%0subs!0$%le: O: '1 = .B.1

    2%0$l K $#odulo == O1

    2echo ..;echo ..;echo ..;echo ..;3

    %0$l K $#odulo == $#odulo E '12echo ..;3

    $lJJ;

  • 8/11/2019 120956012 Despre Limbajul PHP

    58/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    59/217

    echo "7uen%%ca!e";echo "";echo "

    Salu 2$*SRR-.PHP*7TH*SR.3

    ";echo "

    Pa!ola %n!odusa ese 2$*SRR-.PHP*7TH*PY.3B

    ";echo "";3

    ?>

    ;ezultatul codului de !ai sus l putei vedea dnd cli aici.

    Pentru o co!patibilitate ct !ai !are4 cuvntul 3asictrebuie scris cu !a)uscul4 valoareapentru realmtrebuie s fie cuprins ntre 0+ili!ele Cnu ntre apostrofuriE4 iar ntre HTTP"

  • 8/11/2019 120956012 Despre Limbajul PHP

    60/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    61/217

    secooD%e 0"cooD%e-one": "cooD%eone"1;% 0%sse 0$cooD%e11

    2h%le 0l%s0$na#e:$alue1=each0$cooD%e11

    2echo "$na#e == $alue";3

    3?>

    Pentru a accesa cooie-urile stocate pe calculatorul unui vizitator al pa0inii eb4 estedisponibil vectorul '8OO9;. oi prezenta n continuare un e5e!plu cu a)utorul cruia se0enereaz o pa0in care conine denu!irile i valorile tuturor %oo)ie-urilor.

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    62/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    63/217

    @ncepnd cu versiunea PHP ".2.4 n ur!a efecturii unui transfer4 sunt 0enerate anu!itecoduri de eroare. ersiunea ".3. introduce constante predefinite pentru fiecare dintre acestecoduri. @n funcie de codul de eroare 0enerat n ur!a operaiei4 trebuie realizate diferiteaciuni. $odul de eroare poate fi accesat prin inter!ediul ele!entului al vectoruluicare pstreaz infor!aiile despre fiier. $odurile de eroare care pot fi 0enerate suntur!toareleB

    - UP56,D+E77+6 A nu a fost se!nalat nici o eroare n ti!pul transferului operaia de ncrcare s-a nc+eiatcu succes- UP56,D+E77+;>; AQ di!ensiunea fiierului este !ai !are dect valoarea !a5i! per!is Caceast valoareeste specificat n !o!entul confi0urrii server-ului i poate fi sc+i!bat !odificnd fiierulPHP.8A8E- UP56,D+E77+:67?+S;E A di!ensiunea fiierului este !ai !are dect valoarea !a5i! indicat de directivaC1DBL;+E;care este specificat n for!ular aceast valoare este specificat prininter!ediul unui c!p ascuns al crui te5t este C1DBL;+E;- UP56,D+E77+P,78;,5 A fiierul a fost ncrcat doar parial

    - UP56,D+E77+>6+:;5E AV nu a fost ncrcat nici un fiier.

    \ncrcarea )ai )ultor fiiere

    :5ist posibilitatea de a ncrca !ai !ulte fiiere dac sunt folosite nu!e diferite pentru!arca)ul LinputM utilizat pentru afiarea casetei de te5t i a butonului folosite pentru ale0ereafiierului. De ase!enea4 este posibil ca fiierele ncrcate s fie or0anizate auto!at ntr-unvector. Pentru aceasta4 la nu!ele folosite trebuie adau0ate caracterele N V N. Un e5e!plu esteprezentat n continuareB

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    64/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    65/217

    Includerea n cadrul funciilor

    ac_ d%!ec%a de %nclude!e apa!e n cad!ul une% unc`%%: aunc% se

    cons%de!_ c_ oae %ns!uc`%un%le d%n cad!ul %^%e!ulu% %nclus acpa!e d%n co!pul unc`%e%B 7^ada!: do#en%ul de %%b%l%ae ala!%ab%lelo! olos%e n %^%e!ul %nclus ese acela^% cu do#en%ul peca!e lEa! % au dac_ a! % ap_!u n cad!ul unc`%e%B Pen!u a%lus!a aces aspec o# cons%de!a un %^%e! var.txtca!e con`%nesecen`a)

    Cod:

    ^% u!#_o!ul docu#en PHP)

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    66/217

    un v"r%":

    deoa!ece: n aa!a unc`%e%: a!%ab%la $fructnu a os de%n%_ane!%o! ^% ese auo#a %n%`%al%aa cu ^%!ul %dB

    Includeri prin HTTP

    up_ cu# a`% obse!a: d%!ec%a includea!e ca pa!a#e!u un ^%! deca!ace!e ca!e con`%ne nu#ele %^%e!ulu% ca!e a % %nclusB 7cesapoae % o!%ce R5 al%d: a^ada! ese pos%b%l_ %nclude!ea unu% %^%e!ala pe un al se!e!B n ee#plu a! puea %include(http'.*it"u#."upa,ina."a);.( asel de d%!ec%_unc`%oneaa doa! dac_ se olo^ese PHP 4BNBO sau o e!s%une ule!%oa!_B

    Includerea unui fiier o singur dat

    neo!%: #a% ales n s%ua`%%le n ca!e se olosesc a!%ab%le pen!u

    nu#ele %^%e!elo! %ncluse: ese pos%b%l ca anu#%e %^%e!e s_ %e%ncluse de #a% #ule o!%B e ob%ce%: %^%e!ele %ncluse con`%n de%n%`%%ale uno! unc`%% sau clase: #o% pen!u ca!e ese de do!% ca unasel de %^%e! s_ nu %e %nclus de #a% #ule o!%B Pen!u ca un %^%e!s_ %e %nclus o s%ngu!_ da_: se u%l%ea_ o d%!ec%a ale!na%_nu#%_ include_onceB up_ cu# !eul_ d%n denu#%!e: un %^%e! a %%nclus o s%ngu!_ daaB Cu ale cu%ne: n #o#enul n ca!e se ce!e%nclude!ea unu% %^%e!: se e!%%c_ dac_ acesa a os deUa %nclus ^%n aceas_ s%ua`%e d%!ec%a nu a!e n%c% un eec 0%^%e!ul nu ese%nclus nc_ o da_1BAlternative:Pe lng_ d%!ec%ele include^% include_oncee%s_ dou_ ale d%!ec%ea c_!o! u%l%a!e a!e un eec ap!oape ech%alenB 7cesea sun require0ech%alen_ cu include1 ^% require_once0ech%alen_ cu include_once1BS%ngu!a d%e!en`a d%n!e include^% require0!espec% d%n!einclude_once^% require_once1 ese da_ de #odul n ca!e ese !aa_s%ua`%a n ca!e %^%e!ul ca!e se do!e^e a % %nclus nu e%s_ sau nuese d%spon%b%lB n caul d%!ec%elo! include^% include_onceesegene!a un ae!%s#en ^% eecu`%a sc!%pEulu% con%nu_ _!_ ca%^%e!ul s_ %e %nclusB P!ac%c: d%n punc de ede!e log%c: ese%gno!a_ d%!ec%aB n caul d%!ec%elo! require^% require_onceesegene!a_ o e!oa!e aal_ ^% eecu`%a sc!%pEulu% ese n!e!up_B7^ada!: n s%ua`%%le n ca!e ese absolu necesa!_ e%sen`a%^%e!ulu%: pen!u a nu ap_!ea eece b%a!e: !ebu%e u%l%a_d%!ec%a require: !espec% require_onceB

    Starea conexiunii

    n PHP: cone%unea poae aea una d%n!e cele !e% s_!% pos%b%le)E!"#$% (&' sa!ea no!#al_ de unc`%ona!e;E$!"T)* (+'

    u%l%ao!ul ca!e accesea_ pag%na gene!a_ de sc!%pEul alan eecu`%e sEa deconeca 0de ob%ce% p!%n ap_sa!ea buonulu% Sop alp!og!a#ulu% de na%ga!e1;E TI#)!,T (-'

  • 8/11/2019 120956012 Despre Limbajul PHP

    67/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    68/217

    $%le = open0"loca%a/%s%e!ulu%/nu#e*%s%e!Beens%a": "!"1;%0$%le1

    2echo ",%s%e!ul nu poae % accesan";e%;3

    // c%%!ea daelo! d%n %s%e!// %nch%de!ea %s%e!ulu%close 0$%le1;?>

    Pen!u a sc!%e n %^%e! se poae olos% o secen`_ de %pul)

    Cod:

    Pue`% olos%% acese %de% pen!u a c!eea o pag%n_ cu acces!es!%c`%ona: ^% unde s_ sc!%e`% n!Eun %^%e! pe se!e! daele

    %%ao!ulu% 0cu# a! % ad!esa lu% de %p: hos: %#pul c a sa pepag%na !espec%_: ce pag%n% a %%a ecBBB1B

    Descrierea funciilor care pot fi utilizate la )anipularea tablourilor

    :uncia arraC+c!an3e+eC+case

    (ceast funcie realizeaz conversia tuturor literelor care apar n cadrul denu!irilor c+eilorele!entelor unui tablou. 7uncia are doi para!etriB un tablou asupra cruia se vor efectua

    !odificrile i un ntre0 care arat dac se vor converti toate literele !ari n litere !ici sauinvers. Pentru acest para!etru pot fi utilizate constantele predefinite $(:RUPP:; Cconversiela litere !ariE i $(:R6/:; Cconversie la litere !iciE. (cest para!etru poate lipsi4 caz ncare va avea valoarea i!plicit $(:R6/:; 4 deci va realiza conversia tuturor literelor !ari

    n litere !ici. Ur!torul script PHP ilustreaz !odul n care poate fi utilizat aceast funcie.

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    69/217

    $a = a!!a80"Pag%na" => "Pag%na": "de" => "de": "Php" => "Php"1;echo "

    Tabloul %n%%al)";

    p!%n*!0$a1;echo "

    Tabloul dupa cone!s%a %#pl%c%a)";$b = a!!a8*change*De8*case0$a1;p!%n*!0$b1;echo "Tabloul dupa cone!s%a la l%e!e #a!%)

    ";$b = a!!a8*change*De8*case0$a:C7S*PPR1;p!%n*!0$b1;echo "Tabloul dupa cone!s%a la l%e!e #%c%)

    ";$b = a!!a8*change*De8*case0$a:C7S*5(YR1;p!%n*!0$b1;echo "";?>

    Dup cu! se poate vedea4 funcia are efect doar asupra c+eilor ele!entelor4 valorile acestorar!nnd ne!odificate.

    :uncia arraC+c!uns

    (ceast funcie poate fi utilizat pentru a !pri un tablou n !ai !ulte bucti Cc+unsE. :aare trei para!etri4 i anu!eB vectorul care ur!eaz a fi !prit4 di!ensiunea unei buciCnu!rul de ele!enteE i un indicator care arat dac se pstreaz sau nu c+eile ele!entelorCacesta poate lipsi n acest caz are valoarea i!plicit &alse4 deci nu se vor pstra c+eileele!entelorE. @n cazul n care nu!rul ele!entelor tabloului iniial nu este !ultiplu aldi!ensiunii unei buci4 atunci ulti!a bucat va fi !ai JscurtJ . 7uncia va returna un tabloual bucilor Cun tablou de tablouriE.@n continuare este prezentat un e5e!plu care arat utilizarea acestei funciiB

    Cod:

    :uncia arraC+count+values

    (ceast funcie are ca para!etru un tablou i returneaz un alt tablou ale crui ele!ente auc+ei date de valorile ele!entelor tabloului trans!is ca para!etru. Pentru fiecare valoare se va0enera un sin0ur ele!ent Cc+iar dac valoarea apare de !ai !ulte oriE4 iar valoareaele!entului respectiv este dat de nu!rul apariiilor. De e5e!plu4 n ur!a e5ecuiei uneisecvene de for!aB

    $tablo* = arra3 /Pagina> ea> >Pagina> 0$re; = arra3_%o*nt_Cal*es /$tablo*0

    vectorul Qrez va conine trei ele!ente4 acestea vor avea c+eile

  • 8/11/2019 120956012 Despre Limbajul PHP

    70/217

    vor fi 4 4 respectiv

    :uncia arraC+flip

  • 8/11/2019 120956012 Despre Limbajul PHP

    71/217

    (ceast funcie are ca para!etru un tablou i returneaz un alt tablou n care a fost realizato intersc+i!bare a c+eilor ele!entelor cu valorile. $u alte cuvinte4 pentru fiecare ele!ent va ficreat un ele!ent a crui c+eie va fi va8oarea ele!entului n tabloul iniial i a crui valoare vafi c+eia ele!entului din tabloul iniial. De e5e!plu4 pentru tabloul definit prin

    $tablo* = arra3/>A> = >Pagina> >2> = >,e> >:> = >php>0

    n ur!a e5ecutrii apelului

    $b = arra3_&lip/$tablo*0

    tabloul Qb va avea for!a

    arra3/>Pagina> = >A> >,e> = >2> >php> = >:>0

    @n cazul n care n vectorul trans!is ca para!etru e5ist !ai !ulte ele!ente care au aceeaivaloare4 datorit faptului c ele!entele unui vector trebuie s aib c+ei distincte4 vor fieli!inate toate aceste ele!ente4 cu e5cepia ulti!ului.

    :unciile arraC+intersect i arraC+intersect+assoc

    (ceste funcii au un co!porta!ent si!ilar funciilor arra3_,i&&/ 04 respectivarra3_,i&&_asso%/ 0. in0ura diferen este dat de faptul c tabloul rezultat va conine toateele!entele care se afl n fiecare dintre tablourile trans!ise ca para!etri Cpentru funciaarra3_,i&&/ 0ele!entele trebuie s aib aceeai valoare4 n ti!p ce pentru funciaarra3_,i&&_asso%/ 0ele trebuie s aib aceeai c+eie i aceeai valoareE.

    :uncia arraC+eC+eists

    (ceast funcie are doi para!etri Co c+eie i un vectorE i verific4 aa cu! su0ereaz inu!ele4 dac vectorul conine un ele!ent cu c+eia respectiv. 7uncia returneaz o valoarelo0ic4 iar pentru para!etrul care reprezint c+eia poate fi folosit orice valoare care poate fic+eie ntr-un vector.

    :uncia arraC+eCs i arraC+values

    (ceste funcii returneaz un vector care conine ca valori toate c+eile Crespectiv toate valorileEele!entelor unui tablou trans!is ca para!etru. Pentru funcia arra3_)e3s/ 04 n cazul n carese foloseste un para!etru supli!entar4 vectorul rezultat va conine doar c+eile ele!entelorcare au valoarea e0al cu cea indicat de acest para!etru.

    :uncia arraC+)ap

    (ceast funcie realizeaz o transfor!are a ele!entelor unui vector pe baza unei funcii.7uncia este trans!is ca para!etru i este aplicat tuturor ele!entelor unui vector care este4i el4 trans!is ca para!etru. 8at un e5e!pluB

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    72/217

    @n ur!a e5ecutrii secvenei4 vectorul Qb va avea cinci ele!ente ale cror valori vor fi 14 *42'4 %" i 12#.:5ist posibilitatea de a trans!ite !ai !ulte tablouri ca para!etri. @n acest caz4 nu!rular0u!entelor funciei utilizate trebuie s fie e0al cu nu!rul tablourilor trans!ise i sereco!and ca tablourile s aib acelai nu!r de ele!ente. @n caz contrar4 tablourile !aiJscurteJ vor fi co!pletate cu ele!ente nule. Un artificiu interesant per!ite crearea unor

    vectori de vectori folosind funcia arra3_ap/ 0. Pentru aceasta vo! utiliza valoarea n*llpentru funcia trans!is ca para!etru. o! prezenta n continuare un e5e!pluB

    Cod:

    ectorul Qd va avea ur!atoarea structuraB

    Citat:

    7!!a80-O => 7!!a8

    0-O => unu-' => one- => un1

    -' => 7!!a8

    0-O => do%- => o-N => deu1

    - => 7!!a80-O => !e%-' => h!ee- => !o%s1

    1

    :unciile arraC+)er3e i arraC+)er3e+recursive

    (ceste funcii realizeaz o JinterclasareJ a dou sau !ai !ulte tablouri prin adu0areaele!entelor unui vector la sfritul tabloului anterior. @n cazul n care e5ist ele!ente cuaceeai c+eie Creprezentat de un ir de caractereE n tabloul rezultat va aprea un sin0urele!ent cu c+eia respectiv4 i anu!e pri!ul ntlnit n ti!pul interclasrii. @n cazul n carec+eia identic este reprezentat de un nu!r4 n tabloul rezultat vor aprea a!bele valori4 darvaloarea corespunztoare unei c+ei care apare de)a n tablou va avea c+eia reprezentat decel !ai !ic nu!r !ai !are dect c+eia iniial care nu apare nca n tabloul rezultat.@n cazul n care tablourile conin ele!ente care sunt tablouri4 atunci funcia estearra3_erge_re%*rsiCe/ 0i are ca efect i interclasarea acestor tablouri Ccare sunt ele!ente

  • 8/11/2019 120956012 Despre Limbajul PHP

    73/217

    ale altor tablouriE i procedeul continua recursiv. @n cele ce ur!eaza vo! prezenta un e5e!plucare ilustreaz diferenele dintre cele dou funcii.

    Cod:

    :uncia arraC+)ultisort

    (ceast funcie poate fi utilizat pentru a sorta !ai !ulte tablouri sau un tablou!ultidi!ensional. Pri!ul para!etru al funciei trebuie s fie un tablou4 iar ur!toarele pot fitablouri i indicatori de sortare. 7iecare indicator de sortare descrie caracteristici ale sortriipentru cel !ai apropiat tablou aflat naintea indicatorului n lista de para!etri. :5ista doucate0orii de indicatori de sortareB

    - indicatori de ordineB- /;&R($B sortare n ordine cresctoare- /;&RD:$B sortare n ordine descresctoare

    - indicatori de tipB- /;&R;:KU6(;B ele!entele sunt co!parate fr a efectua conversii- /;&RAU

  • 8/11/2019 120956012 Despre Limbajul PHP

    74/217

    sortate.

    o! prezenta acu! un e5e!plu n care vo! sorta un tablou bidi!ensional definit prinB

    $C = arra3/arra3/> 0 arra3/>

  • 8/11/2019 120956012 Despre Limbajul PHP

    75/217

    alese. (cest al doilea para!etru poate lipsi4 caz n care are valoarea i!plicit 1. @n cazul ncare se ale0e un sin0ur ele!ent4 funcia va returna c+eia acestuia. @n caz contrar4 funcia vareturna un tablou care va conine c+eile ele!entelor alese. @n continuare este un e5e!plu careilustreaz !odul de utilizare a acestei funcii.

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    76/217

    Cdatorita faptului ca vectorul Q5 este vidE.

    :uncia arraC+reverse

    (ceast funcie inverseaz ordinea ele!entelor unui vector trans!is ca para!etru. @n cazul ncare este prezent un al doilea para!etru i valoarea acestuia este &;U: Ceventual dup oconversieE4 atunci se pstreaz corespondena dintre c+ei i valori. 7uncia returneaz tabloul

    obinut dup inversare. consider! tabloul definit astfelB

    $C = arra3/>Pagina> >,e> >prograare> arra3/>artie> QQ00

    @n ur!a apelurilor $a = arra3_reCerse/$C0i $b = arra3_reCerse/$C TR5E0tablourile Qa i Qbvor avea for!a prezentat !ai )osB

    (rra=CV XM (rra=CV XM !artie1V XM 2"E

    1V XM pro0ra!are2V XM de3V XM Pa0inaE

    (rra=C3V XM (rra=CV XM !artie1V XM 2"E

    2V XM pro0ra!are1V XM deV XM Pa0inaE

    &abloul Qa &abloul Qb

    :uncia arraC+searc!

    (ceast funcie verific dac un vector conine un ele!ent care are o anu!it valoare i4 dacun astfel de ele!ent e5ist4 returneaz c+eia acestuia. @n caz contrar funcia returneazvaloarea 7(6:. Pri!ul para!etru al funciei este valoarea cutat4 iar al doilea este vectorul

    n care este cutata valoarea respectiv. 7uncia per!ite folosirea unui al treilea para!etrucare este opional. @n cazul n care acesta e5ist i are valoarea &;U:4 atunci n ti!pul cutriise verific i e0alitatea tipurilor.

    :uncia arraC+slice

    (ceast funcie poate fi utilizat pentru a prelua o poriune a unui tablou. Pri!ul para!etrureprezint tabloul4 al doilea reprezint poziia la care ncepe poriunea preluat4 iar al treileaindica nu!rul ele!entelor preluate. (ceast funcie i0nor c+eile ele!entelor i ia nconsiderare pozitiile JrealeJ ale ele!entelor n tablou. @n cazul n care valoarea celui de-aldoilea para!etru este pozitiv4 poziia de nceput este deter!inat relativ fa de nceputultabloului. Pentru o valoare ne0ativ4 poziia este deter!inat relativ fa de sfritul tabloului.@n cazul n care valoarea celui de-al treilea para!etru este pozitiv4 ea va indica nu!rulele!entelor preluate. Dac ea este ne0ativ4 atunci valoarea sa absolut va indica poziia fade sfritul vectorului la care se va JopriJ preluarea ele!entelor. (cest para!etru poate lipsi4caz n care sunt preluate toate ele!entele4 pn la sfritul tabloului. 7uncia va returna untablou care va conine ele!entele preluate.@n continuare este prezentat !odul n care poate fi utilizat aceast funcie pentru a preluaporiuni ale unui vector.

    Cod:

  • 8/11/2019 120956012 Despre Limbajul PHP

    77/217

    echo "";o!each0$ as $al1

    2echo "$al";3

    echo "";3

    $ = a!!a80"a": "b": "c": "d": "e"1;echo "eco!ul %n%%al)";%spla87!!a80$1;echo "a!!a8*sl%ce0$:1)";%spla87!!a80a!!a8*sl%ce0$:11;echo "a!!a8*sl%ce0$::E'1)";%spla87!!a80a!!a8*sl%ce0$::E'11;echo "a!!a8*sl%ce0$:E:'1)";%spla87!!a80a!!a8*sl%ce0$:E:'11;echo "a!!a8*sl%ce0$:O:N1)";%spla87!!a80a!!a8*sl%ce0$:O:N11;echo "";?>

    :uncia arraC+splice

    :fectul acestei funcii este si!ilar efectului funciei arra3_sli%e/ 04 diferena constnd n faptulc poriunea preluat este eli!inat din tablou i nlocuit cu ele!entele unui al patruleapara!etru care reprezint un vector.

    :uncia arraC+su)

    (ceast funcie calculeaz su!a ele!entelor unui tablou. @n funcie de tipul ele!entelor4rezultatul va fi un nu!r ntre0 sau un nu!r real. Pentru valorile nenu!erice se ncearcefectuarea unei conversii la nu!ere ntre0i sau reale i n cazul n care valorile pot fi convertiteCrezultatul conversiei nu este E ele sunt luate n considerare n !o!entul calculrii su!ei. Dee5e!plu4 n ur!a e5ecutrii secveneiB

    $a = arra3/ M0e%ho >s*a/a0 = >.arra3_s*/$a0.>Zn>$b = arra3/>a> = b> = .B >%> = B.0e%ho >s* /b0 = >.arra3_s*/$b0.>Zn>

    se va afisaB

    s*/a0 = Qs*/b0 = .K

    :uncia arraC+uni]ue

    (ceast funcie eli!in dintr-un vector toate valorile care apar de dou sau !ai !ulte ori i

    returneaz vectorul obinut n ur!a eli!inrii. Pentru a eli!ina ele!entele4 funcia le sorteaz!ai nti considerandu-le iruri de caractere. (poi4 pentru fiecare valoare care apare de !ai!ulte ori4 va pstra pri!a c+eie ntlnit n irul sortat.

    :uncii de sortare

    8nterpretorul PHP pune la dispozitie o !uli!e de funcii care pot fi utilizate pentru a sortaele!entele unui tablou. (cestea sunt Cn ordine alfabeticEB- arsortC E - sorteaz un tablou n ordine descresctoare i pstreaz asocierile dintre indici- asortC E - sorteaz un tablou n ordine cresctoare i pstreaz asocierile dintre indici

  • 8/11/2019 120956012 Despre Limbajul PHP

    78/217

    - rsortC E - sorteaz un tablou n ordine descresctoare n funcie de c+eile ele!enteloracestuia- sortC E - sorteaz un tablou n ordine cresctoare n funcie de c+eile ele!entelor acestuia- natcasesortC E - sorteaz un tablou folosind o Jordine naturalJ fr a face distincie ntreliterele !ari i literele !ici- natsortC E - sorteaz un tablou folosind o Jordine naturalJ fcnd distincie ntre literele !arii literele !ici

    - rsortC E - sorteaz un tablou n ordine descresctoare n funcie de valorile ele!enteloracestuia- sortC E - sorteaz un tablou n ordine cresctoare n funcie de valorile ele!entelor acestuia- uasortC E - sorteaz un tablou folosind pentru co!parri o funcie indicat de utilizator ipstreaz asocierile dintre indici- usortC E - sorteaz un tablou n funcie de c+eile acestuia folosind pentru co!parri ofuncie indicat de utilizator- usortC E - sorteaz un tablou folosind pentru co!parri o funcie indicat de utilizator.

    &oate funciile necesit un para!etru care reprezint vectorul care trebuie sortat.7unctiile arsort/ 0 asort/ 0 )rsort/ 0 )sort/ 0 rsort/ 0 isort/ 0per!it utilizarea unui al doileapara!etru CopionalE care este un indicator de tip. aloarea i!plicit a acestuia esteSORT_RE15LAR. (l doilea para!etru al funciilor *asort/ 0 *)sort/ 0 i*sort/ 0reprezintidentificatorul funciei care va fi folosit pentru co!parare.

    7unciile natsort/ 0 inat%asesort/ 0nu per!it utilizarea unui alt para!etru i stabilesc ordineaaa cu! ar face o fiin u!an Cordine naturalE. De e5e!plu4 pentru irurile de caractere-1

  • 8/11/2019 120956012 Despre Limbajul PHP

    79/217

    (ceast funcie este utilizat pentru a crea variabile pe baza valorilor ele!entelor unui vector.$+eile ele!entelor vor deveni identificatori de variabile4 iar valorile ele!entelor vor devenivalorile variabilelor respective. 7uncia verific dac c+eile reprezint identificatori valizi aivariabilelor sau dac se ncearc crearea unei variabile care e5ista de)a. (ceste situaii sunttratate n funcie de valoarea unui al doilea para!etru care reprezint un indicator i esteopional. alorile posibile pentru acest para!etru sunt ur!toareleB

    - :F&;R/:;;8&: B dac variabila e5ist de)a4 valoarea curenta va fi suprascris- :F&;R/:;;8&: B dac variabila e5ist de)a4 valoarea curenta nu va fi !odificat- :F&;RP;:78FR(

  • 8/11/2019 120956012 Despre Limbajul PHP

    80/217

  • 8/11/2019 120956012 Despre Limbajul PHP

    81/217

    unt si0ur c unii dintre voi la nceput cnd puneai fiierele pe server v ntrebai de ce nu!er0 anu!ite pa0ini dei lin-ul era corect i pa0ina era pus pe server... proble!a eradiferena dintre !a)uscule i !inuscule. Pentru a evita proble!ele4 !ai ales atunci cnddeplasai fiiere ntre UA8F i indos4 trebuie s folosii !inuscule4 cifre4 puncte4 caracterede subliniere i crati!e n nu!ele fiierelor de ase!enea4 nu!ele fiierelor trebuie s nceapcu o !inuscul sau cu o cifr.

    (izualizarea infor)aiilor despre fiierePen