sâmbătă, 14 iulie 2012

Instructiuni PHP


Instructiuni uzuale folosite in PHP    0  


Pe langa instructiunile comune amintite in lectia "Notiuni de baza" - instructiunile de afisare (echo, print, printf), instructiunea de atribuire, instructiunea if-then-else si cele de terminare a executiei (exit, die) - exista o serie de alte functii ale limbajului care sunt folosite cu precadere de orice programator.
Detaliem in cele ce urmeaza cateva dintre ele.

Includerea altor scripturi: include() si require()

De multe ori este nevoie sa separam codul nostru in scripturi de sine statatoare. Spre exemplu, putem avea niste declaratii de date intr-un script numit config.php si codul propriu-zip intr-un altul, script.php. Pentru a putea include codul dintr-un fisier separat in scriptul curent se pot folosi doua functii: include si require, cu derivatele lor.
Important de mentionat, in momentul in care un script este inclus cu una din cele 2 functii, el este si executat (interpretat). Spre exemplu, daca avem doua fisiere ca mai jos, la accesarea scriptului script.phpvor fi afisate ambele mesaje - asta pentru ca in urma instructiunii include scriptul config.php a fost si interpretat.
<?php
// codul din config.php
echo 'Sunt in config.php <br />';
 
// script.php
include( 'config.php' );
echo 'Sunt in script.php <br />';
?>
Functia require face acelasi lucru ca si include dar exista o mica diferenta intre cele doua: daca fisierul care este solicitat pentru includere nu exista include va returna un avertisment, continuand executia, pe cand require va returna o eroare iar executia codului va fi intrerupta.
<?php
include( 'fisier_inexistent.php' );  // genereaza un warning si merge mai departe
echo 'Acest mesaj va fi afisat';
 
require( 'fisier_inexistent.php' );  // genereaza o eroare iar executia se intrerupe
echo 'Aceasta instructiune nu va mai fi executata' );
 
?>
Cele doua functii au fiecare cate o varianta: include_once respectiv require_once. Aceste forme, dupa cum si numele o spune, includ fisierul specificat o singura data, astfel incat, daca fisierul solicitat a fost deja inclus la o noua apelare a include_once sau require_once acesta nu va fi inclus a doua oara. Aceste forme ale functiilor sunt utile atunci cand fisierle incluse contin declaratii ce trebuie sa fie facute o singura data.

Functia mail()

PHP poate trimite emailuri daca pe serverul curent este instalata si o aplicatie de email (un server de email). Nu este nevoie de configurari suplimentare atat timp cat serverul de email nu are restrictii si poate fi accesat de aplicatiile locale. Intr-o instalare pe calculatorul personal, cum este cea descrisa in primele pagini ale acestui tutorial, nu este posibila trimiterea de mesage email, iar functia mail va returna o eroare. Pe un web-server configurat complet si corect, cum sunt serverele ce ofera gazduirea site-urilor, functiamail functioneaza corect.
<?php
// trimitere mesaj simplu
mail('adresa@exemple.com', 'Subiect mesaj', 'Mesaj simplu');
 
// trimiterea unui mesaj in care se specifica date aditionale
$to      = 'adresa@example.com';
$subject = 'Subiect mesaj';
$message = 'Mesaj simplu cu date aditionale';
$headers = 'From: punctsivirgula@example.com' . "\r\n" .
           'Reply-To: punctsivirgula@example.com' . "\r\n" .
           'X-Mailer: PHP/' . phpversion();
 
mail($to, $subject, $message, $headers);
?>

Ce să mai citim?

Robotul ADN ar putea ucide celulele canceroase

SARS a fost o boală relativ rară; la sfârșitul epidemiei, în iunie 2003

Fii propriul tău nutriționist

Planet REBOOT

Votăm un Deputat BUN

Ttatăl fondator al Uniunii Europene. 

Colonizarea de pe Marte !


Functii matematice

Limbajul PHP dispune de majoritatea functiilor matematice uzuale. Cateva dintre ele sunt prezentate mai jos cu titlu exemplificativ. Lista completa poate fi gasita pe site-ul de documentatie PHP.
<?php
echo abs(-7);   // functia "valoare absoluta", afiseaza 7
echo sin(60);   // functia "sinus", afiseaza -0.304810621 ...
echo decbin(12);   // returneaza reprezentarea binara a numarului, afiseaza 1100
echo base_convert('7DB', 16, 10);   // returneaza convesia dintr-o baza in alta, afiseaza 2011
echo round(12.3); // returneaza o rotunjire la cel mai apropiat intreg, afiseaza 12
 
echo rand(); // afiseaza un numar aleator
echo rand(10, 70); // afiseaza un numar aleator din intervalul specificat
?>

Functia set_time_limit()

Functia set_time_limit se foloseste pentru a configura timpul maxim cat scriptul curent are voie sa se execute. Este utila atunci cand codul PHP trebuie sa execute un volum mare de operatii care ar putea dura cateva zeci de secunde (spre exemplu la un upload de fisiere). Daca dupa expirarea timpului scriptul inca se afla in executie, serverul va intrerupe executia fi va returna o eroare.
<?php
set_time_limit(50); // seteaza limita la 50 secunde
 
set_time_limit(0); // dezactiveaza limita - scriptul poate rula la nesfarsit
?>

Functia flush()

Functia flush trimite catre browser tot ceea ce a fost afisat deja de script. In mod normal, rezultatul unui script PHP este trimis catre browser pentru afisare doar la finalul executiei intregului script. Aceasta functie ofera posibilitatea trimiterii catre browser a rezultatului pe parcurs ce acesta este printat in PHP. Asta inseamna ca pagina poate fi afisata partiala in timp ce inca se incarca.
<?php
echo 'Text 1<br />';
echo 'Text 2<br />';
flush();
?>

Functii de transformare base64

Functiile de codificare base64 sunt folosite pentru codificarea/decodificarea unui text in si din formatul Base64.
<?php
$text = 'Tutorial PHP in limba romana';
echo base64_encode($text); // afiseaza VHV0b3JpYWwgUEhQIGluIGxpbWJhIHJvbWFuYQ==
echo base64_decode('VHV0b3JpYWwgUEhQIGluIGxpbWJhIHJvbWFuYQ==');  // afiseaza textul initial
?>

Functia phpinfo()

Functia phpinfo ofera informatii despre instalarea PHP curenta si despre serverul pe care aceasta este executata. Rolul acestei functii este pur informativ; functia nu poate fi folosita intr-un script care are un alt scop bine definit. De aceea, este recomandata apelarea acestei functii intr-un script PHP separat, intrucat aceasta creaza o pagina HTML completa.
<?php
phpinfo();  // returneaza o pagina HTML cu informatii despre instalarea PHP 
?>
O alta functie, ce poate fi utila in scripturile voastre, este phpversion - aceasta returneaza doar versiunea curenta a interpretorului PHP. Un exemplu al folosirii acestei functii este mai sus la functia mail.

Extensii ale limbajului PHP    1 ! 

Pe langa functiile de baza, limbajul PHP ofera posibilitatea extinderii capacitatilor sale prin folosirea extensiilor. Extensiile sunt librarii dezvoltate de regula de cei care au creat limbajul PHP si care ofera functionalitati aditionale, cum ar fi posibilitatea de a manipula anumite tipuri de fisiere (PDF, Excel, Word), posibilitatea de a crea imagini, de a comunica cu alte aplicatii, etc.
Extensiile cele mai uzuale sunt activate implicit la instalarea interpretorului PHP, dar cele mai multe trebuie activate manual prin modificarea configurarii PHP. Intrucat in acest tutorial nu vom folosi nici o functionalitate care sa necesite vreo extensie a PHP-ului, nu vom insista asupra acestora. E bine de stiut doar ca pentru operatiuni specializate si/sau avansate, sunt sanse mari sa existe o extensie care sa usureze lucrul.

!
Taguri PHP, instructiuni, punct si virgula  

Codul PHP trebuie inclus in fisierele ce vor fi deservite utilizatorilor finali si trebuie delimitat de restul continutului prin tagul de inceput <?php si tagul de sfarsit ?>. Practic tot ce se afla in interiorul acestor etichete va fi interpretat ca fiind cod-sursa PHP (cod ce va fi executat de interpretorul PHP). Textul din afara celor 2 taguri este lasat neschimbat, fiind ulterior interpretat de browser. Se pot folosi si alte etichete in functie de configuratia serverului web, dar acestea nu sunt recomandate.
<?php
/* forma recomandata */
?>
 
<script language="php">
/* forma disponibila oricand, putin folosita */
</script>
 
<?
/* taguri scurte, acceptarea lor de catre web-server depinde de configurare */
?>
 
<%
/* taguri in stilul asp, acceptarea lor de catre web-server depinde de configurare */
%>
Codul PHP este format din instructiuni - comenzi date catre interpretor, in urma carora se executa ceva. Asa cum s-a mai spus, PHP este folosit in principal pentru a genera cod HTML, asa ca de cele mai multe ori instructiunile folosite sunt cele de afisare. In aplicatii mai complexe se pot insa folosi si instructiuni de conectare la bazele de date, de citire/scriere/manipulare fisiere, intructiuni de trimitere email-uri si altele. Instructiunile se pot grupa in blocuri delimitate de acolade { }. Aceste blocuri, numite si "instructiuni complexe" se comporta ca si cum ar fi o singura instructiune (vezi mai jos exemple de blocuri).
Toate instructiunile (in afara de blocuri) trebuie sa fie terminate cu punct si virgula ( ; ). Lipsa acestuia genereaza o eroare.

Intructiuni uzuale in PHP    4 ! 


echo, print, printf

In multe din scripturile scrise de incepatori (si nu numai) continutul rezultat in urma executiei este un text (care poate fi sau nu cod HTML). Pentru a obtine acest text, secventele de cod trebuie sa contina instructiuni explicite care sa "spuna" intrepretorului ce anume trebuie afisat.
Instructiunile de afisare sunt printecho si printf. Exista si alte modalitati dar aceste 3 instructiuni sunt cele mai uzuale si usor de folosit. Diferente intre ele exista (vezihttp://www.faqts.com/knowledge_base/view.phtml/aid/1/fid/40), dar ca idee generala print si echo fac acelasi lucru si poate fi folosita oricare dintre ele. printf este folosita mai rar datorita sintaxei oarecum greoaie.
<?php
# cele 2 instructiuni de mai jos sunt echivalente
print "Text";
echo "Text";
 
# o instructiune echo poate primi mai multi parametrii
echo "Afisez", " un text din ", 4, " bucati";
 
# o singura intstructiune print poate primi doar unul
print "Afisez";
print " un text din ";
print 4;
print  " bucati";
 
# printf este folosita pentru a formata continutul, la fel ca in C/C++
printf( "Am %4.2f lei", 102.1234 ); // afiseaza Am 102.12 lei
?>

Instructiuni de atribuire

Alte instructiuni, la fel de uzuale ca cele de afisare, sunt cele de atribuire. Acestea sunt explicate mai pe larg in sectiunea "Variabile. Constante".

Instructiunea if

In afara de aceste 2 categorii, la fel de des intalnita este instructiunea if. Aceasta se numeste instructiunea de test si este folosita pentru a executa o secventa de cod in functie de valoarea de adevar a unei conditii. Exista mai multe forme, prezentate mai jos:
if( conditie ) instructiune 1;
Aceasta forma permite executarea unei instructiuni numai daca este indeplinita o conditie. Conditia poate fi orice expresie de genul "2 mai mic decat 3", "variabila $a este definita", s.a. tradusa in limbajul PHP.
Instructiunea poate fi simpla (o singura instructiune) sau un bloc (mai multe instructiuni delimitate de acolade). Regula este ca atunci cand este nevoie sa se execute mai mult de o instructiune, trebuie creat un bloc (trebuie folosite acoladele).
Exemplu:
<?php
if( 2 < 4 ) print "2 e mai mic decat 4";
 
if( 3 > 1 ) {
 print "3 e mai mare ca 1 \n";
 print "<br />";
}
?>
Atentie! Daca nu se foloseste un bloc in cadrul instructiunii if, atunci doar prima instructiune dintre cele existente se executa in urma evaluarii conditiei, pe cand celelalte se vor executa intotdeauna, indiferent de rezultatul verificarii. De exemplu:
<?php
echo "Este 3 mai mic decat 2? <br />";
if( 3 < 2 )
 print "3 < 2";
 print "3 este mai mic decat 2";
?>
Codul de mai sus va afisa:
Este 3 mai mic decat 2? <br />
3 este mai mic decat 2
Pentru ca nu am inclus cele 2 instructiuni print intr-un bloc, a doua instructiune s-a executat indiferent de valoarea de adevar a conditiei. Codul corect (din punct de vedere logic) ar fi urmatorul, care contine un bloc de instructiuni:
<?php
echo "Este 3 mai mic decat 2? <br />";
if( 3 < 2 ) {
 print "3 < 2";
 print "3 este mai mic decat 2";
}
?>

Instructiunea if - else

De multe ori este nevoie sa se specifice o instructiune ce trebuie executata daca nu este indeplinita conditia. In acest caz se foloseste if - else.
if( conditie ) instructiune 1;
else instructiune 2;
Aceasta forma permite executarea unei instructiuni atunci cand se indeplineste conditia sau executarea alteia diferite in caz contrar. Aceleasi observatii ca si mai sus se aplica.

Siruri de caractere    10 ! 

In majoritatea scripturilor PHP se lucreaza cu bucati de text denumite siruri de caractere sau string-uri. PHP prezinta particularitati in modul in care sunt folosite stringurile, particularitati ce sunt prezentate in exemplele de mai jos.
Nota: sirurile de caractere reprezinta expresii (entitati ce au/returneaza o valoare). Asadar, un string poate fi folosit, pe langa, afisare, in atribuiri, la verificari, etc. In exemplele ce urmeaza s-a optat pentru afisarea sirurilor.
<?php
print "Salut, straine!"; // sir simplu
print 'Salut din nou!'; // sir simplu, delimitat de apostrof
?>
Nota: in acest exemplu nu este nici o diferenta intre modul de afisare a sirurilor delimitate prin ghilimele si cele delimitate prin apostrof. Cu toate astea, PHP trateaza in mod diferit aceste caractere. Mai multe explicatii si exemple sunt prezentate in pagina "Variabile.Constante".
<?php
print "Ma numesc \"Alex\"!"; // sir ce contine ghilimele, se foloseste \"
print 'Porecla ta e Kelu\' ?'; // sir delimitat de ghilimele simple ce contine un apostrof
 
print "Text afisat pe 3 linii: \n linia 2 si \n linia3";
// atentie, textul e afisat pe 2 linii in sursa HTML cu ajutorul \n
 
print "Am castigat \$30 :D"; // caracterul dolar are un statut aparte
// pentru a afisa semnul $ asa cum este se foloseste \$
 
print "Text cu \\backslash\\."; // caracterul \ (numit escape char) poate fi afisat intr-un 
// text daca este dublat; daca e folosit doar un \ PHP ar trata textul diferit:
print "Text fara \backslash\- \nu se afiseaza corec\t.";
 
print <<<TXT 
Text pe mai multe linii. 
Delimitatorii pot avea orice nume: TXT, START, etc, cu urmatoarele conditii
- ambii delimitatori trebuie sa aiba acelasi nume
- inainte de primul delimitator se foloseste <<<
- delimitatorul de inceput nu trebuie sa fie urmat de spatiu sau alt caracter
- delimitatorul de final sa fie la inceputul liniei (fara spatii inainte)
- dupa delimitatorul final se pune punct si virgula ;
TXT;
 
// concatenarea (legarea) sirurilor
print 'Sir1' . " legat de " . 'Sir2'; // Sir1 legat de Sir2
?>

Comentarii in PHP    0 ! 

Comentariile sunt portiuni de cod care nu se executa. Sunt folosite de programatori de regula pentru a da diverse explicatii despre logica aplicatiei, variabile si altele. Comentariile nu afecteaza executia unui script si pot fi sterse din cod fara nici un efect.
<?php
// acesta este un comentariu. intreaga linie nu va fi luata in considerare
# la fel ca mai sus - print "hello" - nu se executa
/* comentariu cu delimitator de inceput si sfarsit */
 
print /* partea asta e ignorata */ "Salut!";
 
/* afiseaza
Salut!
*/
?>
Nota: comentariile /* */ nu pot fi imbricate (unele in altele). Exemplul urmator nu este un cod valid.
<?php
/* comentariu /* altul */ inapoi la primul */
?>
Este un lucru foarte util sa folositi comentarii in cod pentru a explica modul de rezolvare a problemei abordate, sau pentru a da detalii despre operatiile efectuate. Acestea va vor ajuta mai tarziu daca veti vrea sa modificati codul scris, sau vor oferi altor persoane informatii (valoroase) despre cum ati gandit codul respectiv.


Terminarea executiei    4 ! 

<?php
exit( "Script terminat" );
die( "Script terminat" );
 
print "Acesta linie nu se afiseaza niciodata";
?>
Nota: instructiunile die si exit sunt echivalente.

Sursa http://php.punctsivirgula.ro

Instructiuni PHP



Instructiuni uzuale folosite in PHP    1 ! 

Pe langa instructiunile comune amintite in lectiile anteriorare - instructiunile de afisare, instructiunile de control, instructiunile pentru vectori, string-uri sau timp - exista o serie de alte functii ale limbajului PHP care sunt folosite cu precadere de orice programator.
Detaliem in cele ce urmeaza cateva dintre ele.

Functia mail()

PHP poate trimite emailuri daca pe serverul curent este instalata si o aplicatie de email (un server de email). Nu este nevoie de configurari suplimentare atat timp cat serverul de email nu are restrictii si poate fi accesat de aplicatiile locale. Intr-o instalare pe calculatorul personal, cum este cea descrisa in primele pagini ale acestui tutorial, nu este posibila trimiterea de mesage email, iar functia mail va returna o eroare. Pe un web-server configurat complet si corect, cum sunt serverele ce ofera gazduirea site-urilor, functia mailfunctioneaza corect.
<?php
// trimitere mesaj simplu
mail('adresa@exemple.com', 'Subiect mesaj', 'Mesaj simplu');
 
// trimiterea unui mesaj in care se specifica date aditionale
$to      = 'adresa@example.com';
$subject = 'Subiect mesaj';
$message = 'Mesaj simplu cu date aditionale';
$headers = 'From: punctsivirgula@example.com' . "\r\n" .
           'Reply-To: punctsivirgula@example.com' . "\r\n" .
           'X-Mailer: PHP/' . phpversion();
 
mail($to, $subject, $message, $headers);
?>

Functii matematice

Limbajul PHP dispune de majoritatea functiilor matematice uzuale. Cateva dintre ele sunt prezentate mai jos cu titlu exemplificativ. Lista completa poate fi gasita pe site-ul de documentatie PHP.
<?php
echo abs(-7);   // functia "valoare absoluta", afiseaza 7
echo sin(60);   // functia "sinus", afiseaza -0.304810621 ...
echo decbin(12);   // returneaza reprezentarea binara a numarului, afiseaza 1100
echo base_convert('7DB', 16, 10);   // returneaza convesia dintr-o baza in alta, afiseaza 2011
echo round(12.3); // returneaza o rotunjire la cel mai apropiat intreg, afiseaza 12
 
echo rand(); // afiseaza un numar aleator
echo rand(10, 70); // afiseaza un numar aleator din intervalul specificat
?>

Ce să mai citim?

Robotul ADN ar putea ucide celulele canceroase

SARS a fost o boală relativ rară; la sfârșitul epidemiei, în iunie 2003

Fii propriul tău nutriționist

Planet REBOOT

Votăm un Deputat BUN

Ttatăl fondator al Uniunii Europene. 

Colonizarea de pe Marte !


Functia set_time_limit()

Functia set_time_limit se foloseste pentru a configura timpul maxim cat scriptul curent are voie sa se execute. Este utila atunci cand codul PHP trebuie sa execute un volum mare de operatii care ar putea dura cateva zeci de secunde (spre exemplu la un upload de fisiere). Daca dupa expirarea timpului scriptul inca se afla in executie, serverul va intrerupe executia fi va returna o eroare.
<?php
set_time_limit(50); // seteaza limita la 50 secunde
 
set_time_limit(0); // dezactiveaza limita - scriptul poate rula la nesfarsit
?>

Functia flush()

Functia flush trimite catre browser tot ceea ce a fost afisat deja de script. In mod normal, rezultatul unui script PHP este trimis catre browser pentru afisare doar la finalul executiei intregului script. Aceasta functie ofera posibilitatea trimiterii catre browser a rezultatului pe parcurs ce acesta este printat in PHP. Asta inseamna ca pagina poate fi afisata partiala in timp ce inca se incarca.
<?php
echo 'Text 1<br />';
echo 'Text 2<br />';
flush();
?>

Terminarea executiei

Sunt situatii in care se doreste oprirea executiei unui script PHP. Acest lucru este posibil folosind una din cele doua functii de mai jos.
<?php
exit( "Script terminat" );
die( "Script terminat" );
 
print "Acesta linie nu se afiseaza niciodata";
?>
Nota: instructiunile die si exit sunt echivalente.


Functii de transformare base64

Functiile de codificare base64 sunt folosite pentru codificarea/decodificarea unui text in si din formatul Base64.
<?php
$text = 'Tutorial PHP in limba romana';
echo base64_encode($text); // afiseaza VHV0b3JpYWwgUEhQIGluIGxpbWJhIHJvbWFuYQ==
echo base64_decode('VHV0b3JpYWwgUEhQIGluIGxpbWJhIHJvbWFuYQ==');  // Tutorial PHP in limba romana
?>

Functia phpinfo()

Functia phpinfo ofera informatii despre instalarea PHP curenta si despre serverul pe care aceasta este executata. Rolul acestei functii este pur informativ; functia nu poate fi folosita intr-un script care are un alt scop bine definit. De aceea, este recomandata apelarea acestei functii intr-un script PHP separat, intrucat aceasta creaza o pagina HTML completa.
<?php
phpinfo();  // returneaza o pagina HTML cu informatii despre instalarea PHP 
?>
O alta functie, ce poate fi utila in scripturile voastre, este phpversion - aceasta returneaza doar versiunea curenta a interpretorului PHP. Un exemplu al folosirii acestei functii este mai sus la functia mail.
comentarii Un comentariu   Citeste-l   Adauga unul

Extensii ale limbajului PHP    1 ! 

Pe langa functiile de baza, limbajul PHP ofera posibilitatea extinderii capacitatilor sale prin folosirea extensiilor. Extensiile sunt librarii dezvoltate de regula de cei care au creat limbajul PHP si care ofera functionalitati aditionale, cum ar fi posibilitatea de a manipula anumite tipuri de fisiere (PDF, Excel, Word), posibilitatea de a crea imagini, de a comunica cu alte aplicatii, etc.
Extensiile cele mai uzuale sunt activate implicit la instalarea interpretorului PHP, dar cele mai multe trebuie activate manual prin modificarea configurarii PHP. Intrucat in acest tutorial nu vom folosi nici o functionalitate care sa necesite vreo extensie a PHP-ului, nu vom insista asupra acestora. E bine de stiut doar ca pentru operatiuni specializate si/sau avansate, sunt sanse mari sa existe o extensie care sa usureze lucrul.   Sursa http://php.punctsivirgula.ro

vineri, 13 iulie 2012

Lucrul cu PHP


Instalare PHP    

Cel mai simplu mod de a lucra cu PHP este sa fie instalat pe calculatorul personal. Este nevoie, asadar, ca propriul calculator sa devina un server web mai intai. Acest lucru este posibil instaland o aplicatie capabila sa accepte cerinte si sa transmita pagini web ca raspuns. O astfel de aplicatie este Apache HTTP Server.

Deservirea paginilor

Avand un server web pregatit, mai trebuie doar instalat modulul PHP. PHP actioneaza ca o componenta aditionala a serverului web care este invocata de ori cate ori o pagina PHP este intalnita. Aceasta componenta proceseaza pagina si apoi o transmite inapoi la web-server, ajungand in final in browserele utilizatorilor. Acest proces este prezentat in imaginea din dreapta de mai jos
                                                  deservirea paginilor statice 
Deservirea unei pagini statice, fara interventia interpretorului
PHP
deservirea paginilor dinamice
Deservirea unei pagini dinamice, modificata de PHP in momentul request-ului

Ce să mai citim?

Robotul ADN ar putea ucide celulele canceroase

SARS a fost o boală relativ rară; la sfârșitul epidemiei, în iunie 2003

Fii propriul tău nutriționist

Planet REBOOT

Votăm un Deputat BUN

Ttatăl fondator al Uniunii Europene. 

Colonizarea de pe Marte !


Static si dinamic

Din imaginile de mai sus, se observa ca atunci cand nu exista un interpretor PHP, paginile sunt transmise direct catre utilizatori asa cum sunt salvate pe disc, fara modificari. Pentru a actualiza continutul acestora, este nevoie de interventie directa asupra lor si salvarea modificarilor pe server. Aceste pagini sunt denumite"pagini statice".
Spre exemplu, presupunand ca avem o pagina statica ce afiseaza membrii unei comunitati, la fiecare inscriere a unei noi persoane, pagina ar trebui modificata manual de catre cineva cu acces la serverul web. Lucrurile se complica daca acea lista este personalizata, cu trimiteri catre alte informatii (cum ar fi detalii de contact pentru fiecare, etc) sau cu un design intortocheat. Toate aceste probleme pot fi rezolvate cu ajutorul PHP.
Folosind o secventa de cod PHP am putea prelua lista de membri dintr-o baza de date, eliminand problema actualizarii - nu va mai fi nevoie sa se modifice pagina odata cu fiecare membru nou, scriptul PHP va afisa in mod automat noile persoane adaugate in baza de date. Este rezolvata si problema linkurilor personalizate, sau a designului - toate elementele specifice unei persoane pot fi generate in mod automat.
Aceste pagini sunt, asadar, modificate de catre PHP la momentul accesarii lor de catre utilizatori. In functie de parametrii primiti si de secventa de cod definita de programator, aceasi pagina poate avea continut diferit. Aceasta proprietate este denumita dinamism, iar o astfel de pagina este considerata pagina dinamica.


Instalarea interpretorului PHP

Pentru ca fisierele ce contin cod PHP sa poata fi interpretate, devenind astfel dinamice, serverul web trebuie configurat pentru "comunicarea" cu modulul PHP.
Pentru inceput, cea mai simpla modalitate de a avea totul pregatit pentru a lucra cu PHP este un pachet "All in one". Voi descrie pe scurt pasii necesari instalarii programului EasyPHP, o aplicatie care include serverul web Apache, interpretorul PHP, sistemul de gestiune a bazelor de date MySQL si aplicatia de administrare a bazelor de date phpMyAdmin.

Nota: trebuie sa dezinstalati Apache, PHP sau MySQL de pe calculator (daca le aveti deja) inainte de a instala EasyPHP.
  1. Descarcati EasyPHP. Mergeti la http://www.easyphp.org/ -> Download EasyPHP ( sau direct lahttp://sourceforge.net/projects/quickeasyphp/files/EasyPHP/5.3.9/EasyPHP-5.3.9-setup.exe/download )
  2. Instalati EasyPHP (e bine sa se pastreze configurarile implicite).
  3. Porniti programul EasyPHP (de cele mai multe ori va porni automat)
    Nota: la avertizarile de la Windows XP/Vista trebuie sa se aleaga "Allow" sau "Unblock" altfel este posibil ca serverul web sa nu functioneze.
  4. In fereastra de EasyPHP apasati F8 (sau Click-Dreapta pe iconita EasyPHP de langa ceas - in Systray - si alegeti Explore). Se va deschide un folder, care reprezinta locatia de unde vor fi luate fisierele cand sunt afisate in browser (de obicei C:\Program Files\EasyPHP 5.3.0\www). Nota: in Windows Vista este nevoie sa deschideti manual acest folder (F8 nu pare sa functioneze). Aceasta locatie poarta numele de Document Root si aici trebuie puse toate fisierele .php pe care le scrieti.
  5. Salvati un fisier de test in locatia de mai sus. Dati-i un nume sugestiv, gen test.php. Editati fisierul astfel incat sa contina urmatoarea secventa:
    <?php print "Salut, ai reusit! Iata primul tau script PHP"; ?>
  6. Intr-un browser (Firefox, Internet Explorer, Opera, Safari, etc) mergeti la http://localhost/. Va fi afisata o pagina cu linkuri catre fisierele/folderelor din Document Root care pot fi accesate. Faceti click pe test.php. O alta modalitate de a accesa un fisier este sa mergeti direct la http://localhost/[cale]/[nume].php, de exemplu http://localhost/test.php.
  7. Accesand http://localhost/test.php ar trebui sa fie afisata o pagina alba cu mesajul de mai sus.

Retineti! Toate fisierele PHP pe care le scrieti (inclusiv cele de test preluate de pe acest site) *trebuie*salvate in folderul Document Root (locatia implicita este C:\Program Files\EasyPHP 5.3.0\www). Webserver-ul local instalat de EasyPHP va cauta fisierele doar in aceasta locatie. Daca fisierele sunt salvate in alta parte ele nu vor mai putea fi accesate in browser.

De ce imi trebuie un server web ?    32 ! 

Instaland EasyPHP, calculatorul personal devine un server web (local, ce-i drept - accesibil doar de catre tine). Practic PC-ul se comporta ca un site ce are adresa http://localhost/ (sau http://127.0.0.1/). Este foarte important ca fisierele PHP sa fie accesate prin intermediul serverului web, deoarece acesta recunoaste scripturile PHP si invoca automat interpretorul PHP. Fara aceasta intermediere oferita de web-server, scripturile PHP nu ar fi procesate ci trimise asa cum sunt la browser.
De exemplu, avem un fisier care contine doar urmatorul cod: (atentie la semnul ! in afara tagurilor)
<?php print "Salut"; ?> !
Sa presupunem ca fisierul se numeste salut.php.
  -   Daca il accesam in browser folosind adresa "http://localhost/salut.php" (prin intermediul serverului web local) atunci interpretorul PHP este invocat, scriptul este executat iar rezultatul procesarii afisat de browser va fi "Salut!".
  -   Daca accesam fisierul direct de pe disc, scriind in browser calea lui "file:///C:/Program Files/EasyPHP 5.3.0/www/salut.php" se va afisa (in cel mai fericit caz) doar "!". Asta pentru ca interpretorul PHP nu este invocat, iar fisierul este transmis ca atare, cu tagurile de PHP (care sunt ignorate de browser).  http://www.php.net/

Taguri PHP

Taguri , instructiuni, punct si virgula 

Codul PHP trebuie inclus in fisiere cu extensia .php ce vor fi deservite utilizatorilor finali si trebuie delimitat de restul continutului prin tagul de inceput <?php si tagul de sfarsit ?>. Practic tot ce se afla in interiorul acestor etichete va fi interpretat ca fiind cod-sursa PHP (cod ce va fi executat de interpretorul PHP). Textul din afara celor 2 taguri este lasat neschimbat, fiind ulterior interpretat de browser. Se pot folosi si alte etichete in functie de configuratia serverului web, dar acestea nu sunt recomandate
<?php
/* forma recomandata */
?>
 
<script language="php">
/* forma disponibila oricand, putin folosita */
</script>
 
<?
/* taguri scurte, acceptarea lor de catre web-server depinde de configurare */
?>
 
<%
/* taguri in stilul asp, acceptarea lor de catre web-server depinde de configurare */
%>
Codul PHP este format din instructiuni - comenzi date catre interpretor, in urma carora se executa ceva. Asa cum s-a mai spus, PHP este folosit in principal pentru a genera cod HTML, asa ca de cele mai multe ori instructiunile folosite sunt cele de afisare. In aplicatii mai complexe se pot insa folosi si instructiuni de conectare la bazele de date, de citire/scriere/manipulare fisiere, intructiuni de trimitere email-uri si altele. Instructiunile se pot grupa in blocuri delimitate de acolade { }. Aceste blocuri, numite si "instructiuni complexe" se comporta ca si cum ar fi o singura instructiune (vezi mai jos exemple de blocuri).
Toate instructiunile (in afara de blocuri) trebuie sa fie terminate cu punct si virgula ( ; ). Lipsa acestuia genereaza o eroare.

Afisarea textului in PHP    ! 

In multe din scripturile scrise de incepatori (si nu numai) continutul rezultat in urma executiei este un text (de obicei in format HTML). Pentru a obtine acest text, secventele de cod trebuie sa contina instructiuni explicite care sa "spuna" intrepretorului ce anume trebuie afisat.
Instructiunile de afisare sunt printecho si printf. Primele doua sunt echivalente si fac acelasi lucru (exista unele diferente de forma, vezi exemplul de mai jos, dar poate fi folosita oricare dintre ele); printf este folosita mai rar datorita sintaxei oarecum greoaie.
<?php
# cele 2 instructiuni de mai jos sunt echivalente
print "Text";
echo "Text";
 
# o singura instructiune echo poate primi mai multi parametri, separati prin virgula
echo "<br />", "Afisez", " un text din ", 4, " bucati";
 
# o singura intstructiune print poate primi doar unul
print "<br />";
print "Afisez";
print " un text din ";
print 4;
print  " bucati";
 
# printf este folosita pentru a formata continutul, la fel ca in C/C++
printf( "<br />Am %4.2f lei", 102.123456 ); // afiseaza Am 102.12 lei
?>
Ce afiseaza PHP?     
Rezultatul unui script PHP este de cele mai multe ori un text simplu in format HTML. Cu alte cuvinte, in majoritatea cazurilor PHP returneaza o pagina HTML ce va fi afisata in browser. La inceput, acest lucru poate genera confuzii, intrucat sursa HTML este diferita de ceea ce se afiseaza efectiv in browser.
Spre exemplu, fie urmatoarea secventa de cod:

<?php
print "Salut";
print "Acesta este un script simplu";
?>
Probabil v-ati astepta ca rezultatul sa fie un text afisat pe 2 linii. Salvand aceasta secventa intr-un fisier PHP si accesandu-l prin intermediul unui web-server, veti observa ca rezultatul este urmatorul:
SalutAcesta este un script simplu
Desi este confuz, rezultatul este corect. Codul PHP afiseaza doar caracterele care i-au fost indicate. Sfarsitul de linie reprezinta un caracter separat, ne-printabil, dar care controleaza cum apare textul pe ecran. In cazul nostru, nu s-a transmis acest caracter (numit si new-line) si prin urmare PHP nu l-a afisat.
Sa rescriem exemplul de mai sus pentru a se afisa si caracterul "sfarsit de linie"

<?php
print "Salut";
 
print "\n"; # se afiseaza caracterul "new-line" care determina trecerea la un rand nou
# randul nou va fi afisat in textul trimis catre browser
 
print "Acesta este un script simplu";
?>
Verificand iar in browser veti constata ca nu s-a schimbat nimic. La prima vedere. In realitate rezultatul este afisat pe 2 linii, in textul trimis de PHP catre browser. Intrucat pagina este interpretata ca fiind HTML, browserul ignora caracterele new-line. Pentru verificare vizualizati sursa paginii (meniul View din browser -> view source).
Pentru a ajunge la efectele dorite (acelea de a afisa un text pe 2 linii) trebuie folosit urmatoarea secventa:
<?php
print "Salut";
print "\n"; # acum se afiseaza caracterul care determina trecerea la un rand nou
# randul nou va fi afisat in textul primit de browser (vizibil in sursa HTML)
 
print "<br>"; # se afiseaza tagul BR ce va fi interpretat de browser ca 'linie noua'
# linia noua va fi afisata in pagina finala HTML dupa ce este interpretata de 
# browser si nu are nici o legatura cu \n
 
print "Acesta este un script simplu";
?>
Sursa paginii arata in felul urmator:
Salut
<br>Acesta este un script simplu
In browser nu apare tagul BR, intrucat acesta este interpretat ca sfarsit de linie. Caracterul "new-line" afisat de noi (in print "\n") este ignorat oricum. Rezutatul, asa cum se vede in fereastra browser-ului:
Salut
Acesta este un script simplu

Nota: Este foarte important sa se inteleaga diferenta dintre ceea ce se returneaza in urma executiei unui script PHP si ceea ce se afiseaza propriu-zis in browser. Pe scurt, PHP printeaza cod HTML care este afisat diferit de browsere.
De asemenea, trebuie inteles faptul ca functia print nu afiseaza textul pe mai multe linii daca nu se specifica acest lucru in mod express. Spre exemplu fie urmatoare secventa de cod:

<?php
print "1";
print "2";
print "3";
?>
Rezultatul va fi
123
S-a afisat doar ce s-a indicat, 3 caractere, pe o singura linie, fara spatii.
Un alt lucru important de retinut este faptul ca odata printat, un text nu mai poate fi "sters". Nu exista "undo" pentru un print. Se poate captura intregul continut ce se transmite la finalul executiei, dar nu se poate altera textul afisat de o instructiune print anume.
Intelegand aceste aspecte va va fi mai usor in lucrul cu PHP si in modul in care verificati rezultatele scripturilor voastre.
comentarii

Siruri de caractere     

In majoritatea scripturilor PHP se lucreaza cu bucati de text denumite siruri de caractere sau string-uri. Sirurile de caractere reprezinta expresii (entitati ce au/returneaza o valoare) si pot fi folosite, la afisare, in atribuiri, la verificari, etc.
In limbajul PHP, sirurile de caractere pot fi delimitate de ghilimele duble, ghilimele simple sau printr-o notatie speciala folosind operatorul <<< (numit heredoc).

<?php
print "Salut, straine! "; // sir simplu, delimitat de ghilimele duble
print 'Salut din nou! '; // sir simplu, delimitat de apostrof
 
// sir delimitat prin notatia speciala heredoc
print <<<SIR
Salut iar!
SIR;
?>
Nota: in acest exemplu nu este nici o diferenta intre modul de definire a sirurilor - toate cele 3 stringuri afisate sunt echivalente, indiferent ca au fost delimitate prin ghilimele, apostrof sau operatorul heredoc. Cu toate astea, PHP trateaza in mod diferit aceste moduri de delimitare. Mai multe explicatii si exemple sunt prezentate in pagina Operatii cu siruri.
Comentarii in PHP ! 
Comentariile sunt portiuni de cod care nu se executa. Sunt folosite de programatori de regula pentru a da diverse explicatii despre logica aplicatiei, variabile si altele. Comentariile nu afecteaza executia unui script si pot fi sterse din cod fara nici un efect.
<?php
// acesta este un comentariu. intreaga linie nu va fi luata in considerare (doar o linie)
// print "hello";
// linia de mai sus nu se executa
 
# la fel ca mai sus 
# print "hello";
# nu se executa
 
/* comentariu cu delimitator de inceput si sfarsit 
   se poate intinde pe oricate linii; se termina la 
   intalnirea marcajului de sfarit */
 
print /* partea asta e ignorata */ "Salut!";
 
/* afiseaza
Salut!
*/
?>
Nota: comentariile /* */ nu pot fi imbricate (inserate unele in altele). Exemplul urmator nu este un cod valid.
<?php
// exemplu gresit de comentariu PHP
/* comentariu /* altul */ inapoi la primul */
?>
Este un lucru foarte util sa folositi comentarii in cod pentru a explica modul de rezolvare a problemei abordate, sau pentru a da detalii despre operatiile efectuate. Acestea va vor ajuta mai tarziu daca veti vrea sa modificati codul scris, sau vor oferi altor persoane informatii (valoroase) despre cum ati gandit codul respectiv.
http://php.punctsivirgula.ro/