Noţiuni elementare despre Internet - runceanu.ro · Prelucrarea sirurilor de caractere presupune...

Post on 04-Sep-2019

7 views 0 download

transcript

TEHNOLOGII WEB

Universitatea “Constantin Brâncuşi” din Târgu-Jiu

Lect.dr. Adrian Runceanu

copyright@www.adrian.runceanu.ro

Curs 10

PHP (Php: Hypertext Preprocessor)

(partea IV)

12.05.2017 Tehnologii WEB - curs 2

copyright@www.adrian.runceanu.ro

curs 10

1. Utilizarea şirurilor de caractere1.1. Compararea şirurilor şi subşirurilor de caractere

1.1.2. Compararea subşirurilor de caractere1.2. Prelucrarea şirurilor de caractere

1.2.1. Eliminarea spaţiilor albe1.2.2. Transformarea caracterelor în

minuscule sau majuscule1.2.3. Criptarea şirurilor1.2.4. Extragerea cuvintelor

12.05.2017 Tehnologii WEB - curs 3

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.05.2017 Tehnologii WEB - curs 4

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 sir20 - daca sir1 si sir2 sunt egale1 (un numar pozitiv) - daca sir1 este mai mare

decat sir2

12.05.2017 Tehnologii WEB - curs 5

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.05.2017 Tehnologii WEB - curs 6

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.05.2017 Tehnologii WEB - curs 7

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.05.2017 Tehnologii WEB - curs 8

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.05.2017 Tehnologii WEB - curs 9

copyright@www.adrian.runceanu.ro

curs 10

1. Utilizarea şirurilor de caractere1.1. Compararea şirurilor şi subşirurilor de caractere

1.1.2. Compararea subşirurilor de caractere1.2. Prelucrarea şirurilor de caractere

1.2.1. Eliminarea spaţiilor albe1.2.2. Transformarea caracterelor în

minuscule sau majuscule1.2.3. Criptarea şirurilor1.2.4. Extragerea cuvintelor

12.05.2017 Tehnologii WEB - curs 10

copyright@www.adrian.runceanu.ro

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.

1.1.2. Compararea subsirurilor de caractere

12.05.2017 Tehnologii WEB - curs 11

copyright@www.adrian.runceanu.ro

curs 10

1. Utilizarea şirurilor de caractere

1.1. Compararea şirurilor şi subşirurilor de

caractere

1.1.2. Compararea subşirurilor de caractere

1.2. Prelucrarea şirurilor de caractere

1.2.1. Eliminarea spaţiilor albe

1.2.2. Transformarea caracterelor în

minuscule sau majuscule

1.2.3. Criptarea şirurilor

1.2.4. Extragerea cuvintelor

12.05.2017 Tehnologii WEB - curs 12

copyright@www.adrian.runceanu.ro

1.2. Prelucrarea şirurilor de caractere

Prelucrarea sirurilor de caractere presupunerealizarea unor diverse operatii asupra acestora, dintrecare 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 XHTML4. criptarea sirurilor5. extragerea subsirurilor si a cuvintelor

12.05.2017 Tehnologii WEB - curs 13

copyright@www.adrian.runceanu.ro

1.2.1. Eliminarea spatiilor albe

Pentru eliminarea spatiilor albe de la inceputulsi/sau sfarsitul sirurilor de caractere se utilizeazafunctiile:

1. ltrim()

2. rtrim()

3. trim()

12.05.2017 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 altecaractere) 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.05.2017 Tehnologii WEB - curs 15

copyright@www.adrian.runceanu.ro

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.

1.2.1. Eliminarea spatiilor albe

12.05.2017 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.05.2017 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.05.2017 Tehnologii WEB - curs 18

copyright@www.adrian.runceanu.ro

1.2.2. Transformarea caracterelor in minuscule saumajuscule

string strtolower (string sir)

Functia strtolower() intoarce sirul argument sir transformat, toate caracterele alfabetice ale acestuiafiind minuscule.

string strtoupper(string $string)

Functia strtoupper() intoarce sirul argument sir transformat, toate caracterele alfabetice ale acestuiafiind majuscule.

12.05.2017 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.05.2017 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.05.2017 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.05.2017 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.05.2017 Tehnologii WEB - curs 23

copyright@www.adrian.runceanu.ro

Exemplu:<?php

$sir="Programare pentru server."; $tablou=explode(" ", $sir); foreach($tablou as $cuvant)

echo $cuvant . "<br />"; /* Se va afisa:

Programare pentru server.

*/?>

12.05.2017 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.05.2017 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.05.2017 Tehnologii WEB - curs 26

curs 10

2. Lucrul cu directoare şi fişiere3. Utilizarea datelor introduse în formularele XHTML

3.1. Preluarea datelor introduse in formulare3.1.1. Date trimise prin metoda GET3.1.2. Date trimise prin metoda POST

3.2. Elemente XHTML si variabile asociate3.2.1. Elementul input3.2.2. Elementul select3.2.3. Elementul textarea

3.3. Alte modalitati de trimitere a datelor4. Generarea dinamică a conţinutului

4.1. Generarea dinamică a formatelor textuale4.1.1. Generarea formatului XHTML4.1.2. Generarea formatului XML

4.2. Generarea dinamica a formatelor grafice4.3. Utilizarea mecanismului output buffering

Tehnologii WEB - curs

27

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.

Tehnologii WEB - curs

28

De asemenea, pot fi efectuate si alte operatiuni cu directoare si fisiere, dintre care amintim:

1. crearea, redenumirea si stergerea directoarelor2. crearea, copierea, redenumirea si stergerea

fisierelor3. obtinerea si modificarea atributelor fisierelor4. citirea si afisarea continutului directoarelor5. modificarea permisiunilor fisierelor6. includerea continutului fisierelor in structuri de

date native7. cautarea in fisiere pe baza unui sablon specificat

Tehnologii WEB - curs

29

• 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 folositPHP - UNIX/Linux sau Windows - pentrulucrul cu fisiere si cataloage este utilizatmodelul preluat din prima platformaamintita.

Tehnologii WEB - curs

30

• 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.

Tehnologii WEB - curs

31

• 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).

Tehnologii WEB - curs

32

• 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.

Tehnologii WEB - curs

33

curs 10

3. Utilizarea datelor introduse în formularele XHTML3.1. Preluarea datelor introduse in formulare

3.1.1. Date trimise prin metoda GET3.1.2. Date trimise prin metoda POST

3.2. Elemente XHTML si variabile asociate3.2.1. Elementul input3.2.2. Elementul select3.2.3. Elementul textarea

3.3. Alte modalitati de trimitere a datelor4. Generarea dinamică a conţinutului

4.1. Generarea dinamică a formatelor textuale4.1.1. Generarea formatului XHTML4.1.2. Generarea formatului XML

4.2. Generarea dinamica a formatelor grafice4.3. Utilizarea mecanismului output buffering

Tehnologii WEB - curs

34

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 utilizatorilor2. 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.)

Tehnologii WEB - curs

35

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 formularului2. 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)

Tehnologii WEB - curs

36

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 $_GETsi $_REQUEST.

• In continuare este prezentat un exemplu simplu de utilizare a acestei metode, care include fisierele date.html si afisare.php.

Tehnologii WEB - curs

37

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>

<?phpif(!empty($_GET['nume']) && !empty($_GET['prenume'])) {

echo "Nume: ".$_GET['nume']."<br />"; echo "Prenume: ".$_GET['prenume'];

} else header("Location: date.html"); ?>

</body> </html>

Tehnologii WEB - curs

38

• 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 Locationavand ca valoare numele fisierului date.html.

Tehnologii WEB - curs

39

• 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.

Tehnologii WEB - curs

40

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.Tehnologii WEB - curs

41

De citit despre $_GET si $_POST:

http://php.net/manual/ro/reserved.variables.request.php

42

Tehnologii WEB - curs

curs 10

3. Utilizarea datelor introduse în formularele XHTML3.1. Preluarea datelor introduse in formulare

3.1.1. Date trimise prin metoda GET3.1.2. Date trimise prin metoda POST

3.2. Elemente XHTML si variabile asociate3.2.1. Elementul input3.2.2. Elementul select3.2.3. Elementul textarea

3.3. Alte modalitati de trimitere a datelor4. Generarea dinamică a conţinutului

4.1. Generarea dinamică a formatelor textuale4.1.1. Generarea formatului XHTML4.1.2. Generarea formatului XML

4.2. Generarea dinamica a formatelor grafice4.3. Utilizarea mecanismului output buffering

Tehnologii WEB - curs

43

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 utilizeazametoda GET) si, respectiv, $_POST si $_REQUEST (daca se utilizeaza metoda POST) de cate un element a carui cheiecoincide 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.

Tehnologii WEB - curs

44

• 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 valoarea null.

Tehnologii WEB - curs

45

• 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 PHPare 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.

Tehnologii WEB - curs

46

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 optionselectat de utilizator.

Tehnologii WEB - curs

47

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 numeleelementului 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.

Tehnologii WEB - curs

48

curs 10

3. Utilizarea datelor introduse în formularele XHTML3.1. Preluarea datelor introduse in formulare

3.1.1. Date trimise prin metoda GET3.1.2. Date trimise prin metoda POST

3.2. Elemente XHTML si variabile asociate3.2.1. Elementul input3.2.2. Elementul select3.2.3. Elementul textarea

3.3. Alte modalitati de trimitere a datelor4. Generarea dinamică a conţinutului

4.1. Generarea dinamică a formatelor textuale4.1.1. Generarea formatului XHTML4.1.2. Generarea formatului XML

4.2. Generarea dinamica a formatelor grafice4.3. Utilizarea mecanismului output buffering

Tehnologii WEB - curs

49

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).

Tehnologii WEB - curs

50

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

<?phpif(!isset($_GET['culoare']))

$culoare="white"; else

$culoare=$ GET['culoare'];?>

Tehnologii WEB - curs

51

<!DOCTYPE htmlPUBLIC "-//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();">

Tehnologii WEB - curs

52

<?phpecho "<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>

Tehnologii WEB - curs

53

• 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.

Tehnologii WEB - curs

54

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).

Tehnologii WEB - curs

55

• 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):

<?phpif(!isset($_GET ['culoare']))

$culoare="white"; else

$culoare=$_GET ['culoare']; ?>

Tehnologii WEB - curs

56

<!DOCTYPE htmlPUBLIC "-//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>

Tehnologii WEB - curs

57

curs 10

3. Utilizarea datelor introduse în formularele XHTML3.1. Preluarea datelor introduse in formulare

3.1.1. Date trimise prin metoda GET3.1.2. Date trimise prin metoda POST

3.2. Elemente XHTML si variabile asociate3.2.1. Elementul input3.2.2. Elementul select3.2.3. Elementul textarea

3.3. Alte modalitati de trimitere a datelor4. Generarea dinamică a conţinutului

4.1. Generarea dinamică a formatelor textuale4.1.1. Generarea formatului XHTML4.1.2. Generarea formatului XML

4.2. Generarea dinamica a formatelor grafice4.3. Utilizarea mecanismului output buffering

Tehnologii WEB - curs

58

4. Generarea dinamică a continuţului

• 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 PHPheader(), un antet Content-Type cu o valoare corespunzatoare formatului.

Tehnologii WEB - curs

59

4.1. Generarea dinamică a formatelor textuale

• Dupa cum s-a putut constat deja, formatele textuale sunt generate prin intermediul instructiunilor:

1. echo (numita si instructiune de reflectare)2. print

• Acestea pot fi utilizate si ca functii (echo() si print()).

Tehnologii WEB - curs

60

• 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.";

Tehnologii WEB - curs

61

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>";

Tehnologii WEB - curs

62

• 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.

Tehnologii WEB - curs

63

• 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.

Tehnologii WEB - curs

64

• Instructiunea print este similara cu echo, existand totusi cateva diferente:

1. echo accepta argumente multiple, in timp ce print accepta un singur argument

2. echo nu intoarce nici o valoare, iar printintoarce 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.

Tehnologii WEB - curs

65

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") ;

Tehnologii WEB - curs

66

curs 10

3. Utilizarea datelor introduse în formularele XHTML3.1. Preluarea datelor introduse in formulare

3.1.1. Date trimise prin metoda GET3.1.2. Date trimise prin metoda POST

3.2. Elemente XHTML si variabile asociate3.2.1. Elementul input3.2.2. Elementul select3.2.3. Elementul textarea

3.3. Alte modalitati de trimitere a datelor4. Generarea dinamică a conţinutului

4.1. Generarea dinamică a formatelor textuale4.1.1. Generarea formatului XHTML4.1.2. Generarea formatului XML

4.2. Generarea dinamica a formatelor grafice4.3. Utilizarea mecanismului output buffering

Tehnologii WEB - curs

67

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.

Tehnologii WEB - curs

68

• 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").

Tehnologii WEB - curs

69

curs 10

3. Utilizarea datelor introduse în formularele XHTML3.1. Preluarea datelor introduse in formulare

3.1.1. Date trimise prin metoda GET3.1.2. Date trimise prin metoda POST

3.2. Elemente XHTML si variabile asociate3.2.1. Elementul input3.2.2. Elementul select3.2.3. Elementul textarea

3.3. Alte modalitati de trimitere a datelor4. Generarea dinamică a conţinutului

4.1. Generarea dinamică a formatelor textuale4.1.1. Generarea formatului XHTML4.1.2. Generarea formatului XML

4.2. Generarea dinamica a formatelor grafice4.3. Utilizarea mecanismului output buffering

Tehnologii WEB - curs

70

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).

Tehnologii WEB - curs

71

• 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.

Tehnologii WEB - curs

72

• 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

Tehnologii WEB - curs

73

copyright@www.adrian.runceanu.ro

Bibliografie: Adrian Runceanu, Mihaela Runceanu, Tehnologii si aplicatii web – îndrumar de laborator, Editura Academica Brâncuşi, Târgu-Jiu, 2009, ISBN 978-973-144-302-7

Întrebări?

12.05.2017 Tehnologii WEB - curs 74