Sunteți pe pagina 1din 74

Universitatea Constantin Brncui din Trgu-Jiu

TEHNOLOGII WEB
Lect.dr. Adrian Runceanu

copyright@www.adrian.runceanu.ro

Curs 10
PHP
(Php: Hypertext Preprocessor)
(partea IV)

12.04.2016

Tehnologii WEB - curs

copyright@www.adrian.runceanu.ro

curs 10
1. Utilizarea irurilor de caractere
1.1. Compararea irurilor i subirurilor de
caractere
1.1.2. Compararea subirurilor de caractere
1.2. Prelucrarea irurilor de caractere
1.2.1. Eliminarea spaiilor albe
1.2.2. Transformarea caracterelor n
minuscule sau majuscule
1.2.3. Criptarea irurilor
1.2.4. Extragerea cuvintelor
12.04.2016

Tehnologii WEB - curs

copyright@www.adrian.runceanu.ro

1. Utilizarea irurilor de caractere

Limbajul PHP include un numar mare de


functii predefinite care sunt utilizate pentru a
efectua diverse operatii asupra sirurilor de
caractere.

12.04.2016

Tehnologii WEB - curs

copyright@www.adrian.runceanu.ro

1.1. Compararea sirurilor si subsirurilor de caractere


Pentru compararea sirurilor de caractere sunt
utilizate functiile strcmp() si strcasecmp():
int strcmp(string sir1, string sir2)
Functia strcmp() compara in maniera case sensitive
cele doua siruri transmise ca argumente, intorcand:
-1 - daca sir1 este mai mic decat sir2
0 - daca sir1 si sir2 sunt egale
1 (un numar pozitiv) - daca sir1 este mai mare
decat sir2
12.04.2016

Tehnologii WEB - curs

copyright@www.adrian.runceanu.ro

Exemplu:

<?php
$sir1="Popescu Mihaela";
$sir2="Popescu Mihai";
if(strcmp($sir1, $sir2))
echo "Sirurile sunt diferite!";
else
echo "Sirurile sunt egale!";
?>

12.04.2016

Tehnologii WEB - curs

copyright@www.adrian.runceanu.ro

Prototipul functiei strcasecmp() este identic cu cel al


functiei strcmp().
Ca si prima functie amintita, strcasecmp() compara
cele doua siruri transmise ca argument.
De aceasta data, se va realiza o comparare case
insensitive.

De exemplu sirurile "Web" si "web" vor fi egale.

12.04.2016

Tehnologii WEB - curs

copyright@www.adrian.runceanu.ro

1.1.2. Compararea subsirurilor de caractere


Pentru compararea subsirurilor de caractere se
utilizeaza functiile strncmp() si strncasecmp():
int strncmp(string sir1, string sir2, int lungime)
Functia strnncmp() este similara cu strcmp(), cu
diferenta ca se specifica un numar care stabileste
cate caractere vor fi comparate din cele doua siruri,
intorcand aceleasi valori ca aceasta.

12.04.2016

Tehnologii WEB - curs

copyright@www.adrian.runceanu.ro

Exemplu:
<?php
$sir1="Popescu Mihaela";
$sir2="Popescu Mihai";
if(strncmp($sir1, $sir2, 12))
echo "Subsirurile sunt diferite!";
else
echo "Subsirurile sunt egale!";
?>

12.04.2016

Tehnologii WEB - curs

copyright@www.adrian.runceanu.ro

curs 10
1. Utilizarea irurilor de caractere
1.1. Compararea irurilor i subirurilor de
caractere
1.1.2. Compararea subirurilor de caractere
1.2. Prelucrarea irurilor de caractere
1.2.1. Eliminarea spaiilor albe
1.2.2. Transformarea caracterelor n
minuscule sau majuscule
1.2.3. Criptarea irurilor
1.2.4. Extragerea cuvintelor
12.04.2016

Tehnologii WEB - curs

10

copyright@www.adrian.runceanu.ro

1.1.2. Compararea subsirurilor de caractere


Prototipul functiei strncasecmp() este identic cu cel
al functiei strncmp().
Ca si prima functie amintita, strcasecmp() compara
un numar de caractere (precizat prin lungime) ale
celor doua siruri transmise ca argument.
Diferenta este ca, de aceasta data, se va realiza o
comparare case insensitive.

12.04.2016

Tehnologii WEB - curs

11

copyright@www.adrian.runceanu.ro

curs 10
1. Utilizarea irurilor de caractere
1.1. Compararea irurilor i subirurilor de
caractere
1.1.2. Compararea subirurilor de caractere
1.2. Prelucrarea irurilor de caractere
1.2.1. Eliminarea spaiilor albe
1.2.2. Transformarea caracterelor n
minuscule sau majuscule
1.2.3. Criptarea irurilor
1.2.4. Extragerea cuvintelor
12.04.2016

Tehnologii WEB - curs

12

copyright@www.adrian.runceanu.ro

1.2. Prelucrarea irurilor de caractere


Prelucrarea sirurilor de caractere presupune
realizarea unor diverse operatii asupra acestora, dintre
care mentionam:
1. eliminarea spatiilor albe de la inceputul si/sau de la
sfarsitul sirurilor
2. transformarea tuturor caracterelor in majuscule ori
minuscule
3. convertirea unor caractere in entitati XHTML
4. criptarea sirurilor
5. extragerea subsirurilor si a cuvintelor

12.04.2016

Tehnologii WEB - curs

13

copyright@www.adrian.runceanu.ro

1.2.1. Eliminarea spatiilor albe

Pentru eliminarea spatiilor albe de la inceputul


si/sau sfarsitul sirurilor de caractere se utilizeaza
functiile:
1. ltrim()
2. rtrim()
3. trim()

12.04.2016

Tehnologii WEB - curs

14

copyright@www.adrian.runceanu.ro

1.2.1. Eliminarea spatiilor albe


string ltrim(string sir [, string lista])
1. Functia ltrim() elimina spatiile albe (sau alte
caractere) de la inceputul sirului sir, transmis ca
argument.
In absenta parametrului optional lista, din sir vor fi
eliminate spatiile albe (caracterele spatiu, tab, newline,
carriage return, NULL-byte si tab vertical).

12.04.2016

Tehnologii WEB - curs

15

copyright@www.adrian.runceanu.ro

1.2.1. Eliminarea spatiilor albe


Daca argumentul amintit este prezent, din sir vor fi
eliminate toate caracterele incluse in lista.
Acest argument trebuie specificat sub forma unei liste
de caractere, precizate unul dupa altul.
In lista poate fi inclus si un domeniu, folosind ..
(doua puncte consecutive).
Functia intoarce sirul rezultat in urma eliminarii
caracterelor specificate.
12.04.2016

Tehnologii WEB - curs

16

copyright@www.adrian.runceanu.ro

Exemplu:
<?php

$text="\t\tPHP - limbaj de programare pentru server.";


$salut="Salut prieteni.";
$textltrim=ltrim($text);
var_dump($textltrim);
/* Se va afisa:
string(41) "PHP - limbaj de programare pentru server."*/
$salutltrim=ltrim($salut, "Sal") ;
var_dump($salutltrim);
/* Se va afisa:
String(11) "ut prieteni."
*/
?>
12.04.2016

Tehnologii WEB - curs

17

copyright@www.adrian.runceanu.ro

2. Functia rtrim() are o sintaxa similara cu cea a


functiei ltrim(), numai ca in cazul utilizarii sale, vor fi
eliminate spatiile albe (sau alte caractere) de la
sfarsitul sirului transmis ca argument.
3. De asemenea, functia trim() are o sintaxa similara cu
cea a functiilor descrise anterior, deosebindu-se de ele
prin faptul ca efectul utilizarii sale consta in eliminarea
spatiilor albe (sau a altor caractere), atat de la
inceputul, cat si de la sfarsitul sirului transmis ca
argument.

12.04.2016

Tehnologii WEB - curs

18

copyright@www.adrian.runceanu.ro

1.2.2. Transformarea caracterelor in minuscule sau


majuscule
string strtolower (string sir)

Functia strtolower() intoarce sirul argument sir


transformat, toate caracterele alfabetice ale acestuia
fiind minuscule.
string strtoupper(string $string)

Functia strtoupper() intoarce sirul argument sir


transformat, toate caracterele alfabetice ale acestuia
fiind majuscule.
12.04.2016

Tehnologii WEB - curs

19

copyright@www.adrian.runceanu.ro

1.2.3. Criptarea sirurilor


Unele dintre aplicatiile Web utilizeaza date confidentiale
(adica, parole, conturi bancare, coduri numerice
personale).
Pentru a impiedica obtinerea lor de catre persoane
neautorizate, acestea trebuie criptate inainte de stocarea
lor in bazele de date.
Limbajul PHP pune la dispozitia utilizatorilor un numar
mare de functii predefinite care realizeaza criptarea
datelor, dintre care se pot mentiona:
1. md5()
2. cryp()
3. sha1()
4. crc32()
12.04.2016

Tehnologii WEB - curs

20

copyright@www.adrian.runceanu.ro

string md5 (string sir)


1. Functia md5() cripteaza sirul sir, intorcand un sir de 32 de
caractere hexazecimale.
Acesta este asociat in mod unic sirului sir.
Exemplu:
if(md5($_POST['parola'])==$parola_extrasa)
echo "Autentificare realizata";
else
echo "Parola nu este corecta.";
In exemplul anterior, $parola_extrasa este parola criptata
cu md5(), obtinuta din baza de date in care a fost stocata
anterior (secventa de extragere nu este prezentata).
Se observa ca parola furnizata de utilizator este mai intai
criptata cu md5() si apoi comparata cu cea extrasa din baza
de date.
12.04.2016

Tehnologii WEB - curs

21

copyright@www.adrian.runceanu.ro

1.2.4. Extragerea cuvintelor


1. Pentru extragerea subsirurilor dintr-un sir se
utilizeaza functia explode(), al carei prototip este
urmatorul:
array explode(string delimitator, string sir[, int limita])
Functia intoarce un tablou de siruri, fiecare dintre
acestea fiind un subsir obtinut prin ruperea sirului sir
folosind limita.
Daca argumentul optional este precizat, numarul de
elemente al tabloul intors nu va depasi valoarea
acestuia (limita), ultimul element continand restul
sirului.
12.04.2016

Tehnologii WEB - curs

22

copyright@www.adrian.runceanu.ro

Daca delimitatorul este sirul vid (""), functia explode()


va intoarce valoarea false.
In schimb, daca valoarea acestui argument nu este
continuta in sir, va intoarce intregul sir.

Functia explode() este des utilizata pentru a obtine


cuvintele existente intr-un sir.
In acest caz, delimitatorul limita va avea valoarea " "
(adica, caracterul spatiu).

12.04.2016

Tehnologii WEB - curs

23

copyright@www.adrian.runceanu.ro

<?php

Exemplu:
$sir="Programare pentru server.";
$tablou=explode(" ", $sir);
foreach($tablou as $cuvant)
echo $cuvant . "<br />";
/* Se va afisa:
Programare
pentru
server.
*/

?>
12.04.2016

Tehnologii WEB - curs

24

copyright@www.adrian.runceanu.ro

2. Functia care realizeaza operatia inversa este


implode().

Aceasta aduna sir elementele unui tablou, folosind un


element de legatura:
string implode(string legatura, array tablou)
Functia intoarce un sir de caractere continand
elementele tabloului tab in aceeasi ordine, sirul
legatura fiind prezent intre oricare doua elemente
consecutive.
12.04.2016

Tehnologii WEB - curs

25

copyright@www.adrian.runceanu.ro

<?php
$tablou=array("Programare", "pentru", "server.");
$sir=implode(" ", $tablou);
echo $sir;
// Se va afisa Programare pentru server.
?>

12.04.2016

Tehnologii WEB - curs

26

curs 10

27

2. Lucrul cu directoare i fiiere


3. Utilizarea datelor introduse n formularele XHTML
3.1. Preluarea datelor introduse in formulare
3.1.1. Date trimise prin metoda GET
3.1.2. Date trimise prin metoda POST
3.2. Elemente XHTML si variabile asociate
3.2.1. Elementul input
3.2.2. Elementul select
3.2.3. Elementul textarea
3.3. Alte modalitati de trimitere a datelor
4. Generarea dinamic a coninutului
4.1. Generarea dinamic a formatelor textuale
4.1.1. Generarea formatului XHTML
4.1.2. Generarea formatului XML
4.2. Generarea dinamica a formatelor grafice
4.3. Utilizarea mecanismului output buffering
Tehnologii WEB - curs

2. Lucrul cu directoare i fisiere

Dupa cum se stie, prin intermediul unui limbaj de


programare sunt posibile crearea si manipularea
structurile de date.
Aceste structuri de date pot fi:
1. tranzitorii (stocate in memorie, tablouri, obiecte)
sau
2. permanente (stocate in fisiere sau in baze de date)
Prin intermediul unor functii specifice, este posibil ca in
PHP (ca si in alte limbaje) sa se citeasca si sa se scrie
date din/in fisiere.

28
Tehnologii WEB - curs

De asemenea, pot fi efectuate si alte operatiuni


cu directoare si fisiere, dintre care amintim:
1.
2.
3.
4.
5.
6.
7.

crearea, redenumirea si stergerea directoarelor


crearea, copierea, redenumirea si stergerea
fisierelor
obtinerea si modificarea atributelor fisierelor
citirea si afisarea continutului directoarelor
modificarea permisiunilor fisierelor
includerea continutului fisierelor in structuri de
date native
cautarea in fisiere pe baza unui sablon specificat

29
Tehnologii WEB - curs

Functiile

utilizate pentru lucrul cu directoare


si fisiere sunt incluse in nucleul PHP, nefiind
necesara instalarea unor extensii specifice.

Indiferent

de platforma pe care este folosit


PHP - UNIX/Linux sau Windows - pentru
lucrul cu fisiere si cataloage este utilizat
modelul preluat din prima platforma
amintita.

30
Tehnologii WEB - curs

Trebuie sa se tina seama ca utilizarea functiilor destinate


lucrului cu directoare si fisiere, poate avea rezultatele
asteptate numai daca exista permisiuni de acces
corespunzatoare.

In acest sens, trebuie avut in vedere ca procesorul PHP


(care interpreteaza si executa scripturile) ruleaza (ca si
serverul Web) intr-un cont de utilizator cu permisiuni de
acces restranse (numit - de cele mai multe ori nobody),
care nu trebuie confundat cu contul sub care utilizatorul
are acces FTP sau direct (prin intermediul shell-ului) la
directoarele si fisierele al caror proprietar este.

31
Tehnologii WEB - curs

De

asemenea, trebuie sa se tina seama ca unele


dintre aceste functii pot fi utilizate numai pe
platforma Windows sau, dimpotriva, numai pe
platforma UNIX/Linux.

Serverul

Web (Apache) poate livra utilizatorilor


fisiere situate numai sub radacina
documentelor (in Apache, aceasta este
specificata in httpd.conf ca valoare a directivei
DocumentRoot).

32
Tehnologii WEB - curs

In

schimb, PHP poate accesa fisiere aflate in


orice locatie, cu conditia ca permisiunile de
acces si directiva include_path (in php.ini) sa fie
setate corect.
De exemplu, daca radacina documentelor este
/usr/local/apache2/htdocs, Apache va putea
servi documente aflate numai in acest director,
precum si in subdirectoarele sale.
In schimb, PHP poate deschide, citi si scrie in
fisiere situate in oricare director, in conditiile
mentionate.
33
Tehnologii WEB - curs

curs 10
3. Utilizarea datelor introduse n formularele XHTML
3.1. Preluarea datelor introduse in formulare
3.1.1. Date trimise prin metoda GET
3.1.2. Date trimise prin metoda POST
3.2. Elemente XHTML si variabile asociate
3.2.1. Elementul input
3.2.2. Elementul select
3.2.3. Elementul textarea
3.3. Alte modalitati de trimitere a datelor
4. Generarea dinamic a coninutului
4.1. Generarea dinamic a formatelor textuale
4.1.1. Generarea formatului XHTML
4.1.2. Generarea formatului XML
4.2. Generarea dinamica a formatelor grafice
4.3. Utilizarea mecanismului output buffering
34
Tehnologii WEB - curs

3. Utilizarea datelor introduse n formularele XHTML


O modalitate importanta de interactiune intre
utilizatori si aplicatiile Web consta in
introducerea/selectarea unor date in/din formularele
XHTML si trimiterea acestora unui script de prelucrare
care ruleaza pe server.
Datele trimise pot fi utilizate in diverse scopuri,
dintre care mentionam:
1. autentificarea utilizatorilor
2. precizarea unor criterii pentru selectarea
informatiilor stocate pe server si care vor fi livrate
ulterior utilizatorilor
3. furnizarea unor informatii confidentiale (numere
de card de credit, parole etc.)
35
Tehnologii WEB - curs

3.1. Preluarea datelor introduse in formulare

Incepand cu versiunea PHP 4.1.0, datele introduse in


formulare si trimise server-ului sunt disponibile in tablourile
asociative (variabile superglobale) $_GET, $_POST si
$_REQUEST.

Cheile elementelor tablourilor amintite sunt:


1. numele campurilor formularului
2. iar valorile elementelor sunt reprezentate de:

datele introduse de utilizatori (pentru campurile


de tip text, password, textarea)

sau de optiunile facute de acestia (pentru


campurile de tip radio, checkbox, hidden si select)

36
Tehnologii WEB - curs

3.1.1. Date trimise prin metoda GET


Datele

trimise scriptului prin metoda GET vor fi


disponibile in scriptul de prelucrare a acestora
prin intermediul tablourilor superglobale $_GET
si $_REQUEST.

In continuare este prezentat un exemplu simplu


de utilizare a acestei metode, care include
fisierele date.html si afisare.php.

37
Tehnologii WEB - curs

Scriptul de prelucrare afisare.php va avea urmatorul continut:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN'
"http://www.w3.org/TR/xhtmll/DTD/xhtmll-transitional.dtd":
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Afisarea datelor trimise folosind metoda GET</title>
</head>
<body>
<?php
if(!empty($_GET['nume']) && !empty($_GET['prenume'])) {
echo "Nume: ".$_GET['nume']."<br />";
echo "Prenume: ".$_GET['prenume'];
}
else header("Location: date.html");
?>
</body>
</html>
38
Tehnologii WEB - curs

In

cazul in care utilizatorul completeaza ambele


campuri ale formularului (se remarca folosirea
functiei empty()), scriptul de prelucrare inclus
in fisierul afisare va afisa continutul acestora.

In

caz contrar, browserul va afisa din nou


formularul de introducere a datelor.

Reafisarea

formularului se realizeaza dupa ce


serverul trimite browser-ului antetul Location
avand ca valoare numele fisierului date.html.

39
Tehnologii WEB - curs

Dupa

cum se poate constata, numele si


prenumele utilizatorului se introduce in
campurile input de tip text ale caror atribut
name au valorile "nume" si, respectiv
"prenume".
Aceste date sunt preluate, in scriptul de
prelucrare afisare.php elementele
$_GET[nume] si $_GET[prenume] ale
tabloului superglobal $_GET.
De asemenea, datele pot fi preluate si in tabloul
superglobal $_REQUEST, in mod similar.
40
Tehnologii WEB - curs

3.1.2. Date trimise prin metoda POST


Aplicatia anterioara poate fi modificata pentru a utiliza metoda POST in
scopul transmiterii catre server a datelor introduse in formular.
Astfel, atributul method al elementului form trebuie sa aiba valoarea
"post", iar in scriptul afisare.php trebuie sa se utilizeze secventa PHP
urmatoare:
<?php
if(!empty($_POST['nume']) && !empty($_POST['prenume'])) {
echo "Nume: ".$_POST['nume']."<br />";
echo "Prenume: ".$_POST['prenume'];
}
else header("Location: date.html");
?>
De asemenea, datele trimise prin metoda POST sunt disponibile si in
superglobal $_REQUEST.

41

Tehnologii WEB - curs

De citit despre $_GET si $_POST:


http://php.net/manual/ro/reserved.variables.re
quest.php

42
Tehnologii WEB - curs

curs 10
3. Utilizarea datelor introduse n formularele XHTML
3.1. Preluarea datelor introduse in formulare
3.1.1. Date trimise prin metoda GET
3.1.2. Date trimise prin metoda POST
3.2. Elemente XHTML si variabile asociate
3.2.1. Elementul input
3.2.2. Elementul select
3.2.3. Elementul textarea
3.3. Alte modalitati de trimitere a datelor
4. Generarea dinamic a coninutului
4.1. Generarea dinamic a formatelor textuale
4.1.1. Generarea formatului XHTML
4.1.2. Generarea formatului XML
4.2. Generarea dinamica a formatelor grafice
4.3. Utilizarea mecanismului output buffering
43
Tehnologii WEB - curs

3.2. Elemente XHTML si variabile asociate


Elementele continute in formularul XHTML si al
variabilelor corespunzatoare de care dispune scriptul de
prelucrare a datelor:
3.2.1. Elementul input
In cazul unui element input de tip text, scriptul de prelucrare
dispune in tablourile $_GET si $_REQUEST (daca se utilizeaza
metoda GET) si, respectiv, $_POST si $_REQUEST (daca se
utilizeaza metoda POST) de cate un element a carui cheie
coincide cu numele elementului (valoarea atributului name al
acestuia) si a carui valoare coincide cu continutul introdus de
utilizator al acestui element sau cu valoarea atributului value,
daca aceasta este precizata.
44
Tehnologii WEB - curs

Daca utilizatorul nu introduce nimic in campul text,


elementul respectiv al tablourilor va avea valoarea NULL
sau sirul vid.
In cazul unui element input de tip buton radio, conform
modalitatii uzuale de folosire a acestui tip, trebuie create
in formular cel putin doua butoane cu nume (valorile
atributului name) identice, dar cu valori (valorile
atributului value) diferite.
Scriptul de prelucrare dispune in tablourile amintite de
cate un element a carui cheie coincide cu numele
butonului radio si a carui valoare este egala cu valoarea
butonului selectat de utilizator.
Daca utilizatorul nu alege nici o optiune (adica nu este
selectat nici un buton), elementul respectiv va avea
45 valoarea null.

Tehnologii WEB - curs

In cazul unui element input de tip checkbox (caseta de


validare), scriptul de prelucrare dispune in tablourile
amintite de cate un element a carui cheie coincide cu
numele casetei checkbox (valoarea atributului name) si a
carui valoare este egala cu cea a atributului value al
casetei.
Daca utilizatorul nu selecteaza caseta, elementul
respectiv va avea valoarea NULL.
Dupa cum se stie, pentru a verifica daca o variabila PHP
are valoarea NULL, aceasta se transmite ca argument
functiei isset().
Functia va intoarce true, daca variabila are o valoare
diferita de null, si false, in caz contrar.

46
Tehnologii WEB - curs

3.2.2. Elementul select

In cazul in care formularul include o lista de


selectare, scriptul de prelucrare dispune in tablourile
amintite anterior de cate un element a carui cheie
coincide cu numele elementului select (valoarea
atributului name al acestuia) si a carui valoare este
egala cu cea a atributului value al elementului option
selectat de utilizator.

47
Tehnologii WEB - curs

3.2.3. Elementul textarea


In cazul in care formularul include o caseta multiline,
scriptul de prelucrare dispune in tablourile $_GET si
$_REQUEST (daca se utilizeaza metoda GET) si, respectiv,
$_POST si $_REQUEST (daca se utilizeaza metoda POST)
de cate un element a carui cheie este egala cu numele
elementului textarea (valoarea atributului name al
acestuia) si a carui valoare este un sir care coincide cu
textul introdus de utilizator in caseta.

Daca utilizatorul nu introduce nimic, valoarea respectiva


va fi null.

48
Tehnologii WEB - curs

curs 10
3. Utilizarea datelor introduse n formularele XHTML
3.1. Preluarea datelor introduse in formulare
3.1.1. Date trimise prin metoda GET
3.1.2. Date trimise prin metoda POST
3.2. Elemente XHTML si variabile asociate
3.2.1. Elementul input
3.2.2. Elementul select
3.2.3. Elementul textarea
3.3. Alte modalitati de trimitere a datelor
4. Generarea dinamic a coninutului
4.1. Generarea dinamic a formatelor textuale
4.1.1. Generarea formatului XHTML
4.1.2. Generarea formatului XML
4.2. Generarea dinamica a formatelor grafice
4.3. Utilizarea mecanismului output buffering
49
Tehnologii WEB - curs

3.3. Alte modalitati de trimitere a datelor

Datele

incluse in campurile unui formular pot fi


trimise scriptului de prelucrare si fara apasarea
unui buton de tip submit.

Procedeul

presupune utilizarea unei modalitati de


executie a metodei submit() a obiectului Form
(metoda JavaScript).

50
Tehnologii WEB - curs

Exemplu (scriptul va fi salvat in fisierul culori.php):

<?php
if(!isset($_GET['culoare']))
$culoare="white";
else
$culoare=$ GET['culoare'];
?>

51
Tehnologii WEB - curs

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Schimba culoarea de fundal</title>
</head>
<body bgcolor="<?php echo $culoare; ?>">
<form action="culori.php">
<select name="culoare" onChange="submit();">

52
Tehnologii WEB - curs

<?php

echo "<option value=''></option>";


echo "<option value=\"red\"";
if($culoare=="red")
echo " selected=\"selected\"";
echo ">rosu</option>";
echo "<option value=\"yellow\"";
if ($culoare=="yellow")
echo " selected=\"selected\"";
echo ">galben</option>";
echo "<option value=\"green\"";
if($culoare=="green")
echo " selected=\"selected\"";
echo ">verde</option>";
echo "</select>";
?>
</form>
</body>
</html>
53
Tehnologii WEB - curs

Odata cu selectia unei culori din lista oferita, se produce


evenimentul JavaScript onChange, care determina un
apel al metodei submit() a obiectului Form.
Executia acestei metode determina trimiterea catre
scriptul de prelucrare (aici tot culori.php) a valorii
elementului select (al carui atribut name are valoarea
"culoare").
Aceasta este chiar valoarea atributului value al
elementului option selectat.
Culoarea selectata va fi atribuita ca valoare variabilei
$culoare prin intermediul elementului $GET[culoare],
care va fi in continuare pentru stabilirea culorii de fundal
a paginii.

54
Tehnologii WEB - curs

Modalitatea prezentata poate fi utilizata si


in alte scopuri, ca, de exemplu, selectia si
transmiterea unei optiuni dintr-o lista de
selectare, optiune care va fi utilizata in scriptul
de prelucrare drept cuvant-cheie pentru
cautarea intr-o baza de date (intr-o aplicatie de
comert electronic).

55
Tehnologii WEB - curs

Este posibil ca datele alese de client sa fie trimise pe


server fara a se utiliza un formular.
In acest caz, ele sunt adaugate, prin intermediul unei
legaturi, URL-ului scriptului de prelucrare, ca in
exemplul urmator (salvat in fisierul culori2.php):

<?php
if(!isset($_GET ['culoare']))
$culoare="white";
else
$culoare=$_GET ['culoare'];
?>
56
Tehnologii WEB - curs

<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"DTD/xhtmll-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Schimba culoarea de fundal</title>
</head>
<body bgcolor="<?php echo $culoare; ?>">
<a href="culori2.php?culoare=red"> Rosu</a><br />
<a href="culori2.php?culoare=yellow"> Galben</a><br />
<a href="culori2.php?culoare=green"> Verde</a><br />
</body>
</html>
57
Tehnologii WEB - curs

curs 10
3. Utilizarea datelor introduse n formularele XHTML
3.1. Preluarea datelor introduse in formulare
3.1.1. Date trimise prin metoda GET
3.1.2. Date trimise prin metoda POST
3.2. Elemente XHTML si variabile asociate
3.2.1. Elementul input
3.2.2. Elementul select
3.2.3. Elementul textarea
3.3. Alte modalitati de trimitere a datelor
4. Generarea dinamic a coninutului
4.1. Generarea dinamic a formatelor textuale
4.1.1. Generarea formatului XHTML
4.1.2. Generarea formatului XML
4.2. Generarea dinamica a formatelor grafice
4.3. Utilizarea mecanismului output buffering
58
Tehnologii WEB - curs

4. Generarea dinamic a continuului


PHP ofera posibilitatea generarii dinamice a continutului
afisat in browserul utilizatorilor, prin intermediul unor
instructiuni si functii.
Alaturi de XHTML, pot fi generate si alte formate
textuale (XML), dar si formate de alta natura (decat cele
grafice).
In cazul celor mai multe formate, inainte de a se trimite
browser-ului continutul general dinamic, este necesar sa
se trimita explicit acestuia prin intermediul functiei PHP
header(), un antet Content-Type cu o valoare
corespunzatoare formatului.

59
Tehnologii WEB - curs

4.1. Generarea dinamic a formatelor textuale


Dupa

cum s-a putut constat deja, formatele


textuale sunt generate prin intermediul
instructiunilor:
1.
2.

echo (numita si instructiune de reflectare)


print

Acestea

pot fi utilizate si ca functii (echo() si

print()).
60
Tehnologii WEB - curs

Cea mai simpla modalitate de folosire a instructiunii


echo consta in afisarea unui sir de caractere, ca in
urmatoarele exemple echivalente:

echo "PHP este cel mai utilizat server de aplicatii.";


echo ("PHP este cel mai utilizat server de aplicatii.");
Pot fi utilizate argumente multiple, separate prin virgula,
dar numai cand echo se foloseste ca instructiune:
echo "PHP este", " cel mai utilizat ", "server de
aplicatii.";

61
Tehnologii WEB - curs

4.1.1. Generarea formatului XHTML

Prin intermediul instructiunii echo poate fi generat dinamic


orice marcaj/secventa (X)HTML.

In scopul mentionat, aceasta va fi inclusa intre ghilimele sau


apostrofuri, ca in exemplul urmator:

echo "<center><h2><b>Primul capitol</b></h2></center>";

62
Tehnologii WEB - curs

Folosind echo sau print, pot fi afisate in browser valorile


unor variabile, impreuna cu date de tip sir de caractere
sau marcaje (X)HTML, ca in exemplul urmator:

$temp=300;
echo "<b>Temperatura corpului este de $temp K.</b>";
// In browser se va afisa Temperatura corpului este de 300 K.

echo "<b>Temperatura corpului este de ".$temp."


K.</b>";
// In browser se va afisa Temperatura corpului este de 300 K.

63
Tehnologii WEB - curs

Argumentul primei instructiuni echo trebuie inclus


obligatoriu intre ghilimele, deoarece - in acest caz PHP evalueaza variabila $temp la valoarea sa (adica
300).

Daca s-ar fi folosit apostrofuri, PHP nu ar fi realizat


evaluarea, si - in consecinta browser-ul ar fi afisat
sirul $temp.

64
Tehnologii WEB - curs

Instructiunea

print este similara cu echo,


existand totusi cateva diferente:

echo accepta argumente multiple, in timp ce


print accepta un singur argument
2. echo nu intoarce nici o valoare, iar print
intoarce valoarea 1, daca afisarea a avut loc,
si 0, in caz contrar
Aceasta permite, spre deosebire echo, ca
instructiunea print sa fie utilizata in expresii
complexe.
1.

65
Tehnologii WEB - curs

4.1.2. Generarea formatului XML

Daca se doreste afisarea/utilizarea in browser a unui


document XML generat dinamic pe server, este
necesar sa se trimita in prealabil navigatorului
(folosind functia header()) un antet Content-Type, a
carui valoare trebuie sa fie text/xml sau
application/xml, astfel:

header("Content-Type: text/xml");
header ("Content-Type: application/xml") ;

66
Tehnologii WEB - curs

curs 10
3. Utilizarea datelor introduse n formularele XHTML
3.1. Preluarea datelor introduse in formulare
3.1.1. Date trimise prin metoda GET
3.1.2. Date trimise prin metoda POST
3.2. Elemente XHTML si variabile asociate
3.2.1. Elementul input
3.2.2. Elementul select
3.2.3. Elementul textarea
3.3. Alte modalitati de trimitere a datelor
4. Generarea dinamic a coninutului
4.1. Generarea dinamic a formatelor textuale
4.1.1. Generarea formatului XHTML
4.1.2. Generarea formatului XML
4.2. Generarea dinamica a formatelor grafice
4.3. Utilizarea mecanismului output buffering
67
Tehnologii WEB - curs

4.2. Generarea dinamic a formatelor grafice


Serverul

de aplicatii PHP ofera posibilitatea


generarii dinamice a imaginilor avand diverse
formate raster (GIF, PNG, JPEG), prin
utilizarea unor functii incluse in biblioteca
grafica GD (Graphics Draw).

Dupa

crearea unei imagini raster, aceasta va fi


salvata intr-un fisier pe server sau trimisa
browser-ului.

68
Tehnologii WEB - curs

In ambele cazuri, se utilizeaza o functie (imageif(),


imagepng(), imagejpeg()), care permite, printre altele
utilizarea formatului imaginii.

Daca aceasta trebuie afisata in browser, este necesar


inainte de apelul uneia dintre functiile respective, sa se
trimita un antet Content-Type, care sa precizeze formatul
imaginii.

De exemplu, daca imaginea este in format PNG, se va


trimite antetul Content-Type cu valoarea image/png
header("Content-Type: image/png").

69
Tehnologii WEB - curs

curs 10
3. Utilizarea datelor introduse n formularele XHTML
3.1. Preluarea datelor introduse in formulare
3.1.1. Date trimise prin metoda GET
3.1.2. Date trimise prin metoda POST
3.2. Elemente XHTML si variabile asociate
3.2.1. Elementul input
3.2.2. Elementul select
3.2.3. Elementul textarea
3.3. Alte modalitati de trimitere a datelor
4. Generarea dinamic a coninutului
4.1. Generarea dinamic a formatelor textuale
4.1.1. Generarea formatului XHTML
4.1.2. Generarea formatului XML
4.2. Generarea dinamica a formatelor grafice
4.3. Utilizarea mecanismului output buffering
70
Tehnologii WEB - curs

4.3. Utilizarea mecanismului output buffering


Scripturile

PHP permit trimiterea catre client a


unor anteturi HTTP (prin intermediul functiei
header()) sau a unor variabile cookie (folosind
functia setcookie()).

Acestea

trebuie trimise inaintea oricaror date


(marcaje XHTML, linii vide sau date generate
dinamic).

71
Tehnologii WEB - curs

Mecanismul

cunoscut sub numele de output


buffering ofera posibilitatea trimiterii
anteturilor HTTP si a variabilelor cookie, chiar
si dupa ce scriptul a inceput sa genereze date
de iesire (prin intermediul instructiunii echo).

Acest

lucru este posibil, deoarece datele sunt


pastrate in buffer-ul de iesire si trimise ulterior.

72
Tehnologii WEB - curs

Activarea

sau dezactivarea implicita a


mecanismului amintit se realizeaza intermediul
directivei output_buffering, in php.ini (fisierul
de configurare al PHP).

Pentru

activare, se atribuie directivei o valoare,


care fixeaza (in octeti) o limita superioara pentru
buffer-ul de iesire utilizat, ca in exemplul
urmator:
output_buffering=4096

73
Tehnologii WEB - curs

copyright@www.adrian.runceanu.ro

Bibliografie:
Adrian Runceanu, Mihaela Runceanu, Tehnologii si
aplicatii web ndrumar de laborator, Editura Academica
Brncui, Trgu-Jiu, 2009, ISBN 978-973-144-302-7

ntrebri?

12.04.2016

Tehnologii WEB - curs

74

S-ar putea să vă placă și