PHP si programarea server-side
Pe scurt, ce este PHP? Ca idee generala, PHP reprezinta un limbaj ce permite modificarea paginilor web inainte ca acestea sa fie transmise de server catre browserele utilizatorilor. PHP poate insera text intr-ul fisier HTML deja definit, poate defini un fisier HTML de la zero, poate sa afiseze o imagine sau sa redirectioneze utilizatorul catre alta pagina. In cadrul acestui proces, PHP poate consulta baze de date, fisiere externe sau orice alta resursa, poate trimite email-uri sau executa comenzi ale sistemului de operare.
Modul in care PHP modifica/defineste o pagina ce va fi afisata de browser este prin instructiunile scrise de programator si delimitate de etichetele <?php ?>. Astfel, orice se afla intre aceste tag-uri va fi executat de interpretorul PHP si inlocuit cu rezultatul executiei. Ce este in afara lor ramane neschimbat si este transmis catre browser. Spre exemplu, avem o pagina ca mai jos.
<html> <body> Azi e <?php print date( 'd.m.Y' ); ?> </body> </html>Rezultatul va fi o pagina HTML ce va contine cuvintele "Azi e" si rezultatul codului PHP (in cazul acesta - data curenta). Codul HTML final, transmis de server in urma procesarii PHP este urmatorul:
<html> <body> Azi e 29.07.2010 </body> </html>
Codul PHP nu trebuie sa fie neaparat intercalat in pagina HTML. Secventa de mai jos produce o pagina similara celei de mai sus (in acest caz PHP produce o pagina HTML de la zero).
<?php print '<html><body>'; print 'Azi e' . date( 'd.m.Y' ); print '</body></html>'; ?>
Nota: interpretorul PHP nu este instalat implicit pe orice calculator. Pentru ca toate exemplele de pe site sa functioneze, trebuie sa instalati (manual) un interpretor. Vedeti sectiunea "Inainte de a incepe" pentru detalii.
Ce afiseaza PHP?
Rezultatul unui script PHP este de obicei text simplu care, de cele mai multe ori, este interpretat ca fiind cod HTML. Cu alte cuvinte, in majoritatea cazurilor PHP returneaza o pagina 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 simpluDesi 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 simpluIn 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:
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.
salut la acest script am sesizat o eroare :
<?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";
?>
ar trebui sa fie asa print "<br>"; # se afiseaza tagul BR ce va fi interpretat de browser ca 'linie noua'
deci lipseste ; dupa print "<br>"
nu sunt mare scula dar am postat pt cei care or sa intampine probleme.bafta la invatzat
Ovidiu are perfecta dreptate, lipsete simbolul "punct si virgula", altfel apare eroare.
Aveti dreptate, lipsea un punct-si-virgula. Am corectat exemplul.
Adauga un comentariu la aceasta sectiune.
si nika nu inteleg.
in primul caz <html><body><?php..., nu merge
in al doilea caz <?php print..., merge
ce nu este in regula?
Alex, mie imi merge bine in ambele situatii. Verifica daca ai copiat corect codul.
Este posibil sa iti dea eroare si sa nu fie afisata. Din cate stiu eu, EasyPHP este configurat sa ascunda erorile de PHP. Poti da click-dreapta pe iconita de EasyPHP de langa ceas si sa alegi Configuration -> PHP. O sa ti se deschida un Notepad si pe undeva pe la linia 520 ar trebui sa ai o linie de forma
error_reporting = [ceva]
Acel ceva trebuie sa fie E_ALL (daca nu e pune-l tu), astfel incat sa ai error_reporting = E_ALL
Atentie, NU trebuie sa fie punct si virgula (;) la inceputul randului, pentru ca asta inseamna ca linia este un comentariu si va fi ignorata.
Putin mai jos mai este inca o linie la care trebuie sa te uiti:
display_errors = On
La fel, nu trebuie sa fie comentata linia printr-un ; iar valoarea trebuie sa fie "On".
Daca ti-a mers pana la urma nu cred ca are rost sa te bagi prin configurare la momentul asta. Daca insa esti curios poti citi comentariile din acel fisier (php.ini) - are explicatii pentru fiecare directiva de acolo.
Adauga un comentariu la aceasta sectiune.