PHP 1.   Unelte de baza - ce aveti nevoie pentru un site profesionist.      2. Despre PHP - ce este şi instrucţiuni pentru...
De ce să folosiţi PHP în loc de HTML sau ASP sau PERL? Pentru că, faţă de alte limbaje, PHPeste gratuit.Să spunem că aveţi...
După ce aţi făcut rost de tot ce vă trebuie ca să începeţi treaba, vă recomand să citiţi încontinuare celelalte articole, ...
?>Cea de-a doua posibilitate este utilizarea marcajului <SCRIPT> într-o maniera asemănătoarecelei folosite pentru includer...
echo $b;?>După cum se vede, modificarea valorii variabilei $b a dus automat la modificarea automată avalorii variabilei $a...
$HTTP_SERVER_VARS conţine aceleaşi informaţii dar nu este o funcţie globală (atenţie$HTTP_SERVER_VARSşi $_SERVER sunt două...
HTTP_HOST  - Conţine informaţii despre host, header-ul de la cererea curentă, dacă există. HTTP_REFERER  - Adresa paginii ...
acestei variabile este setată în Authorization header trimis către client (care ar trebui utilizatpentru a face o validare...
__FILE__ - toată calea şi numele fişierului curent. Dacă este folosit în interiorul unui fişierinclus, va returna numele f...
Cod:<?php$a = 1;function test ()   {   echo $GLOBALS ["a"];   }test ();?>                                       Tipuri de ...
- un sir de caractere este convertit luând în considerare doar primele caractere care conţininformaţii numerice; aşadar şi...
- valoarea logică TRUE va fi convertită la şirul "1", iar valoarea logică FALSE va fi convertită laşirul vid ("");- un num...
familie => citrice,culoare => portocaliu,forma => rotunda,gust => dulce);Putem adăuga şi alte elemente care să reprezinte ...
{         echo "SALUTARE LUME!";         }     }Pentru a utiliza o variabilă de tip obiect va trebui să realizăm o instanţ...
short_open_tag pe ON şi nu va funcţiona.O funcţie asemănătoare cu echo este print. La fel ca şi echo, nici aceasta nu este...
Construieşte un site cu phpÎn continuare, o să încerc să vă prezint cum se poate construi un site cu ajutorul limbajuluiPH...
conţinutul paginii cerute. Pe langă acestea, dacă doriţi să bagaţi alte scripturi în pagini, seinclude şi fisierul module....
dacă doriţi să descărcaţi fişierul care conţine scriptul, este posibil ca extensia fişierului scriptsă fie incorectă sau c...
dar personal mi se pare greu inteligibil acest cod şi la un volum mare de date pot apare multeerori datorate scrierii inco...
}?>Alţi operatori folosiţi pentru compararea valorilor variabilelor sunt:> mai mare>= mai mare sau egal< mai mic<= mai mic...
$nr = 5;print Am scris numarul .$nr. si un text . oarecare;// pe ecran va fi afisat "Am scris numarul 5 si un text oarecar...
scădere (-=)                 $a   -= 2     $a   =   $a   -2înmulţire (*=)               $a   *= 2     $a   =   $a   *2împă...
$a = 1;echo "<br>$a <<= $b = ";echo $a <<= $b;$b =   2;$a =   1;echo   "<br>$a >>= $b = ";echo   $a >>= $b;$b =   2;$a =  ...
Cod:<?php$a = 7;echo "<tt>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>a++</tt><i> este </i><tt>";echo $a++;echo "...
echo $a++;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";echo "<br>a = $a";echo ": </tt><i>...
Cod:<?phpecho "<PRE>".`help /?`."</PRE>";?>Atenţie!Pe unele configuraţii de server nu se permite executarea de comenzi pri...
1; variabila $b va primi valoarea 1 şi, datorită faptului că rezultatul unei operaţii de atribuireeste valoarea atribuită ...
@de la stânga la dreapta            unar                                 [fără asociativitate                unar         ...
mai simplu: $variabila în loc de $_GET[variabila], la fel şi pentru POST sau FILES. Dacăscriptul nu este foarte bine gândi...
5. ExtensiiO practică obişnuită este de a acorda extensia .inc fişierelor care conţin biblioteci de funcţii ceurmează a fi...
Pentru o verificare ulterioară a persoanelor care încearcă să intre în paginile restrictionate depe site, este bine să sal...
Cum am specificat şi la începutul acestui articol, cele spuse mai sus nunt doar cateva indicii şiidei pentru a vă putea pr...
elseif ...elseif (conditie #n) instruciune #nelse instructiune #n+1Sintaxe alternativeDacă dorim să se execute mai multe i...
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
48892700 invatam-php
Upcoming SlideShare
Loading in...5
×

48892700 invatam-php

3,357

Published on

0 Comments
4 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,357
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
155
Comments
0
Likes
4
Embeds 0
No embeds

No notes for slide

48892700 invatam-php

  1. 1. PHP 1. Unelte de baza - ce aveti nevoie pentru un site profesionist. 2. Despre PHP - ce este şi instrucţiuni pentru începători. 3. Variabile în PHP - ce sunt şi cum se folosesc. 4. Variabile predefinite 5. Domeniul de vizibilitate al variabilelor - Cum se pot accesa variabilele. 6. Tipuri de variabile 7. Afişarea mesajelor în PHP 8. Construieşte un site cu php 9. Câteva informaţii despre documentarea şi depanarea unui script. 10. Operatori PHP 11. Câteva idei utile pentru securitatea paginilor web 12. Structuri de control în PHP 13. Despre funcţii în PHP 14. Clase şi obiecte în PHP 15. Crearea imaginilor thumbnails 16. Autentificarea în paginile restricţionate şi câteva informaţii despre cookie, uploadul fişierelor şi includerea lor în pagini, precum şi informaţii despre starea conexiunii. 17. Descrierea funcţiilor care pot fi utilizate la manipularea tablourilor 18. Lucrul cu fişiere şi directoare 19. Descrierea funcţiilor de prelucrare a fişierelor 20. Funcţii care faciliteaza lucrul cu directoare 21. Valori scalare şi tablouri 22. Lucrul cu formulare 23. Conversia tipurilor de variabile 24. Scrierea instrucţiunilor swich, break şi default 25. Scrierea instrucţiunilor for 26. Scrierea instrucţiunilor while şi do while 27. Introducere în Clase PHP 28. Sesiuni în PHP 29. Crearea şi utilizarea funcţiilor 30. Utilizarea fişierelor incluse 31. Funcţii PHP pentru expresii regulate 32. Utilizarea referinţelor în PHP 33. Lucrul cu funcţii listă 34. Interoperabilitate PHP-Java 35. Transmiterea mesajelor prin e-mail folosind PHP şi PEAR 36. Informaţii despre clasele încărcate 37. Prelucrarea dinamică a imaginilor 38. Funcţii PHP utilizate pentru accesarea şi interogarea bazelor de date MySQL 39. Utilizarea şirurilor 40. Manipularea şirurilor şi scrierea expresiilor regulate 41. Utilizarea variabilelor cookie 42. Expedierea mesajelor de poştă electronică 43. Stocarea unor date ierarhice într-o bază de date 44. PHP 5, Factory 45. PHP 5, SQLite în Factory? Unelte de baza - ce aveti nevoie pentru un site profesionist.
  2. 2. De ce să folosiţi PHP în loc de HTML sau ASP sau PERL? Pentru că, faţă de alte limbaje, PHPeste gratuit.Să spunem că aveţi de făcut un site care va conţine peste 150 de pagini. Dacă ar fi să îl faceţiîn HTML, ar dura ceva vreme. Ok. Să zicem că site-ul este gata, dar acum vreţi să schimbaţifontul şi culorile textului şi ale link-urilor în toate cele 150 de pagini. Vă apucă durerea de capdoar când vă gândiţi ce aveţi de făcut. În schimb, în PHP, acest lucru şi multe altele sunt foartesimple. Dacă site-ul respectiv ar fi fost făcut în PHP pe module, tot ce ar fi trebuit să faceţi esteca în partea care conţine informaţiile despre text să schimbaţi informaţile despre text şi linkaşa cum doriţi şi modificarea este aceeaşi pentru toate paginile. Simplu nu?Pentru a rula exemplele şi scripturile existente pe acest site pe calculatorul dvs. de acasă saupe pagina proprie trebuie să aveţi instalate şi configurate câteva aplicaţii de care o sa vorbim încontinuare. Nu trebuie să aveţi cunoştinţe preliminare de baze de date sau programare. Simplastudiere a codului sursa şi aplicarea exemplelor vă poate lămurii ce poate face php. Deci, dacăvă credeţi pregătiţi cititi în continuare... Unelte de bazăCrearea unor pagini dinamice la un nivel performant, precum şi punerea lor în funcţiune, nupoate fi făcută fără anumite programe. Iată cam de ce aveţi nevoie:Browsere - Pentru testarea paginilor este nevoie de mai multe browsere pentru că nu toateafişează acelaşi rezultat şi este neprofesional să obligaţi vizitatorul să folosească un anumitbrowser doar pentru că pagina făcută de voi arată şi merge mai bine cu acel browser. Deci vărecomand să instalati 2-3 browsere pentru teste. Dintre cele mai folosite în prezent vărecomand Internet Explorer (folosit pe calculatoare cu sistem de operare Windows), Firefox (sefoloseste din ce în ce mai des datorită extensiilor şi faptului că se poate instala atât pe sistemede operare Windows cât şi pe Mac OS X sau Linux) şi Opera (care are suport pentru mai multesisteme de operare).Serverul web pentru teste - Dacă lucraţi cu PHP-MySQL sub Windows, sigur aveţi nevoie detriada Apache - PHP - MySQL să fie instalată pe calculatorul local. Pentru aceasta aveţi douăposibilităţi: prima ar fi să descărcaţi de pe pagina producătorului fiecare aplicaţie în parte şi săo instalaţi manual, urmând apoi să faceţi configurarea serverelor manual (lucru nerecomandatîncepătorilor) şi a doua variantă să descărcaţi un program care instalează toate acestea gataconfigurate pe calculator, urmând ca voi doar să vă apucaţi de lucru. Astfel de aplicaţii suntEasyPHP de exemplu (pentru Windows 95-98 dar merge şi pe Windows 2000 şi XP) saurecomandarea mea WAMP5 care merge doar pe Windows NT (adica 2000, XP, 2003, Longhorn,etc) dar care are multe alte facilităţi în plus faţă de EasyPHP pe care cu timpul când veţi învăţamai multe despre PHP si MySQL o să le consideraţi foarte utile (cum ar fi posibilitatea detestare a scripturilor PHP atât pentru versiunea 4 cât si 5). Ultima recomandare, atât pentru ceicare folosesc sistemul de operare Windows cât şi Linux, ar fi XAMP care conţine toate pachetelenecesare instalării şi configurării unui server de web profesional (inclusiv server de FTP, SSI,DNS şi MAIL), dar pe care nu îl recomand începătorilor pentru că mulţimea de facilităţi oferitevă poate încurca.Editoare web - După ce aţi instalat serverul web şi browserele acum vă mai trebuie un editorbun pentru a scrie cod şi a vizualiza paginile create. Pentru aceasta recomandarea mea estesuita Macromedia (Dreamweaver, FLASH şi FreeHAND). Puteţi descărca Dreamweaver (pentrua scrie cod şi a vedea/rula paginile în timp real) de la ei de pe site şi tot de la ei vă mairecomand Fireworks (dacă vă ocupaţi şi cu design-ul paginilor aceasta aplicaţie vă este utilăîmpreună cu Adobe Photosop sau Corel Draw) şi Flash (dacă doriţi să faceţi animaţie pentrusite). Desigur sunt o mulţime de programe care fac aceleaşi lucruri cu ce vă recomand eu, dardacă doriţi să lucraţi la nivel profesional recomand să lucraţi cu unelte de profesionişti.Bineânţeles că puteţi scrie cod şi în Notepad şi desena în Paint dar aplicaţiile pe care vi le-amrecomandat vă uşurează extraordinar de mult munca şi vă semnalează rapid erorile din pagini.Alte editoare pe care vi le recomand să le testaţi sunt: PSPad (un bun înlocuitor al Notepad-ului, mai ales că este freeware), Zend Studio (destinat profesioniştilor).
  3. 3. După ce aţi făcut rost de tot ce vă trebuie ca să începeţi treaba, vă recomand să citiţi încontinuare celelalte articole, eventual să vizitaţi şi pagina de download, sigur găsiţi ceva utilacolo pentru început, apoi pagina de link-uri, unde găsiti resurse gratuite şi să discutăm peforum eventualele probleme pe care le întâmpinaţi. Despre PHP - ce este şi instrucţiuni pentru începători. Despre PHPPHP este limbajul ideal pentru construirea de pagini web dinamice. Este usor de învăţat, open-source, poate fi rulat pe mai multe platforme şi se poate conecta la mai multe tipuri de baze dedate. Cel mai important aspect al limbajului este însa posibilitatea de a fi îmbricat cu codHTML. Putem astfel crea pagini HTML statice şi din loc în loc, acolo unde este nevoie, săintroducem dinamism cu ajutorul PHP.Limbajul PHP s-a "născut" în 1994 din nevoia lui Rasmus Lerdorf de a afla câte persoane îivizitează CV-ul online. El a denumit setul de scripturi create PHP, acronimul pentru PersonalHome Page. Pe parcursul următorilor trei ani limbajul a evoluat dar adevăratul succes a începutsă îl cunoască de când Zeev Suraski si Andi Gutmans au rescris motorul PHP de la cap lacoadă, motor care poartă din versiunea 4 a PHP numele Zend, o combinaţie de litere dinprenumele creatorilor săi: Zeev şi Andi.Fiind open-source, PHP beneficiază de suport activ din partea comunităţii online, acesta fiind şimotivul creşterii explozive a numărului site-urilor bazate pe PHP.Interpretorul PHP este cel mai cunoscut limbaj de scripting folosit în acest moment pentrucrearea site-urilor Web interactive. Denumirea este un "acronim recursiv" pentru HypertextPreProcessor. Diferenţa esenţială faţă de alte limbaje de scripting (gen JavaScript) este faptulcă PHP este un interpretor server-side (operaţiile sunt executate de către server şi nu pecalculatorul utilizatorului). Pentru a putea testa pagini PHP aveţi nevoie de un server de web(Apache) şi de pachetul PHP instalat.PHP permite folosirea unor elemente specifice limbajelor de programare. Ieşirea standard ascript-ului PHP devine intrarea standard pentru programul de navigare care vizualizeazăpagina. Aşadar, la iesirea standard poate fi scris (de exemplu, prin intermediul comenzii echo)orice tip de cod HTML, acesta fiind interpretat de către browser.Pe lângă manipularea conţinutului paginilor de web, PHP poate trimite headere HTTP pentruautentificare, seta cookie-uri sau redirecţiona utilizatorii. Mai mult, cu ajutorul bibliotecilorexterne de funcţii poate parsa fisiere XML, crea şi manipula imagini, animaţii Shokwave Flash,PDF-uri sau se poate conecta la un server de mail, iar acestea sunt doar câteva din funcţiile pecare le poate îndeplini.Interpretorul PHP parcurge documentul accesat până în momentul în care întâlneşte un marcajde deschidere care indică faptul că textul care urmează trebuie interpretat ca fiind cod PHP. Încontinuare, textul este interpretat ca fiind cod PHP până în momentul în care este întâlnitmarcajul de inchidere. Întreg textul care nu este interpretat ca fiind cod PHP este furnizat laiesire în forma în care a fost primit ca intrare de catre interpretor. Există mai multe marcajecare indică începerea unei secvenţe de cod PHP, dar doar două dintre ele sunt folosite de obicei(aceste marcaje depind şi de configurarea serverului de web). Dacă dorim ca documentul sărespecte specificaţiile XML, atunci singura posibilitate de inserare a codului PHP este folosireaunei secvente de tipul: Cod:<?php//cod PHP
  4. 4. ?>Cea de-a doua posibilitate este utilizarea marcajului <SCRIPT> într-o maniera asemănătoarecelei folosite pentru includerea de script-uri JavaScript. Sintaxa este urmatoarea: Cod:<SCRIPT language = "php">//cod PHP</SCRIPT>Există alte două posibilităţi, dar acestea sunt folosite rar, în situaţii particulare şi depinde înmare măsură de setările serverului de web.Este permisă "iesirea" şi "intrarea" în "modul PHP" de oricâte ori este necesar în pagină.Aceasta este util când se lucrează cu texte de mari dimensiuni.Pentru ca instrucţiunile PHP să fie interpretate corect, acestea trebuie separate prin caracterul;.În PHP, comentariile pot fi inserate folosind sintaxele din C, C++ şi shell-urile Unix. Apariţiasecventei de caractere // sau a caracterului # indică faptul că restul liniei reprezintă uncomentariu. Pentru a insera comentarii pe mai multe linii, acestea trebuie delimitate desecventa /* la început şi de secventa */ la sfârşit. Variabile în PHP - ce sunt şi cum se folosesc. Variabile în PHPProgramarea de orice fel, nu doar PHP, are două elemente de bază: datele şi instrucţiunile.Pentru a lucra cu datele trebuie să înţelegem ce sunt variabilele şi tipurile, iar pentru a lucra cuinstrucţiuni trebuie să aflăm ce sunt structurile de control şi funcţiile.O variabilă este o zonă de memorie căruia i se dă un nume pentru a putea fi recunoscutăulterior şi pentru a ne putea referi mai târziu la ea.În PHP, o variabilă este reprezentată de semnul $, urmat de numele variabilei. La fel ca înlimbajele C/C++ sau Java, pentru denumirea variabilelor se face distincţia între literele mari şiliterele mici.Numele unei variabile poate începe cu o liniuţă de subliniere _ sau o literă. Restul caracterelorcare formează numele variabilei pot fi litere, cifre sau liniuţe de subliniere. În PHP, suntconsiderate litere toate caracterele cuprinse între a şi z, cele cuprinse între A şi Z, precumşi cele care au codul ASCII cuprins între 127 şi 255.Începând cu versiunea 4, au fost introduse referinţele; astfel, o variabilă poate referi o alta,astfel încât modificarea valorii uneia duce la modificarea automată a valorii celeilalte. Oreferinţă la o variabilă este reprezentată de caracterul &. Iată un scurt exemplu: Cod:<?php$a = "PHP4 e slab";$b = &$a;$b = "PHP4 e foarte bun";echo $a;echo "<br>";
  5. 5. echo $b;?>După cum se vede, modificarea valorii variabilei $b a dus automat la modificarea automată avalorii variabilei $a.Să disecăm codul pentru a învăţa câteva lucruri:- toate instrucţiunile PHP se termină cu punct şi virgulă. Omiterea semnului ";" este cea maifrecventă greşeală pe care o fac programatorii începători.- codul PHP începe întotdeauna cu "<?php" şi se termină cu "?>". El poate fi îmbricat cu codHTML după cum puteţi vedea în exemplul de mai sus. Puteţi chiar crea pagini HTML fără pic decod PHP în ele şi să le daţi extensia php. Atâta vreme cât parser-ul PHP nu "vede" tagurile "<?php ...?> ", el va trimite pagina neschimbată către server.- putem pune diacritice în cadrul unui string însă pentru ca browserul să le afişeze corect vatrebui să specificăm în <head> setul de caractere folosit, la fel ca într-un document HTML.- valoarea unei variabile poate fi schimbată după necesităţi (aşa cum am schimbat valoarea lui$a) sau ea va fi schimbată automat în funcţie de celelalte variabile de care depinde. Variabile predefiniteÎncepand de la versiunea 4.1.0 metodele predefinite pentru preluarea variabilelor externedepind de setarea din php.ini a variabilelor globale (register_globals). Astfel dacă pe servereste setată register_globals=ON (nerecomandat) se pot prelua de exemplu variabilele trimiseprin GET şi POST apelând direct variabila.Exemplu: Cod:<?php// sa spunem ca avem un formular in care exita un camp numit "camp1" sicare se trimite prin metoda POST:// cu register_globals=ON$camp1 = "valoarea campului";// cu register_globals=OFF$_POST[camp1] = "valoarea campului";$camp1 = $_POST[camp1];?>Variabile globale:$GLOBALS - pot fi accesate toate variabilele globale care sunt accesibile script-ului PHPcurent; acest vector este indexat chiar prin numele variabilelor globale. Această variabilăsuperglobală este accesibilă începând cu versiunea 3.0.0$_SERVER - conţine o serie de variabile ale căror valori sunt setate de server-ul web;majoritatea valorilor variabilelor din acest vector depind de mediul de execuţie al script-uluicurent. A fost introdusă începând de la versiunea 4.1.0. În versiunile anterioare se folosea$HTTP_SERVER_VAR .Este o variabilă care conţine informaţii cum ar fi headere, locaţia scriptului, sau informaţiidespre vizitator şi browser. Este posibil ca în funcţie de setările fiecărui server şi browser să nufie active toate informaţiile specificate de această variabilă. Această variabilă este deasemenea globală, adică se poate folosi oriunde în script, fără apelarea ei ca funcţie globală(adică nu trebuie să o cereţi cu global $_SERVER în funcţiile dvs.) În schimb
  6. 6. $HTTP_SERVER_VARS conţine aceleaşi informaţii dar nu este o funcţie globală (atenţie$HTTP_SERVER_VARSşi $_SERVER sunt două variabile diferite, chiar dacă aparent facaceleaşi lucruri) Dacă directiva register_globals este ON atunci aceste variabile vor deveni larândul lor variabile globale în cadrul scriptului.Elementele acestor variabile sunt cele de mai jos (atenţie: în funcţie de setările serverului şibrowserului unele elemente pot lipsi) PHP_SELF - conţine numele fişierului unde se execută scriptul curent, relativ la rădacină(document root) De exemplu, $_SERVER[PHP_SELF] într-un script la adresahttp://example.com/test.php/foo.bar va fi /test.php/foo.bar . Constanta __FILE__ conţinetoată calea şi numele fişierului curent. argv - Un array al argumentului trimis către script. Când scriptul rulează în linie decomandă, va da acces C-style la parametrii liniei de comanda. Când este accesat prin metodaGET, acesta va conţine un sir de interogare. argc - Conţine un număr al parametrilor liniei de comandă trimise către script (daca esterulat în linie de comanda). GATEWAY_INTERFACE - Returneaza versiunea CGI utilizată pe server (exemplu CGI/1.1). SERVER_NAME - Numele server-ului de hosting unde se execută scriptul curent. Dacăscriptul rulează pe un host virtual, aceasta va conţine valoarea definită pentru acel hostvirtual. SERVER_SOFTWARE - Returnează un şir de identificare al server-ului dat în header caraspuns la cerere. SERVER_PROTOCOL - Numele şi versiunea protocolului prin care este cerută pagina(exemplu HTTP/1.0 ) REQUEST_METHOD - returnează metoda utilizată pentru accesarea paginii (exemplu GET, HEAD , POST , PUT ) REQUEST_TIME - Valoarea timestamp dată la pornirea cererii. Este valabilă începând de laversiunea PHP 5.1.0. QUERY_STRING - Sirul de interogare, dacă este, de la pagina care a fost accesată. DOCUMENT_ROOT - Directorul radăcină unde este rulat scriptul curent, aşa cum estedefinit în fişierul de configuraţie al serverului. HTTP_ACCEPT - Conţinutul header-ului acceptat de la cererea curentă, dacă este unul. HTTP_ACCEPT_CHARSET - Conţine setul de caractere acceptate şi care este trimis deheader-ul cererii respective, dacă există. Exemplu: iso-8859-1,*,utf-8 . HTTP_ACCEPT_ENCODING - Conţine tipul de encodare trimis de cerera curentă prinheader, dacă există.. Exemplu: gzip . HTTP_ACCEPT_LANGUAGE - Conţine limbajul trimis de cererea curentă prin header, dacăexista. Exemplu: en . HTTP_CONNECTION - Conţine informaţii despre conecsiiunea trimisă de cererea curentăprin header, dacă există. Exemplu: Keep-Alive .
  7. 7. HTTP_HOST - Conţine informaţii despre host, header-ul de la cererea curentă, dacă există. HTTP_REFERER - Adresa paginii (dacă este) de unde a venit userul în pagina curentă.Aceasta este setată de către browser. Nu toate browserele setează această valoare, şi chiarunele au posibilitatea de a modifica HTTP_REFERER aşa cum vor. Pe scurt, nu este deîncredere. HTTP_USER_AGENT - Conţine semnătura browser-ului trimisă prin header la cerereacurentă, dacă există. Un exemplu tipic este: Mozilla/4.5 [en] (X11; U; Linux 2.2.9 i586) . Înafară de asta, puteţi utiliza get_browser() pentru a vedea ce capabilitaţi are browserulfolosit de user şi astfel să returnaţi pagina specifică pentru acel browser. HTTPS - Setează o valoare dacă scriptul a fost cerut printr-un protocol securizat HTTPS REMOTE_ADDR - Adresa de IP a userului care accesează pagina curentă. REMOTE_HOST - Numele hostului userului care vede pagina curentă. Este inversul DNS-ului userului bazat pe REMOTE_ADDR. Atenţie: Serverul web trebuie configurat pentru a creaaceastă variabila. De exemplu în Apache va trebui HostnameLookups On în fişierul deconfigurare httpd.conf. Pentru alte detalii vedeţi şi funcţia gethostbyaddr() . REMOTE_PORT - Portul prin care userul comunică cu serverul web. SCRIPT_FILENAME - Calea absolută unde se execută scriptul curent. Atenţie: Dacăscriptul este rulat cu CLI, ca şi cale relativă, cum ar fi file.php sau ../file.php ,$_SERVER[SCRIPT_FILENAME] va conţine calea relativă specificată de către user. SERVER_ADMIN - Valoarea dată de directiva SERVER_ADMIN (pentru Apache) în fişierulde configurare al web serverului. Dacă scriptul rulează pe un host virtual, acesta va conţinevaloarea definită pentru acel host virtual. SERVER_PORT - Portul de pe server care este folosit pentru comunicare pe web. Pentrusetările standard, acesta este 80 ; pentru SSL, de exemplu, se va schimba cu oricare portdefinit în transmisia securizată HTTP. SERVER_SIGNATURE - Conţine un şir care cuprinde versiunea serverului şi numelehostului virtual dacă este. PATH_TRANSLATED - Calea de bază a sistemul de fişiere (nu rădacina documentului) dela scriptul curent, după ce serverul a terminat maparea oricăror cai ( virtual-to-real mapping)Atenţie: Începând de la PHP 4.3.2, PATH_TRANSLATED nu mai este setat implicit în Apache2 SAPI în contrast cu situaţia din Apache 1, unde este setată aceeaşi valoare ca şi laSCRIPT_FILENAME. Această schimbare a fost făcută pentru a fi compatibilă cu specificaţiileCGI în care PATH_TRANSLATED trebuie să existe doar dacă PATH_INFO este definit.Utilizatorii Apache 2 pot utiliza AcceptPathInfo = On în fişierul de configuraţie httpd.confpentru a defini PATH_INFO . SCRIPT_NAME - Conţine calea către scriptul curent. Acesta este util pentru pagini caretrebuiesc definite către ele însuşi. Constanta __FILE__ conţine calea completă şi numele defişier al scriptului curent. REQUEST_URI - URI care este dat pentru accesarea paginii curente, de exemplu /index.html . PHP_AUTH_DIGEST - Când rulaţi sub Apache ca modul, acţiunea Digest HTTP, valoarea
  8. 8. acestei variabile este setată în Authorization header trimis către client (care ar trebui utilizatpentru a face o validare corespunzătoare). PHP_AUTH_USER - Când este rulat sub Apache sau IIS (ISAPI pe PHP 5) ca modul,actiunea HTTP authentication, această variabilă conţine numele userului trimis de către user. PHP_AUTH_PW - Când este rulat sub Apache sau IIS (ISAPI pe PHP 5) ca modul, actiuneaHTTP authentication, această variabilă conţine parola userului trimisă de către user. AUTH_TYPE - Când este rulat sub Apache ca modul acţiunea HTTP authenticated , aceastăvariabilă seteaza tipul de autentificare.Variabilele pentru trimiterea datelor:$_GET este o variabilă array globală. A fost introdusă în versiunea 4.1.0. Pentru versiunileanterioare se foloseşte $HTTP_GET_VARS care nu este variabilă globală. Puteţi folosi $_GETpentru a trimite variabile cu valori prin intermediul linkurilor.$_POST este de asemenea o variabilă array globală. A fost introdusa în versiunea 4.1.0.Pentru versiunile anterioare se foloseşte $HTTP_POST_VARS care nu este variabilă globală.Puteţi folosi $_POST pentru a trimite variabile cu valori prin intermediul formularelor.$_GETşi $_POST conţin variabile primite de script prin intermediul unor transferuri carefolosesc metodele HTTP get, respectiv post. De exemplu, prin intermediul acestor vectori pot fiaccesate valorile câmpurilor dintr-un formular care a fost completat şi transmis folosind unadintre cele doua metode.Variabilele HTTP coockies:$_COOKIE conţine valorile variabilelor care conţin informaţii referitoare la cookie-urilepăstrate pe calculatorul utilizatorului care accesează pagina web. A fost introdus în versiunea4.1.0. În versiunile anterioare, utilizaţi $HTTP_COOKIE_VARS .Variabile pentru uploadul fisierelor:$_FILES conţine variabile primite de script prin intermediul încărcărilor de fişiere prin metodapost. A fost introdus în versiunea 4.1.0. În versiunile anterioare se foloseşte$HTTP_POST_FILES care nu este variabilă globală.Variabilele de mediu $_ENV$_ENV conţine variabile disponibile prin intermediul mediului în care este executat. A fostintrodus în versiunea 4.1.0. În versiunile anterioare, utilizaţi $HTTP_ENV_VARS .Variabilele pentru cereri:$_REQUEST conţine variabile disponibile prin intermediul oricărui tip de mecanism cu ajutorulcăruia utilizatorul poate introduce date. Este de tip array şi conţine valorile variabilelor$_GET , $_POST , şi $_COOKIE. A fost introdusă în versiunea 4.1.0. Începând de laversiunea 4.3.0, informaţiile din $_FILES au fost de asemenea incluse în $_REQUESTVariabile de sesiune:$_SESSION conţine variabile care corespund sesiunii curente a script-ului, sub formă de array.A fost introdusă în versiunea 4.1.0 şi este de asemenea globală. În versiunile anterioarefolosiţi $HTTP_SESSION_VARS.Variabile de mesaje de eroare:$php_errormsg - este o variabilă ce conţine ultimul mesaj generat de către PHP Aceastăvariabilă este folosită în scopul de a vedea ce eroare apare şi doar dacă opţiunile deconfigurare a erorilor track_errors este pornita (standard este pe OFF)Constante predefinite:PHP conţine un mare număr de constante predefinite pentru fiecare script care rulează. Totuşi,sunt 5 constante "magice" pe care le prezint în continuare:__LINE__ - Conţine numărul curent al liniei din fisier.
  9. 9. __FILE__ - toată calea şi numele fişierului curent. Dacă este folosit în interiorul unui fişierinclus, va returna numele fişierului inclus. Începând de la versiunea 4.0.2 conţine întotdeaunacalea absolută la fişier, pe când în versiunile anterioare conţine calea relativă, în afară decâteva cazuri.__FUNCTION__ - Numele funcţiei (adăugat în versiunea 4.3.0) În PHP 5 această constantăreturnează numele funcţiei care a fost declarată (case-sensitive). În PHP 4 această valoareeste întotdeauna lowercased (cu litere mici)__CLASS__ - Numele clasei (adaugată în versiunea 4.3.0) În PHP 5 această constantăreturnează numele clasei care a fost declarată (case-sensitive). În PHP 4 această valoare esteîntotdeauna lowercased (cu litere mici)__METHOD__ - Numele metodei clasei (adaugată în versiunea 5.0.0.) Numele metodei estereturnat asa cum este declarat (case-sensitive) Domeniul de vizibilitate al variabilelor - Cum se pot accesa variabilele.În PHP o variabilă poate fi accesată doar în contextul în care a fost definită. De exemplu, ovariabilă definită în interiorul unei funcţii nu va putea fi accesată decât de instrucţiunile dininteriorul acelei funcţii. Mai mult, în mod implicit, o variabilă definită în exteriorul unei funcţiinu va putea fi accesată în interiorul funcţiei chiar dacă ea nu este redefinită în cadrul funcţiei.Pentru ca o funcţie să aibă acces la o variabilă definită în afara ei, variabila trebuie redeclaratăca variabilă globală în interiorul funcţiei.Să considerăm următorul exemplu:Cod:<?php$a = 1;function test () { echo $a; }test ();?>Observăm că nu se afişează valoarea 1 deoarece instrucţiunea echo $a se referă la variabilalocală $a care nu este definită, deci nu are nici o valoare. În continuare, este o versiune încare instrucţiunea echo $a va accesa variabila $a definită în afara funcţiei test():Cod:<?php$a = 1;function test () { global $a; echo $a; }test ();?>O a doua posibilitate de a accesa o variabilă definită în afara funcţiei este folosirea vectorului$GLOBALS:
  10. 10. Cod:<?php$a = 1;function test () { echo $GLOBALS ["a"]; }test ();?> Tipuri de variabileVariabilele pot fi de mai multe tipuri, nu doar numere. PHP are opt tipuri de variabile. Patrudintre acestea sunt tipuri scalare (boolean, integer, float şi string), două sunt tipuri compuse(array şi object), iar alte două sunt tipuri speciale (resource şi null). De asemenea, din motivede lizibilitate, au fost introduse trei pseudotipuri: mixed, number şi callback. Mai exista şi tipuldouble, dar semnificaţia acestuia este aceeaşi cu cea a tipului float. Cele două denumiricoexistă doar din motive "istorice". În PHP, de obicei, tipul unei variabile nu este specificat decătre programator, ci este stabilit în timpul execuţiei în funcţie de contextul în care estefolosită variabila.Tipul boolean: Variabilele de acest tip pot avea doar două valori: ADEVARAT sau FALS.Aceste valori pot fi indicate prin cuvintele cheie TRUE sau FALSE (pentru ambele nu se facedistincţie între literele mari şi literele mici). Există posibilitatea de a converti o variabilă deorice tip la tipul boolean. În momentul efectuării unei conversii, sunt convertite la valoareaFALSE următoarele valori:- numărul întreg 0;- numărul real 0.0;- sirul vid;- sirul "0";- un vector fără nici un element;- un obiect fără nici o variabilă membru;- o variabilă de tipul NULL;- o variabilă nedefinită.Orice altă valoare este convertită la valoarea TRUE (inclusiv resursele).Acest tip se poate folosi de exemplu pentru verificarea logării într-o pagină de administrare.După ce se fac verificările, dacă utilizatorul este logat ca administrator, funcţia noastră vareturna o valoare de adevar: TRUE dacă este logat, sau FALSE dacă nu este, şi astfel vom ştidacă să îi acordăm sau nu acces în secţiunea de administrare.Tipul integer: O variabilă de tip integer reprezintă o valoare din mulţimea numerelor întregi.Aceste numere pot fi specificate în baza 10, în baza 16 sau în baza 8, convenţiile fiind aceleaşica şi în limbajele C/C++ sau Java. Modul de reprezentare depinde de platforma utilizată; deobicei se foloseşte reprezentarea pe 32 de biti. Interpretorul PHP nu oferă suport pentrunumerele întregi fară semn. Trebuie remarcat faptul că în PHP nu există nici un operatorpentru efectuarea de împărţiri întregi. De exemplu, rezultatul operaţiei 3/2 nu va fi numărulîntreg 1 (ca în C/C++ sau Java), ci numărul real (float) 1.5Şi pentru numerele întregi există posibilitatea efectuării de conversii:- valoarea logică TRUE este convertită la valoarea întreagă 1;- valoarea logică FALSE este convertită la valoarea întreagă 0;- un număr real este convertit prin "rotunjire înspre 0"; asadar, valoarea reală 2.5 va ficonvertită la valoarea întreagă 2, în timp ce valoarea reală -2.5 va fi convertită la valoareaîntreagă -2;
  11. 11. - un sir de caractere este convertit luând în considerare doar primele caractere care conţininformaţii numerice; aşadar şirul "10" va fi convertit la valoarea întreagă 10; de asemeneaşirul "10 ani" va fi convertit tot la valoarea 10; dacă primele caractere nu conţin informaţiinumerice, rezultatul conversiei va fi valoarea 0.Tipul float: O variabilă de tip float poate fi specificată folosind fie forma zecimala, fie ceaştiinţifică (cu exponent). La fel ca şi în cazul tipului integer, precizia variabilelor de tipul floateste dependentă de platforma utilizată. De obicei se foloseşte standardul IEEE 64. Existăposibilitatea de a converti o variabilă de orice tip la tipul float. Pentru numerele reale se potefectua următoarele conversii:- un şir de caractere este convertit luând în considerare doar primele caractere care conţininformaţii numerice; aşadar şirul "10.2" va fi convertit la valoarea reală 10.2; şirul "1.23E1ani" va fi convertit la valoarea 12.3;- în toate celelalte cazuri se realizează conversii la numere întregi care apoi sunt convertite lavalorile reale corespunzătoare.Tipul string: O variabilă de tip string reprezintă un şir de caractere. Un caracter se reprezintăpe un octet, deci sunt 256 de caractere distincte. Acest lucru implică faptul că interpretorulPHP nu oferă suport nativ pentru setul de caractere Unicode. Lungimea variabilelor de tipstring nu este limitată de către interpretor. Literalii de tip şir de caractere pot fi specificaţi întrei moduri diferite:- prin folosirea ghilimelelor simple (exemplu $a=acesta este un sir de caractere). Pentru aavea în cadrul şirului simbolul "`", atunci înaintea acestuia trebuie scris caracterul "", iarpentru a putea specifica simbolul "" acesta trebuie dublat.- prin folosirea ghilimelelor duble. Folosind această notaţie pot fi specificate mai multecaractere speciale, pe lângă caracterele de la varianta anterioara, printre care: sfârşit de linie("r"), rând nou ("n"), tab orizontal ("t"), semnul dolar ("$"), ghilimelele duble ("""),secvenţe de caractere pentru specificarea faptului că o expresie regulară este în notaţie octală("[0-7]{1,3}") şi secvenţele de caractere pentru specificarea faptului că o expresie regularăeste în notaţie hexazecimală ("x[0-9A-Fa-f]{1,2}"). Cel mai important lucru este acela că,folosind acest mod de specificare a literalilor de acest tip, numerele de variabile care apar îninterior vor fi transformate în valoarea lor. De exemplu dacă $a este o variabilă de tipulinteger şi are valoarea 2, atunci sirul de caractere "Variabila a are valoarea $a." va fitransformat în şirul "Variabila a are valoarea 2".- notaţia heredoc. Acest tip de notaţie a fost introdus la versiunea 4 a interpretorului PHP.Pentru a specifica un sir de caractere folosind această notaţie trebuie utilizat operatorul "<<<"urmat de un identificator ales de utilizator. Toate caracterele care se află între operatorul"<<<" urmat de un identificator pe o singură linie, şi acelaşi identificator pe o altă linie vorconstitui valoarea sirului de caractere. De exemplu, instrucţiunea:Cod:$str=<<<SFAcesta este un exemplude utilizare a sintaxeiheredocSF;va avea ca rezultat un şir de caractere format din trei linii de text.Pentru a accesa un anumit caracter din şirul de caractere se foloseşte, după numele variabileide tip string, indicile caracterului care trebuie accesat scris între acolade. De exemplu, $str{0}returnează primul caracter din şirul de caractere $str.În cazul în care dorim să concaternăm două şiruri de caractere vom folosi operatorul "."Folosirea operatorului "+" nu va concaterna cele două şiruri.Există posibilitatea de a converti o variabilă de orice tip la tipul string. Pentru şirurile decaractere se pot efectua următoarele conversii:
  12. 12. - valoarea logică TRUE va fi convertită la şirul "1", iar valoarea logică FALSE va fi convertită laşirul vid ("");- un număr întreg va fi convertit la un şir de caractere care reprezintă valoarea numărului înbaza 10;- un număr real va fi convertit la un şir de caractere care reprezintă notaţia ştiinţifică aacestuia;- obiectele sunt întotdeauna convertite la şirul "Object";- variabilele de tipul resource sunt convertite la şirul "Resource id #n", unde n reprezintă unnumăr unic ataşat resursei respective de către interpretorul PHP;- valoarea NULL este convertită la şirul vid ("").Tipul array - Vectorii în PHP sunt nişte mulţimi formate din chei. Fiecarei chei din vector i seataşează o valoare. Acest tip de date este optimizat astfel încât să poată fi folosit în loculurmătoarelor structuri de date: liste, tabele de dispersie, dicţionare, colecţii, stive, cozi şialtele. Datorită faptului că o valoare poate fi reprezentată de un alt vector, se pot simulafoarte uşor arborii n-dimensionali sau tablourile n-dimensionale. Valoarea unei variabile de tipvector se poate specifica folosind construcţiaarray (cheie => valoare, cheie => valoare, ...)De exemplu, următoarea înstrucţiune PHP va construi un vector cu două elemente, dintre careunul este de tip string, iar celălalt de tip boolean:$a = array ("ch" => "string", 12 => TRUE);Variabila $a reprezinta un vector, $a ["ch"] are valoarea string, iar $a [12] are valoarea TRUE.În cazul în care nu se specifică o cheie pentru o valoare, atunci acea valoare va fi ataşată uneichei care va fi cheia maximă de tip integer folosită anterior, la care se adaugă valoarea 1.Cheile pot avea şi valori negative. Dacă nu există chei de tip integer, atunci valoarea va fiataşata cheii 0. De exemplu, următoarele două instrucţiuni sunt echivalente:array (5 => 43, 32, 56, "b" => 12);array (5 => 43, 6 => 32, 7 => 56, "b" => 12);Dacă se foloseşte valoarea logică TRUE ca şi cheie, atunci aceasta va fi convertită la cheia detip întreg 1, iar valoarea FALSE va fi convertită la numărul întreg 0. Nu se pot folosi pentruchei variabile de tipul array sau object.O variabilă de tip array se poate modifica prin setarea explicită de valori. De exempluinstrucţiunea $a ["x"] = 42; adaugă în vectorul $a valoarea 42 ataşată cheii "x". Dacă sefoloseşte un vector care nu a fost definit anterior, atunci acesta este creat automat. Aşadarprintr-o instrucţiune de forma $a [5] = 42, în cazul în care vectorul $a nu există, atunci se vacrea un vector cu un singur element. Cheia acestuia va fi numărul întreg 5, iar valoarea sa vafi 42.De asemenea, există posibilitatea de a crea un element nou fără a-i preciza cheia. Sintaxa areforma $vector [] = valoare; această instrucţiune are ca efect adăugarea unui element a căruicheie este un numar întreg mai mare cu 1 decât cel mai mare număr întreg care este cheie aunui alt element al vectorului. Dacă nu există nici o astfel de cheie, atunci noul element vaavea cheia 0. De exemplu, următoarele două secvente sunt echivalente:$a [5] = 1; ............................ $a [5] = 1;$a [6] = 2; ............................ $a [] = 2;Prin conversia la un vector a unei variabile de tip scalar (boolean, integer, float, string) sauresource se creează un vector cu un singur element; cheia acestui element este numărulîntreg 0, iar valoarea este cea a variabilei convertite.Dacă se converteşte un obiect (variabila de tip object), atunci vectorul rezultat va conţine câteun element pentru fiecare variabilă membru a obiectului. Cheile elementelor vor fi date dedenumirile proprietăţilor obiectului (variabilele membru ale obiectului), iar valorile elementelorvor fi valorile proprietăţilor obiectului.Dacă realizăm o conversie a unei variabile de tip NULL, atunci rezultatul va fi un vector vid(care nu conţine nici un element).În continuare sunt prezentate câteva exemple care descriu mai detaliat posibilităţile oferite defolosirea vectorilor în PHP. Pentru început, prezint un vector al cărui elemente reprezintăcaracteristicile unei portocale:Cod:$a = array (denumire => portocala,
  13. 13. familie => citrice,culoare => portocaliu,forma => rotunda,gust => dulce);Putem adăuga şi alte elemente care să reprezinte diferite alte proprietăţi. De exemplu, amputea avea nevoie de o valoare suplimentară căreia nu dorim să îi atribuim nici un nume deidentificare (cheie). Pentru ca vectorul să conţina un element suplimentar cu valoarea 4, vomputea defini vectorul astfel:Cod:$a = array (denumire => portocala,familie => citrice,culoare => portocaliu,forma => rotunda,gust => dulce,4);Cheia elementului cu valoarea 4 va fi numărul întreg 0 deoarece nu există nici o altă cheiecare este număr întreg. O alternativă de construire a acestui vector este următoarea:Cod: $v[denumire] = portocala; $v[familie] = citrice; $v[culoare] = portocaliu; $v[forma] = rotunda; $v[gust] = dulce; $v[] = 4;Exemplul următor ilustrează cum puteţi folosi vectorii la afişarea unei pagini cu text colorat:Cod:$colors = array (`red`,`green`,`blue`,`silver` );foreach ($colors as $color) { echo "<FONT size = 4 color = $color>"; echo "<b>Acest text este <i>$color!</i>"; echo "</b></FONT><br>"; }Tipul object: Pentru a defini un obiect care poate fi folosit pentru afişarea mesajuluiSALUTARE LUME! se scrie următoarea secvenţă:Cod:class salutare { function Displaysalutare ()
  14. 14. { echo "SALUTARE LUME!"; } }Pentru a utiliza o variabilă de tip obiect va trebui să realizăm o instanţiere prin intermediulinstrucţiunii new. Sintaxa este:$a = new salutare;Astfel, variabila $a devine un obiect ale cărui metode pot fi utilizate. Pentru afişarea propriu-zisă a mesajului va trebui să executăm metoda Displaysalutare() printr-o instrucţiune de tipul$a -> Displaysalutare();Orice variabilă de un anumit tip poate fi convertită într-un obiect. Dacă variabila respectivăeste un obiect, atunci ea nu va fi modificată. În caz contrar, efectul conversiei este creareaunei noi instanţe a clasei stdClass. Dacă variabila are tipul NULL, atunci noua instanţă va fividă. În toate celelalte cazuri instanţa va conţine o variabilă membru numită scalar a căreivaloare va fi cea a variabilei convertite. Pentru conversii vom folosi instrucţiuni de tipul$obiect = (object) "SALUTARE LUME!"După realizarea conversiei vom putea tipări mesajul SALUTARE LUME! folosind instrucţiuneaecho $obiect->scalar;Tipul resource: Variabilele de tip resource sunt folosite pentru păstrarea unor referinţe cătreanumite resurse externe cum ar fi conexiuni la baze de date, fişiere, etc. Resursele sunt createşi utilizate de anumite funcţii speciale. Datorită specificului acestui tip de date valoarea niciunei variabile de alt tip nu poate fi convertită la tipul resource.Tipul NULL: Valoarea specială NULL este atribuită oricărei variabile care nu a fost iniţializată.Această valoare este singura pe care o pot avea variabilele de tip NULL. Se consideră că ovariabilă are tipul NULL dacă:- i s-a atribuit constanta NULL;- nu a fost iniţializată;- a fost deziniţializată (prin intermediul funcţiei unset() ). Afişarea mesajelor în PHPLimbajul PHP oferă mai multe variante de a trimite la browser mesaje şi şiruri de caractere sauchiar cod HTML. Cea mai folosită funcţie este echo(). Sintaxa corectă este:<?phpecho("sir de caractere");?>Instrucţiunea de mai sus va afişa în browser mesajul introdus între ghilimele. Funcţia echo, lafel ca şi print, nu este chiar o funcţie, ci mai degrabă un constructor al limbajului şi nu estenevoie să folosiţi parantezele ca pentru o funcţie. De fapt, dacă doriţi să trimiteţi mai mulţiparametri către echo, nu trebuie să includeţi aceşti parametrii între paranteze. Există chiar şi ovariantă mai scurtă a lui echo, dar aceasta funcţionează doar dacă este setat în configuraţiaphp.ini directiva short_open_tag pe ON. Sintaxa pentru varianta scurtă este:<?=$foo?>În cazul de mai sus, imediat după deschiderea tagului php se va afişa valoarea variabilei $foo.Nu recomand această abordare, deoarece nu toate serverele au setată în configuraţia lor
  15. 15. short_open_tag pe ON şi nu va funcţiona.O funcţie asemănătoare cu echo este print. La fel ca şi echo, nici aceasta nu este chiar ofuncţie ci un constructor al limbajului, şi nu trebuie să utilizaţi parantezele. Textul ce urmeazăa fi afişat trebuie introdus între ghilimele simple sau duble, rezultatul fiind uşor diferit.Folosind ghilimelele duble, orice variabilă din cadrul stringului este parsată. Astfel, dacă amavea de exemplu:<?php$x = 1;$rezultat = $x*1;print "Rezultatul inmultirii lui $x cu 1 este $rezultat";?>afişează în browser:Rezultatul inmultirii lui 1 cu 1 este 2Dacă am folosi ghilimelele simple (print ...), variabilele $x şi $rezultat nu ar fi fost parsate şioutput-ul ar fi fost:Rezultatul inmultirii lui $x cu 1 este $rezultatPutem afişa variabilele şi dacă folosim ghilimelele simple, "rupând" stringul şi intercalându-l cuvariabile, în forma urmatoăre, folosind operatorul "."(punct) de concaternare a stringurilor(şirurilor):<?phpprint Rezultatul inmultirii lui .$x. cu 1 este .$rezultat;?>Pentru a afişa caracterele speciale folosite de PHP (ghilimelele simple , ghilimelele duble ",backslash-ul , semnul $) trebuie să le precedaţi cu semnul , astfel:<?phpecho "Semnul dolar $, back-slash ";?>Ghilimelele trebuie precedate de semnul doar dacă sunt de acelaşi tip cu cele care încadreazăstring-ul. În plus, într-un string puteţi folosi celelalte ghilimele normal. Dacă doriţi să afişaţidoar valoarea unei variabile, puteţi să nu o încadraţi între ghilimele. Exemplu:<?phpecho $x;?>Alte informaţii despre aceste funcţii, precum şi altele asemănătoare cu acestea, de genulprintf(), şi flush() puteţi găsi în manualul oficial pe care îl puteţi lua gratuit de pe site-ul oficialal PHP - www.php.net.
  16. 16. Construieşte un site cu phpÎn continuare, o să încerc să vă prezint cum se poate construi un site cu ajutorul limbajuluiPHP. Exemplul prezentat nu este un standard, este doar o modalitate de a vedea cum se poateconstrui un site şi cum se preiau sau trimite variabilele prin intermediul site-ului. Puteţi, pebaza acestui exemplu, să vă construiţi propriul site, în forma preferată de dvs. şi adaptândmodelul acesta la necesitaţile voastre.În exemplul meu, am preferat să am o singură pagină, anume index.php, în care să includdinamic conţinutul şi meniul, în funcţie de ce link accesează vizitatorul. Puteţi vedea acestmodel într-un fel modular, fiecare script fiind de fapt un modul care execută anumite operaţiispecifice. Astfel, în pagina index.php se includ mai multe module (scripturi) care luate separat,fiecare fac anumite lucruri, dar puse împreună, formează pagina de web generată dinamic. Înacest exemplu, nu am folosit o bază de date, dar pe acelaşi principiu se poate adapta ideea laun site care preia datele din baza de date.Partea de sus a paginii (head) După cum puteţi vedea alăturat, am despărţitPartea cu meniul orizontal generat dinamic fiecare parte a unei pagini în bucăţi, fiecare(partea de body) bucată este colorată diferit pentru o mai bună aici se pot vizualizare. Puteţi introduce în fiecare bucată partea in care se afiseaza pune alte câte un script php care să genereze respectivameniul continutul paginilor, si alte informatii bucată dinamic. Astel, în cazul unei modificări,lateral informatii generate va fi mult mai uşor să modificaţi doar scriptul dinamic care se ocupa de o anumită parte a paginii, pepartea de incheiere a paginii (footer) când daca tot site-ul ar fi fost facut static în HTML, la un site cu 100-200 de pagini chiar şi cea mai mică modificare ar fi însemnat un chin.Am numit fiecare script care se ocupă de o anumită parte a site-ului astfe:head.php - conţine partea dintre tagurile HTML <head> şi </head>body.php - conţine partea dintre tagurile HTML <body> şi conţinutul paginiifooter.php - conţine partea de jos a paginiiÎn continuare, o să vă prezint fiecare modul în parte.index.php - - head.php - - css.php - - js.php - - body.php - - meniu_orizontal.php - - meniu_vertical.php - - continut.php - - contact.php - - module.php - - /module/data_ora.php - - footer.php -index.php - în care se setează nivelul de raportare al erorilor (dacă nu doriţi ca vizitatorii săvada eventualele erori raportate de către php, puteţi stabili nivelul 0).Apoi, se verifică dacăexistă fisierul head.php şi body.php şi se încarcă sau se opreşte cu un mesaj de eroare.head.php - în acest fişier se afisează codul html pentru începutul paginii, şi dacă există, seîncarcă şi fişierele cu cod CSS şi JavaScript folosite în pagină.css.php - acest fişier conţine codul CSS folosit pentru formatarea şi afişarea paginii HTML.js.php - dacă se foloseşte cod JavaScript în pagini, este de preferat să se salveze codul înacest fişier, pentru a putea avea acces rapid la el în cazul în care doriti să faceţi modificări.body.php - conţine codul HTML existent între tagurile <body> şi </body> Dacă există, seîncarcă şi fişierele care conţin meniul orizontal şi/sau vertical, precum şi fişierul care afişează
  17. 17. conţinutul paginii cerute. Pe langă acestea, dacă doriţi să bagaţi alte scripturi în pagini, seinclude şi fisierul module.phpmeniu_orizontal.php - conţine codul HTML pentru meniul orizontal.meniu_vertical.php - conşine codul HTML pentru meniul verticalcontinut.php - afişează conşinutul paginilor, în funcţie de linkul cerut. Dacă se cer paginiexterne, se verifică daca acea pagină există şi se încarcă pentru afişare.contact.php - poate fi o pagina externă, cu conţinut HTML sau PHP, precum şi formulare decontact.module.php - este un fişier care atunci când este accesat, verifică ce fişiere există îndirectorul MODULE şi le încarcă pe fiecare.data_ora.php - este un fişier extern, care afişează câteva informaţii despre vizitator.footer.php - este fişierul care afişează în josul paginii numele curent al paginiiAcest exemplu îl puteţi descărca de aici şi îl puteţi testa şi modifica pe serverul dvs. Câteva informaţii despre documentarea şi depanarea unui script.În afară de a furniza nume descriptive fişierelor care conţin scripturile dvs. PHP, trebuie săincludeţi în fiecare script atât comentarii care să permită unui cititor să determine cu uşurinţăutilitatea scriptului, cât şi alte informaţii referitoare la script. De exemplu, puteţi include uncomentariu care precizează numele fişierului care conţine scriptul, astfel încât acesta să aparăîn versiunile tipărite ale scriptului. Iată un model sintactic pentru comentariile PHP:// Scrieti aici comentariul dvs.După cum se poate vedea, un comentariu începe cu două caractere slash, urmate de unspatiu. În continuare, linia conţine comentariul, care poate include orice caractere doriţi,inclusiv caractere speciale.O modalitate de a crea un comentariu pe mai multe linii este de a începe fiecare linie cuajutorul caracterelor //. Totuşi, puteţi crea un comentariu din mai multe linii şi în alte moduri,dacă preferaţi. Iată un exemplu:/*Acesta este un comentariu pe mai multe linii.Poate fi alcatuit dintr-un numar oricat de mare de linii.*/Pentru a începe un comentariu alcătuit din mai multe linii, scrieţi caracterele /*, iar pentru aîncheia comentariul, scrieţi caracterele */Între cele două perechi de caractere, puteţi scrie orice text doriţi, folosind oricâte linii doriţi.Uneori, în locul datelor de ieşire ale scriptului, puteţi vedea unul din următoarele:- Textul scriptului, în loc de datele de ieşire ale acestuia- O casetă de dialog, prin care sunteţi întrebat dacă doriţi să descărcaţi fişierul care conţinescriptul.- Un mesaj în care se spune că scriptul nu există- Un mesaj în care se spune că browserul web nu are permisiunea de a obţine accesul la script- Un mesaj în care se spune că scriptul conţine o eroareLa vizualizarea rezultatelor unui script PHP se pot produce numeroase erori, chiar dacă scriptulîn sine e corect. Dacă vedeţi textul scriptului sau o casetă de dialog prin care sunteţi întrebat
  18. 18. dacă doriţi să descărcaţi fişierul care conţine scriptul, este posibil ca extensia fişierului scriptsă fie incorectă sau ca serverul PHP să nu funcţioneze. Deşi fişierele script PHP trebuie să aibă,în general, extensia .php, este posibil ca un administrator de sistem să configureze un serverPHP astfel încât acesta să impună o altă extensie de fişier.Dacă vedeti un mesaj în care se spune că scriptul nu există, este posibil ca să fi tastat incorectadresa URL. Verificaţi dacă aţi tastat corect adresa URL precum şi dacă aţi ataşat corect laaceasta numele fişierului care conţine scriptul, folosind un slash numai dacă adresa URL nu seîncheie cu un atare caracter.Dacă vedeţi un mesaj în care se arată că browserul web nu are permisiunea de a obţineaccesul la script, poate că este necesar să modificaţi permisiunile fişierului script (cmod).Dacă vedeţi un mesaj în care se spune că scriptul conţine o eroare, verificaţi dacă nu auapărut următoarele probleme:- O eroare de tastare, cum ar fi scrierea greşită a cuvântului echo- O eroare de punctuaţie, cum ar fi paranteze, ghilimele duble sau punct şi virgulă lipsă sauinserate greşit.- Neincluderea sau includerea eronată a liniilor de delimitare a scriptului, în speţă <?php şi ?>- Un marcaj de comentariu (//) care lipseşte sau a fost introdus gresit.Şirurile şi caracterele specialeSpre deosebire de numere întregi şi de numere duble, care conţin cu precădere cifre, şirurilepot conţine orice caracter. Ca atare, şirurile sunt utile pentru stocarea datelor care nu pot ficalculate, precum nume şi adrese. De asemenea, şirurile pot fi utilizate pentru stocareadatelor numerice. Pentru a specifica un şir în PHP, caracterele care alcătuiesc şirul sunt incluseîntre ghilimele duble; de exemplu, şirul reprezentând numele "Albert Einstein". Aşa cum ammai spus, un şir poate conţine date numerice; de exemplu , "3.141516". PHP faciliteazăincluderea în şiruri a unor caractere speciale, precum caracterele de salt la linie nouă sau returde car, prin furnizarea de secvenţe escape care reprezintă caractere speciale. Iată secvenţeleescape folosite în PHP:n - salt la linie nouar - retur de cart - caracter de tabulare pe orizontală - backslash$ - simbolul dolarului" - ghilimele dubleCa exemplu, iată un şir care include un retur de car, urmat de un salt la linie nouă:"Salut! rn".Reţineţi că fiecare secvenţă escape începe cu un backslash (). Pentru a include un backslashîntr-un şir, trebuie să folosiţi secvenţa escape adecvată, care este alcătuită din două caracterebackslash. Pentru a introduce ghilimele duble în cadrul unui şir fără a folosi secventa escape,puteţi include şirul între ghilimele simple astfel:Pe ea o cheama "Nikita"Aceasta este util când doriţi să introduceţi într-un şir taguri HTML, astfel:$sir = <a href="index.php" target="_blank">Prima pagină</a>;După cum observaţi deoarece standardul HTML necesită folosirea ghilimelelor pentru a nu seîncurca cu codul php am folosit pentru acest sir ghilimele simple. Sigur, acest cod se poatescrie şi asa:$sir = "<a href="index.php" target="_blank">Prima pagină</a>";
  19. 19. dar personal mi se pare greu inteligibil acest cod şi la un volum mare de date pot apare multeerori datorate scrierii incorecte a codului html în interiorul codului php. Operatori PHPInterpretorul PHP permite folosirea a nouă tipuri diferite de operatori. Aceştia operează asupraunor expresii (una, doua sau trei) şi furnizează ca rezultat o altă expresie (rezultatul operaţieicorespunzătoare).Operatori aritmetici:Toţi operatorii aritmetici operează asupra a două expresii (operanzi). Există cinci astfel deoperatori:- adunare (+);- scădere (-);- înmulţire (*);- împarţire (/);- rest (%).Aceste operaţii se aplică asupra unor valori care reprezintă tipuri numerice. Dacă unul dintreoperanzi nu are tip numeric, atunci el va fi convertit automat la o valoare întreagă. Dacă celpuţin unul dintre operanzi (după efectuarea eventualelor conversii necesare) este un numărreal, atunci rezultatul operaţiei va fi tot un număr real, cu excepţia operatorului rest; rezultatuloperaţiei de determinare a restului este întotdeauna un număr întreg. Dacă ambii operanzisunt numere întregi, atunci rezultatul va fi un număr întreg, cu excepţia împărţirii al căreirezultat este întotdeauna un număr real. Dacă operatorul rest este aplicat asupra unor numerereale, atunci rezultatul este un număr întreg. Nu este permisă împărţirea la valoarea 0. Dacăal doilea operand asupra căruia se aplică unul dintre operatorii / sau % are valoarea 0, va fisemnalată o eroare.Operatori de comparare:Interpretorul PHP pune la dispozitie mai mulţi operatori care pot fi folosiţi pentru compararea adouă valori. Expresiile în care apar astfel de operatori au ca rezultat valori logice (true saufalse).Cel mai des întâlnit operator este cel de atribuire, definit prin semnul =Dacă scriem $x = 1 nu înseamnă că $x este egal cu 1 ci că i s-a acordat valoarea 1. Dacăscriem $rezultat = $x + $y nu înseamnă că $rezultat este egal cu suma celor două, ci că i-amatribuit (acordat) valoarea sumei celor două.Operatorul de egalitate este == si se foloseşte cel mai des în propoziţii condiţionale, pentru atesta egalitatea. Opusul său, !=, este operatorul de inegalitate şi se foloseşte în acelaşi scop.Operatorul de egalitate se foloseşte pentru a compara egalitatea a două valori. Pentru a vălămuri cum stă treaba cu egalitatea şi atribuirea, testaţi următorul cod:Cod:<?php$x = 1;$y = 7;if ($x == $y) { print "$x este egal cu $y"; }if ($x != $y) { print "$x este diferit de $y";
  20. 20. }?>Alţi operatori folosiţi pentru compararea valorilor variabilelor sunt:> mai mare>= mai mare sau egal< mai mic<= mai mic sau egalExemplu:Cod:<?php$x = 5;$y = 4;if ($x > $y) { print "$x este mai mare ca $y"; }if ($x <= $y) { print "$x este mai mic sau egal cu $y"; }?>== - rezultatul este true dacă cele două expresii au aceeaşi valoare;=== - rezultatul este true dacă cele două expresii au aceeaşi valoare şi au acelaşi tip;!= sau <> - rezultatul este true dacă cele două expresii au valori diferite;!== - rezultatul este true dacă cele două expresii au valori diferite sau au tipuri diferite;< - rezultatul este true dacă valoarea primei expresii este mai mică decât valoarea celei de-a doua expresii;> - rezultatul este true dacă valoarea primei expresii este mai mare decât valoarea celei de-a doua expresii;<= - rezultatul este true dacă valoarea primei expresii este mai mică sau egală cu valoareacelei de-a doua expresii;>= - rezultatul este true dacă valoarea primei expresii este mai mare sau egală cu valoareacelei de-a doua expresii.Pe lângă acestea există şi operatorul condiţional ? care are forma expresie1?expresie2:expresie3 şi are ca rezultat valoarea expresiei expresie2 dacă valoarea expresieiexpresie1 este true (eventual după conversia la tipul boolean) sau valoarea expresieiexpresie3 în caz contrar.Operatori pentru şiruri de caractere:Operatorii pentru stringuri sunt . (punct) pentru concaternare şi .= (punct şi egal) pentruatribuirea concaternării. Aceşti operatori sunt folosiţi pentru a unii stringuri, în felul urmator:Cod:<?php// concaternarea stringurilor$test = Am scris un .text.oarecare;print $test;// pe ecran va fi afisat "Am scris un text oarecare"// concaternarea stringurilor cu variabile
  21. 21. $nr = 5;print Am scris numarul .$nr. si un text . oarecare;// pe ecran va fi afisat "Am scris numarul 5 si un text oarecare"// atribuirea concaternarii$nr = 6;$text = "Un text ";$text .= "oarecare ";$text .= "si numarul ".$nr;print $text;// pe ecran va fi afisat "Un text oarecare si numarul 6"?>Operatori pe biţi şi operatori logici:Interpretorul PHP pune la dispoziţie şase operatori care operează asupra biţilor unui numărîntreg sau ai unui şir de caractere. Aceştia sunt:- conjuncţie (&) - SI (AND);- disjuncţie (|) - SAU (OR);- disjuncţie exclusivă (^) - SAU exclusiv (XOR);- negaţie (~) - NU (NOT);- deplasare la stânga (<<);- deplasare la dreapta (>>).Operatorii logici vă vor veni la îndemână în execuţia scriptului atunci când aveţi nevoie sălucraţi cu valori de adevăr. Să presupunem că la intrarea în secţiunea de administrare avemun formular care cere numele şi parola de acces în secţiune. Pentru contruirea expresiilorlogice operanzii trebuie să aibă tipul boolean; dacă operatorii au alt tip, valoarea esteconvertită la o valoare booleană. Scriptul PHP ar putea verifica aceste informaţii pentru aautoriza accesul în secţiune folosind operatorii logici astfel:- operatorul xor (SAU exclusiv)Expresia în care apare operatorul xor va avea valoarea true dacă exact unul dintre operanziare valuarea true- operatorul ! (NOT)if (!parola_e_buna) ... parola nu este bună, accesul este interzisif (!parola_nu_e_buna) ... parola e bună, accesul este permisOperatorul ! returneaza TRUE dacă valoarea iniţială de adevăr e FALSE şi FALSE dacăvaloarea iniţială este TRUE.- operatorul || (OR)if (numele_este_valid) || parola_este_buna) ...verifică dacă numele sau parola sunt valide şi dacă oricare dintre ele este, returnează valoareade adevăr TRUE. În acest exemplu de pseudocod dacă numele ar fi valid dar parola nu, i-amacorda utilizatorului acces mai departe, ceea ce nu este de dorit. Trebuie să fim siguri că şinumele şi parola sunt valide. Operatorul || returnează TRUE dacă oricare din valorileverificate e TRUE. Returnează FALSE doar dacă amândouă sunt FALSE.- operatorul && (AND)if (numele_este_valid && parola_este_buna) ...dacă atât numele cât şi parola sunt valide putem acorda utilizatorului acces în secţiunea deadministrare. Operatorul && returnează TRUE doar dacă ambele valori verificate sunt TRUE.El returnează FALSE dacă oricare dintre ele este FALSE (sau dacă amândouă sunt FALSE).Operatori de atribuire:Primul operand asupra căruia este aplicat un astfel de operator de atribuire trebuie să fie ovariabilă, iar al doilea poate fi o expresie.Operaţia Varianta scurtă Varianta standardadunare (+=) $a += 2 $a = $a + 2
  22. 22. scădere (-=) $a -= 2 $a = $a -2înmulţire (*=) $a *= 2 $a = $a *2împărţire (/=) $a /= 2 $a = $a /2rest (%=) $a %= 2 $a = $a %2conjuncţie (&=) $a &= 2 $a = $a &2disjuncţie (|=) $a |= 2 $a = $a |2disjuncţie exclusivă (^=) $a ^= 2 $a = $a ^2deplasare la stânga (<<=) $a <<= 2 $a = $a << 2deplasare la dreapta (>>=) $a >>= 2 $a = $a >> 2concaternare (.=) $a .= "2" $a = $a . "2"Exemplu:Cod:<?php$b = 2;$a = 1;echo "<TT>$a += $b = ";echo $a += $b;$b = 2;$a = 1;echo "<br>$a -= $b = ";echo $a -= $b;$b = 2;$a = 1;echo "<br>$a *= $b = ";echo $a *= $b;$b = 2;$a = 1;echo "<br>$a /= $b = ";echo $a /= $b;$b = 2;$a = 1;echo "<br>$a %= $b = ";echo $a %= $b;$b = 2;$a = 1;echo "<br>$a &= $b = ";echo $a &= $b;$b = 2;$a = 1;echo "<br>$a |= $b = ";echo $a |= $b;$b = 2;$a = 1;echo "<br>$a ^= $b = ";echo $a ^= $b;$b = 2;
  23. 23. $a = 1;echo "<br>$a <<= $b = ";echo $a <<= $b;$b = 2;$a = 1;echo "<br>$a >>= $b = ";echo $a >>= $b;$b = 2;$a = 1;echo "<br>$a .= $b = ";echo $a .= $b;echo "</TT>";?>Rezultatul codului de mai sus este:1 += 2 = 31 -= 2 = -11 *= 2 = 21 /= 2 = 0.51 %= 2 = 11 &= 2 = 01 |= 2 = 31 ^= 2 = 31 <<= 2 = 41 >>= 2 = 01 .= 2 = 12Operatori de incrementare şi decrementare:Operatorul de incrementare (++) are ca efect creşterea cu 1 a valorii unei variabile, iar cel dedecrementare (--) are ca efect scăderea cu 1 a valorii variabilei. Tipul variabilei poate fi întregsau real. Dacă operatorul precede variabila, atunci rezultatul expresiei este valoarea obţinutădupă incrementare sau decrementare. Dacă variabila precede operatorul, atunci rezultatulexpresiei este valoarea variabilei înaintea incrementării sau decrementării. Cu alte cuvinte,dacă operatorul precede variabila, atunci valoarea variabilei este mai întâi modificată şi apoiutilizată, iar dacă variabila precede operatorul, atunci valoarea ei este mai întâi utilizată şi apoimodificată.Aceşti operatori pot fi utilizaţi şi pentru variabile care conţin şiruri de caractere. Operatorul deincrementare duce la creşterea cu 1 a codului ASCII a ultimului caracter din şir dacă acestaeste o litera sau cifră. În cazul în care litera este z, respectiv Z, sau cifra este 9, atunci eadevine a, respectiv A, sau cifra 0 şi se încearcă incrementarea penultimului caracter. Dacăaceasta este tot 9, z sau Z se aplică acelaşi procedeu şi se trece la antepenultimulcaracter. Procedeul continuă până în momentul în care se ajunge la un caracter care nu este9, z sau Z sau se ajunge la începutul şirului. În acest ultim caz, la începutul şirului seadaugă caracterul 1, a sau A. Incrementarea nu are nici un efect pentru caracterele carenu sunt cifre sau litere.Decrementarea şirurilor de caractere nu are nici un efect, valorile variabilelor rămânândnemodificate. Există o singură excepţie şi anume şirurile care reprezintă numere întregi saureale. Acestea sunt incrementate sau decrementate potrivit regulilor pentru valorile numerice.Exemplu:
  24. 24. Cod:<?php$a = 7;echo "<tt>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>a++</tt><i> este </i><tt>";echo $a++;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";echo "<br>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>++a</tt><i> este </i><tt>";echo ++$a;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";echo "<br>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>a--</tt><i> este </i><tt>";echo $a--;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";echo "<br>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>--a</tt><i> este </i><tt>";echo --$a;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";$a = 7.5;echo "<br>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>a++</tt><i> este </i><tt>";echo $a++;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";echo "<br>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>++a</tt><i> este </i><tt>";echo ++$a;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";echo "<br>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>a--</tt><i> este </i><tt>";echo $a--;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";echo "<br>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>--a</tt><i> este </i><tt>";echo --$a;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";$a = "PHP";echo "<br>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>a++</tt><i> este </i><tt>";
  25. 25. echo $a++;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";echo "<br>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>++a</tt><i> este </i><tt>";echo ++$a;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";echo "<br>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>a--</tt><i> este </i><tt>";echo $a--;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";echo "<br>a = $a";echo ": </tt><i>Rezultatul operatiei </i><tt>--a</tt><i> este </i><tt>";echo --$a;echo "</tt>. <i>Noua valoare a variabilei </i><tt>a</tt><i> este </i><tt>$a.";echo "</tt>";?>Rezultatul codului de mai sus este:a = 7: Rezultatul operatiei a++ este 7. Noua valoare a variabilei a este 8.a = 8: Rezultatul operatiei ++a este 9. Noua valoare a variabilei a este 9.a = 9: Rezultatul operatiei a-- este 9. Noua valoare a variabilei a este 8.a = 8: Rezultatul operatiei --a este 7. Noua valoare a variabilei a este 7.a = 7.5: Rezultatul operatiei a++ este 7.5. Noua valoare a variabilei a este 8.5.a = 8.5: Rezultatul operatiei ++a este 9.5. Noua valoare a variabilei a este 9.5.a = 9.5: Rezultatul operatiei a-- este 9.5. Noua valoare a variabilei a este 8.5.a = 8.5: Rezultatul operatiei --a este 7.5. Noua valoare a variabilei a este 7.5.a = PHP: Rezultatul operatiei a++ este PHP. Noua valoare a variabilei a este PHQ.a = PHQ: Rezultatul operatiei ++a este PHR. Noua valoare a variabilei a este PHR.a = PHR: Rezultatul operatiei a-- este PHR. Noua valoare a variabilei a este PHR.a = PHR: Rezultatul operatiei --a este PHR. Noua valoare a variabilei a este PHR.Aceşti operatori sunt utili de exemplu pentru monitorizarea unui download, dacă doriţi să ştiţide câte ori a fost descărcat un fişier dintr-o anumită pagină. La fiecare accesare a fişierului,scriptul incrementează cu 1 şi afişează valoarea. (scriptul îl gândiţi voi, doar nu vreţi totul latavă)Operatori pentru controlul erorilor:În PHP există un operator (@) care permite ignorarea erorilor. Dacă este aplicat asupra uneiexpresii care ar duce la afişarea unui mesaj de eroare, atunci mesajul respectiv nu va fi afişat.Operatori de execuţie:Interpretorul PHP permite executarea unor comenzi sistem prin intermediul operatorului (` `). Comanda respectivă este cuprinsă între apostroafele inverse (tasta de lângă 1 deasupratastei tab), iar rezultatul acestei comenzi este un şir de caractere care reprezintă şi rezultatulexpresiei.Urmatorul script PHP determină execuţia pe server a comenzii help /? şi afişarea rezultatuluiîn fereastra programului de navigare.
  26. 26. Cod:<?phpecho "<PRE>".`help /?`."</PRE>";?>Atenţie!Pe unele configuraţii de server nu se permite executarea de comenzi prin intermediul PHP (camăsură de siguranţă, altfel oricine ar putea da un format sau reboot la server prin intermediulunui script PHP).Operatori pentru vectori:Singurul operator care poate fi aplicat asupra vectorilor este cel de concaternare (+)Rezultatul concaternării a doi vectori este un vector care conţine elementele din cei doi vectori.Dacă cei doi vectori conţin elemente cu aceeaşi cheie, atunci este păstrat doar elementul dinvectorul care reprezintă primul operand.Exemplu:Cod:<?php$x[2] = 2;$x[4] = 4;$x[5] = 5;$x[7] = 7;$y[1] = 100;$y[2] = 200;$y[3] = 300;$y[4] = 400;$y[5] = 500;$z = $x + $y;echo "$z[1] $z[2] $z[3] $z[4] $z[5] $z[7]";?>Rezultatul codului de mai sus este:100 2 300 4 5 7Ordinea operaţiilor:Evident, o expresie poate conţine mai mulţi operatori, din categorii diferite. Pentru a indicaordinea în care trebuie efectuate calculele, trebuie stabilită o ordine a operaţiilor. Pentruaceasta a fost definită precedenta şi asociativitatea operaţiilor.Valoarea expresiilor corespunzătoare operatorilor cu precedenta mai mare va fi calculatăînaintea valorilor expresiilor cu o precedentă mai mică. De exemplu, pentru expresia 1 + 2 *3 va fi efectuată mai întâi înmulţirea 2 * 3, datorită faptului că operatorul * are precedentamai mare decât cea a operatorului +.Dacă o expresie sau o subexpresie conţine numai operatori cu aceeaşi precedentă, atuncioperaţiile se vor efectua în ordinea determinată de asociativitatea acestor operatori care poatefi de la dreapta la stânga sau de la stânga la dreapta. Toţi operatorii cu aceeaţi precedentă auaceeaşi tip de asociativitate.Evident, pentru a modifica ordinea implicită de efectuare a operaţiilor pot fi folosite parantezepentru a indica faptul că o anumită operaţie trebuie efectuată înaintea altora, chiar dacăacestea din urmă au o precedentă mai mare.Trebuie observat faptul că, datorită asociativităţii de la dreapta spre stânga a operatorilor deatribuire, expresiile de tipul $a = $b = 1 sunt valide. Mai întâi se va efectua atribuirea $b =
  27. 27. 1; variabila $b va primi valoarea 1 şi, datorită faptului că rezultatul unei operaţii de atribuireeste valoarea atribuită variabilei care reprezintă primul operand, în continuare se va efectuaatribuirea $a = 1, deci şi variabila $a va primi tot valoarea 1. Tabelul de mai jos conţine olistă cu majoritatea operatorilor din PHP. Liniile tabelului indică precedenta, în sensul că unoperator are aceeaşi precedentă cu operatorii de pe linie în care apare şi o precedentă maimare decât oricare operator aflat pe o linie anterioară. În acest tabel se observă faptul că, deşioperatorii && şi and, respectiv || şi or realizează aceeaşi operaţie, ei au precedentediferite, deci nu sunt echivalenţi din toate punctele de vedere. Tip asociativitate Tip Operanzide la stânga la dreapta unar . (selectare)de la stânga la dreapta binar orde la stânga la dreapta binar xorde la stânga la dreapta binar andde la stânga la dreapta binar print = += -= *= /= .=de la stânga la dreapta binar %= &= |= ^= ~= <<= >>=de la stânga la dreapta ternar ?:de la stânga la dreapta binar ||de la stânga la dreapta binar &&de la stânga la dreapta binar |de la stânga la dreapta binar ^de la stânga la dreapta binar & == !=fără asociativitate binar === !== < <=fără asociativitate binar > >= <<de la stânga la dreapta binar >> +de la stânga la dreapta binar - . (concaternare) *de la stânga la dreapta binar / %de la stânga la dreapta unar ! ~ ++ -- (int) (float) (string) (array) (object)
  28. 28. @de la stânga la dreapta unar [fără asociativitate unar newÎn tabel este prezentat şi numărul expresiilor asupra cărora acţionează un operand. Operatoriiunari acţionează asupra unei singure expresii, cei binari asupra a două expresii şi singuruloperator ternar asupra a trei expresii.În continuare sunt câţiva operatori care execută operaţii utile:- abs(x) - returnează valoarea absolută a lui x;- ceil(x) - returnează valoarea x, rotunjită la întregul imediat superior;- floor(x) - returnează valoarea x, rotunjită la întregul imediat inferior;- max(x, y, ...) - returnează valoarea maximă a unui set de valori;- min(x, y, ...) - returnează valoarea minimă a unui set de valori;- pow(x, n) - returnează numărul x, ridicat la puterea specificată n;- strftime(f) - returnează data curentă, formatată conform conţinutului parametrului f;- sqrt(x) - returnează rădăcina pătrată a lui xMai jos sunt cateva exemple:$lungime = sqrt($arie);Acest exemplu calculează lungimea laturilor unui pătrat, dacă este cunoscută aria pătratului.În continuare este prezentat modul de utilizare al funcţiei max, care preia mai multeargumente:$punctaj_castigator = max($punctaj1, $punctaj2, $punctaj3);Un alt exemplu calculează aria unui cerc de rază dată:Cod:<?php$raza = 2.0;$pi = 3.14159;$arie = $pi * $raza * $raza;echo "raza = ";echo $raza;echo "<br>arie = ";echo $arie;?> Câteva idei utile pentru securitatea paginilor webRegula numărul unu a securităţii online este: nu vă încredeţi niciodată în utilizator.Întotdeauna verificaţi datele trimise către server şi "curăţaţi-le" înainte de a le utiliza. Pentruaceasta trebuie să luaţi în considerare câteva posibile "găuri" de securitate. Menţionez că celescrise aici sunt doar noţiuni generale, pentru o securitate ridicată ar trebui sa aveţi noţiunispecializate de baze de date şi de administrare a serverelor web.1. Variabilele globaleAvând variabilele globale din php.ini setate pe ON puteţi accesa datele trimise prin formulare
  29. 29. mai simplu: $variabila în loc de $_GET[variabila], la fel şi pentru POST sau FILES. Dacăscriptul nu este foarte bine gândit, variabilele globale pot prezenta un risc major de securitate.Din acest motiv php.ini este distribuit cu globals=off în ultimele versiuni.2. Ghilimele "magice"Dacă în php.ini magic_quotes_gpc sunt OFF folosiţi funcţia addslashes pentru a precedaghilimelele din datele trimise de utilizatori cu caracterul . Dacă magic_quotes_gpc sunt ON,PHP adaugă automat caracterul înainte de ghilimele dar dacă ele sunt OFF, ghilimelele dininput vă pot crea probleme serioase.Ca exemplu, să presupunem că interogarea SQL de verificare a numelui şi a parolei pentruînregistrarea pe site esteSELECT * FROM users WHERE nume=$nume AND parola=$parolaşi dacă interogarea este executată cu succes, utilizatorul este logat. În acest caz, folosindparola OR 1=1 oricine poate avea acces pe site deoarece interogareaSELECT * FROM user WHERE nume=un nume oarecare AND parola=" OR 1=1este executată cu succes şi returnează un rezultat (toate înregistrarile din baza de date, defapt). Mai mult, atunci când vă aşteptaţi ca baza de date să returneze un singur rând, verificaţiacest lucru şi nu dacă interogarea s-a executat cu succes. Implicit în php.inimagic_quotes_gpc sunt ON pentru a vă proteja de astfel de atacuri, dar este bine să verificaţiînainte de a renunţa la addslashes.3. IncludereÎncercaţi să evitaţi includerea "vizibilă" a fişierelor în forma http://site.ro/fisier.php?file=cutare.html pentru a include fişiere în cadrul unei pagini. Cu puţină neatenţie din parteavoastră atacatorul ar putea accesa astfel de informaţii sensibile din cadrul sistemului. Nuincludeţi fişiere străine. PHP poate "include" fişiere aflate pe alte servere decât cel care ruleazădacă setarea URL fopen wrappers este activată în php.ini. În exemplul de mai sus, un atacatorar fi putut accesa adresahttp://site.ro/fisier.php?file=http://www.rau.ro/scriptultau.phppentru a include în fisier un script localizat pe alt server şi astfel obţine acces către toateresursele sistemului la care are acces PHP, putând rula comenzi de sistem, afişa informaţiiconfidenţiale sau sterge baza de date. Nu permiteţi includerea fişierelor din altă parte decât depe serverul vostru. Setaţi allow_url_fopen=OFF în php.ini.4. FormulareFolosiţi metoda POST în formulare atunci când informaţia din acestea urmează să fie introdusăîn baza de date. Dacă variabilele globale sunt OFF în php.ini sau metoda de transmitere aformularului este GET, un utilizator rău intenţionat ar putea accesa adresa dvs. şi ar introducecomentariul lui (exemplu "blabla") în baza voastră de date fără să treacă propriuzis prin site.Aşa vă puteţi trezi că nu mai aveţi spaţiu pe server iar în baza de date sunt câteva milioane decomentarii care spun acelaşi lucru "blabla".Verificarea provenienţei cererilor către server este foarte importantă şi în alt caz: formularelede loghin. Cineva care ştie numele de utilizator ar putea încerca să vă găsească parola foarteusor. În acest caz va trebui să puneţi o protecţie suplimentară care să nu permită mai mult deX încercări consecutive eşuate de logare pentru un nume de utilizator. Această problemă serezolva uşor folosind sesiunile. În momentul când cineva încearcă să trimita numele şi paroladin formular putem seta o variabilă de sesiune $_SESSION[login_count] care să ţină mintenumărul de încercări. Când valoarea acesteia trece de 3 (încercări nereuşite) nici măcar numai interogaţi baza de date pentru a verifica datele trimise. Variabila de sesiune va rămâne înmemorie cât timp browserul este deschis şi sesiunea activă (opţiunea implicită a PHP demenţinere a sesiunilor active este de o oră). Dacă atacatorul aşteaptă o ora sau îşi închidebrowserul, sesiunea va fi închisă şi va putea de alte X ori să se logheze. De cele mai multe oriacestă măsură de siguranta este suficientă pentru a preveni încercările de aflare a parolelor.
  30. 30. 5. ExtensiiO practică obişnuită este de a acorda extensia .inc fişierelor care conţin biblioteci de funcţii ceurmează a fi incluse şi folosite în cod. PHP nu parsează fişierele cu extensia .inc şi dacăacestea sunt apelate direct ele sunt trimise plain text către browser. Nu puneţi informaţiisensibile (precum nume şi parola) în fişiere cu extensia .inc, .txt, sau .html care pot fiaccesate şi văzute. Folosiţi pentru aceste fişiere extensia .php care, dacă sunt accesate direct,vor fi rulate fără să afişeze informaţiile conţinute în ele.6. Comanda CHMOD - setarea atributelorComanda CHMOD (abreviere pentru change mode permissions of a file) este folosită pentru aschimba modul de acces (de permitere) a fişierelor şi directoarelor de pe server. Setarea poateafecta modul cum poate fi citit, sau cum se poate executa un fişier pe server. De exemplu,dacă aveţi un fişier .php care trebuie să execute o comandă de scriere pe server într-un fişier.txt trebuie să îi daţi dreptul să poata fi executat iar la fişierul .txt trebuie să îi daţi dreptul dea se putea scrie în el. Aveti 3 tipuri de acces - OWNER - GROUP - WORLD - fiecare cu câte 3setări - READ - WRITE - EXECUTE -Este bine ca la WORLD să nu daţi decât acces la citire (pentru a putea accesa paginile de pesite) dar nu şi drepturi de scriere sau execuţie (pentru că nu doriţi ca oricine să vă scrie cevrea în respectivul fişier .txt)În programul TOTAL COMMANDER (pe care eu îl folosesc şi pentru FTP) setarea atributelor peserver se face din meniul FILES - CHANGES ATTRIBUTES. Fiecare program de FTP are înmeniul lui setare pentru atributele fişierelor de pe server.7. CookiesDacă aveţi o secţiune de administrare pe site, unde accesul este restrictionat doar la membriide exemplu, este bine ca în toate paginile din această secţiune să încludă o pagină deverificare a accesului. Această pagina va verifica la fiecare accesare dacă utilizatorul esteînregistrat şi are acces pe pagina respectivă şi permite rularea paginii doar dacă utilizatoruleste înregistrat. Fără această verificare, un utilizator ar putea accesa paginile din secţiunea deadministrare fără să treacă prin formularul de înregistrare. După autentificarea propriu-zisă,vom folosi variabile de sesiune pentru a păstra în memorie câteva informaţii despreautentificare, pentru a le verifica mai târziu, atunci când accesăm alte pagini din cadrulsecţiunii de administrare. Pornim întâi sesiunea după care trecem la salvarea informaţiilor înea ca în exemplul de mai jos:session_start();$_SESSION [nume_admin] = $_POST [nume];$_SESSION [parola_encriptata] = $parolaEncriptata;Pe lângă acestea, pentru o şi mai mare siguranţă, vom salva id-ul sesiunii în altă variabilă.Toate sesiunile au un id unic, un string care seamănă cu rezultatul unei criptări MD5:$_SESSION [key_admin] = session_id();Cu autentificare făcută, spunem scriptului să încarce prima pagină din secţiunea deadministrare:header ("location: admin.php");În continuare pentru a împiedica accesul neautorizat la paginile din această secţiune, scriemun mic script de verificare a datelor sesiunii înainte de a încărca orice pagină din secţiunea deadministrare:session_start();if ($_SESSION [key_admin] != session_id ()) {print Acces neautorizat!;exit;}8. Loguri de acces
  31. 31. Pentru o verificare ulterioară a persoanelor care încearcă să intre în paginile restrictionate depe site, este bine să salvăm în baza de date (sau într-un fişier text) numele, parola criptata,ora, data, semnătura browserului şi ip-ul. Aşa veţi ştii cine a încercat să vă spargă site-ul şiputeţi crea un script care sa verifice de exemplu ip-ul şi dacă corespunde cu unul din cele caresunt blocate să nu aibă acces la nici una din pagini (chiar dacă găseşte userul şi parolacorecte)9. Criptarea parolelor cu MD5Parolele care sunt salvate în baza de date este recomandat să le ţineţi criptate, astfel dacăcineva încearcă să citeasca parolele le va vedea criptate.INSERT INTO admin VALUES ("administrator", md5("parola"));Criptarea folosind md5 nu este reversibila (şi astfel nici dvs., nici altcineva nu o va putea aflachiar dacă are acces la baza de date).10. Pagina index.php în subdirectoareDacă aveţi mai multe directoare şi subdirectoare pe server este recomandat pentru a preveniaccesul la datele aflate în aceste directoare să introduceţi în fiecare director o pagină numităindex.html sau index.php care să facă redirectarea automat către pagina principală a site-ului.Astfel minimizati riscul să intre cineva şi să vadă tot ce este în aceste subdirectoare.11. Fişierul .htaccessPentru a bloca accesul la un anumit director (sau chiar la tot site-ul) puteti crea un fişier numit.htaccess (cu punct înainte) în care să introduceţi ip-ul care doriţi să îl blocaţi (sau care săaibă acces)Order Deny,AllowAllow from allÎn exemplul de mai sus, toată lumea are acces. Dacă de exemplu ip-ul 192.168.1.1 nu doriţisă aibă acces la acel director scrieţiDeny from 192.168.1.1Atenţie, să nu vă blocaţi singuri ip-ul la site, că altfel trebuie să luaţi legătura cuadministratorul serverului să steargă fişierul ca să puteţi intra din nou pe site, sau sa scrietiprin FTP un nou fişier .htaccess. (la subdirectoare ştergeţi directorul sau salvaţi un alt fişier.htaccess) În cazul în care după de aţi pus fişierul pe server nu îl vedeţi, el este acolo darserverul seteaza acest nume de fişier ca fişier ascuns.12. Roboţii de căutareMotoarele de căutare pot indexa tot ce se află la voi pe site. Dacă doriţi ca un fişier saudirector să nu fie indexat de către motoarele de căutare, trebuie să creaţi un fişier numitrobots.txt care să se afle în directorul principal de pe site (nu în subdirectoare). În el scrieţiurmătoarele comenzi:# robots.txt for http://www.tutoriale.far-php.roUser-agent: *Disallow: /cache/Disallow: /admindisallow: /searchunde pentru fiecare director sau fişier se specifică locaţia şi numele. Pentru mai multăsiguranţă, am găsit pe web un mic script care verifică tipul de browser şi dacă nu este unbrowser cunoscut nu permite accesul (dacă cineva încearcă să citească paginile cu programespion sau gen web offline).
  32. 32. Cum am specificat şi la începutul acestui articol, cele spuse mai sus nunt doar cateva indicii şiidei pentru a vă putea proteja mai bine paginile. Structuri de control în PHPDupă cum ştiţi, instrucţiunile PHP sunt separate prin caracterul ;. Deseori, suntem nevoiţi săgrupăm mai multe instrucţiuni pentru a forma un bloc. Astfel, obţinem instrucţiunile compusecare sunt formate din mai multe instrucţiuni simple, separate prin caracterul ;. În PHP,instrucţiunile compuse au următoarea sintaxa:{ instructiune #1 instructiune #2 ... instructiune #n }Instrucţiunile care formează instrucţiunea compusă pot fi de orice tip: orice structură decontrol, alte instrucţiuni compuse etc. Aşadar un bloc de instructiuni (o instrucţiune compusă),în PHP, este delimitat de acolade.Structura ifUna dintre cele mai importante structuri în orice limbaj este cea alternativa. În PHP sintaxaacestei structuri este următoarea:if (conditie) instructiuneFolosirea unei astfel de structuri indică faptul că instrucţiunea se va executa dacă şi numaidacă valoarea expresiei conditie (eventual după conversia la tipul boolean) este true.Construcţia if - elseÎn foarte multe cazuri dorim să executăm o altă instrucţiune dacă valoarea expresiei condiţieeste false. În PHP putem utiliza o construcţie de tipul if - else în acest scop. Sintaxa este:if (conditie) instructiune #1else instructiune #2Construcţia elseifUneori, suntem nevoiţi să folosim structuri alternative îmbricate în diferite scopuri. Folosindconstrucţii de tipul if - else vom obţine o secvenţă de tipul:if (conditie #1) instructiune #1elseif (conditie #2) instructiune #2else ...elseif (conditie #n) instructiune #nelse instructiune #n+1Limbajul PHP permite folosirea unei prescurtări şi anume construcţia elseif. Practic, aceastaînlocuieste un else urmat de un if. Folosind această structură, codul anterior poate fi scrisastfel:if (conditie #1) instructiune #1elseif (conditie #2) instructiune #2
  33. 33. elseif ...elseif (conditie #n) instruciune #nelse instructiune #n+1Sintaxe alternativeDacă dorim să se execute mai multe instrucţiuni când este indeplinită o anumită condiţie,atunci ar trebui să folosim instrucţiunile compuse. De exemplu, pentru o structură if vomscrie:if (conditie):instructiune #1instructiune #2 ...instructiune #nendifPractic, pentru orice structură de control PHP, putem înlocui acolada deschisa prin caracterul: şi acolada închisă printr-un cuvânt cheie opţinut prin adăugarea prefixului end la cuvântulcheie care indică structura de control. Trebuie observat faptul că else şi elseif nu suntstructuri, ele fiind simple construcţii folosite în cadrul structurii if. Din acest motiv, nu vomavea niciodată endelse sau endelseif, ci doar endif-uri. Aşadar, sintaxa alternativă pentru ostructură if în care se folosesc construcţii else şi elseif este următoarea:if (conditie #1)grup instructiuni #1elseif (conditie #2)grup instructiuni #2elseif ...elseif (conditie #n)grup instructiuni #nelse grup instructiuni #n+1endif;Structura whileMajoritatea script-urilor PHP vor conţine cicluri. Pentru a folosi o buclă anterior condiţionatăvom utiliza structura while. Sintaxa acestei proceduri este:while (conditie) instructiuneEfectul acestei structuri este executarea instrucţiunii atât timp cât valoarea expresiei condiţie(eventual după conversia la tipul boolean) este true. Trebuie observat faptul că este posibil cainstrucţiunea să nu fie executată niciodată. Si pentru această structură avem la dispoziţie osintaxă alternativă şi anume:while (conditie):grup instructiuniendwhile;Structura do - whileUneori, dorim să folosim bucle posterior condiţionate. În acest scop, în PHP avem la dispoziţiestructura do - while a cărei sintaxă este:do instructiune while (conditie);

×