Welcome, guest. You are not logged in.
Language / Choose language
 
Username Password  
Today: WHERE COUNTRY IS BEST IN ASIA? · More of this
    Search
 

   

Modul #4
61

<titlu>Modulul 4: Accesul la date</titlu>
<titlu>Scopuri</titlu>
• Învãþaþi sã obþineþi accesul la datele scalare transmise unui program PHP de cãtre un formular HTML
• Învãþaþi sã folosiþi construcþia PHP echo pentru a trimite date de ieºire la browser
• Învãþaþi sã construiþi ºiruri care includ valorile variabilelor PHP
• Învãþaþi sã obþineþi accesul la valorile variabilelor de mediu

Majoritatea programelor PHP folosesc formularele HTML pentru a obþine date de intrare, în cadrul acestui modul, veþi învãþa sã obþineþi accesul la datele trimise unui program PHP prin intermediul unui formular HTML. De asemenea, veþi învãþa sã obþineri accesul la datele stocate în variabilele de mediu pe parte de client, respectiv pe parte de server. Variabilele de mediu stocheazã informaþii utile despre browsere, servere Web ºi PHP.
<titlu>Obþinerea ºi utilizarea datelor de la un formular</tittlu>
Deoarece PHP a fost conceput ca limbaj de scripting pentru Web, faciliteazã accesul la variabilele transmise de cãtre formularele HTML. În modulul precedent, aþi învãþat sã creaþi formulare HTML. Iatã un formular HTML simplu, care include o casetã cu text:
<HTML>
<HEAD><TITLE>Un formular HTML simplu </TITLE>
</HEAD>
<BODY>
<FORM METHOD=”POST” ACTION=”phpinfo.php”>
<BR>Tastaþi niºte date:
<BR><INPUT TYPE=”TEXT” NAME=”date”>
<BR><BR><INPUT TYPE=”SUBMIT”>
</FORM>
</BODY>
</HTML>

Observaþi cã atributul NAME al etichetei INPUT atribuie casetei cu text numele date.
În cazul în care creaþi un script denumit phpinfo.php, care executã funcþia phpinfo() ºi o stocheazã în acelaºi dosar ca ºi formularul, prin expedierea formularului se cere scriptului sã afiºeze un raport care indicã starea serverului de aplicaþie PHP. În

62

secþiunea intitulatã „Variabile PHP", raportul de stare prezintã valorile variabilelor din formular. Figura 4-1 prezintã raportul de stare asociat formularului HTML simplu.
Reþineri cã raportul de stare are douã coloane. Numele variabilei asociate controlului din formular, în speþã date, apare în coloana din stânga, înglobat în textul HTTP_POST_VARS["date"]. Valoarea variabilei, care reprezintã textul introdus de utiliza­tor, este prezentatã în coloana din dreapta. În figurã, valoarea variabilei o constituie textul "acestea sunt datele".

<figura 4-1>Un raport de stare PHP, care indicã valoarea variabilei din formular denumitã date

PHP Variables
<Variabila>PHP_SELF</varialila><value>/~bmccarty/php/module-04/phpinfo.php</value>
<variabila> HTTP_POST_VARS[„date”] </varialila> <value> this is data </value>

<Sfatul specialistului>
Întrebare: Construcþia HTTP_POST_VARS["date"] este suspect de asemãnãtoare cu o referinþã la un tablou. Despre ce este vorba?
Rãspuns: Dacã aþi observat parantezele drepte ºi v-aþi reamintit cã ele sunt asociate cu tablourile PHP, atunci sunteþi o persoanã extrem de atentã. Dacã nu, parcurgeþi rapid secþiunea intitulatã „Valori scalare ºi tablouri" din Modulul 2.
In momentul expedierii unui formular, numele ºi valorile variabilelor incluse în formular sunt inserate în tabloul HTTP_POST_VARS. Cheia fiecãrui element al tablou­lui este numele unei variabile din formular; valoarea elementului din tablou determinã valoarea variabilei. Dacã doriþi, puteþi obþine accesul la variabilele formularului folosind tabloul HTTP_POST_VARS; cu toate acestea, veþi învãþa în curând modalitãþi mult mai convenabile de acces la variabilele unui formular. </Sfatul specialistului>

<titlu>Trimiterea datelor de ieºire cãtre browser</titlu>
Desigur, nu putem pretinde ca utilizatorii sã citeascã un raport de stare PHP pentru a afla valorile variabilelor. Mai mult, esenþa programãrii constã în capacitatea de a manipula valorile, nu de a le vizualiza pur ºi simplu, în aceastã sub-secþiune veþi învãþa sã folosiþi construcþia echo pentru a trimite date de ieºire la un browser, iar în secþiunea urmãtoare veþi învãþa sã construiþi ºiruri care înglobeazã valorile variabilelor.

63

Prin combinarea acestor tehnici, puteþi afiºa valorile variabilelor PHP într-o formã pe care utilizatorii o pot înþelege cu uºurinþã. În modulele ulterioare, veþi învãþa sã manipulaþi valorile variabilelor astfel încât sã puteþi construi programe PHP utile. Construcþia echo vã permite sã trimiteþi date de ieºire cãtre un browser. Con­strucþia are o diversitate de forme. lat-o, poate, pe cea mai utilã dintre ele:

echo sir_expresie;

Aceastã formã constã numai din cuvântul echo, urmat de o expresie ºir ºi de un caracter punct ºi virgulã care determinã încheierea instrucþiunii. Efectul unei aseme­nea instrucþiuni constã în a trimite browserului valoarea expresiei ºir. De exemplu, instrucþiunea

echo „<BR><B>„Datele sunt elegante!</B>”;

trimite browserului textul „Datele sunt elegante!". Reþineþi cã textul include etichete HTML, care influenþeazã modul de formatare a textelor, determinându-le sã aparã pe o linie nouã, scrise cu ajutorul caracterelor aldine.
Utilitatea acestei forme a construcþiei echo se bazeazã pe numeroasele moduri în care puteþi scrie o expresie ºir. Una dintre cele mai utile modalitãþi foloseºte opera­torul de concatenare pentru unirea a douã expresii ºir. De exemplu, sã luãm în considerare urmãtoarea instrucþiune echo:

echo „Datele sunt” . „ elegante!”;

Operatorul de concatenare, reprezentat printr-un punct, ataºeazã a doua expresie ºir ia prima. Rezultatul este acelaºi ca ºi cel generat de urmãtoarea instrucþiune:

echo „Datele sunt elegante!”;

Construcþia echo este oarecum ciudatã, în sensul cã este asemãnãtoare cu o funcþie, dar nu este funcþie. De exemplu, puteþi folosi paranteze pentru a delimita expresia ºir cerutã de construcþia echo:
Dacã preferaþi, puteþi furniza mai multe expresii ºir, fiecare din aceste expresii fiind separatã de vecinii sãi prin intermediul unei virgule:

echo „Datele sunt”, „ elegante!”;

Cu toate acestea, nu puteþi folosi simultan paranteze ºi virgule, aºa cum se procedeazã în cazul funcþiilor autentice:

echo („Datele sunt”, „elegante!”); // Eroare de sintaxa

Mai mult, o expresie furnizatã construcþiei echo nu trebuie sã fie o expresie ºir, dacã PHP ºtie sã converteascã expresia într-un ºir. De exemplu, urmãtoarea sintaxã este corectã:

echo „unu plus unu este ”; echo 2;

64

<Sfatul specialistului>
Întrebare: Sã presupunem cã programul meu PHP are ca date de ieºire etichete HTML, ceea ce determinã intercalarea unor elemente HTML în componentele programului meu. Existã vreo modali­tate mai convenabilã de a scrie construcþii de tip echo în aceastã situaþie?
Rãspuns: Da, existã, în loc de a scrie
<?
echo "datele mele de ieºire";
?>
puteþi scrie pur ºi simplu
<?= "datele mele de ieºire" ?>

PHP percepe semnul egal ca o abreviere pentru echo, atâta vreme cât semnul egal urmeazã imediat dupã simbolul <?. Reþineþi, totuºi, cã aceastã caracteristicã este disponibilã numai dacã PHP a fost compilat sau configurat cu opþiunea de confi­gurare short_tags. Dacã descoperiþi cã nu puteþi folosi cu succes construcþia <?=, solicitãþi administratorului dumneavoastrã de sistem sã activeze aceastã opþiune. </Sfatul specialistului>

<titlu>Construirea ºirurilor care înglobeazã valori ale variabilelor</titlu>

Pentru a putea trimite browserului valorile variabilelor, tot ce mai aveþi de învãþat este sã construiþi expresii ºir care includ valorile variabilelor. Iatã un script simplu care include o asemenea expresie
<?php
$raza = 2;
$pi = 3.14159;
$arie = $pi*$raza*$raza;
echo „Aria cercului este $arie.”;
?>

Când înglobaþi într-un ºir numele unei variabile, precum $arie, PHP înlocuieºte numele variabilei cu valoarea acesteia. Dacã executãþi scriptul dat ca exemplu, veþi vedea datele de ieºire:

Aria cercului este 12.56636

Uneori, doriþi sã obþineþi la ieºire numele unei variabile, nu valoarea acesteia.În asemenea cazuri, inseraþi un caracter backslash (\) în faþa numelui variabilei. Sã considerãm urmãtorul exemplu:

<?php
$raza = 2;
$pi = 3.14159;

65

$arie = $pi*$raza*$raza;
echo „Valoarea variabilei \ $aria este $arie.”;
?>

Rezultatul acestui script este:
Valoarea variabilei $arie este 12.56636

<Test „la minut">
• Scrieþi o instrucþiune echo care scrie textul „PHP este pentru programa­torii de calibru."
• Scrieþi o instrucþiune echo care scrie valoarea variabilei $circum.
• Scrieþi o instrucþiune echo care scrie numele variabilei $radacina, urmatã de un semn egal ºi de valoarea variabilei. </Test „la minut">

<titlu>Proiectul 4-1 : Agenda cu adrese de e-mail</titlu>
În cadrul acestui proiect, veþi scrie instrucþiuni PHP prin care se obþine accesul la datele obþinute de la un formular HTML. De asemenea, veþi scrie instrucþiuni PHP care trimit date HTML la browserul utilizatorului.
Acest proiect este primul dintr-o serie de proiecte, care va culmina cu o aplicaþie PHP care furnizeazã o agendã de adrese accesibilã prin Web. Veþi învãþa mai multe despre agenda de adrese ºi despre funcþionalitãþile acesteia pe mãsurã ce veþi continua sã lucraþi la dezvoltarea aplicaþiei.

<titlu>Scopurile proiectului</titlu>
• Prezentarea modului de scriere a ºirurilor PHP care încorporeazã datele obþinute de la un formular HTML
• Prezentarea modului de utilizare a instrucþiunii PHP echo pentru a trimite date cãtre browserul utilizatorului

<titlu>Pas cu pas</titlu>
1. Plasaþi urmãtorul script PHP într-un fiºier denumit p-4-1 .html ºi încãrcaþi acest fiºier în serverul dumneavoastrã 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>Rãspunsuri la test:
• echo "PHP este pentru programatorii de calibru."
• echo "Valoarea este Scircum."; sau ceva similar
•echo "\$radacina=$radacina";</nota>

66
<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. Plasaþi urmãtorul script PHP într-un fiºier denumit p-4-1.php ºi încãrcaþi acest fiºier în serverul dumneavoastrã PHP, plasându-l în acelaºi catalog ca ºi fiºierul 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. Orientaþi un browser Web spre adresa URL a fiºierului care conþine formularul HTML. Ecranul browserului trebuie sã fie asemã­nãtor celui prezentat în ilustraþia urmã­toare. Introduceþi o poreclã, un nume complet si o notã scurtã (memo). Executaþi clic pe butonul de expediere.
<imagine>
Contact list
Nickname bill
Full Name Bill McCarty
Memo Email: bmccarty@osborn.com
Submit Query
</imagine>

4. În momentul executãrii scriptului de prelucrare, acesta obþine accesul la cele trei variabile ale formularului ºi trimite browserului utilizatorului numele ºi valorile variabilelor, aºa cum se poate vedea în ilustraþia urmãtoare.
Nickname=bill
Fullname=Bill McCarty
Memo=Email: bmccarty@osborne.com

67

<titlu>Obþinerea ºi utilizarea datelor de la o variabilã de mediu</titlu>
În cazul în care sunteþi familiarizat cu sistemele de operare UNIX sau MS-DOS, probabil cã sunteþi un cunoscãtor al variabilelor de mediu. Variabilele de mediu sunt folosite pentru stocarea opþiunilor ºi a parametrilor care personalizeazã mediul de aplicaþie. Aplicaþiile pot obþine accesul la valorile variabilelor de mediu ºi îºi pot ajusta comportamentul în consecinþã. De exemplu, calea de cãutare a programelor MS-DOS este stocatã într-o variabilã de mediu denumitã PATH. In general, comen­zile sistemelor de operare sunt folosite pentru a configura variabilele de mediu ºi pentru a stabili valorile acestora. Cu toate acestea, unele aplicaþii manipuleazã valorile variabilelor de mediu.
Atât serverul Web Apache, cât ºi serverul de aplicaþie PHP folosesc variabile de mediu pentru a prezenta informaþii de stare. Unele dintre cele mai importante variabile de mediu folosite de Apache ºi PHP sunt rezumate în tabelul 4-1. Nume­roase servere Web, altele decât Apache, furnizeazã o parte din aceste variabile de mediu sau chiar pe toate.
Multe dintre aceste variabile reflectã caracteristicile cererii HTTP care a solicitat execuþia PHP. Puteþi vizualiza toate variabilele de mediu disponibile pentru progra­mele PHP prin invocarea funcþiei phpinfo() ºi vizualizarea datelor de ieºire generate de aceasta. Figura 4-2 prezintã o porþiune a raportului de stare prezentat de funcþia phpinfo() care identificã numeroase variabile de mediu.
<Tabelul 4-1 Importante variabile de mediu PHP>
*Variabila de mediu
*Descriere

*CONTENT_LENGTH
*Lungimea, în octeþi, a corpului cererii.

*CONTENT_TYPE
*Tipul MIME al datelor din corpul cererii.

*DOCUMENT_ROOT
*Calea care constituie rãdãcina arborelui catalogului cu docu­mente al serverului Web.

*GATEWAZ_INTERFACE
*Versiune a protocolului CGI (Common Gateway Interface) folosit de serverul Web.

*http_ACCEPT
*Conþinutul antetului HTTP Accept:.

*http_ACCEPT_CHARSET
*Conþinutul antetului HTTP Accept-Charset:, care specificã seturile de caractere înþelese de client.

*HTTP_ACCEPT_ENCODING
*Conþinutul antetului HTTP Accept-Encoding:, care specificã tipurile de conþinuturi înþelese de client.

*http_ACCEPT_LANGUAGE
*Conþinutul antetului HTTP Accept-Language:, care specificã limbajele preferate de client.

*http_CONNECTION
*Conþinutul antetului HTTP Connection:, care indicã opþiunile solicitate de client.

*http_HOST
*Conþinutul antetului HTTP Host:, care indicã numele de gazdã, folosit de client la prezentarea cererii.

*http_REFERER
*Adresa URL a paginii Web care a trimis browserul clientului la pagina curentã.

68

*HTTP_USER_AGENT
*Conþinutul antetului HTTP user-Agent, care indicã browserul clientului ºi versiunea acestuia.

*PATH
*Calea de execuþie asociatã cu mediul serverului.

*QUER_STRING
*ªirul de interogare, dacã existã, care a însoþit cererea.

*REMOTE_ADDR
*Adresa IP a clientului.

*REMOTE_HOST
*Numele de gazdã al clientului.

*REMOTE_PORT
*Adresa portului clientului de unde a pornit cererea.

*REQUEST_METHOD
*Metoda de cerere HTTP folositã; de exemplu, GET, POST, PUT sau HEAD.

*REQUEST_URI
*URI folosit pentru accesul la pagina curentã. URI este alcãtuit dintr-un URL ºi un ºir opþional 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 gazdã asociat serverului Web care prelucreazã cererea.

*SERVER_PORT
*Port folosit de serverul Web pentru comunicaþii.

*SERVER_PROTOCOL
*Numele ºi versiunea protocolului prin intermediul cãruia s-a executat cererea.

*SERVER_SIGNATURE
*ªirul care identificã versiunea serverului Web ºi numele de gazdã folosit pentru prelucrarea cererii.

*SERVER_SOFTWARE
*ªirul care identificã programul server Web ºi versiunea acestuia.
</tabel 4-1>

Puteþi obþine accesul la variabila de mediu exact aºa cum procedaþi pentru orice altã variabila PHP. Pur ºi simplu inserãri înaintea numelui variabilei de mediu un simbol al dolarului ($), astfel încât numele sã se conformeze sintaxei PHP. De exemplu, urmãtoarea instrucþiune echo trimite browserului adresa IP a clientului:

echo „Adresa IP a clientului este $REMOTE_ADDR.”;

<figura 4-2>
Datele de ieºire ale funcþiei phpinfo(), care afiºeazã 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>


69

<Sfatul specialistului>
Întrebare: O bunã parte din informaþiile prezentate în tabe­lul 4-1 par neclare. Care este utilitatea acestor variabile de mediu?
Rãspuns: Dacã nu cunoaºteþi protocolul HTTP în amãnunþime, s-ar putea sã nu descoperiþi prea multe utilitãþi pentru aceste variabile de mediu. Cu toate acestea, o importantã utilizare comunã o constituie autentificarea clientului. Prin accesul la variabila de mediu REMOTE_ADDR, puteþi determina adresa IP a clientului. Intr-un modul ulterior, veþi învãþa sã testaþi valoarea unei variabile ºi sã modificaþi comportamentul unui script în funcþie de valoarea respectivã. De exemplu, puteþi folosi acest procedeu pentru a exclude cererile care provin din afara unui anumit set de adrese IP, cum ar fi cele care reprezintã o anumitã reþea. Astfel, aplicaþia dumneavoastrã poate deveni mai rezistentã la atacurile hackerilor care încearcã sã creeze o breºã în sistemul de securitate.
O altã utilizare importantã a variabilelor de mediu constã în ocolirea limitãrilor impuse de un anumit browser. Variabila de mediu HTTP_USER_AGENT identificã browserul client ºi versiunea acestuia. Un script PHP poate testa valoarea acestei variabile de mediu ºi trimite numai date de ieºire acceptabile pentru versiunea browserului aflat în uz.</sfatul specialistului>

<Test „la minut">
• Care este numele variabilei PHP care conþine numele gazdei serverului Web?
• Care este numele variabilei PHP care conþine numele gazdei clientului?</test”la minut>

<tilu>Proiect 4-2: Vizualizarea variabilelor de mediu</titlu>
În cadrul acestui proiect, veþi 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 instrucþiunii echo pentru a trimite browserului date deb ieºire

<titlu>Pas cu pas</titlu>
1. Plasaþi urmãtorul script PHP într-un fiºier denumit p-4-2.php ºi încãrcaþi acest fiºier în serverul dumneavoastrã PHP:

<notã>Rãspunsuri la test:
• $SERVER_HOST
• $REMOTE HOST</notã>

70

<?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. Orientaþi un browser Web spre adresa URL a fiºierului care conþine scriptul PHP. La executarea scriptului de prelucrare, acesta afiºeazã valorile variabilelor de mediu, aºa cum se poate vedea în ilustraþia urmãtoare.
<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/~bmccarty/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 folositã pentru a obþine accesul la datele asociate unui control definit de eticheta HTML <INPUT TYPE="TEXT" NAME="culoare">?
2. Scrieþi o instrucþiune PHP care trimite browserului valoarea variabilei $x.
3. Scrieþi o instrucþiune PHP care trimite browserului numele variabilei $y.
4. Scrieþi o instrucþiune PHP care trimite browserului adresa URL a paginii care face referire la pagina curentã.

Visits: 327
   
 Top


Advertise on our site! Click here

 powered by Peperoni.de Users online right now: 19869   Help/FAQ   Terms   Imprint