PHP Intercer

Embed Size (px)

Citation preview

  • 8/18/2019 PHP Intercer

    1/42

    Array : Reprezinta o structura ordonata pe mai multe dimensiuni. Datelecontinute intr-un Array pot fi de tipuri diferite.

    Sintaxa pentru definire este urmatoarea:$nume_array[cheie] = valoare;

    cheie – poate fi de tipul String sau Integer nenegativvaloare – poate fi orice

    Definirea se poate face in mai multe moduri: Acesta!a " array# $culoare$ "% $rosu$  & $gust$ "% $dulce$  & $forma$ "% $rotund$  & $nume$ "% $mar$  & ' cheia este (  )*

    este a+solut echivalent cu!a,$culoare$ " $rosu$*!a,$gust$ " $dulce$*!a,$forma$ " $rotund$*!a,$nume$ " $mar$*!a, " '* cheia este (

    sau!+, " $a$*!+, " $+$*!+, " $c$* a rezulta sirul array# ( "% $a$ & / "% $+$ & 0 "% $c$ )& sau mai simplu& sirul array#$a$& $+$& $c$)

    Referirea la o varia+ila de tip ta+lou se face cu numele ta+loului si cheie:echo 12ructul !a,3nume4 are gust !a,3gust4.5*a afisa: 2ructul mar are gust dulce.

    Null : Sintaxa de atri+uire a acestei valori unei varia+ile este urmatoarea:!a " 6ull*

    I. Introducere

    1) Scrierea de programe PHP

    2iecare program 787 incepe cu sim+olurile:9

    si se incheie cu sim+olurile:%

     Exemplu:

    9

     print ;Acesta este primul meu program;*

    %

    2) Comentariul

      si > .

     Exemplu:

    9 Acesta este primul meu comentariu

    >tot ce scriu intre aceste sim+oluri esteun comentariu si nu va avea efect la executarea programului.>

     print ;Acesta este primul meu program;*

    %

      ?' ?/

  • 8/18/2019 PHP Intercer

    2/42

    II. DATETipuri de date, aria!ile, Con"tante, #peratori, De$inire

    $unctii

    1. TIP%&I DE DATE

    @ipurile de date cele mai folosite in 787 sunt urmatoarele:

    - +oolean- integer - floating-points- string- array- null.

    'oolean( varia+ila de tipul +oolean poate avea doar doua valori:@R

  • 8/18/2019 PHP Intercer

    3/42

    peratori de incrementaredecrementareKK!a 7re-incrementare #aduna / la !a& apoi returneaza !a)!aKK 7ost-incrementare #returneaza !a& apoi aduna / la !a)--!a 7re-decrementare #scade / din !a& apoi returneaza !a)!a-- 7ost-decrementare #returneaza !a& apoi scade / din !a)

    peratori logici!a and !+ Si!a or !+ Sau!a xor !+Sau-BxclusivP !a 6ot #6egare)!a QQ !+ Si!a !+ Sau

    Du!la indirectare +)(

      Stim dea ca oricarei varia+ile i se poate atri+ui o valoare& de forma:

    !varia+ila " *

    sau

    !varia+ila0 " ;8ello TorldP;*

      Bi +ine& cand dorim ca $numele$ varia+ilei sa fie in functie de ovaria+ila #de exemplu transmisa de utilizator printr-un formular - desidau acest exemplu doar ca sa se inteleaga& nu e +ine in general sa neincredem in ceea ce ne poate transmite utilizatorul& ci tre+uie saverificam aceasta foarte +ine& din motive de siguranta)

    De exemplu& varia+ila !myvar " $alta$*

    Jun& pana aici stim ce se intampla& nu

    Daca scriem in programul nostru:

    echo !myvar*va aparea: alta

    2. A&IA'I-E

    aria+ilele sunt precedate de semnul dolar # ! ). 6umelevaria+ilelor este case-sensitive& adica tine cont de litere mari sau mici#!var este o varia+ila diferita de !ar). 6umele unei varia+ile tre+uie sainceapa cu o litera sau liniuta de su+liniere # U ) urmata de oricate litere&cifre sau liniute de su+liniere.

     Exemplu:

    !var " 1Jo+5*!ar " 1Vohn5*echo 1!var& !ar5* a afisa: 1Jo+& Vohn5

    !'me " 1varia+ila5* incorect – numele incepe cu o cifra!U'me " 1varia+ila5* corect – numele incepe cu liniuta de su+liniere

    In 787 este permisa atri+uirea unei valori prin referinta. Aceastainseamna ca noua varia+ila va fi o referinta spre varia+ila originala.Wodificarea varia+ilei noi va duce la modificarea celei originale& siinvers. Aceasta atri+uire are loc mult mai rapid& iar efectul se o+serva maiales in structuri care se repeta. 7entru o astfel de atri+uire se folosestesemnul # Q ) in fata valorii atri+uite.

     Exemplu:

    !a " 3+anana4*!+ " Q!a* varia+ila !+ va contine stringul 3+anana4!+ " 3portocala4* modificand varia+ila !+ se va modifica si !a

    Variabilele declarate in cadrul unui program nu sunt valabile si in interiorulfunctiilor definite de utilizator. Variabilele globale sunt valabila in tot programul,iar variabilele locale sunt valabile doar in cadrul structurii definite de utilizator.

    Bxemplu:

    !a " /* > varia+ila glo+ala >

    2unction @est #) E

    ?' ?/

  • 8/18/2019 PHP Intercer

    4/42

    echo !a* > referinta spre o varia+ila locala >

    G

    @est #)*

    Aceasta functie nu va afisa nimic& pentru ca varia+ila locala !a nuare atri+uita nici o valoare. 7entru a folosi o varia+ila glo+ala in interiorulfunctiei definite de utilizator& ea tre+uie declarata in cadrul functiei cuclauza glo+al.

    !a " /* > varia+ila glo+ala >

    2unction @est #) Eglo+al !a*

      echo !a* > referinta spre o varia+ila locala >G

    @est #)*

    Aceasta functie va afisa valoarea /& pentru ca foloseste varia+ila!a declarata glo+al.

    aria+ilele pot fi luate si dintr-un formular 8@WC sau prinspecificarea lor la apelarea paginii Te+& insa acestea vor fi tratate in altalectie.

    . C#NSTANTE

    Oonstanta este un identificator pentru o valoare simpla. Oumspune si numele& valoarea acesteia nu se modifica pe durata executieiscriptului. 6umele constantei este case-sensitive& ca si in cazulvaria+ilelor. 7rin conventie& constantele se scriu intotdeauna cu literemari.

     Exemplu:

    define#;O6S@A6@;& ;8ello Torld.;)*echo O6S@A6@* Afiseaza: ;8ello Torld.;

    Oonstantele pot contine numai date de tipul: +oolean& integer& floating- point si string. Bxista cateva diferente intre constante si varia+ile:

    - constantele nu au semnul dolar # ! ) in fata- constantele pot fi definite si accesate oriunde& fara a tine cont deregulile de la varia+ile- constantele nu pot fi redefinite.

    /. #PE&AT#&I

    peratori aritmetici!a K !+ adunare !a !+ impartire!a - !+ scadere !a X !+ modulo!a > !+ inmultire

    peratori de atri+uire!a " * !a primeste valoarea !a K" Y* !a ia valoarea ?& adica K Y.!c " #!+ " ') K Y* !+ primeste valoarea '& iar !c valoarea Z

    !+ " ;8ello ;*!+ ." ;@hereP;* atri+uie lui !+ valoarea ;8ello @hereP;& este echivalentcu !+ " !+ . ;@hereP;*

    peratori la nivel de +it!a Q !+ Si!a !+ Sau!a [ !+ Sau-Bxclusiv\ !a 6ot #6egare)!a 99 !+ Rotire la stanga #muta +itii lui !a cu !+ pozitii spre stanga)!a %% !+ Rotire la dreapta #muta +itii lui !a cu !+ pozitii spre dreapta)

    peratori de comparare!a "" !+ egal cu!a """ !+ identic cu!a P" !+ deferit!a 9% !+ diferit!a P"" !+ neidentic!a 9 !+ mai mic!a % !+ mai mare!a 9" !+ mai mic sau egal!a %" !+ mai mare sau egal

      ?0 ?

  • 8/18/2019 PHP Intercer

    5/42

    . a9"+ Adev]rat dac] valoarea lui a este mai mic] sau egal] cuvaloarea lui +.

    '. a%"+ Adev]rat dac] valoarea lui a este mai mare sau egal] cuvaloarea lui +.

    Y. a""+ Adev]rat dac] valoarea lui a este egal] cu valoarea lui +.

    H. aP"+ Adev]rat dac] valoarea lui a este diferit] de valoarea lui +.

    L. a" "+ Adev]rat dac] a ^i + sunt identice* cu alte cuvinte& dac] a ^i + au acela î tip ^i dac] valoarea lui a este egal] cu valoarea lui +.

    ?. aP" "+ Adev]rat dac] a ̂ i + nu sunt identice* cu alte cuvinte& dac] a^i + nu sunt de acela^i tip sau dac] valoarea lui a este diferit] de valoarealui +.

    7entru a sintetiza& iat] regulile care definesc rezultatul unei expresiicondi_ionale:

    ` Oonstantele true ^i false ^i iau respectiv valorile lor +ooleenecorespunz]toare.` expresie condi_ional] care const] dintr-o valoare nedefinit] arevaloarea false* n caz contrar& rezultatul depinde de tipul valorii& n spe_]numeric& ^ir& ta+lou sau o+iect.` expresie condi_ional] care const] dintr-o valoare numeric] arevaloarea false dac] valoarea este zero* n caz contrar& are valoarea true.` expresie condi_ional] care const] dintr-o valoare de tip ^ir arevaloarea false dac] ^irul este vid* n caz contrar& are valoarea true.` expresie condi_ional] care const] dintr-o valoare de tip ta+lou sauo+iect are valoarea false dac] ta+loul sau o+iectul sunt vide* n cazcontrar& are valoarea true.` expresie condi_ional] alc]tuit] dintr-un operator rela_ional ^i dinoperanzii s]i ia valori n conformitate cu rezultatul compara_iei #numericesau nu).

    daca insa facem asa:

    !alta " $8ello TorldP$*!myvar " $alta$*echo !!myvar*

    Oe credeti ca se intampla Ati ghicit nu-i asaSe va afisa: 8ello TorldP

    7e scurt& dar cam complicat& simpla si du+la indirectare se poate rezumaasa:-simlpa indirectare: foloseste valoarea varia+ilei curente-du+la indirectare: foloseste valoarea varia+ilei cu numele continut invaria+ila curenta

    7S. am gasit acest lucru foarte util cand am avut nevoie de a genera vreo0(( de nume de varia+ile pentru avascript& intr-un formular cu multedate de luat& de forma:document.myform.camp((/.value " ..document.myform.camp((0.value " ..

     Exemple:

    !a " *!+ " Y*

    Bxemplu de lucru cu tipul Integer echo ;a " !a;*echo ;;*echo ;+ " !+;*echo ;;*

    !c " !a K !+*echo ;a K + " !c;*echo ;

    ;*

      ?' ?/

  • 8/18/2019 PHP Intercer

    6/42

    Bxemplu de lucru cu string-uri!text " ;

  • 8/18/2019 PHP Intercer

    7/42

    0. 7lasa_i urm]toarea pagin] 8@WC ntr-un fi^ier denumit lectia-/.html^i nc]rca_i acest fi^ier n serverul dumneavoastr]& plasbndu-l n acela^icatalog ca ̂ i fi^ierul lectia-/.php:

    98@WC%98BAD%9@I@CB%Cectia -/9@I@CB%98BAD%9JD%9P--2i^ier lectia-/.html--%92RW WB@8D"57S@5 AO@I6"5lectia-/.php5%Introduce_i o valoare numeric]:9JR%9I67

  • 8/18/2019 PHP Intercer

    8/42

    Preceden0a operatorilor PHP

    perator 

    P \ KK #int) #dou+le) #string) #array) #o+ect)

      X

    K - .

    9 9" % %"

    " " P" " " " P " "

    Q

    QQ

    :

    " K" -" " " ." X" Q" " ∧" \" 99" %%"

    And

    or  

    &

     Exemplu :

    Oonsideram expresia !a K !+ > !c

    7receden_a operatorului de multiplicare > este mai ridicat] decbt aceea aoperatorului de adunare K& deci nmul_irea este efectuat] prima& chiar 

    dac] adunarea apare la stbnga nmul_irii. Ou alte cuvinte& expresia esteevaluat] ca ^i cum ar fi fost scris] astfel:

    !a K # !+ > !c )

    Dac] dori_i ca adunarea s] fie efectuat] prima& pute_i folosi paranteze ncadrul expresiei& astfel:# !a K !+ ) > !c

    INST&%CTI%NEA I

    &'MP"$a= 5# 5 *If #!a % /()  Bcho "Acesta este un num]r mare " *Asta se traduce cam asa :

    - daca conditia este adevarata executa echo sau orice altainstructiune care ar putea fi *

    /. 7lasa_i urm]torul script 787 ntr-un fi^ier denumit lectia-/.php ^inc]rca_i acest fi^ier n serverul dumneavoastr] 787:

    98@WC%98BAD%9@I@CB%Cectia-/9@I@CB%98BAD%9JD%9P--2i^ier lectia-/.php --%9php  echo 6um]rul introdus a fost : !num]r.5*  if #!num]r % /()

      echo 9JR% Acesta este num]r mare.5*%9JD%

      ?0 ?

  • 8/18/2019 PHP Intercer

    9/42

    98@WC%

    for#!n"(*!n9"!numar* !nKK)  echo 9JR%9I67

  • 8/18/2019 PHP Intercer

    10/42

    l& 0 sau & reprezentbnd respectiv dimensiunile mic]& medie ^i mare. Iat]un mic program care afi^eaz] dimensiunile asociate valorilor varia+ilei!numar:

    STitch#!numar){  case#/):  echo mic5*

      +reaM*  case#0):  echo mediu5*  +reaM*  case#):  echo mare5*  +reaM*  default:  echo Acesta nu este un cod vala+il5*}

    Instruc_iunea +reaM determin] ncheierea execu_iei instruc_iuniisTitch& transferbnd controlul urm]toarei instruc_iuni secven_iale caresuccede instruc_iunii sTitch. n a+sen_a instruc_iunii +reaM& execu_ia trecela urm]toarea instruc_iune case sau default& fapt nedorit n maoritateacazurilor.

    INST&%CTI%NEA #& 

    Instructiunea for este o instructiune +ucla sau o instructiuneiterative* o instructiune care executa in mod repetat instructiunileassociate. Exemplu:

    !suma " (for #!n "/* !n9"* !nKK)  !suma K" !n* echo P9JR%Suma intregilor de la / la !numa este !suma.5*

    n exemplu se calculeaz] suma ntregilor cuprin^i ntre l ^i .7entru aceasta& mai ntbi se ini_ializeaz] varia+ila !suma la valoarea (.Apoi& se execut] o instruc_iune for care incrementeaz] n mod repetatvaloarea varia+ilei !suma.

    Instruc_iunea for include trei expresii& care apar ntre paranteze*fiecare expresie este separat] de vecina sa printr-un caracter punct ^ivirgul]. De asemenea& instruc_iunea for include o instruc_iune sau un grupde instruc_iuni& cunoscute su+ numele de corpul instruc_iunii for. nexemplul de mai sus& instruc_iunea !suma K" !n este corpul instruc_iuniifor.

    Sa examin]m mai am]nun_it cele trei expresii:` 7rima expresie este expresia de ini_ializare. Aceasta se execut]

    atunci cbnd 787 aunge la instruc_iunea for. In exemplu& expresia deini_ializare atri+uie valoarea varia+ilei !n& varia+il] denumit] varia+il] deciclare sau index.

    ` A doua expresie este expresia de test. Aceasta este o expresiecondi_ional] care indic] dac] se execut] sau nu corpul instruc_iunii& ngeneral& face referire la varia+ila de ciclare. In cadrul exemplului&expresia de test compar] valoarea varia+ilei !n cu valoarea . Bxpresiade test este evaluat] pentru prima dat] imediat dup] evaluarea expresieide ini_ializare.

    ` Oea de-a treia expresie este expresia pas. n general& aceastamodific] una sau mai multe varia+ile la care se face referire n expresiatest. n cadrul exemplului& expresia pas incrementeaz] valoarea varia+ilei!n.

    Secven_a de execu_ie a unei instruc_iuni for este urm]toarea:/. Se evalueaz] expresia de ini_ializare.0. Se evalueaz] expresia test.

    . Dac] rezultatul evalu]rii expresiei test este false& se execut] etapa L.'. Se execut] corpul +uclei.Y. Se evalueaz] expresia pas.H. Se trece la etapa 0.L. Se ncheie execu_ia instruc_iunii for& prin executarea urm]toareiinstruc_iuni secven_iale.

    Instruc_iunea for este util] pentru num]rare ^i executarea n modrepetat a unor ac_iuni. Oa alt exemplu& iat] o instruc_iune for care creeaz]numeroase controale de tip +uton. 6um]rul controalelor create estedeterminat de valoarea varia+ilei !numar:

      ?0 ?

  • 8/18/2019 PHP Intercer

    11/42

    E6 2( 

    Orearea unui formular cu controale: un control de tip text& unul de tip passTord si un +uton ()O*M ME+,OD=-post- "C+'O.=-lo/in0php-1

     o/in : ('.P2+ +3PE=-text- name=-lo/in-1 Parola : ('.P2+ +3PE=-pass4or5- name=-parola-1

    ('.P2+ +3PE=-su6mit- 7"2E=-o/in-1

    (8)O*M1 

    Y. Orearea de suprafete cu textOa o caseta cu text& o suprafata cu text permite unui utilizator sa

    introduca text.Ou toate acestea& o suprafata cu text poate permiteutilizatorului sa introduca mai multe linii de text& in timp ce o caseta detext permite introducerea unei singure linii de text.7TE8TA&EA NA9E:;myte6t;

  • 8/18/2019 PHP Intercer

    12/42

    I. Preluarea datelor dintr*un $ormular

    In acest curs vom invata sa preluam datele dintr-un formular si sale afisam. om incepe cu cateva elemente de 8@WC:

      /. 7entru a descrie un formular folositi eticheta 2RW& care areurmatoarea forma elementara:

    7#&9 9ETH#D:;metoda; ACTI#N:;url; =

     Atri+utul 9ETH#D poate lua una din valorile B@ sau 7S@.

    Oand WB@8D este B@ #implicit)& datele introduse in formsunt trimise ca o cerere 8@@7 B@ cu  9orm_5ata adaugat la sfarsitul

  • 8/18/2019 PHP Intercer

    13/42

    test.php (php

     echo &alut 0$_PO&+[name]0 $_PO&+[color_al6]

  • 8/18/2019 PHP Intercer

    14/42

    Z. Orearea de selectii selectie este un meniu care defileaza& de unde utilizatorul poate

    alege una sau mai multe optiuni. De exemplu& intr-o selectie pot fienumerate garniturile pentru pizza& astfel incat un utilizator sa poataselecta orice com+inatie de garnituri pe care o doreste. 7SE-ECT NA9E:;my"elect; "ie:;numar; 9%-TIP-E=etic3ete#PTI#N7BSE-ECT=

     Bticheta SBCBO@ este folosita in com+inatie cu eticheta

    SBCBO@. Intre cele doua etichete este inclusa o serie de etichete7@I6. 

    Atri+utul 9%-TIP-E arata ca utilizatorul poate alege mai multeoptiuni mentinand apasata tasta O@RC si executand clicM pe aceasta.Ina+senta atri+utului W

  • 8/18/2019 PHP Intercer

    15/42

    #!" 1 - Se testeaza varia+ilele o+ligatorii in 787 #6< folosindVavaScript ).Daca a aparut vreo eroare #adica daca au fost omise campurio+ligatori) se tre+uie sa ne intoarcem in formularul initial pastrandu-sevaria+ilele postate deaex : daca am introdus numele si am omis prenumele & cand ma vaintoarce in pagina initiala numele tre+uie sa fie dea completat.

    #!" 2 * la email se testeaza corectitudinea adresei introduse : sa ai+a ksi sa contina cel putin un caractet . #punct)

    E6 : preluarea valorii unui control radio test0.html (9orm action=test@0php metho5=PO&+1

     "l6 (input type=ra5io name=color value=al61(6r1

     *osu (input type=ra5io name=color value=rosu1(6r1

     "l6 (input type=ra5io name=color value=ver5e1(6r1(input type=su6mit value=+rimite1

    (89orm1 test0.php (php

     echo "ti selectat culoarea :0$_PO&+[color]0

  • 8/18/2019 PHP Intercer

    16/42

    test.php (php

     i9>is_array>$_PO&+[color]?? 

    $c=count>$_PO&+[color]?;echo "ti selectat culorile(6r1;

     9oreach >$_PO&+[color] as $ey =1 $value?

    echo $value(6r1; 

    else echo "ti selectat culoarea :0$_PO&+[color]0

  • 8/18/2019 PHP Intercer

    17/42

       mysl% I6SBR@ I6@ anunturi  -% #textUanunut& dataUanunt) AC

  • 8/18/2019 PHP Intercer

    18/42

      +servati ca ta+ela noastra are o cloana ce contine anuntul#;textUanunut;) si data la care a aparut #;dataUanunut;). 7ro+a+il o sa maintre+ati ce e cu coloana ;id;. proiectare +una a unei +aze de date presupune ca un anumit anunt sa fie indentificat unic. In viata de zi cu zidaca cineva ne-ar ruga sa identificam un anunt i-am spune pro+a+il ca ealac cu ;masina de....;. Dar pentru o +aza de date e un pic mai complicatsa identifice astfel in mod unic un anunt. Si atunci folosim o coloana cecontine un numar unic. Astfel e mai simplu sa aflam ce de fapt anunutulcare ne intereseaza e anuntul 0 #id"0).

    crearea unei !ae de date

    8aideti sa creem o astfel de +aza de date #presupun ca dea ati instalatWySC& el functioneaza si puteti sa folositi linia de comanda SC). Bstefoarte simplu sa creati o +aza de date:

    mysl% ORBA@B DA@AJASB anunturi*Am ales numele ;anunturi; pentru +aza noastra de date. 7uteti alege oricenume. Acum ca am creat +aza de date tre+uie sa-i spunem servarului #incazul nostru WySC) ca vrem sa folosim aceasta +aza de date.

    mysl%

  • 8/18/2019 PHP Intercer

    19/42

    trimiterea de interogari cu PHPom contiuna sa folosim ca exemplu practic +aza de date de la lectia Y.Sa presupunem ca dorim sa schim+am data celui de-al doilea anunt.

  • 8/18/2019 PHP Intercer

    20/42

    I. Pu!licarea datelor din !aa de date pe e!

    de eorge 6icolae

    Daca in lectia precedenta am vor+it despre +aza de date acum avenit timpul sa afisem datele stocate intr-o forma ;comerciala;. Oei dintrevoi care au avut curiozitatea sa incerce exemplele din lectia precedentaau o+servat ca rezultatul uery-urilor sunt afisate intr-un ta+el& lucru nufoarte estetic. Wai mult decat atat un +roTser Te+ nu se poate lega directla servarul WySC& nu poate trimite uery-uri si nu poate afisearezultatul returnat de acestea.

  • 8/18/2019 PHP Intercer

    21/42

    local3o"t. 6umele de utilizator si parola vor fi cele setate pentruWySC. Implicit acestea sunt nume de utilizator: root si fara parola. Bsterecomandat ca aceste setari implicite sa fie modificate.

      2unctia myslUconnect returneaza un numar de identificare a conexiuniin caz de succes sau false in caz de eroare

    9php  !id " my"Llconnect#;localhost;& ;root;& ;;)

      or die#;6u ma pot conecta la WySCP;)*  print #;Oonectare reusita;)*  my"Llclo"e#!id)*%

      Atentie o conexiune la +aza de date tre+uie deschisa intotdeaunainainte de a o folosiP  In cazul in care nu ne putem conecta la +aza de date functiamy"Llconnect va returna false& iar in acest caz se va trece la executarea

    functiei die care va afisa mesaul din paranteza si va termina executiascriptului.

  • 8/18/2019 PHP Intercer

    22/42

    Acum cel de-al doilea fisier #de data asta de tip php) care va prelua dateledin formularul precedent si le va introduce in +aza de date. Sa-l numimJin"ert.p3p.

    html6

  • 8/18/2019 PHP Intercer

    23/42

    Atentie: @re+uie sa fiti conectati la +aza de date inainte de a executainstructiunea SC.

    Actualiarea unei inregi"trari

      In urmatorul exemplu vom actualiza toate inregistrarile care continemailul testkasp.net cu testkasp.net. In cazul nu exista nici un utilizator care sa posede adresa de email testkasp.net& ta+ela va ramanenemodificata.

    !uery " ;

  • 8/18/2019 PHP Intercer

    24/42

    Atentie: In unele cazuri este necesar sa se foloseasca varia+ila!8@@7U7S@UARS,$nume$ in momentul in care se doreste preluareavaria+ilei nume transmisa prin metoda PO&+ prin intermediulformularului.

    Selectarea inregi"trarilor

      Dupa ce am inserat o inregistrare in +aza de date dorim sa oafisam in +roTser. De aceea vom incerca sa vedem daca in ta+ela

    cursanti exista un utilizator cu numele Oristi. 7entru aceasta construim oinstructiune sl de tipul celei de mai os. Instructiunea mysl_num_ro4sreturneaza numarul de rezultate returnate de executia instructiunii. Se poate o+serva ca in cazul in care se foloseste instructiunea mysl_uerycu o instructiune SBCBO@& acesta nu va returna true sau false& ci vareturna o lista de rezultate sau false in caz de eroare.

    !uery " ;SBCBO@ > 2RW cursanti 8BRB nume"$Oristi$;*!result " my"LlLuery#!uery& !idSC)*if#my"Llnumro"#!result))E

     print#;9strong%6umele Oristi exista in ta+ela cursanti9strong%;)*GelseE  print#;9strong%6umele Oristi nu exista in ta+ela cursanti9strong%;)*G

    Atentie: @re+uie sa fiti conectati la +aza de date inainte de a executa

    instructiunea SC.In urmatorul exemplu dorim sa afisam toate inregistrarile din ta+ela

    cursanti0 om proceda ca si in exemplul anterior. Insa in cazul in caregasim rezultate in ta+ela cursanti vom parcurge fiecare din acesterezultate si il vom afisa pe ecran.

    my"Ll$etc3ro+reultatulreturnatdemy"LlLuery)M

      Instructiunea mysl_9etch_ro4  va parcurge rezultatul returnat deinstructiunea mysl_uery si va returna pentru fiecare inregistrare un

    ta+lou care contine fiecare camp returnat. Indexarea ta+lourilor incepe dela valoare (. Instructiune 4hile va avea ca efect returnarea pentru fiecarelinie a unui ta+lou. In cazul nostru vom avea in !roT,(& numelecursantului.

    !uery " ;SBCBO@ nume 2RW cursanti;*!result " my"LlLuery#!uery& !idSC)*if#my"Llnumro"#!result)) EThile#!roT " my"Ll$etc3ro#!result))

      E  print#;!roT,(9+r%;)*  GG else E  print ;@a+ela cursanti este goala P;*G

    Atentie: @re+uie sa fiti conectati la +aza de date inainte de a executainstructiunea SC.

    In urmatorul exemplu vom selecta dintr-o ta+ela toti cursanti a caror nume incep cu litera c. 7entru aceasta vom folosi o instructiune SC maicomplexa. 7ortiunea 9nume CIB $cX$% din interiorul instructiunii SCse traduce prin toate inregistrarile a caror camp nume incepe cu litera c.Semnul O inseamna orice numar de caractere chiar si nici unul.  In acest exemplu am selectat pe langa nume si campul email& pe care ilafisam prin intermediul lui !roT,/.

    !uery " ;SBCBO@ nume&email 2RW cursanti 8BRB nume CIB $c

    X$;*!result " my"LlLuery#!uery& !idSC)*if#my"Llnumro"#!result)) EThile#!roT " my"Ll$etc3ro#!result))

      E  print#;!roT,(;)*  print#;!roT,/9+r%;)*  GG else E  print ;@a+ela cursanti este goala P;*

    G

      ?0 ?

    #!h dl )

  • 8/18/2019 PHP Intercer

    25/42

    $rite#!handle&;text;)*$rite#!handle&;/0';)*$rite#!handle&;a&+&cNnAm invatat php;)

     +ool $eo$  # resource handle)Returneza +*2E  pointerul este pozitionat in fisier la  EO) #sfarsit defisier) sau daca apare o eroare* altfel returneaza )"&E 

    string $get" # resource handle ,& int length)

    Returneaza un sir de caractere de lungime maxima len/th - / +ytescititi din fisierul referit de handle. Oitirea se termina cand au fost cititilen/th - / +ytes &la intalnirea unui sfarsit de linie #care este inclus in valoarea returnata)&sau la EO) .Daca nu este specificata lungimea& lungimea default este de /M& sau /(0' +ytes.

    Bxemple:

    9afiseaza prima linie dintr-un fisier !numeUfisier";exemplu.txt;*!handle"fopen#!numeUfisier&;r;) or die#;Broare la deschidere;)*!linie"$get"#!handle&'(ZH)*fclose#!handle)*echo !linie*%

    int $put" # resource handle& string str ,& int length)$put"#) este un alias pentru $rite#)& si este identic din toate punctele devedere

    Bxemple:

    9phpscrie o linie noua la sfarsitul fisierului ex0.txt!filename " $ex0.txt$*

    !text " ; linie noua Nn;*

     

    Tema de ca"a

    Realizati o ta+ela care sa contina campurile: nume& prenume& adresa&oras& udet.Oerintele sunt urmatoarele:- inserati prin intermediul unui formular noi inregistrari in ta+ela

    - afisati in +roTser toti utilizatorii care sunt din Jucuresti- afisati in +roTser toti utilizatorii care sunt dintr-un udet care incepe culitera T 

    &e"ur"e

    .p3p.net  * "ite*ul o$icial al lim!aului PHP

    .my"Ll.com * "ite*ul o$icial 9ySK-

    .p3promania.a".ro * Site*ul Comunitatatii PHP din &omania

      ?' ?/

    fi i l i fi i l i i l

    http://www.php.net/http://www.mysql.com/http://www.phpromania.as.ro/http://www.php.net/http://www.mysql.com/http://www.phpromania.as.ro/

  • 8/18/2019 PHP Intercer

    26/42

    III. unctii de prelucrare a $i"ierelor

    de Dan Ale6andru

    resource $open # string filename& string mode ,& int useUincludeUpath ,&

    resource zcontext)Deschide un fisier sau un

  • 8/18/2019 PHP Intercer

    27/42

    Wodifica pozitiionarea in fisierul referit de handle. 6oua pozitie&masurata in +ytes de la inceputulfisierului& este o+tinut adaugand un numar de +ytes la pozitia specificatade Thence& ale carui valorisunt specificate mai os:

    SEE@SET - Seteaza pozitia egala cu numarul de +ytes specificati deoffset..SEE@C%&  - Seteaza pozitia egala cu pozitia curenta plus offset.SEE@END - Seteaza pozitia egala cu pozitia sfarsitului de fisier plusoffset # 7entru a ne muta la o pozitie inainte de sfarsitul de fisier tre+uieca offset sa ai+a o valoare negativa..)Daca Thence nu este specificat& se presupune ca este [email protected] mutarea s-a realizat cu succes functia returnneaza (* altfel&returneaza -/. .

    Bxemple:

    9php  !handle " fopen #;exemplu.txt;& ;r;)*  fseeM#!handle&0)*  fscanf#!handle&;Xc;&!char)* echo !char*%

    Daca fisierul exemplu.txt contine:

    a+cdefsdssdadad

    exemplul va afisa: c

    Alte e6emple(

     Bx/:

    9phpsuma numerelor intregi dintr-un fisier& numerele fiind scrise cate unul peo linie!numeUfisier";ex/.txt;*

    !handle " fopen#!filename& ;a;) or die#;Broare la deschidere;)*$put"#!handle& !text)*

    fclose#!handle)* print ;Success& am scris !text in fisierul !filename;*%

    string $getc # resource handle)

    Returneaza un string care contine un singur caracter citit din fisierulreferit de handle. Returneaza )"&E  cand intalneste sfarsitul de fisier# EO) ).

    Bxemple:

    9php  !numeUfisier";fisier.txt;*  !handle"fopen#!numeUfisier&;r;) or   die#;Broare la deschidere;)*  !n"(*  Thile#Pfeof#!handle))  E  !c"$getc#!handle)*

      echo !c*  G  fclose#!handle)*%

    int $print$  # resource handle& string format ,& mixed args)

    Scrie un string formatat conform string-ului de formatare in fisierulreferit de handleStringul de formatare este compus din una sau mai multe directive:caractere normale #fara de X) care sunt copiate direct la rezultat &

      ?' ?/

    i ifi tii d i d i d l d i l l lti $ i $#!h dl ;X 0f; ! ) I i i i fi i l f it d !h dl

  • 8/18/2019 PHP Intercer

    28/42

    si specificatii de conversie& care descriu modul de conversie a celorlalti parametri..

  • 8/18/2019 PHP Intercer

    29/42

    Ioneorgeasile

    int $"ee4  # resource handle& int offset ,& int Thence

    aici se insereaza corpul functieiG

    In cadrul modelului& numeUfunctie este numele functiei& iar numeUargument este numele argumentului functiei& in 787& numelefunctiilor nu prezinta sensi+ilitate la diferenta intre mauscule siminuscule* ca atare& f #) si 2#) reprezinta referiri la aceeasi functie.Ouvantul cheie function& numele functiei si lista cu argumente alcatuiescantetul functiei. @ermenul de corp al functiei se refera la instructiunileincluse intre parantezele acolade care urmeaza dupa antetul functiei.Instructiunile din corpul functiei sunt executate atunci cand functia esteapelata.

      Daca doriti sa definiti o functie care nu are argumente& puteti omitenumeUargument* daca doriti sa definiti o functie cu mai multe argumente& puteti include argumente suplimentare dupa numeUargument& fiecareargument fiind separat de vecinul sau prin intermediul unei virgule.7arantezele si numele argumentelor incluse intre acestea poarta numelede lista cu argumente. Oa exemplu& iata o functie care calculeaza ariaunui dreptunghi:

    function calculeazaUarie#!inaltime&!latime)E

      return!inaltime > !latime*G

      Cista cu argumente a functiei calculeazaUarie include argumentele!latime si !inaltime. Oorpul functiei este alcatuit dintr-o singurainstructiune* cu toate acestea& corpul unei functii poate contine un numar ar+itrar de instructiuni. Daca doriti ca o functie sa returneze o valoare&tre+uie sa determinati functia sa execute o instructiune return carefurnizeaza valoarea respectiva. Instructiunea return determina sistareaexecutarii functiei* nu este necesar ca aceasta sa fie ultima instructiune

    fizica din corpul functiei. Daca definiti o functie care nu are nici oinstructiune return& functia va returna valoarea speciala 6

  • 8/18/2019 PHP Intercer

    30/42

    9 afiseaza numarul de aparitii al unui cuvant intr-un fisier  !numeUfisier";ex.txt;* !cuvant"$cuvant$* !handle"fopen#!numeUfisier&;r;) or   die#;Broare la deschidere;)* !n"(*  Thile#Pfeof#!handle))

    E  !linie"fgets#!handle&'(ZH)*  !n K" su+strUcount#!linie& !cuvant)* * G fclose#!handle)* echo ;Ouvantul !cuvant apare de !n ori in fisierul !numeUfisier;*%

    Bx':

    9 Oopiaza continutul primului fisier in cel de-al doilea. !fisier/ " ;origine.txt;* !fisier0 " ;destinatie.txt;* !handle/ " fopen#!fisier/& ;r;) or   die#;Broare la deschidere;)* !handle0 " fopen#!fisier0& ;T;) or   die#;Broare la deschidere;)* Thile #Pfeof#!handle/)) E

      !+uffer"fread#!handle/&/(0')*  fTrite#!handle0&!+uffer&/(0')* G fclose#!handle/)* fclose#!handle0)* echo ;Am scris continutul fisierului !fisier/ in fisierul !fisier0;* %

    Tema pentru lectia (

    /.Se da un fisier care contine n numere naturale cate unul pe o linie.a.Sa se afle numarul maxim din fisier 

     +.Sa se scrie in alt fisier numerele sortate crescator.c.Sa se scrie in alt fisier numerele marite cu un numar m dat.

    0.Sa da un fisier text.a.Sa se scrie in alt fisier toate caracterlor care nu sunt i&o&u sau a. +.Sa se elimine liniile care contin un anumit cuvant.

    I8. %tiliarea unei $unctii

    de Teodor Scaiceanu

    7rocesul de executare a unei functii se numeste utilizarea&apelarea sau invocarea functiei. 7entru a folosi o functie& scrieti numelefunctiei& urmat de o pereche de paranteze.De exemplu& functia rand#)& care genereaz un numr intreg aleator& poatefi apelata astfel:

    rand#)* 

    Waoritatea functiilor preiau argumente& reprezentand valori& deintrare care influenteaza operarea si rezultatul functiei. 7entru a specificaargumente& acestea se insereaza intre paranteze* daca specificati mai multde un argument& fiecare argument tre+uie separat de vecinul sau prinintermediul unei virgule. Argumentul unei functii poate fi o valoareliterala& o varia+ila sau o expresie.

  • 8/18/2019 PHP Intercer

    31/42

    In afara de a utiliza functiile din +i+lioteca de functii a lim+aului 787&va puteti defini si folosi propriile functii. 7entru a defini o functie&respectati modelul urmator:

    function numeUfunctie#numeUargument)E

    unei valori unei varia+ile din interiorul unei functii. 7entru a ilustra

    deose+irea dintre varia+ilele locale si cele glo+ale& iata un script caredefineste o varia+ila locala denumita !x si o varia+ila glo+ala cu acelasinume:

    function areUlocal#)E  !x " 0*  echo ;9JR%In corpul functiei: x " !x;*G!x " /

    echo ;9JR%In corpul scriptutlui: x " !x;*areUlocal#)*echo ;9JR%In corpul scriptului: x " !x;*

    In cazul in care rulati acest script& veti primi urmatoarele rezultate:

    In corpul scriptului: x " /In corpul functiei: x " 0In corpul scriptului: x " /

    Remarcati diferenta dintre cele doua varia+ile& chiar daca numelevaria+ilelor este acelasi. Domeniul de existenta al varia+ilei glo+ale !xnu se extinde in interiorul corpului functiei areUlocal#)& iar domeniul deexistenta al varia+ilei locale !x nu se extinde dincolo de corpul functieirespective. Ou alte cuvinte& domeniile de existenta ale celor douavaria+ile sunt complet distincte si& ca atare& 787 nu poate confundavalorile varia+ilelor respective.

  • 8/18/2019 PHP Intercer

    32/42

    valoare pentru argumentul respectiv& argumentul ia o valoare presta+ilitaspecificata. Iata un exemplu simplu:

    function impozitUvanzari#!cantitae & !rata " (.(L0Y)E  echo ;9JR%cantitate"!cantitate;*  echo ;9JR%rata"!rata;*  return !suma > !rata*G

    !cumparaturi " /0.'Y*echo ;9JR%cumparaturi " !cumparaturi;*!impozit " impozitUvanzari#!cumparaturi&(.(?)*echo ;9JR%impozit " !impozit;*

    !cumparaturi " /0.'Y*echo ;9JR%cumparaturi " !cumparaturi;*!impozit " impozitUvanzari#!cumparaturi)*echo ;9JR%impozit " !impozit;*

    2unctia impozitUvanzari preia doua argumente: un argument o+ligatoriu&denumit !cantitate& si un argument presta+ilit& denumit !rata. Dacaapelati functia si furnizati un singur argument& valoarea argumentuluirespectiv se considera ca fiind valoarea argumentului !cantitate& iarvaloarea (.(L0Y se foloseste ca valoare a argumentului !rata. Astfel& la prima invocare a functiei& !rata are valoarea (.(?& specificata drept aldoilea argument al functiei.Ou toate acestea& la a doua invocare a functiei&!rata are valoarea (.(L0Y deoarece este specificata valoarea unui singurargument.

    9titlu%

  • 8/18/2019 PHP Intercer

    33/42

    caracteristica importanta este durata de viata& care descrie cand estedisponi+ila o anumita varia+ila.aria+ilele glo+ale sunt create atunci cand li se atri+uie o valoare siexista pe durata unui program. Spre deose+ire de acestea& varia+ilelelocale sunt create la apelarea functiei asociate si sunt distruse laincheierea apelului la functia respectiva. In consecinta& varia+ilele localesunt disponi+ile numai pe durata executiei functiei asociate.Argumentele functiilor constituie un tip important de varia+ila locala. Outoate acestea& puteti crea o varia+ila locala prin simpla atri+uire a

    cooMie nu mai este accesi+il].n general& este convena+il s] se specifice momentul expir]rii folosindfunc_ia time#)& care returneaz] intervalul de timp #exprimat n secunde)scurs de la / ianuarie /ZL(. 7ute_i ad]uga o valoare de tip decala#offset)& care specific] intervalul de timp pe durata c]ruia varia+ilacooMie tre+uie s] fie accesi+il]. De exemplu& s] lu]m n considerareurm]toarea instruc_iune:setcookie(„fruct”, „banana”, time()+3!!)Aceast] instruc_iune creeaz] o varia+il] cooMie denumit] fruct& care are

    valoarea +anana. aria+ila cooMie va fi disponi+il] timp de o or] #H((secunde) de la crearea sa.Dac] prefera_i& pute_i specifica momentul expir]rii folosind func_iamMtime #). Aceast] func_ie are urm]toarea form]:

    mMtime#ore&minute&secunde&luna&zi&an)

    De exemplu& urm]toarea instruc_iune creeaz] o varia+il] cooMie careexpir] la o secund] dup] miezul nop_ii primei zile a anului 0((Y:

    SetcooMie#fruct5& +anana5& mMtime#(& (& /& /& /& 0((Y))*

    alorile varia+ilelor cooMie sunt trimise de c]tre +roTser ca parte aantetelor 8@@7. Oa atare& valorile varia+ilelor cooMie tre+uie s] fiesta+ilite anterior expedierii oric]ror altor valori c]tre +roTser. @rimitereafie ^i a unui singur spa_iu v] poate mpiedica s] configura_i valoarea uneivaria+ile cooMie. 7entru a evita pro+lemele& asigura_i-v] c] un script 787care sta+ile^te o valoare a unei varia+ile cooMie este plasat n parteasuperioar] a fi^ierului& f]r] caractere de tip spa_iu al+ care s]-l precead].De asemenea& sta+ili_i valoarea varia+ilei cooMie nainte de a executa o

    instruc_iune echo sau o alt] instruc_iune 787 care trimite +roTserului

    date de ie^ire. ntre+are: Oe este un antet 8@@7R]spuns: nainte de a trimite date 8@WC unui +roTser& un server e+trimite& n general& unul sau mai multe antete 8@@7* aceste antete suntcunoscute su+ numele de antete de r]spuns al serverului. Similar& naintede a trimite informa_ii unui server e+& un +roTser e+ trimite& ngeneral& unul sau mai multe antete 8@@7* aceste antete sunt cunoscutesu+ numele de antete de cerere. Antetele de r]spuns al serverului frecvent

    folosite descriu configura_ia serverului

    reuire#;fisierul.inc;)*

    Oand este incarcat un script 787 care contine o instructiune reuire&continutul fisierului specificat - cunoscut su+ numele de fisier deincludere - este inserat in script&inlocuind instructiunea reuire. De exemplu& sa presupunem ca scrieti o aplicatie 787 care este alcatuita

    din mai multe scripturi& iar fiecare script afiseaza o pagina 8@WC carecontine informatii standard in partea de sus a paginii. 7uteti crea un fisier script special& denumit antet.inc& care contine urmatoarele linii de program:

    98@WC%98BAD%9@I@CB%Aplicatia care pune capac la toate aplicatiile9@I@CB%98BAD%9JD%

    98/%Aceasta este aplicatia care incheie toate aplicatiile98/%98Y%Oopyring 0((Y& 2ane 7rogramatorul si Oompania SRC.98Y%si asa mai departeF

    7rin insertia instructiunii

    reuire#;antet.inc;)*

    la inceputul fiecarui script& determinati programul 787 sa includacontinutul acelui fisier ca si cum continutul respectiv ar face parte din

    acel script.  ?' ?/

    op_iuni a +roTserului

  • 8/18/2019 PHP Intercer

    34/42

    8. %tiliarea ?aria!ilelor coo4ie

    Scopuri

    ` nv]_a_i care este modul de func_ionare a varia+ilelor cooMie` nv]_a_i s] crea_i& s] o+_ine_i accesul la varia+ilele cooMie ̂ i s] le ^terge_i` nv]_a_i s] stoca_i mai multe valori ntr-o varia+il] cooMie` nv]_a_i s] specifica_i op_iunile dintr-o varia+il] cooMie

    Acest modul v] prezint] no_iunile introductive referitoare la varia+ilele

    de date cooMie& o caracteristic] 8@@7 care v] permite s] stoca_i date nsistemul unui utilizator. aria+ilele cooMie sunt utile pentru stocarea preferin_elor utilizatorilor ^i a altor informa_ii care tre+uie re_inute atuncicbnd utilizatorul trece la o nou] pagin] e+.

    Acce"ul la ?aria!ilele coo4ie 5i crearea ace"tora

     alorile maorit]_ii varia+ilelor dispar atunci cbnd scriptul 787 care lecon_ine ^i ncheie execu_ia. Spre deose+ire de acestea& valorilevaria+ilelor cooMie se pot p]stra un timp indefinit. 7entru ca valorile lor 

    s] se poat] p]stra& +roTserul utilizatorului stocheaz] varia+ilele cooMie nunitatea de hard-disc local] a utilizatorului.aria+ilele cooMie sunt utile dintr-o mul_ime de puncte de vedere. Deexemplu& multe situri e+ folosesc varia+ile cooMie pentru a stocaidentitatea utilizatorului ^i preferin_ele de vizualizare ale acestuia. Obndutilizatorul revine la situl e+& varia+ilele cooMie permit +roTserului s]recunoasc] utilizatorul ^i s] restaureze op_iunile sitului selectate de c]treutilizator.Din p]cate& varia+ilele cooMie nu constituie solu_ia perfect] pentru unmediu de stocare pe termen lung ^i prezint] o serie de dezavantae. De

    exemplu:`

  • 8/18/2019 PHP Intercer

    35/42

    Orearea unei varia+ile cooMie este aproape la fel de simpl] ca ^i o+_inereaaccesului la aceasta. 7entru a crea o varia+il] cooMie& invoca_i func_iasetcooMie#)& care are urm]toarea form]:

    setcooMie#nume& valoare& expirare)

    Argumentul nume specific] numele varia+ilei cooMie& iar argumentulvaloare specific] valoarea varia+ilei. Argumentul expirare indic]momentul expir]rii varia+ilei cooMie* dup] ora specificat]& varia+ila

    7entru a pune varia+ila cooMie la dispozi_ia scripturilor dintr-un anumitcatalog din su+-cataloagele sale& specifica_i o valoare a argumentuluicale. De exemplu& pentru a pune varia+ila cooMie la dispozi_ia ntreguluiar+ore de cataloage& specifica_i ; ; ca valoare a argumentului cale* pentrua face varia+ila cooMie disponi+il] n catalogul -test ^i n su+-cataloagelesale& specifica_i ;-test; ca valoare a argumentului cale.

    complica_ie n utilizarea argumentului cale o constituie modalitatea deidentificare a numelor cataloagelor. Specificbnd ;-test; ca valoarea

    argumentului cale& varia+ila cooMie va deveni disponi+il] n -test/&-test0 ̂ i n toate cataloagele cu nume similare& pe lbng] catalogul -test ̂ isu+-cataloagele sale.Dac] nu este specificat nici un argument domeniu& o varia+il] cooMie estedisponi+il] numai pentru scripturile rezidente pe serverul e+ care acreat varia+ila respectiv]. Argumentul domeniu v] permite s] specifica_inumele de domeniu asociat unei varia+ile cooMie. n consecin_]& varia+ilacooMie va fi disponi+il] numai pentru siturile e+ din cadrul domeniuluispecificat. De exemplu& s] presupunem c] un script din serverul e+http:TTT.su+domeniu.domeniu.com creeaz] o varia+il] cooMie. n mod

     presta+ilit& varia+ila cooMie este disponi+il] numai pentru gazdarespectiv]. Ou toate acestea& pute_i face varia+ila cooMie disponi+il] pentreg domeniul su+domeniu.domeniu.com& specificbnd;su+domeniu.domeniu.com; ca valoare a argumentului domeniu.Specificatia 6etscape pentru varia+ile cooMie#http:TTT.netscape.comneTsrefstdcooMieUspec.html ) impune caargumentul domeniu s] con_in] minimum dou] caractere punct. Oa atare&nu tre+uie s] specifica_i un ^ir de tipul ;domeniu.com; ca valoare a argu-mentului domeniu.Argumentul sigur este o valoare ntreag]& care specific] dac] varia+ila

    cooMie tre+uie trimis] prin intermediul unei conexiuni sigure #8@@7S).

    Specifica_i valoarea l pentru a mpiedica transmiterea varia+ilei cooMie ncazul n care conexiunea nu este sigur]* pentru a permite transmitereavaria+ilei cooMie prin conexiuni 8@@7 o+i^nuite& specifica_i valoarea (. ntre+are: Dac] o persoan] cu acces la unitatea de hard-disc autilizatorului poate citi valorile stocate ntr-o varia+il] cooMie& cum se poate p]stra confiden_ialitatea informa_iilor stocate n aceast] varia+il]R]spuns: Deoarece +roTserele stocheaz] varia+ilele cooMie n unitatea dehard-disc local]& utilizatorii unui sistem pot o+_ine accesul la fi^ierele

    cooMie ̂ i pot citi sau chiar modifica informa_iile con_inute n fi^ierele

    ^i furnizeaz] informa_ii referitoare la adresa

  • 8/18/2019 PHP Intercer

    36/42

    gsec_iune explic] modul de utilizare a mai multor argumente suplimentareale func_iei setcooMie #).

    Stocarea mai multor valori ntr-o varia+il] cooMieDeoarece un sit e+ poate stoca numai 0( de varia+ile cooMie n sistemulunui utilizator& capacitatea de a stoca mai multe valori ntr-o singur]varia+il] cooMie este util]& n conformitate cu manualul 787 pe suportelectronic& pute_i realiza acest lucru prin specificarea unui ta+lou ca nume

    al varia+ilei cooMie. De exemplu& pute_i folosi un program ca acesta:

  • 8/18/2019 PHP Intercer

    37/42

    pArgumentul cale v] permite s] specifica_i calea

  • 8/18/2019 PHP Intercer

    38/42

    &  ;andrei; "%;arahida;)*if #!parola "" !parole,!numeUutilizator)#  setcookie("nume$utilizator", % nume$utilizator, time()+&'!!)  eco "*'ccesul este permis.-*'"else#

      setcookie("nume$utilizator ", "", time()/3!!)  eco "*'0ume de utilizator sau parola incorecte1 accesulinterzis.-*'"2

    0. 7lasa_i urm]torul text 8@WC ntr-un fi^ier denumit p-/(-/ .html ^inc]rca_i acest fi^ier n serverul dumneavoastr]& inserbndu-l n acela^icatalog ca ^i fi^ierul p-/(-/ .php:

    98@WC%98BAD%9@I@CB%7roiect /(-/9@I@CB%98BAD%9JD%92RW WB@8D"57S@5 AO@I6"5p-/(-/.php5%980%7roiect /(-/: 7agina de login980%9JR%9JR% 6umele utilizatorului:9JR%9I67

  • 8/18/2019 PHP Intercer

    39/42

    daca inscrierea a esuat se spune si motivul #username-ul

    mai exista in +aza de date& etc)

    7as 0 – peratii dupa logare

    Dupa logare& in am+ele cazuri #si pentru admin si pentru user o+isnuit)& paginile unde vor fi redirectati vor contine doar o lista de meniuri

  • 8/18/2019 PHP Intercer

    40/42

    cooMie-urilor.

    8I. Aplicatie de logare in p3p

    de Claudiu al!a

    Tema 11

    7entru acest curs nu am noutati sa va spun asa ca am sa trec direct latema. eti putea sa rezolvati tema folosindu-va de cunostintele acumulate pana acum.

    Initial aveam de gand sa continui aplicatia #tema) de la cursul '. Dar cumnu prea v-ati ingramadit la predarea temelor& o sa facem o alta aplicatie.

    In mare aplicatia are urmatorul algoritm : un user se inscrie la un anumitserviciu #email& etc). In acest moment i se creaza un cont invalid pe careadministratorul il poate valida sau nu. Dupa ce contul a fost validat userulse poate loga* in contul sau el poate face diferite operatii.

    Oam asta a fost pe scurt tema voastra.Acum sa trecem s-o dez+atem mai pe larg:

    7as / – Oreare cont si logare

    7e pagina principala #index.php) exista 0 controale input #unul text siunul passTord) si un +uton su+mit.Ou autorul acestora se va facelogarea.

    In cazul in care usernameparola sunt incorecte se va afisaun mesa de eroare

    In cazul in care contul nu este valid se va afisa un mesa inacest sens

    userului #daca este admin il redirectam in paginaadmin.php * daca este user o+isnuit il redirectam in paginauser.php )

    Dupa logare setati un cooMiesesiune in care tineti minte usernameparolasi alte informatii de care aveti nevoie #drepturile pe care le are userul

    respectiv : admin sau user o+isnuit)

    @ot pe pagina principala se gaseste un linM spre pagina de inscriere#inscriere.php)

    inscriere.php

    Oampuri :

    )

    7arola #>)

    Bmail #>)

     6ume #>)

    7renume #>)

    Sex #>)

    Data nasterii #>)

    Site personal

    Domiciliul #textarea – oras& udet& strada& cp)

    @elefon

    Domenii de interes

      ?0 ?

    erificarea campurilor o+ligatorii v-o las la alegerea voastra #indicat este

  • 8/18/2019 PHP Intercer

    41/42

    s-o faceti prin am+ele miloace : din Vava Script si din 787)

    daca inscrierea a reusit se afiseaza un mesa in care sespecifica aceasta si i se spune ca administratorul tre+uie savalideze contul

  • 8/18/2019 PHP Intercer

    42/42

    respectiv)

    Juton pentru stergereaunui user 

    izualizeaza useri noi #useri neactivati)

    ca si la meniul anterioruserii se afiseaza cate /( pe pagina iar ta+elul de afisareeste acelasi numai ca se vormai adauga +utoane :alideaza#pentru validareaunui cont)& Sterge#pentrustergerea unui cont) siWodifica #modifica profilul

    unui user)

    @rimite mesa

    Administratorul poate trimite mesae catre orice user #are unselect +ox in care specifica spre ce user va pleca mesaul). 7rimaoptiune din select +ox este pentru toti userii #mesaul va mergecatre toti userii)

    Oiteste mesae

    In aceasta sectiune administratorul va citi mesaele primite de lauseri

    Sterge mesae

    Administratorul poate sterge mesaele pe care userii le-au ;sters;#de fapt nu le-au sters doar le-am marcat ca sterse)

    Cogout