ALTE DOCUMENTE
|
||||
INTRODUCERE ÎN PHP
PHP, acronim care provine din "PHP: Hypertext Preprocessor", este un limbaj de scripting utilizat pe scara larga, realizat si distribuit în sistem Open Source, care este special realizat pentru a dezvolta aplicatii web, prin integrarea codului PHP în documente HTML. Sintaxa sa provine din C, Java si Perl si este usor de învatat. Scopul principal al limbajului este acela de a scrie rapid pagini web dinamice, dar cu PHP se pot realiza mult mai multe.
PHP este una dintre cele mai interesante tehnologii existente în prezent. Deoarece îmbina caracteristici dintre cele mai complexe cu simplitatea în utilizare, PHP a devenit rapid un instrument de frunte pentru dezvoltarea aplicatiilor în Web. Totusi, spre deosebire de alte instrumente populare pentru dezvoltarea aplicatiilor Web, cum este Perl, PHP este un limbaj de programare comod pentru începatori, chiar si pentru cei care nu au mai desfasurat activitati de programare în trecut.
Ca si alte limbaje de scripting pentru Web, PHP va permite sa furnizati un continut Web dinamic, adica un continut Web care se modifica automat de la o z 22222c24w i la alta sau chiar de la un minut la altul. Continutul Web este un element important în sustinerea traficului unui sit Web; de regula, vizitatorii nu vor mai reveni la o pagina Web care contine aceleasi informatii ca si cele prezentate la ultima vizita. Pe de alta parte, siturile Web frecvent actualizate pot atrage cantitati enorme de trafic.
Mai mult, spre deosebire de limbajele de scripting, precum JavaScript, PHP ruleaza pe serverul Web, nu în browserul Web. În consecinta, PHP poate obtine accesul la fisiere, baze de date si alte resurse inaccesibile programului JavaScript. Acestea constituie bogate surse de continut dinamic, care atrag vizitatorii.
II.1. Notiuni Fundamentale
II.1.1. Ce este PHP?
Spre deosebire de un script scris în alte limbaje cum ar fi Perl sau C - în loc de a scrie un program cu o multime de comenzi pentru a produce un HTML, folosind PHP se poate scrie un script HTML, ca cel de mai jos, ce include cod pentru a realiza ceva. Codul PHP este delimitat de coduri de start si de sfârsit ce permit intrarea si iesirea din "modul PHP".
<html>
<head>
<title>Exemplu</title>
</head>
<body>
<?php
echo "Salut, sunt un script PHP!";
?>
</body>
</html>
Diferenta dintre PHP si altceva cum ar fi JavaScript este acela ca PHP este executat pe server pe când JavaScript este executat pe calculatorului clientului (de browserul Web). Pentru un script similar celui de mai jos sus pe un server, clientul ar primi doar rezultatele scriptului ce este rulat, fara a vedea în nici un fel codul din spatele acestuia. Se poate chiar configura serverul de web ca acesta sa proceseze toate fisierele HTML cu PHP si astfel nu exita nici o metoda ca un utilizator sa stie defapt ce exista în fisiere.
II.1.2. Ce poate face PHP?
Cu PHP se poate face orice. PHP este în principal axat pe partea de scripting ce ruleaza pe server, deci poate face orice face si un program CGI, cum ar fi colectarea de date de la formulare, generarea de continut dinamic sau trimitere si primire de cookie-uri. Dar PHP poate face mult mai multe.
Exista trei domenii principale unde sunt folosite scripturile PHP.
Scripturi ce ruleaza pe server. Acesta este cel mai traditional si cel mai important pentru PHP. Este nevoie de trei lucrui pentru a face sa mearga: interpretorul PHP (CGI sau modul de server), un server web si un browser web. E nevoie ca serverul de web sa fie pornit, cu o conexiune PHP instalata. Se poate accesa rezultatul programelor PHP cu un browser prin intermediul serverului de web.
Scripting in linie de comanda. Se poate face ca PHP sa ruleze fara a fi nevoie de server si de browser, ci doar de interpretorul PHP. Aceasta metoda este ideala pentru script-urile ce se vor a fi executate de regula folosind cron (task scheduler în Windows), sau sarcini simple de procesare a textelor.
Scrierea de aplicatii ce ruleaza de partea clientului în mod grafic (GUI). Probabil ca PHP nu este limbajul cel mai bun de a scrie aplicatii cu ferestre pentru Windows sau alte sisteme de operare, dar daca este bine cunocut si se doreste folosirea unor facilitati avansate ale PHP-ului în aplicatiile ce ruleaza de partea clientului, se poate totusi folosi PHP-GTK pentru a scrie astfel de programe. De asemenea, exista posibilitatea de a scrie aplicatii ce ruleaza pe platforme diferite folosind aceasta metoda. PHP-GTK este o extensie a PHP-ului, nedisponibila în distributia principala de PHP.
PHP poate fi folosit pe aproape toate marile sisteme de operare, incluzând Linux, multe variante de Unix (incluzând HP-UX, Solaris si OpenBSD), Microsoft Windows, Mac OS X, RISC OS, probabil si altele. PHP are de asemenea suport pentru majoritatea serverelor de web din prezent. Acestea includ serverele Apache, Microsoft Internet Information Server, Personal Web Server, Netscape si iPlanet, serverul Oreillz Website Pro, Caudium, Xitami, OmniHTTPd, si multe atele. Pentru majoritatea serverelor PHP are un modul, iar pentru celelalte suporta standardul CGI, PHP putând sa lucreze ca un procesor CGI.
Deci, cu PHP, exista libertatea de a alege un sistem de operare si un server de web. Chiar mai mult, exista posibilitatea de a alege programarea procedurala sau programarea orientata obiect, sau chiar sa se combine acestea. Cu toate acestea, nu orice facilitate a standardului POO este prezenta în versiunea curenta a PHP-ului, multe librarii de cod si aplicatii mari (incluzând si libraria PEAR) sunt scrise folosind doar cod POO.
Cu PHP programatorul nu este limitat sa scoata rezultat HTML. Posibilitatile PHP-ului includ afisarea de imagine, fisiere PDF si chiar filmulete Flash (folosind librariile libswf si Ming) toate generate instant. Se poate de asemeanea ca rezultatul sa fie orice fisier text, cum ar fi XHTML sau orice alte fisiere XML. PHP poate genera autmoat aceste fisiere si sa le salveze în sistemul de fisiere în loc sa le afiseze, formând un cache de partea serverului pentru continutul dinamic.
Una dintre cele mai puternice si importante facilitati în PHP este suportul sau pentru o gama larga de baze de date. Scrierea une pagini de web ce interactioneaza cu o baza de date este incredibil de simpla. PHP suporta si ODBC, standardul Open Database Connection, deci se poate conecta la orice alta baza de date ce suporta acest standard mondial.
PHP are deasemeanea suport pentru a conversa cu alte servicii folosind protocoale cum ar fi LDAP, IMAP, SNMP, NNTP, POP3, HTTP, COM (pe Windows) si multe altele. Se pot, de asemenea, deschide socket-uri de retea si se poate interactiona între aproape toate limbajele de programare Web. PHP are suport pentru instantierea obiectelor Java si utilizarea lor într-un mod transparent ca obiecte PHP. Se pot de asemenea folosi extensii CORBA pentru a accesa obiecte aflate la distanta.
PHP are capabilitati extrem de folositoare pentru procesarea textului, de la POSIX Extins sau expresii regulare Perl, pâna la parsarea documentelor XML. Pentru parsarea si accesarea documentelor XML, suporta standardele SAX si DOM.
Folosind PHP în domeniul comertului electronic, sunt foarte folositoare pentru programul tau de plati online functii de plata Cybercash, CyberMUT, VeriSign Payflow Pro si CCVS.
În cele din urma, dar nu ultimul rând, PHP are si alte extensii interesante, cum ar fi functii ale motorului de cautare mnoGoSearch, functii pentru accesarea IRC-ului, multe utilitare de compresie (gzip, bz2), conversie de calendar, traducere...
II.2. Elemente de baza ale sintaxei
II.2.1. Iesirea din modul HTML
Când PHP interpreteaza un fisier trece prin textul acestuia pâna când întâlneste unul din tag-urile speciale care îi spun sa porneasca interpretarea textului ca fiind cod PHP. Mai departe, parser-ul executa tot codul întâlnit, pâna la întâlnirea unui tag PHP de închidere, care anunta trecerea normala prin text, din nou. Acest mecanism permite înglobarea codului PHP în interiorul codului HTML: tot ceea ce este în afara tag-urilor PHP este lasat nemodificat, în timp ce tot ceea ce este în interior este interpretat ca fiind cod.
Exista patru categorii de tag-uri care pot fi folosite pentru a marca bolcurile de cod PHP. Dintre acestea, doar doua (<?php. . .?> si <script language="php">. . .</script>) sunt întotdeauna disponibile. Cu toate ca tag-urile în format scurt si cele de tip ASP par a fi convenabile, ele nu sunt la fel de portabile ca cele în format lung. De asemenea, daca se doreste includerea codului PHP în XML sau XHTML, este necesar sa se foloseasca tag-urile în forma <?php. . .?> pentru a corespunde standardului XML
Cele patru tipuri de tag-uri sunt:
<?php echo("if you want to serve XHTML or XML documents, do like this\n"); ?>
2. <? echo ("this is the simplest, an SGML processing instruction\n"); ?>
<?= expression ?> This is a shortcut for "<? echo expression ?>"
<script language="php">
echo ("some editors (like FrontPage) don't
like processing instructions");
</script>
<% echo ("You may optionally use ASP-style tags"); %>
<%= $variable; # This is a shortcut for "<% echo . . ." %>
Prima varianta, <?php. . .?>, este metoda preferata deoarece permite folosirea PHP-ului în cod corform standardului XML, cum ar fi XHTML.
Cea de-a doua varianta nu este întotdeauna posibila. Tag-urile prescurtate pot fi folosite doar daca au fost activate. Acest lucru poate fi facut prin intermediul functiei short_tags() (numai în PHP3), prin activarea optiunii short_open_tag în fisierul de configurare, sau prin compilarea scripturilor folosind optiunea enable-short-tags. Chiar daca este implicit activata în fisierul php.ini, folosirea tag-urilor prescurtate nu este recomandata.
Cea de-a patra varianta poate fi folosita numai daca tag-urile de tip ASP au fost activate folosind setarea asp_tags din fisierul de configurare.
PHP permite folosirea unor structuri ca cea de mai jos:
<?php
if ($expression) else
?>
Aceasta functioneaza exact cum este de asteptat, deoarece când PHP întâlneste tag-ul de închidere ?> începe afisarea a ceea ce întâlneste pâna la aparitia unui alt tag de start. În cazul blocurilor mari de text, iesirea din modul PHP este în general mai eficienta decât trimiterea textului folosind echo() sau print().
II.2.2. Separarea instructiunilor
Instructiunile sunt separate la fel ca în C sau Perl - fiecare instructiune este terminata cu un semn punct si virgula.
Tag-ul de închidere implica si sfârsitul instructiunii, deci urmatoarele doua exemple sunt echivalente:
<?php
echo "This is a test";
?>
<?php echo "This is a test" ?>
II.2.3. Comentariile
PHP suporta comentarii de tip 'C', 'C++' si Unix shell. De exemplu:
<?php
echo "This is a test"; // This is a one-line c++ style comment
/* This is a multi line comment
yet another line of comment */
echo "This is yet another test";
echo "One Final Test"; # This is shell-style style comment
?>
Comentariul pe o sigura linie, de fapt realizeaza comentarea codului pâna la sfârsitul liniei curente sau pâna la terminarea blocului curent PHP, oricare din aceste doua cazuri apare primul.
II.3. Tipuri de date
PHP suporta opt tipuri primitive de date.
Patru tipuri scalare:
- boolean
. integer
- float (numere în virgula mobila, sau 'double')
- string
Doua tipuri compuse:
- array
- obiect
Doua tipuri speciale:
- resource
- NULL
Tipul unei variabile, de obicei nu este stabilit de programator, ci este decis la rulare de PHP, în functie de contextul în care acea variabila este folosita.
II.4 Variabile
II.4.1 Notiuni de baza
În PHP variabilele sunt reprezentate folosind un semn dollar urmat de numele variabilei. Numele variabilelor sunt case-sensitive.
În PHP3 variabilele sunt întotdeauna atribuite prin valoare. Cu alte cuvinte, atunci cînd o expresie este atribuita unei variabile, întreaga valoare a expresiei originale este copiata în variabila destinatie. Aceasta înseamna ca, de exemplu, dupa atribuirea valorii unei variabile alteia, schimbarea uneia dintre aceste variabile nu are nici un efect asupra celeilalte.
PHP4 ofera si un alt mod de a atribui valori valiabilelor: prin referinta. Aceasta înseamna ca noua variabila refera (devine un alias pentru, sau indica catre) variabila originala. Schimbari în variabila noua o afecteaza si pe cea initiala, si invers. Aceasta înseamna de asemenea ca nu sunt realizate copii si astfel atribuirea se realizeaza mai rapid.
Pentru a realiza o atribuire prin referinta trebuie doar atasat un ampersand(&) la începutul variabilei care va fi atribuita (variabila sursa), ca în exemplul urmator:
<?php
$foo = 'Bob'; // Assign the value 'Bob' to $foo
$bar = &$foo; // Reference $foo via $bar.
$bar = "My name is $bar"; // Alter $bar...
echo $bar;
echo $foo; // $foo is altered too.
?>
II.4.2 Variabile predefinite
PHP furnizeaza un numar larg de variabile predefinite. Multe din aceste variabile, nu pot fi documetate complet deoarece sunt dependente de serverul pe care ruleaza, de versiunea si setarea acestuia precum si de alti factori.
Unele din aceste variabile nu vor fi folosite când PHP ruleaza în linie de comanda.
II.4.3. PHP Superglobals
$GLOBALS
Contine o referinta la fiecare variabila care este n mod curent valabila în scopul global al script-ului. Cheile acestui sir sunt numele variabilelor globale.
$_SERVER
Reprezinta variabilele setate de serverul de web sau legate direct de mediul de executie al scriptului curent.
$_GET
Reprezinta variabilele oferite scritpt-ului direct prin HTTP GET. Analog vechiului sir $HTTP_GET_VARS (care înca este valabil, dar depreciat).
$_POST
Reprezinta variabilele oferite scritpului direct prin HTTP POST. Analog vechiului sir $HTTP_POST_VARS (care înca este valabil, dar depreciat).
$_COOKIE
Reprezinta variabilele oferite scritpului direct prin HTTP. Analog vechiului sir $HTTP_COOKIE_VARS (care înca este valabil, dar depreciat).
$_FILES
Reprezinta variabilele oferite scritpului prin upload-ul de fisiere folosind modul POST din HTTP. Analog vechiului sir $HTTP_POST_FILES (care înca este valabil, dar depreciat).
$_ENV
Reprezinta variabilele oferite scritpt-ului prin mediu. Analog vechiului sir $HTTP_ENV_VARS (care înca este valabil, dar depreciat).
$_REQUEST
Reprezinta variabilele oferite scritpt-ului prin mecanismele de input GET, POST, si COOKIE, deci care nu pot fi de ncredere.
$_SESSION
Reprezinta variabilele registrate unei sesiuni a script-ului. Analog vechiului sir $HTTP_SESSION_VARS (care înca este valabil, dar depreciat).
II.4.4. Folosirea variabilelor statice
O importanta caracteristica a scope-ului variabilei o reprezinta variabila statica. O variabila statica exista în scope-ul functiei locale, dar nu îsi pierde valoarea când executia programului paraseste acest scope. Sa consideram urmatorul exemplu:
<?php
function Test () ?>
Aceasta functie este destul de nefolositoare deoarece de fiecare data este apelata sa seteze valorea 0 variabilelei $a si sa printeze "0".
Instructiunea $a++ care incrementeaza variabila nu serveste nici unui scop deoarce, de îndata ce functia iese, variabila dispare. Pentru folosirea unei functii de numarare care nu va mai pierde numaratoarea curenta, variabiala $a este declarata statica.
<?php
function Test()
?>
Astfel, de fiecare data când functia Test() este apelata, aceasta va afisa valoarea variabilei $a si o va incrementa.
Variabilele statice ofera, de asemenea, un mod de a lucra cu functiile recursive. O functie recursiva este o functie care se autoapeleaza. Trebuie avuta grija la scrierea unei functii recursive, deoarece este posibila realizarea unei recursii infinite. Trebuie asigurat un mod de a termina recursia. Urmatoarea functie recursiva simpla numara pâna la 10, folosind variabila statica $count pentru a stii când sa se opreasca:
<?php
function Test()
$count--;
?>
II.4.5. Variabile din afara mediului PHP
Formulare HTML (GET si POST)
Când un formular este trimis unui scrip PHP, informatiile din acel formular sunt automat transmise scriptului PHP. Sunt mai multe modalitati de a accesa informatia, de exemplu:
<form action="foo.php" method="POST">
Name: <input type="text" name="username"><br>
Email: <input type="text" name="email"><br>
<input type="submit" name="submit" value="Submit me!">
</form>
În functie de setarile si preferintele particulare, sunt multe modalitati de a accesa datele din formulare HTML. Câteva exemple:
<?php
// Available since PHP 4.1.0
print $_POST['username'];
print $_REQUEST['username'];
import_request_variables('p', 'p_');
print $p_username;
// Available since PHP 3. As of PHP 5.0.0, these long predefined
// variables can be disabled with the register_long_arrays directive.
print $HTTP_POST_VARS['username'];
// Available if the PHP directive register_globals = on. As of
// PHP 4.2.0 the default value of register_globals = off.
// Using/relying on this method is not preferred.
print $username;
?>
Folosirea unui formular de tip GET este similara, cu deosebirea ca se va folosi variabila predefinita GET în schimb. GET se poate folosi si pentru extragerea informtiilor din QUERY_STRING (informatiile de dupa semnul ? din URL). De exemplu, URL-ul https://www.example.com/test.php?id=3 contine date GET care sunt accesibile prin $_GET['id'].
II.4.6. Cookie-uri HTTP
PHP ofera un suport transparent pentru Cookies. Cookie-urile reprezinta un mecanism pentru stocarea datelor în browser si astfel se pot identifica utilizetoriicare revin pe o anumita pagina. Cookie-urile se pot seta folosind functia setcookie(). Cookie-urile fac parte din header-ul HTTP, deci functia setcookie() trebuie apelata înainte de trimiterea oricarui continut catre browser. Informatiile de tip Cookie sun apoi stocate în array-urile corespunzatoare, cum ar fi $_COOKIE, $HTTP_COOKIE_VARS ca si în $_REQUEST.
Daca se doreste atribuire unor valori multiple unei singure variabile Cookie, aceasta poate fi tratata ca un array. De exemplu:
<?php
setcookie("MyCookie[foo]", "Testing 1", time()+3600);
setcookie("MyCookie[bar]", "Testing 2", time()+3600);
?>
Aceasta va crea doua variabile cookie separate, cu toate ca MyCookie va fi un singur array.
|