Pagina principala
Informatii
Internationalizarea
pROgrame KDE/Qt
Download
Documentatii
Despre LKR
Contact
Resurse
Harta site-ului

PHP - Campionul din umbra


   Claudiu Costin
   29 iunie 2000

Introducere

Tendinta de globalizare si circulatia informatiei prin Internet au determinat schimbari radicale in viata oamenilor. Mai mult in viata celor care traiesc in partea de "vest" a lumii. Si in Romania se fac simtite "replicile" acestui val Tsunami al informatiei. Paginile HTML reprezinta sursa principala de informatii din Internet. Exista demult suport pentru "client-side scripting", implementat cu JavaScript. Insa, in contextul actual al dinamismului si interactivitatii, surfer-ul nu mai asista pasiv la citirea unei pagini de Web, ci isi poate exprima opiniile, poate selecta ce informatii sa-i fie prezentate regulat la vizitarea unui site sau poate face cumparaturi intr-un magazin virtual. Toate aceste facilitati sunt oferite prin folosirea bazelor de date si a limbajelor de scripting executate pe server-ul de web. ASP si Cold Fusion sint doua dintre acestea, disponibile comercial. Concurentul OpenSource al acestora este PHP. Ce este PHP-ul? El este un limbaj de scripting ce combina concepte de Perl, Java si C, facind invatarea acestuia o joaca. Pentru a deveni productiv nu sint necesare decat cateva zile de lucru. Ajuns la versiunea 4, PHP a crescut exploziv anul trecut. De la un numar de zeci de mii de site-uri, in scurt timp a fost depasita bariera de 500.000, concurand de la egal la egal produsele comerciale. Trioul format din PHP (limbaj de scripting server-side), MySQL (server de baza de date) si Apache (server de web) a luat pe neasteptate orice predictii. Slashdot, Freshmeat, LinuxToday sint numai unele dintre site-urile importante care utilizeaza PHP. Peste 700 de functii sint disponibile, incluzand interfete pentru cele mai populare baze de date, suport XML, generare dinamica de imagini si documente PDF, PHP compilandu-se sub o multime de variante Unix si sub Windows.

Instalare

Mai intii trebuie sa obtineti sursele MySQL (http://www.mysql.com), PHP (http://www.php.net) si Apache (http://www.apache.org). Primul pas este sa va asigurati ca aveti vreo 70 Mbytes liberi si sa dezarhivati pachetele intr-un director de lucru temporar:

tar xfz mysql-3.22.32.tar.gz
tar xfz apache_1.3.12
tar xfz php_4.0b4pl1.tar.gz

Compilarea MySQL nu ridica nici un fel de probleme daca aveti toate librariile necesare. Executati simplu:

./configure --prefix=/usr/local ;
make ; make install

in directorul surselor MySQL. Dupa o perioada de timp destul de lunga, compilarea si instalarea se termina si trebuie creata baza de date necesara la autentificarea utilizatorilor. In directorul de baza ale surselor MySQL executati scriptul:

scripts/mysql_install_db

si apoi porniti server-ul cu comanda:

/usr/local/bin/safe_mysqld &

Este evident ca nu o sa faceti acest lucru de fiecare data astfel incit este bine sa instalati un script care se va executa la pornirea sistemului:

cp support-files/mysql.server.sh /etc/rc.d/init.d/mysql
chmod +x /etc/rc.d/init.d/mysql
chkconfig --level 3 5 mysql on

Verificati ca totul este in regula conectindu-va la baza de date cu clientul mysql si executati citeva comenzi SQL. Trebuie sa retineti ca, implicit, baza de date nu este protejata. Daca doriti sa o conectati sau sa dezvoltati aplicatii Internet trebuie obligatoriu sa definiti drepturi si utilizatori care au acces la ea.

Aveti doua optiuni de compilare pentru PHP: ca aplicatie CGI sau ca modul de Apache. Va recomand cea de-a doua optiune deoarece nu da batai de cap prea multe, dar ofera si mai multa flexibilitate. Mai intai intrati in directorul de baza al surselor Apache si executati:

./configure
Atentie, nu scrieti nici un parametru in linia de comanda! Din acest moment se poate trece la configurarea compilarii PHP. Pentru aceasta, intrati in directorul surselor PHP si executati:
./configure --with-apache=../apache_1.3.12 \
 --with-mysql --enable--trackvars --with-ftp

Puteti compila suport LDAP si XML (daca aveti librariile corespunzatoare instalate) adaugind la linia de comanda de mai sus optiunile:

--with-ldap --with-xml

Dupa se termina configurarea, in mod clasic, executati:

make
make install

Ultima comanda copiaza libraria PHP generata in structura de directoare a surselor Apache, pentru a fi convertita in modul la compilarea serverului de web. Treceti in directorul surselor Apache si executati linia de comanda (tot textul reprezinta linia de comanda!):

./configure --prefix=/usr/local --enable-module=all\
 --activate-module=src/modules/php4/libphp4.a

Compilarea si instalarea Apache si implicit a PHP se face executand:

make; make install

Singurul pas ramas este configurarea server-ului de web si a PHP. Cu editorul preferat deschideti fisierul /usr/local/conf/httpd.conf. Decomentati (adica eliminati caracterul #) liniile urmatoare:

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

In acest fel Apache este invatat ca fisierele cu extensia .php trebuie date spre executie modulului PHP. Cautati linia: DirectoryIndex index.html si inlocuiti-o cu DirectoryIndex index.html index.php . Acest lucru va determina Apache sa caute si fisiere index.php ca fisiere index in directoarele in care nu precizati adresa URL completa (exemplu: http://www.situl-meu.ro/director/). Este timpul sa porniti server-ul Apache:

/usr/local/bin/apachectl start

Ar fi bine sa scrieti aceasta linie in fisierul /etc/rc.d/rc.local pentru a porni automat Apache-ul la startarea Linux-ului. Pentru a testa ca PHP functioneaza corect, creati un fisier ce contine linia:

<?php phpinfo(); ?>

si copiati-l in /usr/local/htdocs/ sub numele test.php. Porniti Netscape sau KFM din KDE si la locatie scrieti http://localhost/test.php. Daca totul merge bine veti obtine o pagina frumos colorata si o multime de informatii despre Apache si PHP.

PHP - intalnire de gradul III

A venit momentul sa facem ceva mai complex de o linie. Mai intai sa cream o tabela in baza de date test. Porniti programul client mysql si executati comenzile urmatoare:

use test;
create table angajati (id int(8), nume char(30), salariu float(10,2));
insert into angajati values (1, 'Popescu Ion', 2200000);
insert into angajati values (2, 'Ilie Adriana', 1500000);
insert into angajati values (3, 'Constantin Florin', 3500000);

Pentru a va asigura ca datele dumneavoastra sint inregistrate corect afisati-le cu comanda: select * from angajati;. Sa facem acum un script PHP care citeste tabela angajati si ii afiseaza continutul intr-o pagina de web generata dinamic. Creati fisierul /usr/local/htdocs/exemplu1.php si scrieti:

<html>
<head>
<title>Exemplu1</title>
</head>
<h1>Angajati</h1>
<table border=1>
<?php
  // ma conectez la baza de date
  $conn=mysql_connect("localhost","root","");
  mysql_select_db("test",$conn);
  /* execut interogarea dorita */
  $rezultate=mysql_query("SELECT * FROM angajati",$conn);
  // extrag si afisez rezultatele interogarii
  while ($linie = mysql_fetch_row($rezultate)) {
     echo "<tr>\n";
     echo "<td>$linie[0]</td>\n";
     echo "<td>$linie[1]</td>\n";
     echo "<td>$linie[2]</td>\n";
     echo "</tr>\n";
  }
?>
</table>
</html>

Acum puneti browser-ul dumneavoastra sa afiseze http://localhost/exemplu1.php si veti obtine pagina din imaginea alaturata. Iata o scurta explicatie a liniilor de cod. Daca aveti ceva experinta de programare ati sesizat imediat ca PHP suporta toate stilurile de comentarii: Perl, C si C++. De asemenea, codul este inclus direct printre liniile HTML, incadrandu-l intre tagurile <?php si ?>. Nu conteaza de cite blocuri PHP includeti in pagina. Variabilele incep cu semnul $ (dolar) si pot fi scalare, array-uri, clase si altele. In prima linie incerc conectarea la baza de date MySQL precizind numele calculatorului gazda, numele meu de cont si parola de conectare (in acest exemplu este nula). Functia returneaza un identificator de conexiune pe care il voi folosi in operatiile urmatoare. Urmatorul pas este sa ma conectez la baza de date care gazduieste tabela de angajati, utilizand functia mysql_select_db(). Atentie, este nerecomandat sa schimbati baza de date curenta pe parcursul executiei unui script! Rezultatele sunt imprevizibile. Acestea fiind precizate, pot executa orice interogare doresc. Cea mai utilizata functie pentru accesul bazelor de date de catre programatorii PHP este bineinteles mysql_query(), care primeste ca parametrii textul interogarii si identificatorul de conexiune. Deoarece eventualele date rezultate pot fi imense, executia unei interogari returneaza un identificator pentru blocul de rezultate. Extragerea lor poate fi facuta cu o multime de functii. Dumneavoastra o veti folosi pe cea pe care o considerati adecvata aplicatiei. In acest caz am folosit mysql_fetch_row() care returneaza un array, ale carui elemente constituie o inregistrare din baza de date . Ciclul while se executa atata timp cit pot extrage inregistrari rezultate din interogare. Afisarea de texte sau generarea dinamica de cod HTML este facuta de functia echo. Ea este identica cu functia print din Perl. Elementele pentru coloanele ID, NUME si SALARIU le accesez folosind indexarea in array-ul $linie.

Trusa cu scule

Exista numeroase site-uri ce ofera scripturi PHP, majoritatea acestora fiind contributii OpenSource. Un start bun in invatare este sa instalati documentatia HTML a PHP si sa cumparati o carte de SQL. De asemenea, instalati si manualul MySQL (tot HTML), si incercati sa sesizati particularitatile lui, deoarece nu exista servere SQL care sa se comporte identic. Exista o lista de discutii romaneasca moderata unde se discuta pe teme de HTML, PHP si multe alte lucruri legate de webdesign. Trimiteti un email gol la webexpert-subcribe@egroups.com si considerati-va binevenit in comunitatea design-erilor HTML. Pentru a va usura munca de scriere de cod PHP, instalati editorul nedit si luati de pe acelasi site si fisierele de configurare pentru evidentierea codului PHP-HTML. Intrebati orice programator PHP-MySQL si va va spune entuziasmat ce utilitare grozave sint kmysqladmin si kmysql. Instalarea acestora ar trebui sa fie cel de-al doilea pas dupa instalarea PHP, MySQL si Apache.

Tiberiu Craciun a creat kphpdev, un mediu de dezvoltare ce se vrea o replica la un produs similar facut de Microsoft. Desi proiectul este la inceput, exista posibilitatea de lucru simultan la acelasi proiect a mai multor programatori, functioneaza un client MySQL integrat, un editor PHP si un sistem de administrare a proiectelor. Trebuie sa obtineti arhivele .tgz pentru kphpdev, kphpdev_server si kphpdev_server_setup. Daca doriti sa invatati HTML si sa lucrati productiv site-uri, instalati imediat Quanta+. Acesta este un editor HTML integrat care se adreseaza in acelasi timp incepatorilor si profesionistilor si a fost creat de Yacovlev Alexander si Dmitry Poplavsky.

Resurse