Un Interesnate Tema De manejos de Formularios incluyendo el uso de sentencias para acceso al formulario por php
Descrição completa
Descrição: Centro de Difusão de Tecnologia e Conhecimento
MANUELA MANUELA CARPEN * ROXANA RO XANA ASANDULUI ASANDULUI * MIHAI MI HAIELA ELA TUNEA CARMEN-AFRODITA GIOCAȘ * CERASELA-DANIELA CARDAȘ
PHP GHID DE PROGRAMARE WEB
PENTRU ÎNCEPĂTORI
PHP- GHID GHI D DE PROGRAMARE PROGRAMARE WEB PENTRU Î NCEP NCEPĂTORI ĂTORI
Carte elaborată în cadrul proiectului Eras mus + programming ing skills skill s for ”Acquisition of professional web programm ref.. 20152015an ear e arlie lierr integra i ntegration tion in the labor l abor market market” nr. ref
1-RO01-A102-014297. Colaboratori:
ll er Lucanus Lucanus Conținuturi capitolele capi tolele 1, 2 : Ralph-Müller Conținuturi capitol capitolu ul 3 : Mihaela ihae la -Liliana Lil iana Prăji nariu Vl ad Batalan Conținuturi capitolul 4 : Vlad Copertă : Andra- Mălina ăli na Cardaș
2
PHP- GHID GHI D DE PROGRAMARE PROGRAMARE WEB PENTRU Î NCEP NCEPĂTORI ĂTORI
Carte elaborată în cadrul proiectului Eras mus + programming ing skills skill s for ”Acquisition of professional web programm ref.. 20152015an ear e arlie lierr integra i ntegration tion in the labor l abor market market” nr. ref
1-RO01-A102-014297. Colaboratori:
ll er Lucanus Lucanus Conținuturi capitolele capi tolele 1, 2 : Ralph-Müller Conținuturi capitol capitolu ul 3 : Mihaela ihae la -Liliana Lil iana Prăji nariu Vl ad Batalan Conținuturi capitolul 4 : Vlad Copertă : Andra- Mălina ăli na Cardaș
2
PHP- GHID GHI D DE PROGRAMARE PROGRAMARE WEB PENTRU Î NCEP NCEPĂTORI ĂTORI
Ce este este PHP? PHP?................................... ................... ...................................... ........................5 ..5
De ce să alegi programare în PHP?............................6
2. Programarea web în limbajul PHP ........................ 16 Elem Ele mente de sintaxă s intaxă ale ale limbajul l imbajului ui PHP PHP................... 16 Variabile Variabile PHP PHP ..................................... ...................... .................................. ................... 18 Crearea (decl (declarar ararea ea ) variabilelor variabilelor PHP.............. PHP......... ....... 18 ......................... ................... ... 19 19 Variabile de ieșire .......................................... Domeniul Domeniul de vizibilitat vizibilitate e al variabilelor variabilelor .............. ......... ....... 20 ..................... ............. 20 Domeniul Global și Local ................................... Speccificatorul Spe ificatorul global ......... ..... ......... .......... .......... .......... ........ ........ ........ ... 21 ................... ............. 22 22 Instrucțiunile Instrucțiunile echo și ș i print print ................................ Stringuri Stringuri PHP..................... PHP.................................... ............................... ................ 23 Constant Constante e PHP ................................ ...................... ..................... . 23 23 Operatori Operatori PHP.................................... ..................... .................................. ................... 24 Structu Structuri ri de contro controll ..................................... ...................... ......................... .......... 24 24 ................... .................... .... 24 24 Instrucțiuni de decizie................................... ................. ........... 25 Instrucțiuni de ciclare în PHP ............................. ... ..................................... .................................. ................... 25 Funcții Funcții PHP ......................... .... .. 25 Funcții definite de utilizator în limbajul PHP ....... Tablour Tablourii PHP ..................................................... ................................ ......................... .... 26 26 Sortarea tablourilor tablourilor .......... ..... .......... .......... .......... .......... ........ ........ ......... .... 27 ......... ........ 27 Variabile globale și superglobale în PHP .................. ................ ........... 27 Gestionarea formularelor în PHP ............................ Formulare HTML simple.................................... 28 3
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Metoda HTTP POST și variabila superglobală $_POST ........................................................................ 28 GET versus POST .............................................. 29 Validarea datelor din formulare ........................ 30
Câmpuri obligatorii în formulare PHP................. 32 Afișarea mesajelor de eroare la completarea câmpurilor unui formular .............................................. 33 Cookies în limbajul PHP.......................................... 34 Crearea unui cookie în PHP ............................... 34 Sesiuni .................................................................. 35 Deschiderea unei sesiuni PHP............................ 36
Obținerea valorilor variabilelor sesiune ............. 36 Baze de date ......................................................... 39
Ce reprezintă MySQL? ...................................... 40 Exemple de scripturi care utili zează MySQLi ....... 41 PhpMyAdmin ................................................... 50
Etapele creării unei baze de date MySQL ........... 51 Gestionarea fișierelor pe server ............................. 51
3. Fișe de lucru........................................................... 60 4. Crearea unui website dinamic utilizând PHP ......... 79 Webografie .............................................................. 131
4
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
1. Introducere Limbajele pe care se bazează PHP sunt :
• •
HTML ( Hyper Text Markup Language) – pentru definirea
conținuturilor paginilor web
CSS ( Cascading Style Sheets)- pentru definirea aspectului paginilor web • JavaScript- pentru programarea evenimentelor din paginile web, pentru a adăuga interactivitate paginilor web Tutoriale : • HTML Tutorial [http://www.w3schools.com/cssref/default.asp] • CSS Reference [http://www.w3schools.com/cssref/default.asp] • JavaScript Reference [http://www.w3schools.com/jsref/default.asp] Alte resurse utile: http://php.net/manual/ro/ •
Ce este PHP? • … un acronim pentru “PHP: Hypertext Preprocessor” • …un limbaj de programare open-source, cu o largă răspândire în domeniul IT • … gratis pentru a fi descărcat și utilizat
De ce este un limbaj atât de atractiv și popular? • pentru că este suficient de puternic pentru a fi în centrul celui mai mare sistem de blogging pe web (WordPress)!
• pentru că este suficient de complex pentru a rula cea mai •
mare rețea socială (Facebook)! d e asemenea, este destul de ușor să fii un programator începător de server-side!
PHP...
•
Fișierele PHP pot conține text, coduri HTML, CSS, Jav aScript și coduri PHP
•
codurile PHP sunt executate pe server, iar rezultatul este returnat în browser ca un cod HTML simplu
•
Fișierele PHP au extensia ".php" 5
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Vă prezentăm un exemplu de cod PHP (introduction.php)
Ce avem de făcut? Server side:
• • •
La început pornim serverul web (localhost). Apoi scriem codul de mai sus într -un editor de text, cum ar fi Notep ad++ .
Salvăm fișierul cu numele „introduction.php“ în directorul „C:/xampp/htdocs“.
Client side:
•
După salvarea fișierului îl deschidem în browser (http://localhost/introduction.php) și analizăm conținutul paginii web afișate în browser.
În PHP se pot realiza următoarele operații: ... generare de pagini cu conținut dinamic ... creare, deschidere, citire, scriere, ștergere și închidere de fișiere de pe server ... colectarea datelor din formulare ... trimiterea și primirea cookie-urilor ...adăugarea, ș tergerea, actualizarea datelor din baza de date ... controlul accesului utilizatorilor ... criptarea datelor
PHP nu te limitează în privința obiectelor afișate prin pagini web: pot fi afișate imagini, fișiere PDF, video Flash, texte XHTML sau XML.
De ce să alegi programare în PHP? • •
PHP rulează pe diferite platforme (Windows, Linux, U nix, Mac OS X, etc.)
PHP este compatibil cu aproape toate serverele utilizate în prezent (Apache, IIS etc.)
•
PHP suportă o gamă largă de baze de date 6
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
•
PHP este gratuit. Descărcați-l din resursa oficială PHP: www.php.net
•
PHP este ușor de învățat și rulează ef icient pe partea de s erver
De ce anume avem nevoie?
Pentru a începe să utilizați PHP, parcurgeți pașii de mai jos: • Identificați o gazdă web PHP gazdă și suport MySQL • Instalați un server web pe propriul PC, apoi instalați PHP și
• • • • •
MySQL
Urmați instrucțiunile de instalare de pe situl oficial http://php.net/manual/en/install.php
De ce avem cu adevărat nevoie în acest curs? Un server web XAMPP ( Apache), un interpretor PHP și un SBGD (MySQL) Un editor de text (Notepad++) Un browser (Firefox)
În cadrul acestui seminar, vom configura PHP pe propriul PC prin utilizarea XAMPP (inclusiv Apache și PHP, MySQL). Site-ul oficial PHP (PHP.net) are instrucțiuni de instalare pentru PHP: http://php.net/manual/en/install.php
Exemplul următor evidențiază modul în care PHP lucrează cu HTML, CSS și JavaScript: Ce vom realiza?
• • • •
vom crea un fișier *.php dintr -un fișier *.html deja existent vom adăuga stiluri utilizând CSS vom adăuga/include pagini dinamice (fișiere *.php) vom include un subsol, conținut ș i un men iu de navigare în paginile web.
Fișierele basis.html ș i basis.css au fost create și au următorul conținut: basis.css * { margin: 0px; padding: 0px; } body { font-size: 12pt;
Primii pași: • Creați un nou folder în directorul "C: / xampp /" (denumit
• • • •
"day_1")
Copiați "basis.html" cu numele "basis.php" în directorul "C: / xampp / htdocs / day_1" Creați un folder denumit "css" în "C: / xampp / htdocs /
day_1" și copiați "basis.ccs" în "C: / xampp / htdocs / day_1 / css"
Creați fișierele pe care le veți include în fișierul .php (Footer, Content, Navigation)
Pentru a include fișierele în "basis.php", utilizați instrucțiunea include.
Pentru o organizare optimă a fișierelor pe disc vă propunem următoarea structură de directoare și fișiere :
Figura de mai jos evidențiază ce se întâmplă la execuția pe server a fișierului basis.php :
13
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Ce es te World Wide Web (www) ?
•
Termenul World Wide Web este un sistem de documente și informații de tip hipertext legate între ele care pot fi accesate prin rețeaua mondială de Internet. Documentele, care rezid ă în diferite locații pe diverse calculatoare server, pot fi regăsite cu ajutorul unui identificator univoc numit URI. Hipertextul inclusiv imagini etc. este afișat cu ajutorul unui program de
navigare în web numit browser, care descarcă paginile web de pe un server web și le afișează pe un terminal „client” la
•
utilizator. Toate calculatoarele folosesc un protocol de comunicare numit HTTP
Cum funcționează www?
•
Informațiile web sunt stocate în documente
•
numite pagini web Paginile Web sunt
•
computere numite servere web Calculatoarele care
fișiere
stocate
pe
14
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
• •
”citesc” paginile web sunt numite clienți web Clienții web vizualizează paginile cu un program numit browser web Cele mai populare browsere sunt Google Chrome, Firefox și Internet Explorer
sursa imaginii: Wik ipedia Figura de mai sus evidențiază comunicarea ”statică” în www.
Interpretorul PHP acționează ca o extensie a serverului web care este invocată de ori câ te ori o pagina PHP este accesată (imaginea din dreapta ).
Această componentă procesează codul-sursa din pagină și apoi transmite rezultatul înapoi la web-server, ajungând în final în browserele utilizatorilor.
Modul de funcționare al interpretorului PHP este ilustrat de figura din dreapta ș i de figura din pagina următoare :
15
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
2. Programarea web în limbajul
PHP
Elemente de sintaxă ale limbajului PHP Un script PHP poate fi plasat oriunde în interiorul unui fișier HTML. Scriptul PHP începe cu :
// cod scris în PHP ?>
Extensia predefinită a unui fișier PHP este " .php". În mod obișnuit , un fișier PHP conține taguri HTML și instrucțiuni de cod PHP.
My first PHP page
Notă : Instrucțiunile PHP se încheie cu simbolul ”;”. Comentarii
Un comentariu în cod PHP este o linie care nu este citită/ executată ca parte a programului. Singurul său scop este de a fi citit de către cineva care analizează codul. Comentariile pot fi folosite pentru:
16
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
•
Alte persoane să înțeleagă scopul în care au fost scrise anumite linii de cod
•
Autorul codului/ programatorul să își poată aminti de ce a scris respectivele instrucțiuni. Cei mai mulți programatori trăiesc experiența de a reveni la propria lor munc ă un an sau doi mai târziu și de a constata că au uitat de ce au scris anumite linii de cod .
Există mai multe posibilități de a realiza comentarii în PHP:
// Comentariile pot fi folosite pentru a ”anula” //anumite secvențe de cod $x = 5 /* + 15 */ + 5; echo $x; ?>
Case-sensitivity
în PHP În PHP, toate cuvintele cheie (de exemplu if, else, while, echo, etc.), clase, funcții și funcții definite de utilizator nu sunt sensibile la scrierea cu litere mici sau cu litere mari.
În exemplul de mai jos, cele 3 instrucțiuni echo sunt corecte (și echivalente, ca rezultat): Exemplu: "; echo "Hello World! "; EcHo "Hello World! "; ?>
Cu toate acestea, identificatorii de variabile sunt case -sensitive. 17
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
În exemplul de mai jos doar prima instrucțiune va afișa valoarea variabilei $color, deoarece $color, $COLOR și $coLOR sunt tratate ca variabile distincte. Exemplu: "; echo "My house is " . $COLOR . " "; echo "My boat is " . $coLOR . " "; ?>
Notă: Identificatorii de variabile sunt case -sensitive. Variabile PHP Variabilele reprezintă ”containere” pentru memorarea informațiilor. Crearea (declararea ) variabilelor PHP
În PHP, un identificator de variabilă începe cu simbolul $, urmat de numele propriu-zis al variabilei: Exemplu:
După execuția instrucțiunilor de mai sus, variabila $txt va memora valoarea Hello world!, variabila $x va variabila $y va memora valoarea 10.5.
memora
valoarea 5,
iar
Notă: La atribuirea unei valori de tip șir de caractere, valoarea trebuie încadrată între ghilimele. Spre deosebire de alte limbaje de programare, în PHP nu există o instrucțiune de declarare a variabilelor. Aceasta este creată în momentul în care i se atribuie prima valoare. Tratați variabilele ca și containere pentru stocarea informațiilor!
18
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Un identificator de variabilă poate fi scurt(x sau y) sau poate fi des criptiv(age, carname, total_volume). Reguli pentru identificatorii de variabile PHP: Iden tificatorul variabilei începe cu simbolul $, variabilei
urmat de numele
• Numele variabilei trebuie să înceapă cu o literă sau cu simbolul ”_”
• Numele variabilei nu po ate să înceapă cu o cifră • Numele variabilei poate conține doar caractere alfa -numerice •
(A-z, 0-9) și simbolul ”_” Numele de variabile sunt cas e- sensitive ($age și $AGE
reprezintă variabile distincte)
Variabile de ieșire Instrucțiunea echo este adesea uti lizată pentru a afișa date pe ecran. Următorul exemplu evidențiază modul în care se va afișa un text și valoarea unei variabile pe ecran:
Următorul exemplu produce același rezultat ca exemplul anterior:
Exemplul de mai jos va afișa suma valorilor stocate în 2 variabile x și y:
Mai
multe
informații
găsiți
la
adresa:
http://www.w3schools.com/php /php_variables.asp
În limbajul PHP tipurile de date nu sunt foarte clar utilizate! Limbajul PHP nu necesită declararea tipurilor de date. În exemplul de mai sus, observați că variabilele x și y nu au fost declarate înaintea utilizării lor, nu au fost asociate tipuri de date acestor variabile. 19
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
PHP convertește automat variabila la tipul corect de date, în funcție de valoarea care i -a fost atribuită. În alte limbaje, cum ar fi C, C++ și Java, programatorii trebuie să declare numele și tipul de date al variabilei înainte de a o utiliza. PHP suportă următoarele tip uri de date:
În PHP, funcția var_dump() returnează tipul de date și valoarea unei variabile:
Pentru
mai
multe
informații,
accesați
link -ul:
http://www.w3schools.com/php/php_datatypes.asp Domeniul de vizibilitate al variabilelor
În PHP, variabilele pot fi declarate oriunde în interiorul s criptului. Domeniul de vizibilitate al unei variabile este zona din script în care variabila poate fi referită / utilizată. În PHP există trei domenii distincte de vizibilitate a variabilelor: • Local | Static (în interiorul unei funcții) • Global ( în afara unei funcții)
•
Super Global
(toate domeniile)
Domeniul Global și Local O variabilă declarată în afara unei funcții are un domeniu de vizibilitate GLOBAL și poate fi accesată doar în afara unei funcții:
// utilizarea variabilei x în interiorul funcției va genera eroare echo "
Variable x inside function is: $x
"; }
20
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI myTest(); echo "
Variable x outside function is: $x
"; ?>
O variabilă declarată în cadrul unei funcții are un domeniu de vizibilitate LOCAL și poate fi accesată numai în această funcție: Variable x inside function is:$x "; } myTest();
// utilizarea variabilei x în a fara funcției va genera eroare echo "
Variable x outside function is:$x
"; ?>
Notă: Puteți avea variabile locale cu același nume, în diferite funcții, deoarece variabilele locale sunt recunoscute numai de funcția în care acestea s unt declarate. Specificatorul global
Specificatorul global este utilizat pentru a acces a o variabilă globală din cadrul unei funcții. Pentru a realiza acest lucru, utilizați specificatorul global înaintea variabilei (în interiorul funcției):
echo $y; // afișează 15 ?>
PHP stochează, de asemenea, toate variabilele globale într -o matrice numita $GLOBALS [index]. Indicele are numele variabilei. De
asemenea, această matrice este accesibilă din funcții și poate fi utilizată pentru a actualiza în mod direct variabilele globale.
21
În mod normal, atunci când o funcție este executată, toate variabilele sale sunt șterse. Cu toate acestea, uneori, ne dorim ca o variabilă locală să NU fie eliminată pentru a o utiliza într -o altă secvență de instrucțiuni. Pentru a nu fi eliminată din memorie se utilizează specificatorul static la prima declarare a variabilei:
Apoi, de fiecare dată când funcția este apelată, acea variabilă va memora în continuare informațiile pe care le conținea la u ltimul apel. Notă: Variabila este locală funcției.
Instrucțiunile echo și print În PHP există două moduri de bază pentru afișare: echo și print. Instrucțiunile echo și print sunt mai mult sau mai puțin asemănătoare. Ambele sunt utilizate pentru afișarea da telor pe ecran. Diferențele care pot fi semnalate sunt: • echo nu returnează nici o valoare, în timp ce print returnează 1, astfel încât poate fi utilizată în cadrul expresiilor. • echo poate avea parametri multipli (mai rar) , în timp ce print are un parametru unic.
•
echo este o instrucțiune relativ mai rapidă decâ t print. 22
Un string repr ezintă un șir de caractere, cum ar fi “Hello World!“.
Funcții PHP specifice lucrului cu șiruri de caractere: • Lungimea unui șir de caractere : f uncția strlen() returnează numărul de caractere al unui string. Exemplu:
echo strlen(“Hello World!“); // a fișează 12 ?>
• Numărul de cuvinte al unui ș ir • • •
de caractere : Funcția str_word_count() returnează numărul de cuvinte al stringul ui primit ca parametru Inversarea unui ș ir de caractere : Funcția PHP strrev()
inversează stringul. Căutarea unui text specific din cadrul unui șir: Funcția strpos () caută un text specific într -un șir de caractere. Înlocuirea unui subșir într -un șir: Funcția PHP str_replace() înlocuiește unele caractere cu alte caractere dintr -un șir de caractere.
Pentru
mai
multe
informații,
accesați
link-ul:
http://www.
w3schools.com/ php/ php_ref_string.asp
Constante PHP O constantă este un identificator (nume) pentru o valoare simplă. Valoarea nu poate fi modificată în timpul execuției scriptului. Un identificator valid de constantă începe cu o literă sau cu simbolul ”_” (nu se utilizează simbolul $). Notă: Spre deosebire de variabile, constantele sunt vizibile global în cadrul scriptului.
Pentru crearea unei constante se utilizează funcția define(). Modul de utilizare a funcției define(): define(nume, valoare, case-insensitive)
Parametrii funcției și semnificația aces tora: • nume: specifică numele constantei • valoarea : specifică valoarea constantei 23
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
•
case-insensitive: specifică dacă numele constantei este sau nu sensibilă la scrierea cu majuscule. Implicit acest parametru are v aloarea fals.
În exemplul de mai jos se creează constanta GREETING, caseinsensitive :
Operatori PHP Operatorii sunt utilizați pentru a r ealiza diferite operații cu variabile și valori constante.
Instrucțiuni de decizie Instrucțiunile condiționale (de decizie) sunt utilizate pentru a executa anumite acțiuni bazate pe condiții. Foarte des atunci c ând scriem cod, dorim să efectuăm acțiuni diferite pentru diferite condiții. În PHP există următoarele instrucțiuni de decizie: • if – execută o secvență de cod dacă o condiție logică este adevărată • if...else - execută o s ecvență de cod dacă o condiție logică este adevărată și execută altă secvență de cod dacă condiția este falsă 24
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
• •
if...elseif....else – execută
diferite secvențe de cod pentru două sau mai multe condiții logice switch – selectează o secvență de cod care va fi executată în funcție de valoarea u nei expresii-selector
Pentru sintaxă ș i exemple accesați linkurile http://www.w3schools.com/php/php_if_else.asp http://www.w3schools.com/php/php_switch.asp
Instrucțiuni de ciclare în PHP Instrucțiunile de ciclare (repetitive) PHP execută o secvență de cod cât timp o condiție logică es te adevărată. De multe ori, atunci când scriem cod, aceeași secvență de cod dorim să se execute de mai multe ori. Pentru a evita scrierea de linii de cod
identice în mod repetat, putem utiliza instrucțiuni de ciclare. În PHP avem următoarele instrucțiuni de ciclare: • while - execută o secvență de cod cât timp o condiție logică este adevărată. • do...while - execu tă o secvență de cod o dată, apoi repetă execuția secvenței cât timp o condiție logică es te adevărată. • for - execută o secvență de cod de un număr de ori specificat • foreach - execută o secvență de cod pentru fiecare elem ent al unui tablou
Funcții PHP Adevărata putere a limbajului PHP derivă din funcțiile sale, limbajul încorporează peste 1000 de funcții predefinite.
Funcții definite de utilizator în limbajul PHP • În afară de funcțiile prede finite ale limbajului, ne putem crea propriile noastre fun cții. • Funcția reprezintă un bloc de instrucțiuni care poate fi executat în mod repetat în cadrul unui program. • Funcția nu se va executa imediat ce se încarcă pagina în browser, aceasta se va executa doar în urma unui apel. Crearea unei funcții definite de utilizator în PHP: O funcție definită de utilizator începe cu cuvântul rezervat "function": 25
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Sintaxa: function functionName() { code to be executed; }
Notă: Numele unei funcții începe cu o literă sau simbolul ”_”, nu poate începe cu o cifră. Alegeți nume s uges tive pentru funcții care să reflecte scopul acesteia. Numele de funcții nu sunt case-sensitive . Pentru mai multe detalii accesați: http://php.net/manual/en/functions.user-defined.php
Tablouri PHP Un tablou reprezintă o structură de date care memorează într -o singură variabilă o mulțime de valori. Exemplu:
Dacă aveți de memorat o listă de valori (de exemplu numele unor mașini), memorarea acestor date ar arăta în modul următor: $cars1 = "Volvo"; $cars2 = "BMW"; $cars3 = "Toyota";
Dacă ar trebui să scrieți un cod pentru identificarea une i anumite mașini dintr -o mulțime de 3 sau 300 de mașini, cum ar arăta codul? Soluția în acest caz este să creați un tablou. Un tablou poate stoca o mulțime de valori, utilizând un nume unic, iar regăsirea unei valori se va realiza prin referirea la un anumit index(poziția ocupată de valoare ). Pentru crearea unui tablou în PHP se utilizează funcția array().
În PHP, există 3 tipuri de tablouri: • Tablouri indexate – tablouri indexate numeric • Tablouri asociative – tablouri în care identificarea unui element se realizează pe baza unei chei • Tablouri multidimensionale – tablouri care conțin unul sau mai multe tablouri 26
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Sortarea tablourilor
• • • • • •
sort() – sortează tablourile în ordine crescătoare rsort() - sortează tablourile în ordine descrescătoare asort() - sortează tablourile asociative în ordine crescătoar e,
în funcție de o valoare dată ksort() - sortează tablourile asociative în ordine crescătoare, în funcție de o cheie dată arsort() - sortează tablourile asociative în ordine descrescătoare, în funcție de o valoare dată krsort() - sortează tablourile asociative în ordine d escrescătoare, în funcție de o cheie dată
Pentru mai multe detalii acces ați linkurile : http://www.w3schools.com/php/php_arrays.asp http://www.w3schools.com/php/php_arrays_sort.asp
Variabile globale și superglobale în PHP Variabilele superglobale, "superglobals", au fost introduse o dată cu versiunea PHP 4.1.0 și reprezintă variabile predefinite ale limbajului care s unt întotdeauna accesibile, indiferent de domeniul de vizibilitate - și pot fi acces ate din orice funcție, clasă sau fișier, fără a fi nevoie de
alte instrucțiuni. Variabilele superglobale în PHP sunt: • $GLOBA LS • $_SERVER • $_REQUEST • $_POST • $_GET • $_FILES • $_ENV • $_COOKIE • $_SESSION
Detalii legate de semnificația fiecărei astfel de variabile găsiți la adresa : http://www.w3schools.com/php/php_superglobals.asp
Gestionarea
formularelor în PHP
Variabilele superglobale $_GET și $_POST sunt utilizate pentru
colectarea datelor în formulare de date. 27
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Formulare HTML simple
Exemplul de mai jos prezintă un formular HTML simplu, cu două câmpuri și un buton de ”submit”. Exemplu:
Atunci când utilizatorul completează formularul de mai sus și dă clic pe butonul de trimitere, datele din formular sunt trimise pen tru procesare într -un fișier PHP denumit "welcome.php". Datele din formular sunt trimise prin metoda HTTP POST.
Metoda HTTP POST și variabila superglobală $_POST Pentru afișarea datelor trimise prin intermediul formularu lui putem utiliza variabila superglobală $_POST și instrucțiuni de afișare a diferitelor componente ale acesteia. Fișierul "welcome.php" va arăta astfel: Welcome Your email address is:
Pe ecran vor fi afișate următoarele date: Welcome John Your email address is [email protected]
Rezultate identice cu cele din scriptul anterior se obțin utilizând metoda HTTP GET:
28
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Fișierul "welcome_get.php" va avea u rmătorul conținut: Welcome Your email address is:
În procesarea formularelor este importantă SECURITATEA datelor transmise! GET versus POST
Ambele metode GET și POST creează un tablou de forma (cheie1 => valoare1, cheie2 => valoare2,....), în care cheile reprezintă numele câmpurilor din formular, iar valorile reprezintă datele introduse de utilizator în aces te câmpuri. Informațiile trimise prin metodele GET și POST se recuperează prin intermediul variabilelor superglobale $_POST și $_GET . $_GET este un tablou de variabile transferat scriptului curent prin parametri URL. $_POST este un tablou de variabile transferat scriptului curent prin metoda HTTP POST.
Programatorii preferă metoda POST pentru trimiterea datelor din formulare.
29
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Când să utilizăm metoda GET? Informațiile transmise dintr -un formular prin metoda GET sunt vizibile tuturor( toate numele și valorile variabilelor sunt afișate în URL). GET este o metodă care restricționează volumul de informație trimis la aproximativ 2000 de caractere. Datorită faptului că variab ilele sunt afișate în URL, este posibil să marcăm pagina, lucru util în anumite situații. Metoda GET poate fi utilizată în transmiterea datelor mai puțin importante. Notă: Metoda GET
nu trebuie utilizată pentru trimiterea parolelor sau a altor informații importante! Când anume utilizăm metoda POST? Informațiile transmise dintr -un formular prin metoda POST nu sunt vizibile altor persoane(numele/valorile sunt încorporate în cadrul unei cereri HTTP) și nu există limitări din punct de vedere al volumului de informație transmis. În plus, metoda POST oferă o funcționalitate avansată cum ar fi suport pentru operația de încărcare a fișierelor pe server în format binar. Deoarece variabilele nu sunt afișate în URL marca rea paginii care conține formularul nu este posibilă. Pentru mai multe informații accesați link -ul : http://www.w3schools.com/php /php_forms.aspf Validarea datelor din formulare
Pentru protejarea datelor dintr-un formular trebuie să realizați o
validare corectă a datelor care să protejeze formularul împotriva atacurilor provocat de hackeri sau a s pam-urilor.
Ce este funcția htmlspecialchars()? Funcția htmlspecialchars() convertește caracterele spec iale în entități HTML. De exemplu, caractere ca ” < ” și ” >” vor fi înlocuite cu < și >. Acest lucru împiedică atacatorii să exploateze codul prin i nserarea de coduri HTML sau Javascrip t în formulare (atacuri de tip Cross -site Scripting).
Notă : Foarte important în securitatea unui formular PHP – Variabila $_SERVER["PHP_SELF"] poate fi utilizată de hackeri! Dacă utilizați în pagină parametrul PHP_SELF atunci un hacker poate introduce în cod un simbol ”/” și comenzi de tip Cross Site Scripting (XSS) pentru a exploata datele. 30
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Cum putem evita vulnerabilitatea variabilei $_SERVER["P HP_SELF"] în propriile pagini? Prin utilizarea funcției htmlspecialchars(). Codul din pagina care conține formularul ar arăta as tfel:
Validarea datelor din câmpul ”Name” Codul de mai jos exemplifică un mod simplu de a verifica dacă câmpul name conține numai litere ș i caractere albe. Dacă valoarea din câmpul name nu este validă, se va stoca un mesaj de eroare în variabila $nameErr. $name = test_input($_POST["name"]); if (!preg_match("/^[a-zA-Z ]*$/",$name)) { $nameErr = "Only letters and white space allowed"; }
Funcția preg_match() returnează true dacă toate caracterele stocate în variabila $name aparțin mulțimii de caractere șablon dată ca parametru al funcției și fals în caz contrar. 33
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Validarea datelor din câmpul ”Email” Cel mai simplu mod de a valida o adresă de email este utilizarea funcției PHP filter_var(). În codul de mai jos se verifică corectitudinea adresei de email. În cazul în care textul nu este valid se va stoca în variabila $emailErr un mesaj de eroare: $email = test_input($_POST["email"]); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { $emailErr = "Invalid email format"; }
Validarea datelor din câmpul ”URL” În codul de mai jos se verifică corectitu dinea adresei URL (expresia permite, de asemenea, utilizarea cratimelor în cadrul URL). În cazul în care textul nu este valid se va stoca în variabila $websiteErr un mesaj de eroare: $website = test_input($_POST["website"]); if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z09+&@#\/%=~_|]/i",$website)) { $websiteErr = "Invalid URL"; }
Cookies în limbajul
PHP
Un cookie este utilizat pentru identificarea unui utilizator. Un cookie reprezintă un mic fișier stocat pe compute rul utilizatorului.
De fiecare dată când de pe un computer se execută o cerere de încărcare a unei pagini în browser va fi trimis serverului fișierul cookie pentru identificarea utilizatorului. Cu ajutorul limbajului PHP puteți crea sau regăsi valori coo kie. Crearea unui cookie în PHP
Un cookie se creează cu ajutorul funcției setcookie(). În exemplul următor se creează un cookie numit "user" cu valoarea "John Doe". Acest cookie va expira în 30 zile(86400 * 30). Simbolul "/" arată că cookie va fi disponibil în toate paginile sit e-ului. Pentru identificarea unui cookie "user" utilizăm variabila globală $_COOKIE.
Funcția isset() verifică dacă cookie a fost creat :
34
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Exemplu: "; echo "Value is: " . $_COOKIE[$cookie_name]; } ?>
Funcția setcookie() trebuie să apară înaintea tagului . Pentru a afla detalii legate de operații cu cookie accesați linkul http://www.w3schools.com/php/php_cookies.asp
Sesiuni Sesiunea rep rezintă o metodă de stocare în variabile a informațiilor astfel încât acestea să poată fi utilizate în mai multe pagini web. Spre
deosebire de un cookie, informațiile nu sunt stocate pe computerul utilizatorului.
O sesiune durează atât timp cât utilizatorul accesează un site și se încheie o dată cu închiderea browserului. Accesarea unei pagini web est e o operație de sine stătătoare, orice accesare ulterioară a aceleiași pagini (spre exemplu un refresh) se va face fără ca serverul "să știe" de accesările anterioare. La fel se întâmplă atunci când sunt accesate mai multe pagini diferite una după alta. sesiune rezolvă această problemă prin stocarea informațiilor legate de utilizator și utilizarea lor în cadrul mai multor Variabilele
pagini vizitate de aces ta. (de exemplu: us ername, favorite color, etc). 35
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
Implicit, variabilele sesiune sunt stocate pe server până la închiderea browserului.
Notă: Pentru memorarea permanentă a datelor unui utilizator există opțiunea memorării aces tora într -o bază de date. Deschiderea unei s esiuni PHP
O sesiune începe la apelul funcției session_start(). Variabilele sesiune sunt setate cu variabila globală $_SESSION. Vom crea o pagină numită "demo_session1.php", în care vom deschide o nouă s esiune și vom seta câteva variabile de tip ses iune. Notă: Funcția session_start() trebuie apelată la începutul paginii, înaintea oricăror taguri HTML.
Obținerea valorilor variabilelor sesiune Vom crea o altă pagină numită "demo_session2.php". Din această pagină vom acces a informațiile variabilelor ses iune din pagina creată anterior ("demo_s ess ion1.php").
Observați că variabilele sesiune nu sunt transmise în mod individual pentru fiecare pagină nouă, în schimb, acestea sunt preluate din sesiunea deschisă la începutul fiecărei pagini (ses sion_start ()). De asemenea, observați că toate valorile variabilelor sesiune sunt stocate în variabila globală $_SESSION:
36
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
?>
// Se afișează valorile variabilelor sesiune setate în pagina anterioară echo "Favorite color is " . $_SESSION["favcolor"] . ". "; echo "Favorite animal is " . $_SESSION["favanimal"] . "."; ?>
Figura de mai jos ilustrează fluxul de date în sesiunile existente în paginile web:
Cele patru fișiere .php sunt prezentate în paginile următoare. Pagina session_login.php conține următorul cod:
37
PHP- GHID DE PROGRAMARE WEB PENTRU Î NCEPĂTORI
session_destroy(); $_SESSION = array(); ?>
Login-Pages
Pagina intro.php conține următorul cod:
// verifică dacă există apel din pagina session_login.php if(isset($_POST["name"])) {
// verifică dacă numele și parola sunt corecte if == || ==