Scrigroup - Documente si articole

     

HomeDocumenteUploadResurseAlte limbi doc
AccessAdobe photoshopAlgoritmiAutocadBaze de dateCC sharp
CalculatoareCorel drawDot netExcelFox proFrontpageHardware
HtmlInternetJavaLinuxMatlabMs dosPascal
PhpPower pointRetele calculatoareSqlTutorialsWebdesignWindows
WordXml


PHP

php



+ Font mai mare | - Font mai mic



PHP

Prezentare generala

Inceputurile PHP



PHP (Hypertext Prepocessor), cunoscut in versiunile mai vechi si sub numele de PHP/FI (Personal Homepage/Form Interpreter), initial a fost gandit a fi o simpla aplicatie CGI pentru interpretarea formularelor definite prin HTML si procesate de un program scris intr-un limbaj Perl, script shell, executat pe server. In cazul interfetei CGI era necesara permisiunea de a rula programe pe server, ceea ce ducea la lacune in securitate si in plus la disocierea de documentul HTML a programului care procesa datele.

PHP reprezinta un pachet puternic care ofera un limbaj de programare accesibil din cadrul fisierelor HTML, limbaj asemanator cu Perl sau C, plus suport pentru manipularea bazelor de date intr-un dialect SQL (dBase, Informix, MySQL, mSQL, Oracle, PostgreSQL, Solid, Sybase, ODBC etc.) si acces la sisteme hipermedia precum Hyperwave. De asemeni, PHP suporta incarcarea fisierelor de pe calculatorul client: upload (standard propus de E. Nebel si L. Masinter de la Xerox, descris in RFC 1867) si ofera suport pentru cookies (mecanism de stocare a datelor in navigatorul client pentru identificarea utilizatorilor, propus de Netscape).

Aceasta aplicatie este disponibila gratuit pe Internet, pentru medii Unix si mai nou pentru medii Windows (inclusiv sursele), integrandu-se in popularul sever Apache.

Istoria PHP-ului incepe la sfarsitul anului 1994, cand Rasmus Lerdorf dezvolta prima versiune, ca proiect personal. PHP-ul este facut public in debutul anului 1995 sub denumirea de Personal Home Page Tools, fiind considerat un analizor simplist care interpreta cateva macrouri ce puteau fi incluse in cadrul documentelor HTML, permitand contorizarea accesului la paginile Web sau accesarea unei carti de oaspeti (guestbook). Analizorul a fost rescris la mijlocul aceluiasi an si denumit PHP/FI 2.0, unde FI era o alta aplicatie scrisa de Rasmus Lenford, un interpreter de formulare HTML. A fost adaugat si suportul pentru bazele de date mSQL si astfel PHP/FI a inceput sa aiba succes, fiind disponibil gratuit pe Web. Se estimeaza ca la sfarsitul lui 1996 cel putin 15 mii de site-uri Web utilizau PHP/FI, iar in anul 1997 numarul acestora era de 50 de mii.

Programatorii Zeev Suraski si Andi Gutmans rescriu analizorul PHP si noua aplicatie formeaza nucleul versiunii PHP 3.0 care include o parte din vechile surse PHP/FI 2.0. Relativ recent, la inceputul anului 2000, a fost facuta publica versiunea PHP 4.0, utilizand puternicul motor de scriptare Zend si oferind suport nu numai pentru serverul Apache ci si pentru alte servere Web. De asemeni, PHP 4.0 ofera posibilitatea accesarii documentelor XML via DOM.

Modelul client-server. Pagini web interactive (dinamice)

Dupa cum v-ati dat seama, paginile HTML sunt "statice", adica informatiile prezentate in aceste pagini sunt identice pentru toti vizitatorii, fiind simple pagini de prezentare. Web-ul este insa dinamic, adica unele pagini trebuie actualizate "in timp real", care utilizeaza cantitati mari de date si sunt afisate conform cerintelor utilizatorilor, fara a face prea multe modificari in codul sursa.

Exemplu: doi vizitatori, aflati in locuri diferite, acceseaza acelasi jobsite in acelasi timp. Unul doreste afisarea joburilor din domeniul financiar, iar al doilea doreste afisarea joburilor din domeniul informatic. In acest caz, serverul web va afisa pentru fiecare vizitator al site-ului pagina corespunzatoare cerintelor specificate. Acest lucru este posibil datorita tehnologiilor de tip client-server. Acest tip de tehnologii presupun stocarea datelor pe un server web si apoi afisarea acestora la cererea fiecarui vizitator, in forma dorita de acesta.

Un server web este un calculator conectat permanent la Internet, care trimite catre client (care este un calculator pe care ruleaza un browser) pagini in format HTML. Denumirea de server provine din faptul ca el "serveste" clientului paginile solicitate.

La un server se pot conecta simultan mai multi clienti, care pot avea acces la aceleasi informatii. Diferenta este esentiala comparativ cu paginile simple HTML, care sunt afisate in browserul vizitatorului asa cum au fost construite (in forma "bruta").

Web-ul este insa dinamic, iar programele care fac posibil acest lucru sunt numite scripturi CGI sau scripturi server-side, intrucat acestea folosesc o interfata standard numita Common Gateway Interface (CGI - interfata comuna pentru porti de acces). Aceste scripturi sunt stocate si ruleaza pe serverul web si pot fi scrise fie in limbajul C, fie cu ajutorul unui limbaj specializat, numit si limbaj de scripting (cele mai utilizate fiind PHP, ASP si Perl).

Diferenta dintre un limbaj de scripting pe partea de client (ex. JavaScript) si unul server-side este esentiala: JavaScript ruleaza in browserul clientului, pe cand un script server-side ruleaza pe server, avand acces la unele informatii stocate pe server la care un script client-side nu are acces.

Un exemplu sugestiv este un contor de pagina web. De cate ori cineva acceseaza pagina, scriptul server-side va contoriza vizitarea paginii intr-o baza de date centralizata, rezidenta pe server.

O sesiune client-server in care intervine si interogarea unei baze de date consta din urmatorii pasi:

utilizatorul introduce o adresa in bara de adrese a browserului;

serverul web primeste cererea si determina executia unui script rezident pe server;

scriptul extrage unele date dintr-o baza de date;

datele extrase sunt prelucrate si convertite in format HTML;

pagina in format HTML este returnata serverului web;

serverul web transmite pagina browserului care a trimis cererea;

browserul afiseaza informatiile intr-o fereastra.

Aplicatii software necesare

Pentru a crea aplicatii web interactive, avem nevoie de:

un server web (software)

un limbaj de scripting pe partea de server

un server de baze de date

La ora actuala, uneltele necesare se pot descarca gratuit din Internet.

a) serverul web Apache ( https://www.apache.org/ ) - este unul dintre cele mai utilizate (peste 55 %). Exista atat variante Apache pentru Linux cat si pentru Windows. Atu-uri : gratis, stabil, rapid, cross-platform.

b) limbajul PHP ( https://www.php.net/ ) este folosit de peste 35% din site-urile interactive. Atu-uri : gratis, usor de invatat (sintaxa asemanatoare cu C), ofera foarte multe functii, ofera suport pentru multe tipuri de baze de date (nici un alt limbaj nu ofera asemenea suport)

c) serverul de baze de date MySQL ( https://www.mysql.com/) este gratis si foarte rapid (unul dintre cele mai rapide la ora actuala).

Combinatia PHP+MySQL este folosita preponderent.

Exista utilitare (gen PHP Triad), care inglobeaza Apache, PHP si MySQL gata configurate, astfel incat acestea sa poata fi instalate usor si sa lucreze impreuna. Adresa este https://www.phpgeek.com/.

Aplicatia este oferita intr-un fisier executabil (.exe), care se instaleaza printr-un simplu clic.

Metoda I - instalarea separata si configurarea componentelor

Serverul Apache

se descarca din Internet serverul web Apache, de la https://www.apache.org/

se instaleaza aplicatia (implicit in folderul Program Files/Apache group)

se editeaza fisierul httpd.conf, aflat in folderul Apache group/Apache/Conf, astfel incat in locul liniei de comanda

#ServerName new.host.name

sa apara

ServerName 127.0.0.1 (sau ServerName localhost)

In acest moment serverul web Apache este instalat si configurat pe calculatorul dumneavoastra.

PHP

se descarca din Internet aplicatia de instalare a limbajului de scripting PHP, de la adresa https://www.php.net/

se dezarhiveaza aplicatia intr-un folder (de exemplu c:php)

se copie fisierul php4ts.dll, precum si toate fisierele din folderul c: phpdlls in folderul windowssystem

se copie fisierul php.ini-dist in folderul windows si se redenumeste in php.ini.

se editeaza fisierul php.ini urmandu-se precizarile din fisierul install.txt.

in sectiunea intitulata Windows Extensions, se sterge caracterul ";" care precede liniile cu extensiile precizate.

se configureaza serverul web Apache pentru a putea rula scripturi PHP, prin modificarea fisierului httpd.conf (trebuie eliminat caracterul "#" de la inceputul liniilor) astfel:

a) in sectiunea AddType application, trebuie sa avem urmatoarele linii:

AddType application/x-httpd-php .php

AddType application/x-httpd-php .php3

AddType application/x-httpd-php .php4

AddType application/x-httpd-php-source .phps

b) in sectiunea ScriptAlias, trebuie sa avem urmatoarea linie:

ScriptAlias /php/ 'c:/php/'

c) in sectiunea Actions (inainte de Metadir) trebuie sa avem urmatoarea linie:

Action application/x-httpd-php /php/php.exe

MySQL

se descarca din Internet serverul de baze de date MySQL, de la adresa https://www.mysql.com/

se dezarhiveaza fisierele aplicatiei intr-un folder (c:mysql)

se instaleaza aplicatia prin rularea programului setup.exe

Metoda a II-a - folosirea utilitarului PHPtriad

se descarca din Internet utilitarul PHPTriad de la adresa https://www.phpgeek.com/

se instaleaza aplicatia (implicit in folderul c:apache)

dupa instalare se lanseaza fisierul winmysqladmin.exe aflat in folderul c:apachemysqlbin; se introduce un username si o parola si se valideaza.

Scripturile create vor fi salvate in directorul c:Apachehtdocs. Fisierele au extensia .php (se pot salva si fisiere cu extensia html, intrucat aplicatiile client-server folosesc si fisiere html obisnuite).

Dupa instalarea Apache, calculatorul se comporta ca un server web, avand numele localhost.

Acest folder este numit de serverul Apache "Document Root". Cu alte cuvinte, scriptul c:apachehtdocsindex.php va avea adresa https://localhost/index.php .

Pentru rularea aplicatiilor client-server in aceasta configuratie, este necesara :

lansarea serverului web Apache

lansarea MySQL

Crearea scripturilor PHP

Pentru  crearea scripturilor PHP este necesar un editor de texte obisnuit; fisierul va fi salvat cu extensia php. Fiecare script PHP include doua linii, care indica serverului ca textul cuprins intre acestea este format din instructiuni PHP.

<?php

// continutul scriptului

?>

sau, echivalent:

<?

// continutul scriptului

?>

Executarea scripturilor PHP

Scripturile PHP executa mai multe tipuri de operatii elementare:

preluarea datelor de la utilizator

prelucrarea acestor date

obtinerea accesului la datele stocate pe server

prelucrarea datelor stocate pe server

afisarea datelor

Scripturile PHP sunt alcatuite din instructiuni. Cea mai simpla instructiune PHP este cea de afisare a unui text:

echo "Text care va fi afisat in browser";

Tag-urile HTML se introduc in codul PHP astfel:

echo "<b> Introducerea codului HTML intr-un script ";

Un comentariu se introduce intr-un script PHP cu ajutorul marcajului // (cand comentariul este scris pe o singura linie) sau /* continutul comentariului */ (atunci cand comentariul este scris pe mai multe linii)

<?php

// comentariu pe o linie

//continutul scriptului

?>

<?php

/* comentariu pe mai

multe linii */

// continutul scriptului

?>

Tipuri de date in PHP

Date numerice

Variabilele numerice se pot introduce astfel:

$a=123;

//sau

$a=-123

Siruri de caractere

In PHP sirurile de caractere vor fi delimitate de ghilimele sau apostrofuri (in acest ultim caz se va inhiba evaluarea variabilelor din sir).

Daca  sirul de caractere este scris intre ghilimele, atunci variabilele din sir se vor evalua si inlocui prin valoarea lor.

La fel ca in limbajul C, caracterul backslash se utilizeaza pentru introducerea caracterelor speciale.

Secventa escape

Valoare

n

Linie noua

r

Intoarcere la inceputul liniei

t

Tab

Backslash

Semnul dolar

Ghilimele

Sirurile se pot concatena utilizand operatorul '.' (punct).

Exemplu:

//definirea unui sir

$sir="acesta este un sir";

//se concateneaza sirul cu textul urmator

$sir=$sir."iar acesta este al doilea sir";

//extragem primul caracter al sirului

$primul=$sir[0];

//extragem ultimul caracter al sirului

$ultimul=$sir[strlen($sir)-1];

Variabile PHP

In PHP lucrul cu variabile este extrem de simplu. Toate variabilele vor incepe cu $, indiferent de tipul lor (siruri, numere, matrice).

Variabilele pot fi introduse intr-un script sau transferate dintr-o pagina HTML cu ajutorul unui formular. De asemeni, variabilele pot proveni si din URL-uri.

Variabile numerice

Un exemplu de declarare a variabilelor in PHP este urmatorul:

//exemplu de variabila sir

$a="acesta este un exemplu de variabila sir";

//exemplu de variabila numerica (numar intreg)

$b=17;

//exemplu de variabila numerica (in virgula mobila)

$c=1.774

//alt exemplu de sir

$d="99";

//calculam si afisam suma dintre b si d

$e=$b+$d;

echo $e;

Semnul = reprezinta operatorul de atribuire. Operatorul de comparatie este == ($variabila==1).

Variabile de tip sir

Vom da un exemplu in care sirul va fi incadrat intre ghilimele duble iar variabilele din sir vor fi inlocuite cu valorile acestora.

$nume="George";

$buna_ziua="Buna ziua, $nume";

echo $buna_ziua;

Aceasta secventa de cod va afisa "Buna ziua, George!".

Daca este necesara includerea caracterelor speciale, ele trebuie precedate de un backslash.

echo "<form action="https://localhost/script.php">";

Variabile de tip matrice (array, masiv)

Array-urile sunt variabile ce contin valori multiple. De exemplu, pentru stocarea zilelor saptamanii intr-un array se foloseste urmatoarea constructie:

$zile=array("Luni","Marti","Miercuri","Joi","Vineri","Sambata","Duminica");

Acest array are sapte elemente, iar accesarea unui element se face prin numarul sau de ordine, incepand de la zero.

//afisam primul element din array

echo $zile[0];

//afisam ultimul element din array

echo $zile[6];

//afisam toate elementele din array, cu o structura repetitiva (anticipam un pic)

for($i=0;$i<=6;$i++)

Operatori PHP

Operatori aritmetici

Exemplu

Operatie

Rezultat

$a+$b

Adunare

Suma dintre $a si $b

$a-$b

Scadere

Diferenta dintre $a si $b

$a*$b

Inmultire

Produsul dintre $a si $b

$a/$b

Impartire

Catul dintre $a si $b

$a%$b

Modulo

Restul impartirii lui $a la $b

Operatorul de atribuire

In PHP, operatorul de atribuire este '='.

Exemplu:

//atribuim variabilei $a valoarea 7

$a=7;

//atribuim variabilei $b valoarea $a+5

$b=$a+5;

//afisam valorile variabilelor

echo $a,$b;

Operatorii de comparatie

Permit compararea valorilor.

Exemplu

Nume operator

Rezultat

$a==$b

EGAL

Adevarat daca $aeste egal cu $b

$a===$b

IDENTIC

Adevarat daca $a este egal cu $b si variabilele sunt de acelasi tip

$a!=$b

DIFERIT

Adevarat daca $a este diferit de $b

$a<$b

MAI MIC DECAT

Adevarat daca $a este strict mai mic decat $b

$a>$b

MAI MARE DECAT

Adevarat daca $a este strict mai mare decat $b

$a<=$b

MAI MIC SAU EGAL

Adevarat daca $a este mai mic sau egal cu $b

$a>=$b

MAI MARE SAU EGAL

Adevarat daca $a este mai mare sau egal cu $b

Operatori de incrementare/decrementare (crestere/descresterea valorii cu o unitate)

Exemplu

Nume operator

Rezultat

++$a

PREINCREMENTARE

Incrementeaza $a, apoi il returneaza

$a++

POSTINCREMENTARE

Returneaza $a, apoi il incrementeaza

--$a

PREDECREMENTARE

Decrementeaza $a, apoi il returneaza

$a--

POSTDECREMENTARE

Returneaza $a, apoi il decrementeaza

Operatori logici

Exemplu

Nume operator

Rezultat

$a and $b

$a && $b

AND (si)

Adevarat daca $a si $b sunt adevarate

$a or $b

$a || $b

OR (sau)

Adevarat daca $a si $b este adevarat

!$a

NOT

Adevarat daca $a este fals

$a xor $b

XOR

Adevarat daca $a sau $b este adevarat, dar nu simultan

Structuri de control

Structuri alternative

Instructiunea IF

Are urmatoarea sintaxa generala:

if (conditie)

Utilizand operatorii PHP, putem construi instructiuni IF mai complexe:

if ($x==1 && $y<=2)

Instructiunile IF.ELSEIF

Asa cum sugereaza numele, este o combinatie a instructiunilor if si else. Ca si else, instructiunea elseif extinde o instructiune if pentru a executa alte instructiuni in cazul in care expresia conditionala din if este FALSE. Spre deosebire de else, instructiunea alternativa va fi executata doar daca expresia conditionala din elseif este TRUE.

if ($x==1)

elseif ($x==2)

else

Instructiunea SWITCH

Instructiunea switch este echivalenta cu o serie de instructiuni if. Cu numeroase ocazii, veti avea nevoie sa comparati aceeasi variabila (sau expresie) cu mai multe valori diferite si sa executati diferite parti din cod in functie de valoarea obtinuta. Acesta este modul de executie al instructiunii switch.

Sintaxa generala este urmatoarea:

switch (selector)

Urmatorul exemplu ilustreaza doua modalitati diferite de a scrie acelasi lucru, una utilizeaza o serie de if si alta utilizeaza instructiunea switch


if( $i == 0)

print '$i este egal cu 0';

if( $i == 1)

print '$i este egal cu 1';

if( $i == 2)

print '$i este egal cu 2';


switch( $i)

Structuri repetitive

Instructiunea WHILE

Testeaza daca o conditie este adevarata si, atat timp cat acest lucru este valabil, se executa codul specificat intre acolade:

while (conditie)

De exemplu, pentru afisarea numerelor intregi cuprinse intre 1 si 100, folosim urmatoarea secventa:

$x=1;

while ($x<=100)

Instructiunea DO.WHILE

Presupune testarea conditiei dupa ce instructiunile au fost executate o data.

Sintaxa generala este urmatoarea:

do

while (conditie);

Bucla de mai sus va fi executata doar o singura data, pentru ca la prima evaluare a expresiei obtinem FALSE (deoarece variabila $i nu este mai mare decat 0) si executia buclei se opreste.

Utilizatorii familiari cu C sunt obisnuiti sa utilizeze in mod diferit buclele do..while, care permite oprirea executiei buclei, prin introducerea instructiunii break intr-o bucla do..while. Codul urmator demonstreaza acest lucru:


do

$i *= $factor;

if( $i < $minimum_limit)

print '$i este bun';

}while( 0);

Instructiunea FOR

Are sintaxa generala urmatoare:

for (valoare_initiala; conditie; pas)

Instructiunea FOREACH

PHP4 (nu si PHP3) dispune de comanda foreach, ca Perl sau alte limbaje. Instructiunea ofera un mod simplu de a trece in revista un tablou. Exista doua sintaxe posibile, a doua este o mica, dar utila, extensie a celei dintai :


foreach( array_expresion as $value)

foreach( array_expresion as $key => $value)

Prima forma trece in revista tabloul array_expression. La fiecare iteratie, valoarea elementului curent este atribuita lui $value si pointerul intern al tabloului este avansat cu un element (astfel, la urmatoarea iteratie aveti acces la urmatorul element).

A doua forma face acelasi lucru, dar cheia (indicele) elementului curent va fi atribuita variabilei $key la ficare iteratie.

Nota: cand foreach incepe sa fie executat, pointerul intern al fisierului este automat repozitionat la primul element al tabloului. Acest lucru inseamna ca nu veti avea nevoie sa faceti apel la reset() inainte de foreach. De asemeni, foreach lucreaza cu o copie a tabloului astfel incat pointer-ul intern al tabloului nu este modificat ca in cazul utilizarii constructorului each.

Urmatoarele doua exemple functioneaza in acelasi mod:


reset( $arr);

while( list( , $value) = each( $arr))

foreach( $arr as $value)

Exemplele urmatoare functioneaza, de asemeni, identic:


reset( $arr);

while( list( $key, $value) = each( $arr))

foreach( $arr as $key => $value)

Urmeaza 3 exemple de utilizare:


Exemplul 1: o singura valoare */

$a = array( 1, 2 3, 17);

foreach( $a as $v)

Exemplul 2: valoare (cu cheie asociata) */

$a = array( 1, 2 3, 17);

$i = 0; /* Numai pentru afisare */

foreach( $a as $v)

Exemplul 3: valoarea si cheia */

$a = array(

'unu' => 1,

'doi' => 2,

'trei' => 3,

'saptesprezece' => 17

);

foreach( $a as $k => $v)

Instructiunea CONTINUE

Instructiunea continue este utilizata intr-o bucla pentru a sari peste instructiunile de dupa continue si pana la sfarsitul blocului; executia iteratiei curente este intrerupa si se trece la executia iteratiei urmatoare. Instructiunea continue accepta un argument numeric optional care va indica cate bucle imbricate vor fi ignorate.


while( list( $key, $val) = each( $arr))

$i = 0;

while( $i++ < 5)

echo 'Aici nu afiseaza niciodata.<br>n';

}

echo 'Nu faceti niciodata asta.<br>n';

Instructiunea INCLUDE()

Functia include() introduce si evalueaza fisierul specificat in argument. Daca URL fopen wrappers nu sunt disponibile in PHP (asa cum sunt in configuratia implicita), puteti specifica fisierul care trebuie inclus utilizand un URL in locul unui pathname local. Pentru a evita utilizarea eronata a fisierului inclus, orice cod din fisierul destinatie care trebuie executat ca un cod PHP trebuie incadrat de tag-uri de inceput si sfarsit valide in PHP. De asemeni, se poate folosi o instructiune include() intr-o bucla pentru a include mai multe fisiere diferite, asa cum reiese din exemplul urmator:


$files = array( 'unu.inc', 'doi.inc', 'trei.inc');

for( $i = 0; $i < count( $files); $i++)

Instructiunea include() este reevaluata de fiecare data cand este intalnita intr-un cod PHP. Deoarece include() este o constructie speciala a limbajului, trebuie sa o includeti intr-un bloc de instructiuni daca ea apare intr-un bloc conditional.

Exemplu:


/* Utilizarea este GRESITA si nu va functiona in modul dorit */

if( $condition)

include( $file);

else

include( $other);

/* Aceasta este CORECT */

if( $condition)

else

In PHP4, cat si in PHP3, se poate executa o instructiune return in interiorul unui fisier inclus cu include(), executia determinand incheierea procesului in respectivul fisier si revenirea in scriptul care l-a solicitat. De asemeni, PHP4 permite sa returnati valori din fisierele incluse cu include(). Puteti folosi aceste valori ca si cum ar fi returnate de o functie normala.

Exemplu:


/* Fisierul test.inc */

/* Se presupune ca fisierul test.inc exista in acelasi

director cu fisierul main.html */

echo 'Inainte de return<br>n';

if( 1)

echo 'Dupa return<br>n';

/* in fisierul main.html */

/* Presupunem ca fisierul main.html contine aceasta: */

$retval = include( 'test.inc');

echo 'Fisierul returneaza: '$retval'<br>n';

Atunci cand main.html este apelat in PHP3, el va genera o eroare de analiza la linia 3 deoarece in PHP3 nu putem evalua valori returnate de include(). In PHP4 rezultatul va fi:


Inainte de return

Fisierul returneaza: '27'

Sa presupunem acum ca main.html a fost modificat si contine codul urmator:


include( 'test.inc');

echo 'Intoarcere in main.html<br>n';

In PHP4 se va afisa:


Inainte de return

Intoarcere in main.html

Din contra, PHP3 afiseaza:


Inainte de return

27 Intoarcere in main.html

Parse error: parse error in main.html on line 5

Eroarea de analiza de mai sus este rezultatul faptului ca instructiunea return este inclusa impreuna cu test.inc in acelasi bloc. Daca instructiunea return este mutata in afara blocului, se afiseaza:


Inainte de return

27 Intoarcere in main.html

'27' arata ca PHP3 nu suporta returnarea valorilor din fisiere in acest mod.

Este important de notat ca atunci cand un fisier este inclus cu include() codul pe care il contine mosteneste domeniul variabilelor corespunzator liniei pe care apare instructiunea include() in cod. Orice variabila disponibila pe respectiva linie va fi disponibila si in fisierul inclus.

Functii

Functiile definite de utilizator

O functie poate fi definita de utilizator conform sintaxei urmatoare:


function nume_functie( $arg1, $arg2, , $argN)

Intr-o functie poate sa apara orice cod PHP valid, chiar alte functii si definitii de clase.

In PHP3, functiile trebuie sa fie definite inainte de a fi referentiate; in PHP4 nu exista o asemenea restrictie. PHP nu sustine functii de supraincarcare, nu se poate anula definirea sau redefini o functie declarata anterior.

PHP3 nu accepta numar variabil de argumente in antetul functiilor, dar accepta argumente implicite.

Argumentul functiilor

Informatiile pot fi transmise functiilor printr-o lista de argumente. In aceasta lista variabilele si/sau constantele sunt delimitate prin virgula.

PHP accepta transmiterea argumentelor prin valoare (implicit), prin referinta si argumente cu valori implicite. Listele cu numar variabil de argumente sunt acceptate doar in versiunea PHP4. Un efect similar poate fi obtinut in PHP3 transmitand functiei un tablou de argumente.

Exemplu:


function takes_array( $input)

Transmiterea argumentelor prin referinta

Implicit, argumentele functiilor sunt transmise prin valoare (in sensul ca schimbarea valorii argumentului in interiorul functiei nu se reflecta si in afara functiei). Daca doriti sa permiteti unei functii sa modifice argumentele sale, acestea trebuie transmise prin referinta.

Daca vreti ca un argument al unei functii sa fie transmis prin referinta, trebuie sa precedati cu un '&' numele argumentului in definitia functiei, ca in exemplul de mai jos:


function add_some_extra( &$string)

$str = 'This is a string, ';

add_some_extra( $str);

echo $str; // Se va afisa This is a string, and something extra.

Daca vreti sa transmiteti o variabila prin referinta unei functii care nu face acest lucru in mod implicit, trebuie sa precedati cu un '&' numele argumentului in apelul functiei:


function my_function( $string)

$str = 'This is a string, ';

my_function( $str);

echo $str; // Se va afisa This is a string,

my_function( &$str);

echo $str; // Se va afisa This is a string, and something extra.

APLICATIE PRACTICA

Exemplu de site unde utilizatorul trebuie sa se inregistreze.

Crearea bazei de date si a tabelelor necesare

Crearea bazei de date anunturi se face cu comanda:

create database anunturi;

Vom deschide baza de date, cu comanda:

use anunturi;

Vom crea apoi mai multe tabele, astfel:

Tabela useri, pentru stocarea utilizatorilor:

CREATE TABLE useri (id int(5) NOT NULL auto_increment PRIMARY KEY,usernam varchar(10) NOT NULL, pass varchar(10) NOT NULL, nume varchar(15) NOT NULL, prenume varchar(15) NOT NULL, email varchar(15) NOT NULL );

Tabela anunt, pentru stocarea anunturilor:

CREATE TABLE anunt (
idanunt int(5) NOT NULL auto_increment PRIMARY KEY,
usernam varchar(10) NOT NULL,
tip varchar(1) NOT NULL,
domeniu varchar(4) NOT NULL,
titlu varchar(100) NOT NULL,
continut varchar(255) NOT NULL,
data date NOT NULL)

Fisierele aplicatiei

INDEX.HTML

<html>

<frameset cols='250,*'>

<frame src=left.html>

<frame name=main src=main.html>

</frameset>

</html>

LEFT.HTML

<html>

<br><br>

<h2 align=center>Login</h2>

<form action=login.php method=post>

<table><tr>

<td>username<td><input type=text name=user>

<tr><td>password<td><input type=password name=pass>

<tr><td><br><td align=center><input type=submit Value='Login'>

</table>

</form>

<a href=inregistrare.html target=main>Nou??? Inregistreaza-te !</a>

</html>

LOGIN.PHP

<?php

//Conectarea la mysql

mysql_connect('localhost','root','') or die ('eroare conectare');

/*

Functia die() este folosita pentru a opri executia scriptului si pentru a printa mesajul de eroare daca functia precedenta se termina cu o eroare (in cazul nostru, daca conexiunea nu poate fi realizata).

//Selectarea bazei de date anunturi

mysql_select_db(anunturi) or die ('eroare selectare baza de date');

Construirea interogarii - extragerea utilizatorului cu username-ul transmis prin formular. Variabila $user corespunde numelui resursei de formular: <input type=text name=user>

$caut='select * from useri where usernam='$user'';

//Executarea interogarii

$rezultat=mysql_query($caut);

Extragerea valorilor in urma executarii interogarii - variabila x este un sir de elemente in care sunt depuse valorile din inregistarea gasita

$x=mysqli_fetch_row($rezultat);

$x[0] //- reprezinta valoarea extrasa din campul id

$x[1] //- reprezinta valoarea extrasa din campul usernam

$x[2] //- reprezinta valoarea extrasa din campul pass

$x[3] //- reprezinta valoarea extrasa din campul nume

$x[4] //- reprezinta valoarea extrasa din campul prenume

$x[5] //- reprezinta valoarea extrasa din campul email

Se poate folosi si functia mysqli_fetch_array()

$x=mysqli_fetch_array($rezultat);

In acest caz extragerea valorilor din rezultat se poate face prin numele campurilor:

$x

$x

$x

$x

$x

$x

$u=$x[1]; - extrag username

$p=$x[2]; - extrag parola

if($x) //- verifica existenta username-ului in tabela useri

else

echo '

<br><br>

<h2 align=center>Login</h2>

<form action=login.php method=post>

<table><tr>

<td>username<td><input type=text name=user>

<tr><td>password<td><input type=password name=pass>

<tr><td><br><td align=center><input type=submit Value=Login>

</table>

<font color=red><b>user inexistent</b></font>

</form>

<a href=inregistrare.html target=main>Nou??? Inregistreaza-te !</a>';

?>

</html>

INREGISTRARE.HTML

<HTML>

<head>

<script language='JavaScript'>

function validare()

if(document.f1.parola.value=='')

if(document.f1.nume.value=='')

if(document.f1.pren.value=='')

if(document.f1.mail.value=='')

if(document.f1.parola.value!=document.f1.parola2.value)

if(ok!=0)

document.f1.submit()

</script>

</head>

<h1 align=center>Formular inregistrare</h1><hr>

<form name='f1' action=inregistrare.php method=post>

<table align=center>

<tr>

<td>utilizator<td><input type=text name=user>

<tr><td>parola<td><input type=password name=parola>

<tr><td>confirma parola<td><input type=password name=parola2>

<tr><td>nume<td><input type=text name=nume>

<tr><td>prenume<td><input type=text name=pren>

<tr><td>email<td><input type=text name=mail>

<tr><td><br><td align=center>

<input type=button value=Ok onclick=validare()>

</table>

</form>

</HTML>

INREGISTRARE.PHP

<html>

<?php

mysql_connect('localhost','root','')

or die('Nu ma pot conecta.');

mysql_select_db('anunturi')

or die('Nu pot selecta baza de date');

$caut='select * from useri where usernam='$user''; //- interogare sql

$rezultat=mysql_query($caut) or die ('nu cauta'); //- executa interogarea

$x=mysqli_num_rows($rezultat);

/*- intoarce numarul de inregistrari rezultate din interogare

Daca exista username-ul afiseaza mesajul USER EXISTENT si incarca pagina anterioara, daca nu, adauga volorile din formular in tabela USERI*/

if($x==1)

else

?>

</html>



Politica de confidentialitate | Termeni si conditii de utilizare



DISTRIBUIE DOCUMENTUL

Comentarii


Vizualizari: 2299
Importanta: rank

Comenteaza documentul:

Te rugam sa te autentifici sau sa iti faci cont pentru a putea comenta

Creaza cont nou

Termeni si conditii de utilizare | Contact
© SCRIGROUP 2024 . All rights reserved