PHP vs CGI



      Indiferent unde te uiti pe Internet, se pare ca toata lumea vorbeste astazi despre PHP. Acesta a devenit un limbaj cu un numar din ce in ce mai mare de furnizori de spatiu Internet care ofera si suport pentru el.Dar ce este PHP-ul si de ce este atat de important?
      Iata o intrebare la care ne propunem sa raspundem pe parcursul acestui documentar realizand de asemenea si o comparatie intre PHP si scrierea script-urilor in Perl.       

PHP Hypertext Preprocessor

   Sau pe scurt PHP, este un limbaj de scripting care este rulat pe server. Poate fi inclus in servere web ca Apache si poate fi folosit pentru a genera pagini in mod dinamic.

   De ce este atat de important?
   Desi poate fi realizat acelasi program utilizand Pearl/CGI avantajul utilizarii PHP este acela ca el a fost realizat special pentru programarea web. Conectarea la o baza de date si interogarea acesteia se poate realiza in 2-3 linii de cod. PHP a fost optimizat in ceea ce priveste obtinerea unui timp de raspuns rapid, necesar in aplicatiile web, deci web site-ul este sensibil la cerintele utilizatorului. Deoarece este "open source" poate fi dat jos si setat in functie de necesitati. La fel ca Perl, Linux si Apache Web Server este gratuit. MySQl poate fi gasit si el in versiune gratuita, in concluzie exista oportunitatea de a integra toate aceste tehnologii pentru a realiza un site foarte frumos cu un continut dinamic.

      

Common Gateway Interface (CGI)

   Este un protocol proiectat pentru a realiza transmisia informatiilor de la un browser la server si invers. Pentru o perioada, a fost singura solutie pentru realizarea datelor in mod dinamic pe site-uri web.
Perl este limbajul ales pentru implementarea CGI pentru ca punctul lui forte consta in procesarea textului, atat de necesara pentru a lucra cu toate tipurile de informatie.

   Pentru un cunoscator al limbajelor C, C++, Perl, Java sau Javascript probabil ca va fi usor sa se obisnuiasca si cu PHP. De fapt, probabil ca va putea scrie imediat cateva script-uri. PHP foloseste variabile fara tip ca si Perl, precedate de semnul "$" si pastreaza orice fel de date se doresc. De exemplu, $orice poate fi o variabila care sa contina un sir, un numar, sau orice alt tip de variabila. Daca $orice contine un numar, valoarea lui poate fi incrementata folosind


$orice++;

sau

$orice += 1;

sau

$orice = $orice + 1;

      

Facilitati incluse

      Spre deosebire de Perl, care este un limbaj de scripting de uz general, ce poate fi folosit pentru o varietate de scopuri (si nu doar pentru generarea de pagini web), PHP a fost construit pentru a fi folosit exclusiv in paginile web. Ca un rezultat, are multe facilitati incluse in el, pe care ar trebui sa fie scrise sau sa se foloseasca module gata scrise, daca folosim Perl.
      De exemplu, pentru trimiterea unui e-mail cu datele dintr-un formular de pe propria pagina de web In Perl, am avea un cod asemanator cu urmatorul:

open ( MAIL,"|/usr/sbin/sendmail -t");
print MAIL "To: mie\@nume.ro\n" ;
print MAIL "From: vizitator\@numele_lui.ro\n" ;
print MAIL "Subject: Comentarii din pagina Web\n\n" ;
print MAIL $mesaj ;
close ( MAIL ) ;

In PHP, acelasi program ar fi scris in felul urmator:

      mail ( "mie@nume.ro", "Comentarii din pagina Web",$mesaj, "From: vizitator@numele_lui.ro" );

      Interesant, nu?
      Acelasi lucru este valabil si pentru alte facilitati, ca trimiterea sau primirea unui document cu ajutorul HTTP sau FTP, etc. Deoarece PHP a fost construit special pentru Web, facilitatile de care au de obicei nevoie programatorii web sunt deja incluse in el.

      Alt avantaj consta in manipularea datelor din formulare. Sa consideram un formular simplu:

            <input type=text name="data_nasterii">

      Datele din acest camp pot fi accesate imediat folosind variabila $data_nasterii. Nu este nevoie sa se analizeze datele trimise de formular. Toate campurile din formular sunt convertite automat in variabile pe care le putem accesa.
      Accesarea unei baze de date este la fel de usor de realizat. Exista functii pentru accesarea MySQL, MSQL, Dbase, Oracle, InterBase si lista continua. Evident, nu poate fi amintita intreaga lista; ar trebui o carte pentru a fi completa.
      

Generarea paginilor Web

      Implicit, tot ceea ce se scrie intr-un fisier PHP este trimis cuvant cu cuvant browser-ului. Un script simplu poate arata ca in randurile urmatoare:

<head>
<title>Primul meu script PHP</title>
</head>
<body>
<h1>Primul meu script PHP</h1>
Bine ai venit, vizitatorule cu adresa IP
<?echo $REMOTE_ADDR?>.
Sper ca iti place prima mea pagina PHP.
</head>
</html>

      Se poate remarca faptul ca arata exact ca o pagina HTML, exceptand marcajele <? si ?>, intre care se afla un script PHP. In acest caz, tot ceea ce dorim este ca script-ul sa tipareasca adresa IP a vizitatorului. Pentru aceasta se poate folosi functia "echo". Variabila de mediu a serverului REMOTE_ADDR este generata automat (ca toate celelalte variabile de mediu).
      Exista mai multe moduri pentru a include script-urile PHP intr-o pagina Web, sau chiar mai multe moduri de a desena pagina insasi.
Faptul ca PHP a fost construit special pentru paginile Web face ca scrierea de script-uri sa fie o sarcina placuta.

      

Corectarea erorilor

      In incercarea de a corecta erori online, se poate constata ca PHP straluceste si la acest capitol.
      De obicei, cand apare o eroare intr-un script CGI Perl, apare in browser un mesaj criptic de genul "500 Internal Server Error".
      In cazul script-urilor PHP, se obtin mesaje de eroare care arata linia in care a aparut eroarea. Totusi eroarea este si aici un mesaj criptic de genul "parse error", asa ca va trebui si aici intuita problema. Dar cel putin este localizata eroarea.
Oricum corectarea erorilor in PHP este mult mai lesne decat in script-urile CGI Perl, unde o eroare "Internal Server Error" poate apare dintr-un numar mare de cauze, de la o eroare de sintaxa la un simplu caz in care s-a uitat sa se dea drepturi de citire asupra unui fisier, sau s-a transferat in mod binar si nu in mod text.
      In cazul corectarii offline a erorilor, apar alte considerente. Unii programatori gasesc ca interpretorul Perl genereaza mesaje mai folositoare spre deosebire de cel PHP, care tinde sa eticheteze multe lucruri drept "parse error". Aceasta se poate schimba, pe masura ce noi interpretoare PHP sunt create.

   Inainte de a se face trecerea la PHP trebuie luate in considerare urmatoarele:
  1. Nu toti furnizorii de spatiu Web ofera suport pentru PHP. Este adevarat ca multi nu ofera nici acces CGI, insa numarul celor ce nu furnizeaza PHP este chiar mai mic.
  2. Ca toate limbajele de scripting (inclusiv Perl), corectarea erorilor poate fi extrem de greu de efectuat daca nu este instalat local programul necesar. Altfel, vor fi necesare multe ore online, pentru testarea si corectarea script-ului.
  3. Nu este un limbaj cu scopuri generale. In timp ce are incluse multe facilitati pentru crearea paginilor Web, PHP nu este Perl (sau C sau C++ sau Java).

Aceasta lucrare de cercetare a fost realizata de:
  • Soare Diana, grupa 5.2
  • Sabolovits Ciprian, grupa 5.2
  • Porime Alina, grupa 5.2
©2003 Tehnologii Internet - Lucrare de cercetare