DIR Return Create A Forum - Home
---------------------------------------------------------
Forum Practic
HTML https://practic.createaforum.com
---------------------------------------------------------
*****************************************************
DIR Return to: Informatica
*****************************************************
#Post#: 126--------------------------------------------------
Accesul la date - PHP
DIR By: iulianstoian
Date: January 13, 2015, 7:00 pm
---------------------------------------------------------
z8e8ei
<titlu>Accesul la date</titlu>
<titlu>Scopuri</titlu>
• Invatati sa obtineti accesul la datele scalare transmise unui
program PHP de catre un formular HTML
• Invatati sa folositi constructia PHP echo pentru a trimite
date de iesire la browser
• Invatati sa construiti siruri care includ valorile
variabilelor PHP
• Invatati sa obtineti accesul la valorile variabilelor de mediu
Majoritatea programelor PHP folosesc formularele HTML pentru a
obtine date de intrare, in cadrul acestui modul, veti invata sa
obtineti accesul la datele trimise unui program PHP prin
intermediul unui formular HTML. De asemenea, veti invata sa
obtineri accesul la datele stocate in variabilele de mediu pe
parte de client, respectiv pe parte de server. Variabilele de
mediu stocheaza informatii utile despre browsere, servere Web si
PHP.
<titlu>Obtinerea si utilizarea datelor de la un
formular</tittlu>
Deoarece PHP a fost conceput ca limbaj de scripting pentru Web,
faciliteaza accesul la variabilele transmise de catre
formularele HTML. In modulul precedent, ati invatat sa creati
formulare HTML. Iata un formular HTML simplu, care include o
caseta cu text:
<HTML>
<HEAD><TITLE>Un formular HTML simplu </TITLE>
</HEAD>
<BODY>
<FORM METHOD=”POST” ACTION=”phpinfo.php”>
<BR>Tastati niste date:
<BR><INPUT TYPE=”TEXT” NAME=”date”>
<BR><BR><INPUT TYPE=”SUBMIT”>
</FORM>
</BODY>
</HTML>
Observati ca atributul NAME al etichetei INPUT atribuie casetei
cu text numele date.
In cazul in care creati un script denumit phpinfo.php, care
executa functia phpinfo() si o stocheaza in acelasi dosar ca si
formularul, prin expedierea formularului se cere scriptului sa
afiseze un raport care indica starea serverului de aplicatie
PHP. In
sectiunea intitulata „Variabile PHP", raportul de stare prezinta
valorile variabilelor din formular. Figura 4-1 prezinta raportul
de stare asociat formularului HTML simplu.
Retineri ca raportul de stare are doua coloane. Numele
variabilei asociate controlului din formular, in speta date,
apare in coloana din stanga, inglobat in textul
HTTP_POST_VARSa"date"i. Valoarea variabilei, care reprezinta
textul introdus de utiliza¬tor, este prezentata in coloana din
dreapta. In figura, valoarea variabilei o constituie textul
"acestea sunt datele".
<figura 4-1>Un raport de stare PHP, care indica valoarea
variabilei din formular denumita date
PHP Variables
<Variabila>PHP_SELF</varialila><value>/Ibmccarty/php/module-04/phpinfo.php</value>
<variabila> HTTP_POST_VARSa„date”i </varialila> <value> this is
data </value>
<Sfatul specialistului>
Intrebare: Constructia HTTP_POST_VARSa"date"i este suspect de
asemanatoare cu o referinta la un tablou. Despre ce este vorba?
Raspuns: Daca ati observat parantezele drepte si v-ati reamintit
ca ele sunt asociate cu tablourile PHP, atunci sunteti o
persoana extrem de atenta. Daca nu, parcurgeti rapid sectiunea
intitulata „Valori scalare si tablouri" din Modulul 2.
In momentul expedierii unui formular, numele si valorile
variabilelor incluse in formular sunt inserate in tabloul
HTTP_POST_VARS. Cheia fiecarui element al tablou¬lui este numele
unei variabile din formular; valoarea elementului din tablou
determina valoarea variabilei. Daca doriti, puteti obtine
accesul la variabilele formularului folosind tabloul
HTTP_POST_VARS; cu toate acestea, veti invata in curand
modalitati mult mai convenabile de acces la variabilele unui
formular. </Sfatul specialistului>
<titlu>Trimiterea datelor de iesire catre browser</titlu>
Desigur, nu putem pretinde ca utilizatorii sa citeasca un raport
de stare PHP pentru a afla valorile variabilelor. Mai mult,
esenta programarii consta in capacitatea de a manipula valorile,
nu de a le vizualiza pur si simplu, in aceasta sub-sectiune veti
invata sa folositi constructia echo pentru a trimite date de
iesire la un browser, iar in sectiunea urmatoare veti invata sa
construiti siruri care inglobeaza valorile variabilelor.
Prin combinarea acestor tehnici, puteti afisa valorile
variabilelor PHP intr-o forma pe care utilizatorii o pot
intelege cu usurinta. In modulele ulterioare, veti invata sa
manipulati valorile variabilelor astfel incat sa puteti construi
programe PHP utile. Constructia echo va permite sa trimiteti
date de iesire catre un browser. Con¬structia are o diversitate
de forme. lat-o, poate, pe cea mai utila dintre ele:
echo sir_expresie;
Aceasta forma consta numai din cuvantul echo, urmat de o
expresie sir si de un caracter punct si virgula care determina
incheierea instructiunii. Efectul unei aseme¬nea instructiuni
consta in a trimite browserului valoarea expresiei sir. De
exemplu, instructiunea
echo „<BR><B>„Datele sunt elegante!</B>”;
trimite browserului textul „Datele sunt elegante!". Retineti ca
textul include etichete HTML, care influenteaza modul de
formatare a textelor, determinandu-le sa apara pe o linie noua,
scrise cu ajutorul caracterelor aldine.
Utilitatea acestei forme a constructiei echo se bazeaza pe
numeroasele moduri in care puteti scrie o expresie sir. Una
dintre cele mai utile modalitati foloseste opera¬torul de
concatenare pentru unirea a doua expresii sir. De exemplu, sa
luam in considerare urmatoarea instructiune echo:
echo „Datele sunt” . „ elegante!”;
Operatorul de concatenare, reprezentat printr-un punct, ataseaza
a doua expresie sir ia prima. Rezultatul este acelasi ca si cel
generat de urmatoarea instructiune:
echo „Datele sunt elegante!”;
Constructia echo este oarecum ciudata, in sensul ca este
asemanatoare cu o functie, dar nu este functie. De exemplu,
puteti folosi paranteze pentru a delimita expresia sir ceruta de
constructia echo:
Daca preferati, puteti furniza mai multe expresii sir, fiecare
din aceste expresii fiind separata de vecinii sai prin
intermediul unei virgule:
echo „Datele sunt”, „ elegante!”;
Cu toate acestea, nu puteti folosi simultan paranteze si
virgule, asa cum se procedeaza in cazul functiilor autentice:
echo („Datele sunt”, „elegante!”); // Eroare de sintaxa
Mai mult, o expresie furnizata constructiei echo nu trebuie sa
fie o expresie sir, daca PHP stie sa converteasca expresia
intr-un sir. De exemplu, urmatoarea sintaxa este corecta:
echo „unu plus unu este ”; echo 2;
<Sfatul specialistului>
Intrebare: Sa presupunem ca programul meu PHP are ca date de
iesire etichete HTML, ceea ce determina intercalarea unor
elemente HTML in componentele programului meu. Exista vreo
modali¬tate mai convenabila de a scrie constructii de tip echo
in aceasta situatie?
Raspuns: Da, exista, in loc de a scrie
<? echo "datele mele de iesire";
?> puteti scrie pur si simplu
<?= "datele mele de iesire" ?>
PHP percepe semnul egal ca o abreviere pentru echo, atata vreme
cat semnul egal urmeaza imediat dupa simbolul <?. Retineti,
totusi, ca aceasta caracteristica este disponibila numai daca
PHP a fost compilat sau configurat cu optiunea de confi¬gurare
short_tags. Daca descoperiti ca nu puteti folosi cu succes
constructia <?=, solicitati administratorului dumneavoastra de
sistem sa activeze aceasta optiune. </Sfatul specialistului>
<titlu>Construirea sirurilor care inglobeaza valori ale
variabilelor</titlu>
Pentru a putea trimite browserului valorile variabilelor, tot ce
mai aveti de invatat este sa construiti expresii sir care includ
valorile variabilelor. Iata un script simplu care include o
asemenea expresie
<?php
$raza = 2;
$pi = 3.14159;
$arie = $pi*$raza*$raza; echo „Aria cercului este $arie.”;
?>
Cand inglobati intr-un sir numele unei variabile, precum $arie,
PHP inlocuieste numele variabilei cu valoarea acesteia. Daca
executati scriptul dat ca exemplu, veti vedea datele de iesire:
Aria cercului este 12.56636
Uneori, doriti sa obtineti la iesire numele unei variabile, nu
valoarea acesteia.In asemenea cazuri, inserati un caracter
backslash (\) in fata numelui variabilei. Sa consideram
urmatorul exemplu:
<?php
$raza = 2;
$pi = 3.14159;
$arie = $pi*$raza*$raza; echo „Valoarea variabilei \ $aria este
$arie.”;
?>
Rezultatul acestui script este:
Valoarea variabilei $arie este 12.56636
<Test „la minut">
• Scrieti o instructiune echo care scrie textul „PHP este pentru
programa¬torii de calibru."
• Scrieti o instructiune echo care scrie valoarea variabilei
$circum.
• Scrieti o instructiune echo care scrie numele variabilei
$radacina, urmata de un semn egal si de valoarea variabilei.
</Test „la minut">
<titlu>Proiectul 4-1 : Agenda cu adrese de e-mail</titlu>
In cadrul acestui proiect, veti scrie instructiuni PHP prin care
se obtine accesul la datele obtinute de la un formular HTML. De
asemenea, veti scrie instructiuni PHP care trimit date HTML la
browserul utilizatorului.
Acest proiect este primul dintr-o serie de proiecte, care va
culmina cu o aplicatie PHP care furnizeaza o agenda de adrese
accesibila prin Web. Veti invata mai multe despre agenda de
adrese si despre functionalitatile acesteia pe masura ce veti
continua sa lucrati la dezvoltarea aplicatiei.
<titlu>Scopurile proiectului</titlu>
• Prezentarea modului de scriere a sirurilor PHP care
incorporeaza datele obtinute de la un formular HTML
• Prezentarea modului de utilizare a instructiunii PHP echo
pentru a trimite date catre browserul utilizatorului
<titlu>Pas cu pas</titlu>
1. Plasati urmatorul script PHP intr-un fisier denumit p-4-1
.html si incarcati acest fisier in serverul dumneavoastra PHP:
<HTML>
<HEAD>
<TITLE>Proiectul 4-1<TITLE>
</HEAD>
<BODY>
<!--Fisierul p-4-1.html -- >
<FORM METHOD=”POST” ACTION=”p-4-1.php”>
<H2>Lista cu persoane de contact</H2>
<BR>Porecla:
<nota>Raspunsuri la test:
• echo "PHP este pentru programatorii de calibru."
• echo "Valoarea este Scircum."; sau ceva similar
•echo "\$radacina=$radacina";</nota>
<BR><INPUT TYPE=”TEXT” NAME=”Porecla”>
<BR>
<BR>Nume complet:
<BR<<INPUT TYPE=”TEXT” NAME=”Numecomplet”>
<BR>
<BR>Memo:
<BR><TEXTAREA NAME=”Memo” ROWS=”4” COLS=”40” WRAP=”PHYSICAL”>
</TEXTAREA>
<BR>
<BR>
<INPUT TYPE=”SUBMIT”>
</FORM>
</BODY>
</HTML>
2. Plasati urmatorul script PHP intr-un fisier denumit p-4-1.php
si incarcati acest fisier in serverul dumneavoastra PHP,
plasandu-l in acelasi catalog ca si fisierul p-4-1 .html:
<?php
// Fisierul p-4-1.html echo „<BR>Porecla=$Porecla”; echo
„<BR>Nume_complet=$Nume_complet”; echo „<BR>Memo=$Memo”;
?>
3. Orientati un browser Web spre adresa URL a fisierului care
contine formularul HTML. Ecranul browserului trebuie sa fie
asema¬nator celui prezentat in ilustratia urma¬toare.
Introduceti o porecla, un nume complet si o nota scurta (memo).
Executati clic pe butonul de expediere.
<imagine>
Contact list
Nickname bill
Full Name Bill McCarty
Memo Email: bmccarty@osborn.com
Submit Query
</imagine>
4. In momentul executarii scriptului de prelucrare, acesta
obtine accesul la cele trei variabile ale formularului si
trimite browserului utilizatorului numele si valorile
variabilelor, asa cum se poate vedea in ilustratia urmatoare.
Nickname=bill
Fullname=Bill McCarty
Memo=Email: bmccarty@osborne.com
<titlu>Obtinerea si utilizarea datelor de la o variabila de
mediu</titlu>
In cazul in care sunteti familiarizat cu sistemele de operare
UNIX sau MS-DOS, probabil ca sunteti un cunoscator al
variabilelor de mediu. Variabilele de mediu sunt folosite pentru
stocarea optiunilor si a parametrilor care personalizeaza mediul
de aplicatie. Aplicatiile pot obtine accesul la valorile
variabilelor de mediu si isi pot ajusta comportamentul in
consecinta. De exemplu, calea de cautare a programelor MS-DOS
este stocata intr-o variabila de mediu denumita PATH. In
general, comen¬zile sistemelor de operare sunt folosite pentru a
configura variabilele de mediu si pentru a stabili valorile
acestora. Cu toate acestea, unele aplicatii manipuleaza valorile
variabilelor de mediu.
Atat serverul Web Apache, cat si serverul de aplicatie PHP
folosesc variabile de mediu pentru a prezenta informatii de
stare. Unele dintre cele mai importante variabile de mediu
folosite de Apache si PHP sunt rezumate in tabelul 4-1.
Nume¬roase servere Web, altele decat Apache, furnizeaza o parte
din aceste variabile de mediu sau chiar pe toate.
Multe dintre aceste variabile reflecta caracteristicile cererii
HTTP care a solicitat executia PHP. Puteti vizualiza toate
variabilele de mediu disponibile pentru progra¬mele PHP prin
invocarea functiei phpinfo() si vizualizarea datelor de iesire
generate de aceasta. Figura 4-2 prezinta o portiune a raportului
de stare prezentat de functia phpinfo() care identifica
numeroase variabile de mediu.
<Tabelul 4-1 Importante variabile de mediu PHP>
*Variabila de mediu
*Descriere
*CONTENT_LENGTH
*Lungimea, in octeti, a corpului cererii.
*CONTENT_TYPE
*Tipul MIME al datelor din corpul cererii.
*DOCUMENT_ROOT
*Calea care constituie radacina arborelui catalogului cu
docu¬mente al serverului Web.
*GATEWAZ_INTERFACE
*Versiune a protocolului CGI (Common Gateway Interface) folosit
de serverul Web.
*http_ACCEPT
*Continutul antetului HTTP Accept:.
*http_ACCEPT_CHARSET
*Continutul antetului HTTP Accept-Charset:, care specifica
seturile de caractere intelese de client.
*HTTP_ACCEPT_ENCODING
*Continutul antetului HTTP Accept-Encoding:, care specifica
tipurile de continuturi intelese de client.
*http_ACCEPT_LANGUAGE
*Continutul antetului HTTP Accept-Language:, care specifica
limbajele preferate de client.
*http_CONNECTION
*Continutul antetului HTTP Connection:, care indica optiunile
solicitate de client.
*http_HOST
*Continutul antetului HTTP Host:, care indica numele de gazda,
folosit de client la prezentarea cererii.
*http_REFERER
*Adresa URL a paginii Web care a trimis browserul clientului la
pagina curenta.
*HTTP_USER_AGENT
*Continutul antetului HTTP user-Agent, care indica browserul
clientului si versiunea acestuia.
*PATH
*Calea de executie asociata cu mediul serverului.
*QUER_STRING
*Sirul de interogare, daca exista, care a insotit cererea.
*REMOTE_ADDR
*Adresa IP a clientului.
*REMOTE_HOST
*Numele de gazda al clientului.
*REMOTE_PORT
*Adresa portului clientului de unde a pornit cererea.
*REQUEST_METHOD
*Metoda de cerere HTTP folosita; de exemplu, GET, POST, PUT sau
HEAD.
*REQUEST_URI
*URI folosit pentru accesul la pagina curenta. URI este alcatuit
dintr-un URL si un sir optional de interogare.
*SCRIPT_FILENAME
*Numele de cale absolut al scriptului curent.
*SCRIPT_NAME
*Adresa URL a scriptului curent.
*SERVER_ADMIN
*Adresa de e-mail a administratorului serverului Web .
*SERVER_HOST
*Numele de gazda asociat serverului Web care prelucreaza
cererea.
*SERVER_PORT
*Port folosit de serverul Web pentru comunicatii.
*SERVER_PROTOCOL
*Numele si versiunea protocolului prin intermediul caruia s-a
executat cererea.
*SERVER_SIGNATURE
*Sirul care identifica versiunea serverului Web si numele de
gazda folosit pentru prelucrarea cererii.
*SERVER_SOFTWARE
*Sirul care identifica programul server Web si versiunea
acestuia.
</tabel 4-1>
Puteti obtine accesul la variabila de mediu exact asa cum
procedati pentru orice alta variabila PHP. Pur si simplu
inserari inaintea numelui variabilei de mediu un simbol al
dolarului ($), astfel incat numele sa se conformeze sintaxei
PHP. De exemplu, urmatoarea instructiune echo trimite
browserului adresa IP a clientului:
echo „Adresa IP a clientului este $REMOTE_ADDR.”;
<figura 4-2>
Datele de iesire ale functiei phpinfo(), care afiseaza numeroase
variabile de mediu.
<titlu>Apache Environment</titlu>
<Variable>CONTENT_LENGTH</variable><value> 14</value>
<Variable>CONTENT_TYPE</variable><value>application/x-www-form-urlencoded</value>
<Variable>DOCUMENT_ROOT</variable><value>/home/http/htlm</value>
<Variable>HTTP_ACCEPT</variable><value>*/*</value>
<Variable> HTTP_ACCEPT_ENCODING </variable> <value> gzip,deflate
</value>
<Variable> HTTP_ACCEPT_LANGUAGE</variable><value>en-us</value>
<Variable> HTTP_CONNECTION</variable><value>Keep-Alive</value>
</figura 4-2>
<Sfatul specialistului>
Intrebare: O buna parte din informatiile prezentate in tabe¬lul
4-1 par neclare. Care este utilitatea acestor variabile de
mediu?
Raspuns: Daca nu cunoasteti protocolul HTTP in amanuntime, s-ar
putea sa nu descoperiti prea multe utilitati pentru aceste
variabile de mediu. Cu toate acestea, o importanta utilizare
comuna o constituie autentificarea clientului. Prin accesul la
variabila de mediu REMOTE_ADDR, puteti determina adresa IP a
clientului. Intr-un modul ulterior, veti invata sa testati
valoarea unei variabile si sa modificati comportamentul unui
script in functie de valoarea respectiva. De exemplu, puteti
folosi acest procedeu pentru a exclude cererile care provin din
afara unui anumit set de adrese IP, cum ar fi cele care
reprezinta o anumita retea. Astfel, aplicatia dumneavoastra
poate deveni mai rezistenta la atacurile hackerilor care
incearca sa creeze o bresa in sistemul de securitate.
O alta utilizare importanta a variabilelor de mediu consta in
ocolirea limitarilor impuse de un anumit browser. Variabila de
mediu HTTP_USER_AGENT identifica browserul client si versiunea
acestuia. Un script PHP poate testa valoarea acestei variabile
de mediu si trimite numai date de iesire acceptabile pentru
versiunea browserului aflat in uz.</sfatul specialistului>
<Test „la minut">
• Care este numele variabilei PHP care contine numele gazdei
serverului Web?
• Care este numele variabilei PHP care contine numele gazdei
clientului?</test”la minut>
<tilu>Proiect 4-2: Vizualizarea variabilelor de mediu</titlu>
In cadrul acestui proiect, veti vizualiza valorile a numeroase
variabile de mediu PHP.
<titlu>Scopurile proiectului</titlu>
• Prezentarea modului de vizualizare a variabilelor de mediu
• Prezentarea modului de utilizare a instructiunii echo pentru a
trimite browserului date deb iesire
<titlu>Pas cu pas</titlu>
1. Plasati urmatorul script PHP intr-un fisier denumit p-4-2.php
si incarcati acest fisier in serverul dumneavoastra PHP:
<nota>Raspunsuri la test:
• $SERVER_HOST
• $REMOTE HOST</nota>
<?php
//Fisierul p-4-2.php echo „<PRE>”; echo „<BR><B>Browser :</B>
$HTTP_USER_AGENT”; echo „<BR><B>Host :</B> $HTTP_HOST”; echo
„<BR><B>Referer :</B> $HTTP_REFERER”; echo „<BR><B>Remote Host
:</B> $HTTP_REMOTE_HOST”; echo „<BR><B>Remote Address :</B>
$HTTP_REMOTE_ADDR”; echo „<BR><B>Remote Port :</B>
$HTTP_REMOTE_PORT”; echo „</PRE>”;
?>
2. Orientati un browser Web spre adresa URL a fisierului care
contine scriptul PHP. La executarea scriptului de prelucrare,
acesta afiseaza valorile variabilelor de mediu, asa cum se poate
vedea in ilustratia urmatoare.
<figura> Proiect 4-2 - Miciosoft Internet Explorer
Browser :Mozilla/4.0 (conpatible; MSIE 5.0; Windows 98; DigExt)
Host : osborne.com
Referer : http: / / osborne.com/Ibmccarty/php/module-04/
Remote Host : client.isp.net
Remote Address : 198.45.24.130
Remote Port : 24203</figura>
<Test de evaluare>
1. Care este variabila PHP ce trebuie folosita pentru a obtine
accesul la datele asociate unui control definit de eticheta HTML
<INPUT TYPE="TEXT" NAME="culoare">?
2. Scrieti o instructiune PHP care trimite browserului valoarea
variabilei $x.
3. Scrieti o instructiune PHP care trimite browserului numele
variabilei $y.
4. Scrieti o instructiune PHP care trimite browserului adresa
URL a paginii care face referire la pagina curenta.
*****************************************************
Page 1 of 1