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.

webmaster@pcmagazine.ro

LG - Life´s Good

deltafri

Concurs de Grafica Digitala si Web Design

www.agora.ro

www.agora.ro