Agora
Media
Libraria Byblos



AgoraNews  





PC Magazine Ro  




NET Report   




Ginfo   




agora ON line   





PC Concrete   





Liste de discuții   




Cartea de oaspeți   




Mesaje   





Agora   








Clic aici
PC Report - ultimul numar aparut


IPRO - PC Magazine Romania, Ianuarie 2003
SOLUȚII PENTRU PROGRAMATORII ȘI DESIGNERII WEB

Totul despre situri dinamice

Konstantin Klyagin

Începând din acest număr colaboratorul nostru din Ucraina, Konstantin Klyagin, v-a pregătit o serie de articole despre crearea și întreținerea unui sit web dinamic.

Începem cu câteva elemente introductive, apoi vom prezenta cea mai simplă pagină web dinamică scrisă în SSI, vom descrie metodele de transmitere a informațiilor prin formulare web și vom încheia cu un exemplu de script PHP.
Internetul e plin de informații. Aici se găsesc atât muzee dedicate lui Eminescu și Pușchin, cât și concursul pentru cea mai bună imagine a pisicii făcută cu scanner-ul. Nu mă crezi? Poftim: www.mihaieminescu.ro/, www.pushkin.ru/, www.cat-scan.com/, ca să nu spui că exagerez. Chiar se găsește orice. Uneori pare a fi un loc pentru depozitat gunoiul din toată lumea, dar în realitate este o colecție de informații de orice gen, fără granițe, și exact aspectul acesta îi atrage cel mai mult pe oameni. Normal că într-un loc atât de mare se pot afla atât prostii cât și lucruri extrem de utile și câteodată chiar vitale.

Nu voi părea un mare clarvăzător dacă spun că serviciul cel mai popular din internet a fost și rămâne web-ul, între paginile căruia se poate rătăci atât un începator în ale internetului cât și un profesionist căutând ceva de care are nevoie. Web-ul se bazează pe HTML (Hypertext Markup Language), un limbaj de reprezentare a informațiilor care prin avantajele conferite de simplitate, portabilitate și legăturile hipertext, extrem de utile, a făcut ca internetul să se dezvolte atât de repede și să aibă succes.
HTML-ul este un limbaj extraordinar de simplu. Ca să creezi cea mai simplă pagină este destul să înveți doar câteva tag-uri (instrucțiuni). Apoi poți infrumuseța pagina cu javascript-uri (se învață în câteva ore cel mult) și cascading style-sheet-uri, care-ți permit să depășești limitele standard ale limbajului de bază, adică ale HTML-ului, punând mai multe culori și descriind compartamentul unor elemente în funcție de deplasarea mouse-ului, de exemplu. Totuși, deschizând ferestrele și colorând regiunile și textele de pe ecran în culori diferite nu ajungi la nivelul unui sit web care-și trăiește viața proprie, la care conținutul unei pagini depinde de datele introduse anterior de vizitator sau de informații extrase din baze de date, fișiere locale sau chiar din alte situri.

Există foarte multe moduri de a realiza conținut dinamic, atât cu ajutorul unor programe scrise aproape în orice limbaj, cât și cu tehnologii create special pentru asta. Este greșită ideea că e greu să devii programator web. De altfel, începutul este cel mai simplu. Evident că ne va trebui un server web. Deoarece sunt adeptul convins al mișcării free software și având experiență în crearea unor aplicații web destul de complexe, vă recomand Apache-ul, cel mai bun server web din lume. Este un caz aproape unic: cel mai bun program este și cel mai difuzat. Peste 60 la sută, după statistici, deci majoritatea siturilor care găzduiesc diverse servicii utilizează serverul de web Apache.

Apache-ul apare în toate distribuțiile de Linux. Alegeți-o pe oricare: Redhat, SuSE, Mandrake, Slackware, Gentoo, Debian... le găsiți pretutindeni. Chiar dacă în acest articol mă voi referi numai la Linux, există și versiuni pentru Windows care seamănă cu cea de Linux foarte mult privind configurarea și utilizarea.

Cea mai simplă metodă de creare a paginilor cu conținut dinamic o întâlnim la SSI (server-side includes). Acesta înlocuiește cuvinte cheie cu informațiile dorite. Din păcate, SSI nu poate prelucra cereri cu parametri. Iată primul nostru fișier cu conținut dinamic, index.shtml, pe care îl publicăm în directorul public_html/ din "home".

index.shtml
<html>
<b>Vrei</b> să știi ora actuală?
<b>Vezi</b> aici: <!--#echo var="DATE_LOCAL" -->,
iar în GMT acum este <!--#echo var="DATE_GMT" -->.
</html>

Aici, în loc de directivele speciale încadrate de comentarii standard HTML ("<!-" și "-->>") va apărea ora exactă, cea locală și, respectiv, în format GMT. Iar cu ajutorul tag-urilor <b> am accentuat verbele (cine știe, poate hipnotiza pe cineva ;). Fișierul are extensia .shtml pentru că vrem ca Apache-ul să îl prelucreze. Toate documentele web publicate în contul unui utilizator pot fi vizualizate la următoarea adresă: http://localhost/~<numele contului>.
Astfel, dacă lucrăm sub contul ipotetic konst, URL-ul exemplului nostru va fi: http://localhost/~konst/.
Respectiv, din exterior în loc de "localhost" se va pune numele domeniului calculatorului. Voila! Pagina din statică a devenit "vie" - de fiecare dată când o descarcăm ne arată ora exactă. Minune? Încă nu, căci cele adevărate doar urmează.

CGI
Special pentru conectarea dintre un server web și programele care deservesc solicitările a fost inventată o interfață standard - CGI (common gateway interface), care permite ca programele să fie lansate și controlate de către serverul respectiv. De asemenea, nu este obligatoriu să folosești biblioteci speciale, și de aceea programele pentru web pot fi scrise în orice limbaj.
Nu ne vom complica cu instrumentele serioase cum ar fi C/C++, Java sau Perl, ci vom scrie un program care folosește standardul CGI în shell (analogul limbajului fișierelor .bat din DOS și Windows, însă mult mai avansat).

numbers.sh
#!/bin/sh
IFS="&"
for i in $QUERY_STRING; do
if test `echo "$i" | grep ^n=`; then
n=`echo "$i" | awk '{ print substr($0, 3) }'`
elif test `echo "$i" | grep ^msg=`; then
msg=`echo "$i" | awk '{ print substr($0, 5) }'`
fi
done
actual=$(($n))
anterior=$(($actual-1))
urmator=$(($actual+1))
cat <<EOF
Content-type: text/html
<html>
<center>
Numărul actual este <b>$actual</b>.
EOF
if test ! -z "$msg"; then echo "Ultima dată ați ales <b>$msg</b>."; fi
cat <<EOF
<br>
<a href="numbers.sh?n= ${anterior}&msg=anterior">Anterior<a>
<a href="numbers.sh?n= ${urmator}&msg=urmator">Următor<a>
</center>
</html>
EOF

Publicăm fișierul în directorul cgi-bin/ din "home".

Metode de transmitere a parametrilor: GET
Pe pagină, apăsând pe link-uri vedem numărul care crește sau se micșorează în funcție de ce am ales. Fiți atenți că de fiecare dată script-ul se referă la sine transmitând parametrii după semnul "?" în URL. Fiecare parametru constă din nume și valoare, separate de semnul "&". Această metodă de transmitere a parametrilor în URL se numește GET. În acest caz programul primește parametrii prin variabila de mediu cu numele standard QUERY_STRING, care de fapt nu este singura care ne poate interesa. De exemplu, variabila HTTP_USER_AGENT conține numele browser-ului folosit de vizitator, iar REMOTE_ADDR - adresa lui de IP.

Metode de transmitere a parametrilor: POST
A doua metodă de a transmite parametri se numește POST. Diferența apare atunci când trebuie să transferi multă informație printr-un formular online. POST-ul ne permite să transferăm cantități de informație mai serioase, fișiere sau texte lungi, ca de exemplu, capitolele din "Capitalul" lui Marx. În această metodă programul primește datele din unitatea standard de intrare ("stdin" în C, "cin" în C++, s.a.m.d.). Formatul parametrilor însă rămâne la fel ca și la GET.

Diferența între cele două metode la nivelul unui program CGI se face de obicei după valoarea din variabila de mediu REQUEST_TYPE, care conține cuvântul GET sau POST în funcție de metoda folosită. În primul caz se citesc parametrii din QUERY_STRING, iar în cel de-al doilea citim datele de la intrarea standard.

PHP
Pentru a ușura munca programatorilor, au fost scrise diverse biblioteci de funcții și au fost inventate noi limbaje de programare. Poate cel mai eficient și, în același timp, cel mai simplu dintre ele este PHP, un acronim recursiv pentru "PHP: Hypertext Preprocessor".

Deci, prin ce se remarcă PHP-ul ăsta? Mai întâi, într-adevăr fascinant este că toate funcțiile utilitare, inclusiv cele pentru legarea la baze de date, sunt deja integrate în bibliotecile standard ale limbajului. Chiar dacă PHP permite scrierea de aplicații mai avansate decât CGI-urile obișnuite, nu necesită configurări speciale pentru ca script-urile să poata fi executate, spre deosebire de CGI-uri.

Situl oficial al PHP-ului este http://www.php.net/. Găsim aici atât un manual pentru începători cât și sfaturi, documentații avansate și anunțurile unor evenimente mari din lumea programatorilor în acest limbaj. De asemenea, lista cu toate funcțiile din limbaj se află la http://www.php.net/manual/.
În finalul acestui articol voi prezenta un scurt exemplu de script PHP, urmând ca în numerele viitoare să facem cunoștință cu metode avansate de programare pentru web și cu sistemul de gestiune a bazelor de date MySQL.
Deci, cum scriem un document în PHP? Voi rescrie exemplul anterior, cu cifrele, în acest limbaj.

numbers.php
<html>
<center>
Numărul actual este
<b><?php
if(empty($n)) $n = 0;
echo($n);
?></b>.
<?php
if(!empty($msg)) echo
("Ultima dată ați ales <b>$msg</b>.");
?>
<br>
<a href="numbers.php?n=<?= $n-1 ?>&msg=anterior">Anterior<a>
<a href="numbers.php?n=<?= $n+1 ?>&msg=urmator">Următor<a>
</center>
</html>

Codul scris în limbaj PHP și elementele de HTML se pot amesteca în orice ordine, dacă includem codul PHP între "<?php", și "?>".

Observați variabila $n? Nu este o variabilă obișnuită, pentru că nu se definește nicăieri în script. Aceasta e metoda de transmitere a unui parametru. Parametrii se pot accesa astfel numai dacă variabila de configurare register_globals din /etc/php.ini este setată "on". Altfel, parametrii CGI (am descris mai sus cele două metode - POST și GET) se accesează cu ajutorul masivelor $HTTP_GET_VARS[] și $HTTP_ POST_VARS[] în funcție de metoda de transmitere a parametrilor aleasă.


PC Magazine Ro | CD ROM | Redactia | Abonamente | CautareArhive

Copyright © 1999-2002 Agora Media.

[email protected]

LG - LifeŽs Good

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro