Documente Academic
Documente Profesional
Documente Cultură
Cuprins
Partea 1-a: Introducere Partea 2-a: Afiarea informaiilor i Variabilele Partea 3-a: Instruciunile IF Partea 4-a: Cicluri i Vectori Partea 5-a: E-mail cu PHP Partea 6-a: PHP cu Formulare Partea 7-a: Observaii finale
Partea 1-a
Introducere
Pn nu demult, n Internet erau puini cei care realizau i foloseau fiierele de comenzi scripturile. Recent, ns, tot mai mult lume i construiete propriile pagini Web, sau chiar propriile centre Web, iar limbajele de comenzi, pentru realizarea de script-uri, devin tot mai importante. n acelai timp, aceste limbaje devin tot mai uor de nvat, iar PHP este unul din ele, poate cel mai simplu i cel mai puternic (deocamdat).
Ce este PHP?
PHP vine de la "Hypertext Preprocessor" i este un limbaj de comenzi-script pentru server (se spune c acioneaz pe partea serverului - server-side language). Adic fiierele cu comenzi PHP ruleaz pe serverul Web, nu n navigator, pe staia client. Cu alte cuvinte, nu trebuie s ne batem capul cu compatibilitatea soft a calculatorului personal de pe care navigm. PHP este un limbaj relativ nou (comparativ cu alte limbaje precum Perl (CGI) i Java), dar devine rapid unul dintre cele mai rspndite i mai populare din Internet.
De ce PHP?
De ce ar trebui preferat PHP altor limbaje, precum Perl? i de ce ar trebui s nv'm de fapt un limbaj pentru scripturi? nvarea sau mcar nelegerea unui limbaj care s ne permit scrierea de scripturi Web, poate schimba complet viziunea lrgind grozav posibilitile de publicare i activitate pe Web. Chiar dac putem descrca scripturi gata fcute, din centre precum Hotscripts, acestea, de regul, includ reclama pentru autorul respectiv i nu ne vor oferi exact ce dorim. nelegnd limbajul vom edita mai uor aceste scripturi, pentru ca s fac ceeace dorim, sau chiar putem crea scripturi noi, proprii.
Folosirea scripturilor n propriul centru Web ne permite s adugm multe elemente de noutate i interactivitate, precum formularele de feedback, crile de oaspei, sistemele colaborative numite message boards, contoare ale vizitelor i multe alte elemente mai avansate precum sistemele portal, cele de management al coninutului, gestionarii de reclame (advertising managers), etc. Astfel de elemente sunt necesare pentru a obine o imagine de profesionist. Mai mult, oricine vrea acum s lucreze n industria de proiectare i dezvoltare se centre Web va descoperi c este mult mai simplu s gseasc un loc de munc atunci cnd tie PHP i programarea Web.
Ce ne trebuie?
Aa cum am menionat nainte, PHP este un limbaj pentru scripturi pe partea de server (server-side). Asta nsemn c, utilizatorii nu trebuie s-i instaleze nimic n plus, ca soft, dar pe platforma unde ruleaz serverul Web (gazda Web) trebuie s avem instalat PHP. Acesta poate fi deja inclus (ncorporat) n serverul Web, dar dac nu tim: este sau nu instalat, putem s ne lmurim, ptnd rspunsul cu ajutorul primului script din acest curs. Dac serverul nu suport PHP atunci va trebui s apelai la administratorul su pentru a-l instala, PHP-ul fiind un produs public - putnd fi descrcat gratuit i simplu de la www.php.net. Alt cale este s v gsii o alt gazd Web care suport PHP. Sau s v instalai propriul server Web mpreun cu PHP.
Scrierea n PHP
Pentru a scrie un fiier n PHP pe calculatorul propriu nu v trebuie nimic alceva dect un simplu editor de texte (precum Notepad din Windows). Lansai-l i pregtii-v s scriei primul script PHP.
Declaraia PHP
Scripturile PHP sunt ntotdeauna incluse ntre dou taguri PHP, conform aceleai scheme ca i n HTML. Astea spun serverului s preia information dintre ele i s o interpreteze ca expresie din PHP. Exist trei forme diferite de marcare a expresiilor - comenzilor PHP, i anume: <? comenzi PHP ?> <?php comenzi PHP php?> <script language="php"> comenzi PHP </script>
Toate trei acioneaz - se comport exact la fel. In cele ce urmeaz vom folosi doar prima variant, pentru simplitate (<? i ?>). Dar pot fi folosite, la fel de bine oricare din cele trei. Atenie, combinarea lor nu este ns permis, nu putem folosi pentru deschidere <? iar pentru nchidere </script> , spre exemplu.
Primul script
Primul script PHP este desigur unul banal i totui esenial. Tot ce va face este s furnizeze informaiile despre instalarea i starea PHP-ului pe server. Scriei cu editorul de texte urmtoarele: <? phpinfo(); ?> Aa cum se vede este o singur linie de cod PHP. Este o funcie standard din PHP, numit phpinfo, care va cere serverului s scrie i s transmit un tebel standard cu informaiile de configurare a serverului. O observaie important din acest exemplu: linia de cod PHP se termin cu punct i virgul (;). Asta-i foarte important ca sintax. La fel ca n multe alte limbaje de comenzi sau de programare, liniile trebuie s se termine cu un marcaj anume,adesea tot (;), iar dac acest terminator este omis rezult o eroare.
Partea 2-a
Aici o s vedem cum scriem i cum rulm scripturi n PHP. Deocamdat tim dac serverul suport (sau nu) PHP-ul i am neles, n mare, cum apare un script PHP, cum este structurat. n partea 2-a vom vedea cum afim informaiile n navigator
Variabile n PHP
Ca i n alte limbaje de programare, n PHP putem defini variabile. Exist cteva tipuri de variabile n PHP, dar cea mai uzual este variabila ir de caractere, numit String. Poate fi folosit pentru texte sau numere. Toate irurile de caractere, toate variabilele string ncep cu semnul $ . Pentru a atribui un text unei variabile string trebuie s folosim o succesiune de forma: $text_salut = "Bun venit pe site-ul meu Web!"; Este o linie simplu de neles, tot ce se afl ntre ghilimele va fi atribuit variabilei string din membrul stng. Desigur, trebuie s ne reamintim cteva reguli privind lucrul cu iruri de caractere. Distinia dintre majuscule i minuscule. Astfel $Welcome_Text difer de $welcome_text Numele de iruri pot conine litere, cifre i semne de subliniere (_), dar nu pot ncepe cu o
cifr sau cu semnul _ Cnd atribuim un numr la un string nu mai e nevoie s punem ghilimelele. Adic este acceptat construcia: $user_id = 987
Variabile de scoatere
Pentru a afia o variabil pe ecran folosim exact aceiai comand ca i pentru a afia un text, cu o mic diferen formal. Astfel, pentru a afia stringul atribuit variabilei $text_salut scriem: <? $text_salut = "Bun venit pe site-ul meu Web!"; print($text_salut); ?> Aa cum se poate vedea, singura diferen ar fi c scriem n comanda print numele variabilei, fr ghilimele, n locul textului cu ghilimele.
<font face=\"Arial\" color=\"#FF0000\"> </font> Iar asta poate fi deja inclus n instruciunea print: print("<font face=\"Arial\" color\"#FF0000\">Bun venit pe site-ul meu Web!</font>"); care va face ca pe navigator s apar: Bun venit pe site-ul meu Web! deoarece scriptul a transmis doar codul: <font face="Arial" color="#FF0000">Bun venit pe site-ul meu Web!</font> Pare destul de complicat aceast scoatere de cod HTML, dar vom vedea c exist i o cale ceva mai simpl.
Partea 3-a
n partea 3-a vom introduce i discuta instruciunea condiional If.
Instruciunile IF
Introducere
n cele dou lecii anterioare am vzut cum scriem un text n PHP i cum l atribuim unei variabile. Acum vom vedea cum folosim condiiile, instruciunea IF, pentru a lua decizii n cadrul scriptului.
Definiia instruciunii IF
Instruciunea condiional IF este folosit pentru a compare dou valori i a realiza aciuni diferite n baza rezultatelor testului. Instruciunea urmeaz sintaxa (are forma) IF THEN - ELSE. Partea IF testeaz o condiie. Dac aceasta este adevrat, atunci este urmat ramura THEN. n caz contrar se merge pe ramura ELSE.
Structura instruciunii IF
n general avem urmtoarea structur: IF ('ceva' == 'altceva') {
Variabilele
Uzual, comparm o variabil cu o anumit poriune de text, cu un numr, sau cu alt variabil. Spre exemplu: if ($username == "webmaster") adic comparm valoarea pe care o ia variabila cu irul precizat de caractere. Ramura THEN a instruciunii fiind executat doar dac variabila are exact valoarea care apare ntre ghilimele, adic dac coincide cu cuvntul 'webmaster'. Dac are ns valoarea 'Webmaster' sau 'WEBMASTER' va fi urmat ramura ELSE.
Alte comparaii
Exist i alte moduri de a folosi instruciunea IF pentru a compara valori. Comparnd dou variabile diferite ca s vedem dac valorile lor se potrivesc sau nu, spre exemplu:
if ($parola_introdusa == $password) Dar compararea se poate face folosind oricare din simbolurile standard de comparaie, pentru a verifica dac o valoare este mai mic sau egal dect alta: if ($varsta < "13") Sau: if ($date > $finished) Mai mult, putem avea teste multiple ntr-o singur instruciune IF. Spre exemplu, dac avem un formular i vrem s verificm dac vre un cmp a fost lsat necompletat: if ($name == "" || $email == "" || $password == "") { echo "Please fill in all the fields";
Partea 4-a
n lecia urmtoare vom vedea alte cteva moduri de folosire a scriptului PHP pentru alte tipuri de teste i salturi.
Cicluri i Vectori
Introducere
n ultimele lecii ale acestui curs am vzut cum manevrm texte i variabile &ncirc;n PHP i cum putem folosi instruciunea IF pentru a le compara ca s lum decizii. Acum vom vedea cum folosim alt parte important a PHP, salturile.
Ciclul WHILE
Ciclul WHILE este una din comenzile cele mai utile din PHP. Fr a fi prea compl;icat. Un ciclu WHILE va executa, aa cum sugereaz i numele, o anumit parte de cod (un set de instruciuni), atta timp ct este ndeplinit o anumit condiie.
while ($x < $times) { echo "Hello World"; ++$x; } Cum interpretm acest script? Primele dou linii sunt doar atribuiri ale variabilelor. Variabila $times capt valoarea din condiia ciclului, n acest caz - 5 . Variabila $x este contorul care va numra de cte ori se execut secvena. Dup aceste atribuiri, urmeaz linia WHILE. Acesta comand repetarea secvenei dintre acolade, ct vreme $x este mai mic dect $times (alfel spus, repetarea pn c,nd $x devine egal cu $times). Secvena care se execut repetat apare n urmtoarele 2 linii (ntre acolade). Dup linia echo care afieaz textul, apare o alt linie foarte important: ++$x; Din programare tim c asta nseamn incrementarea variabilei $x, adic acelai lucru cu: $x = $x + 1; Astfel, la fiecare repetare, variabila $x ia pe rnd valorile 1, 2, 3, 4, 5. La ultima, condiia din linia WHILE nu mai este ndeplinit i ciclul ia sfrit.
Folosirea lui $x
Variabila de contorizare ca ciclului (n cazul de mai sus $x ) poate fi folosit nu numai pentru numrare. Spre exemplu, dac vrem s creem o pagin web cu toate numerele de la 1 la 1000 n ea, putem fie s scriem fiecare numr n parte, fie s folosim urmtoarea secven: $number = 1000; $current = 0; while ($current < $number) { ++$current; echo "$current<br>"; } Ce ar fi de spus despre acest script? Mai nti c am plasat, spre deosebire de cazul dinainte, comanda de incrementare ++$current; naintea instruciunii echo . Asta pentru c dorim s ncepem cu scrierea lui 1 , nu a lui 0. De fapt, linia ++$current; poate fi plasat oriunde n ciclul WHILE. Dup cum se pot efectua orice operaii aritmetice asupra numrului n cauz.
Vectori i matrici
Vectorii sunt structuri obinuite n majoritatea limbajelor de programare. Sunt variabile speciale care pot lua mai mult dect o singur valoare, toate stocate n spaiul propriu numerotat - n vector. Vectorii sunt extrem de utili mai ales la ciclurile WHILE.
while ($x < $number) { $namenumber = $x + 1; echo "Numele $namenumber este $names[$x]<br>"; ++$x } Aa cum se poate vedea, folosim variabila $x din acest ciclu pentru a afia numele nregistrate ntr-un vector. Iar pentru afiare am folosit variabila $namenumber care este cu o unitate mai mare dect $x. Asta deoarece numerotarea (indixarea) vectorului pornete de la 0.
Partea 5-a
In lecia urmtoare vom vedea cum trimitem un mesaj e-mail din PHP.
E-mail cu PHP
Introducere
Este extrem de simplu de trimis un mesaj e-mail din PHP, spre deosebire de situaia din alte limbaje de comand care necesit o iniializare aparte, tip CGI. De fapt, n PHP avem doar o singur comand mail() pentru a trimite un mesaj. Utilizat n formatul urmtor: mail($destinatar,$subiect,$corpul_mesajului,$antet); In acest exemplu variabilele indic prin numele lor sintaxa comenzii. De fapt se pot include chiar textele n comand. S le lum pe rnd: Mai nti variabila $destinatar. Aceasta conine adresa e-mail la care s fie transmis mesajul. Variabila $subiect trebuie s conin textul care dorim s apar n linia Subject: a mesajului. Iar variabila $corpul_mesajului conine textul mesajului - coninutul su. Prin variablia $antet se transmit componentele suplimentare din antetul mesajului. Cel mai des e vorba despre cmpul From: , dar poate fi inclus oricare linie din antet, precum Cc:, sau Bcc: .
$antet = "From: webmaster@uvvg.ro\n"; mail($destinatar,$subiect,$corpul_mesajului,$antet); echo "Mesaj trimis la $destinatar"; Acest cod va face dou lucruri. Va trimite un mesaj la adresa jalobean@relis.uvvg.ro , cu subject: 'despre PHP' i cu textul: PHP este unul dintre cele mai bune limbaje de comenzi pentru alctuirea scripturilor iar mesajul e-mail va apare ca venind de la webmaster@uvvg.ro . Dar va mai fi transmis i textul: Mesaj trimis la jalobean@relis.uvvg.ro ctre navigator.
Erori
Aa cum orice programator tie foarte bine, este foarte uor s faci greeli ntr-un script, dup cum e foarte simplu s intervin greeli n scrierea adreselor e-mail (n mod special dac folosim scriptul pentru a construi mesajele). Din cauza asta, este util s adugm scriptului o secven de verificare, de forma:
if(mail($to,$subject,$body,$headers)) { echo "Mesajul e-mail a fost trimis la $to cu subiectul: $subject"; } else { echo "A intervenit o eroare la trimiterea mesajului. Verificai scriptul i asigurai-v c adresa e-mail $to este corect"; } Acest script pare suficient de limpede. Dac mesajul este expediat fr probleme, acest fapt va fi comunicat - va apare n fereastra navigatorului. Similar, n cazul unei erori, vom recepiona atenionarea cuvenit, cu sugestii de remediere.
Partea 6-a
In partea 6-a vom continua discuia trimiterii mesajelor din PHP, artnd cum se realizeaz un script PHP pentru construcia unui formular e-mail.
PHP cu Formulare
Introducere
In lecia anterioar am vzut cum folosim PHP-ul pentru a trimite mesaje e-mail dintr-un script. In lecia aceasta vom contiua aceast discuie i vom vedea cum folosim formularele cu PHP, pentru a face scripturile PHP ct mai utile.
Construcia formularului
Scrierea unui formular pentru a fi folosit cu un script PHP se face exact la fel ca i n mod normal, n HTML. Cum acesta este un curs de PHP nu vom intra n detalii privind scrierea formularului, ci vom discuta trei dintre compunentele pe care trebuie s le tii: <input type="text" name="caseta" value="Numele d-voastra"> va afia o caseta pentru introducerea unui text, caset n care apar scrise (la nceput) cuvintele Numele d-voastra. De fapt atributul value n aceast linie este opional. Informaia - textul atribuit atributului name va constitui numele acestei casete text, trebuind s fie unic n formular. <textarea name="mesaj"> Scriei aici mesajul d-voastr. </textarea> va afia o caset mare de text cuprinznd ndemnul 'Scriei aici mesajul d-voastr.'. Si de data aceasta, numele casetei este definit (mesaj) i trebuie s fie unic.
<input type="submit" value="Trimite"> aceast linie va crea un buton de trimitere n formularul respectiv. Desigur putei schimba/alege textul care apare pe buton modificnd expresia atribuit lui value. Toate elementele formularului trebuie s fie cuprinse ntre tagurile <form> . Adic se folosesc cam aa: <form action="prelucrare.php" method="post"> Elementele Formularului i comenzile de formatare, etc. </form> unde valoarea atribuit lui form action spune care este script-ul cruia i se transmit datele (n acest caz fiierul prelucrare.php). Aici putem avea chiar un URL complet (spre exemplu http://relis.uvvg.ro/~jalobean/Cursuri/PHP-proc/prelucrare.php). Metoda method spune formularului cum s transmit datele sale. Cu opiunea POST datele vor fi trimise scriptului ntr-un pachet (stream) atunci cnd acesta le cere. O alt opiune este GET, caz n care datele din formular sunt trimise n forma unui url astfel c vor apare dup un semn ? , precum n exemplul: http://relis.uvvg.ro/~jalobean/Cursuri/PHPproc/prelucrare.php?name=Mihai Nu prea conteaz care metod o folosii, dar este mai bine s folosii POST dac-i vorba de informaii delicate (parole, etc.) pentru ca acestea s nu poat fi vzute n bara de adrese a navigatorului.
Ba este posibil i s transmitem script-ului mai mult dect o singur valoare a unui atribut folosind schema de mai sus i separnd elementele prin simbolul & : pagina.php?user=david&referrer=gowansnet&area=6 Aceste elemente vor putea fi accesate separat folosind variabilele GET: user, referrer i area. Pentru a prelua o variabil care a fost trimis script-ului cu metoda POST trebuie s folosim un apel de forma: $nume_variabila=$_POST['variabila']; care preia, n fond, variabila de la POST (numele unui cmp din formular) i o atribuie variabilei $nume_variabila. Similar, la folosirea metodei GET vom scrie: $nume_variabila=$_GET['variabila']; Iar asta se poate face i trebuie fcut pentru fiecare variabil pe care vrem s o folosim din formular (sau din URL).
$mesaj="$numele tocmai a transmis comentariile sale. Acolo spune:\n$comentariu\n\nAdresa sa e-mail a fost: $adresa"; if(mail($catre,"Comentarii din propriul Site",$mesaj,"From: $email\n")) { echo "Multumiri pentru comentariile d-voastra."; } else { echo "Exista o problema la transmiterea mesajului. Verificati, va rog, modul in care ati completat formularul."; } ?> Nu uitai s nlocuii adresa mea e-mail jalobean@relis.uvvg.ro cu propria voastr adres e-mail. Acest script trebuie salvat ca fiier cu numele mail.php , iar ambele fiiere (acesta i pagina Web n care a fost inclus formularul de mai sus) trebuie ncrcate pe serverul Web n zona destinat documentelor accesibile (acolo de unde vor fi apelate). Tot ce a mai rmas atunci de fcut, este s verificm completnd formularul.
Partea 7-a
Aa cum se poate vedea, folosirea formularelor din PHP poate fi extrem de comod i eficient. In lecia urmtoare vom vedea nc cteva lucruri care pot fi realizate i pe care trebuie s le tii despre PHP.
Observaii finale
Introducere
In leciile precedente am vzut elementele de baz privind PHP i scrierea unui script n PHP. Acum vom mai vedea cteva amnunte, oarecum disparate.
Comentariile
Ca la orice limbaj de programare, este important s introducem n script-ul pe care-l facem i comentarii. Dac lucrm la un script mpreun cu altcineva, atunci trebuie s-l ajutm s neleag ce am vrut, cum am abordat problema, ce reprezint variabilele introduse... Dac punem scriptul la dispoziia studenilor sau a comunitii celor preocupai de PHP sau de aplicaia realizat, cu att mai mult este nevoie de comentarii n script. Chiar i dac nu avem planuri att de mari, comentariile ne vor fi de folos peste un timp, atunci cnd vom dori s ne amintim cum am fcut ca s-l putem modifica adaptndu-l altor cerine. In PHP exist dou moduri de a introduce comentarii. Unul folosit pentru o singur linie de comentariu, altul folosit, mai ales, pentru comentarii mai largi, care privesc mai multe linii. Comentariul dintr-o linie se scrie n forma:
// comentariul se poate scrie aici Tot ce apare n linie dup marcajul // va fi ingnorat la execuia scriptului. Marcajul i comentariul aferent poate apare oriunde pe linie (la nceput, sau dup o serie de comenzi, spre exemplu: print "Hello $name"; // Salutam vizitatorul Modul de comentariu pe mai multe linii este: /* The following piece of code will take the input the user gave and will check that it is valid before adding it to the database */ Textul este plasat deci ntre marcajele /* i */ . Tot ce se afl ntre acestea va fi ignorat la execuie. Este foarte important s nu uitm s nchidem comentariul, cu */ , altfel scriptul nu va rula deloc.
<? IF Statement { ?> HTML For IF Being Correct <? } else { ?> HTML For IF Being Wrong <? } ?> Trebuie, desigur, s nu uitm s nchidem buclele din instruciunea IF (o eroare destul de frecvent ntlnit).
Concluzii
Acest curs a explicat cteva din elementele de baz ale PHP i ar trebui s v ajute s lucrai cu PHP. Pentru mai multe detalii vizitai PHP.net, pagina oficial a PHP. Ceea ce lipsete din acest curs, cum poate ai observat, este exact folosirea PHP cu o baz de date.
Asta fiind ns una din principalele raiuni pentru care lumea folosete PHP i prezentnd deci un interes aparte, subiectul a fost lsat pentru un curs separat de PHP/MySQL.