Pagini Web cu Aplicatii Dinamice

Introducere

Pentru a putea elabora conceptele de construcție a paginilor web, voi prezenta scurt, cateva date referitoare la fenomenul de internet si despre cum a luat naștere.

Internetul este o rețea formata din mai multe rețele, cu ajutorul careia căreia calculatoarele, și telefonia mobilă lucreaza, ele folosindu-se de o serie de protocoale. Aproape fiecare persoana se poate conecta utilizând propriul calculator personal, la internet, comunicând imediat cu alte calculatoare sau utilizatori.

Fenomenul de Internet a apărut ca un experiment de realizare a unei rețele viguroase de calculatoare, pe la sfîrșitul anilor 1960. Ideea era de a se forma o rețea de calculatoare care ar rezista pierderii a câtorva dintre ele fără a pune in pericol posibilitatea de a rămîne unul pentru comunicare. Astfel încât, Ministerul Apărării ale Statelor Unite (U.S. Department of Defence) a fost foarte interesat de construirea unei rețele informaționale care ar rezista unui atac nuclear.

        Prin urmare acea rețea a avut un succes uimitor, dar a fost limitată ca mărime și întelegere. În mare parte, doar anumite persoane din cadrul instituției academice puteau avea acces la aceasta rețea, fiind cunoscută și ca ARPANet (Advanced Research Projects Agency Network of the Department of Defence).

        Cu ajutorul modemurilor pentru comunicație și prin intermediul liniei telefonice, câteva persoane și organizatii, s-au interconectat, realizând o rețea de comunicații globală.

La inceputul anilor 1990, cîțiva oameni de afaceri și alte persoane, nerăbdătoare de a profita de acest mijloc de informație, în final au influențat ca marea rețea de calculatoare, care era, în majoritate, deținută de Guvernul Statelor Unite,  să poată fi folosită pentru un trafic de informații deschis și nerestrictiv de catre toata lumea. WWW sau World Wide Web, în română însemna "pânză răspîndită în lumea toata", cunoscută și ca Web, este format dintr-un limbaj special și din pachete de instrucțiuni(sau protocoale ce ajută la trimiterea, primirea și afișarea informațiilor gasite pe Internet. Protocoalele folosite sunt cunoscute sub denumirea de HTTP (Hyper Text Transfer Protocol). Mulți își imaginează ca Web-ul nu este o entitate fizică, o mai bună asemănare ar fi să ne gîndim că Internetul nu este altceva decât o rețea telefonică, iar W.W.W. este modul în care telefonul nostru reușește să contacteze un alt telefon. Internetul este o rețea fizică, iar W.W.W. este modalitatea de folosire a rețelei.

Primul element fundamental al World Wide Web-ului, este HTML-ul (Hypertext Markup Language). El ne descrie principalul format, cu care documentele sunt imparțite și văzute pe Web. Multe din caracteristicile lui, cum ar fi independentă față de platforma, structurarea formatării și legăturile hypertext, fac din el un foarte bun obiect de formatare pentru documentele de pe Internet și Web.

WWW este un sistem distribuit hipermedia(diverse legaturi dintre documente și obiecte multumedia), funcționând în modul client-server prin Internet. Sistemul pune la dispoziție informațiile sub forma de hypertext (mixtura între text, grafică, elemente multi-media, plus referințe încrucișate). Hypertext reprezinta orice cuvânt, propoziție, imagine sau alt element al documentului, văzut de un client(sau utilizator) ce poate face referință la un alt document, lucru care ușurează mult navigarea între mai multe documente sau chiar în interiorul aceluiași document. Structurarea amanunțita a documentelor permite transformarea acestora dintr-un format în altul , de asemeni și interogarea unor baze de date formate din aceste documente.

Capitolul 1

HyperText Markup Language

-HTML-

1.1. </DIV>Alcatuirea elementelor arhitecturale si terminologii WEB

Vom defini în continuare cîteva concepte specifice arhitecturii și terminologiei WEB.

Ce este rețeaua? Rețeaua reprezintă un ansamblu de două sau mai multe calculatoare ce comunică între ele. Ele sunt împarțite în 2 grupuri: rețele locale și rețele pe arii extinse.

Retele locale sau LAN(local area network) conectează calculatoarele care sunt aproape unul de celalalt din punct de vedere fizic.

Retele pe arii extinse sau WAN(wide area network) conectează calculatoare aflate în orașe, regiuni sau țări diferite.

Internetul este o rețea publică, ce a ajuns sa fie utilizata la un nivel planetar, fiind alcătuită dintr-o combinatie de rețele de diverse complexități și configurații și reprezentând suportul de comunicație pentru web și include diverse servicii.

Intranetul reprezinta rețeaua privată ce aparține unei companii care îi permite acesteia să folosească unelte Internet cum ar fi poșta electronica , navigație sau imparțire de fișiere, dar numai și numai in cadrul aceleiași rețele.

Host(sau gazda) reprezinta un punct de lucru, o gazdă vizibilă pe Internet. Fiecare gazda are o adresa asociata IP(internet Protocol) care este unica, dar și un nume.

Web (sau www) reprezinta o adunare de miloane de documente conectate între ele , aflate pe calculatoarele din întreaga lume.

Conectarea la internet se face prin intermediul unui modem (telefonic sau radio), în cazul acesta este nevoie de un cont creeat de un furnizor de servicii Internet (ISP – Internet Service Provider) sau cu ajutorul unei rețele care are acces la Internet prin intermediul unui Server. Pentru a putea naviga pe Internet, avem nevoi de un browser pentru internet. Acestea sunt programe interactive care permit vizualizarea documentelor, textelor, imaginilor, aplicatiilor media. Cele mai des folosite sunt: Google Chrome, Mozilla Firefox, Opera, Internet Explorer, Mosaic, etc.

Hipertext este o colecție de documente, denumite noduri, ce sunt legate între ele, formând o rețea, în care legăturile asemanatoare referințelor bibliografice, dar pot afișa bucle și structura se transforma intr-una neliniară.

Protocolul inseamna o combinație de reguli de comunicație care trebuiesc respectate de calculatoarele din rețea pentru a comunica ușor. Regulile de comunicație sunt parte a definiției protocolului.

HTTP (sau HyperText Transfer Protocol) reprezinta un protocol creeat special pentru Web.

       Protocolul este format dintr-un set de reguli știute de utilizatorii celui care îl întrebuințează. Utilizatorii tipici sunt 2 programe ce comunica, formați din client și serverul WEB.

Caile unei tranzacții sub protocolul HTTP se formeaza prin 4 faze :

-conectare;

-cerere;

-răspuns;

-închidere.

   Pagina Web este un dosar ce conține etichete(sau tag-uri) HTML și text ASCII. Pe masură ce browserul citește tagurile HTML, ele sunt utilizate pentru formatarea textului. Când browserul gasește o eticheta corespunzatoare unui element grafic, solicită serverului o copie a dosarului grafic corespunzător. De fiecare dată cînd browserul gasește o referință grafică, trimite cererea către server pentru dosarul grafic respectiv.

HTML vine de la HyperText Markup Language, care este un limbaj de marcare a hypertextului, descriptiv și utilizeaza etichete. El este folosit pentru crearea documentelor cu hyperlegături (hyperlinks). Este derivat din SGML(Standard General Markup Language), se poate folosi pe orice sistem de operare și este independent de componentele hadware.

Tag-urile sau etichetele, sunt identificatori formați din cuvinte ce pot fi citite(adica text ASCII), așezate în puncte bine stabilite în interiorul documentului Web.

URL sau Uniform Resource Locator este un localizator uniform de resurse. El identifică resursele, care sunt în final, fișierele.

Scopul este de minimizarea documentelor cu informații pe care le poate folosi un program Web pentru gasirea unui obiect. După ce acesta a fost gasit, URL-ul nu mai are nici o sarcina.

Dacă uitam sa selectam portul, el va lua automat valoarea 80. In cele mai multe cazuri, lipseste partea de cautare, ea fiind apelată mai mereu cu ajutorul link-urilor, fiind vizibile în in momentul cautarii pe internet, cu ajutorul motoarelor de cautare,când va apărea scris în câmpul pentru adresă.

Cele mai des folosite protocoale sunt :

http: protocol de transfer hypertext;

ftp: protocol de transfer dosare;

mailto: adresă de poșta electronică;

file: nume fișier local.

1.2. Tehnologii de elaborare a paginilor WEB

În acest compartiment se descriu tehnologiile utilizate în elaborarea proiectului dat. HTML, Java Script și PHP sunt standardele folosite în acest proiect. Indispensabil în crearea paginilor Web, HTML este un descendent al limbajului SGML, folosit pentru dezvoltarea de documente hiper-text accesibile prin Internet. Acest punct trece în proiect o serie din caracteristicile, implementările și tendințele acestui limbaj.

1.2.1 Llimbajul Word Wide Web-HTML

În același timp cu lansarea Internetului pentru uzul public,câțiva dintre fizicienii de la CERN, (The European Particle Physics Laboratory) au creeat un limbaj cu ajutorul căruia se puteau distribui și vizualiza aplicații multimedia și documente, pe Internet. Așa au luat naștere HTML-ul(Hyper Text Markup Language), browser-ele și WWW-ul. Nu a durat mult timp pană cand autorii au inceput să distribuie creearea lor sub forma unor colecții de fotografii, sunete și documentatie. HTML-ul unește această formă de prezentare a informației, făcând posibilă o prezentare cât mai atractivă. Mai mult chiar, în sistemul WWW prin simple link-uri se pot accesa informații din orice colț al lumii.

1.2.2. Prezentarea generală a limbajului HTML

Documentele HTML le gasim ,în general, pe Web, ele fiind independente de platformă și de aplicație si conțin identificatori de marcare, descriptivi, anume, etichete(tags).

<Tag>urile în HTML, definesc structura documentului și infațișarea lui, în momentul în care browserul îl interpreteaza. Oferă identificatori care îndruma programele de căutare din Web, catre zone specific(zone cheie) din document.

Tagurile sunt, nimic altceva decât niște simple texte ASCII fiind delimitate de simbolurile "<" și ">".

Forma generală este <tag> [atribut] [text obișnuit] </tag>, dar putem întalni și etichete pentru care tagul de sfârșit lipsește.

        În afară de etichete, HTML mai conține și informație de entitate caracter care ajută la reprezentarea caracterelor speciale. Acestea încep întotdeauna cu "&", sunt sensibile la tipul de literă (majuscule sau minuscule) și se termină mereu cu ";".

Utilizarea tagurilor se face cu urmatoarele reguli: numele tagului nu trebuie să depaseasca 72 de caractere, nu este sensibil la tipul de litera și poate conține atribute care furnizează informații suplimentare, dar acestea se separă prin spațiu, de numele etichetei.

Structura unui document HTML este formată din declarația de tipul ” < !DOCTYPE HTML xxxxxx> care ofera elemente specifice documentui, antetul HEAD si corpul BODY

1.2.3. Tag-uri de bază

        Fiecare document este marcat de tagul de început <HTML> și cel de sfîrșit </HTML>. Acestea sunt opționale dar este foarte bine dacă folosirea lor devine un obicei, deoarece informeaza programele client că documentul este de tip HTML.

Sintaxa Head are următoarea formă <HEAD> </HEAD> și conține informații despre titlu și legate de subiectul general al documentului. Poate fi format la randul lui din TITLE, META și BASE.

-Elementul TITLE folosește sintaxa <TITLE> nume fereastră </TITLE>, fixeaza titlul documentui care trebuie să aiba cel mult 64 de caractere. El se regăsește numai în secțiunea HEAD și va fi afișat in bara de titlu a browser-ului.

Elementul META folostește sintaxa <META name="nume" CONTENT="conținut" >, care conține descrierile si cuvintele cheie care vor fi interpretate apoi, de către browsere.

Elementul BASE are sintaxa <BASEREF=http://www.coverbooks.ro> și utilizata în interiorul documentului, face referire la o adresa Web, folosind construcția ”html/dir1”, atâta vreme cât adresa de bază este stabilită de elementul BASE în secțiunea HEAD a documentului. Valoarea dată de HREF, în interiorul tagului BASE trebuie să fie un URL absolut.

Elementul BODY este porțiunea cea mai consistenta a orcărui document HTML. Are sintaxa

<BODY atribut >

Atributele pentru BODY sunt

</BODY>

Poate conține următoarele elemente:

Headings:H1, H2, H3, H4, H5, H6;

Lists: UL, OL, DIR, MENU, LI, DL, care include DT si DD;

Elemente de formatare a textului: I, B, U, BIG, SMALL, SUB, SUP, FONT, BASEFONT, BR, HR;

Recipiente de text: P, PRE, ADDRESS, BLOCKQUOTE, CENTER;

Comentarii:<!…text obișnuit…>;

Text obișnuit;

Tabele: TABLE, CAPTION, TR, TH, TD;

Formulare: FORM, INPUT, TEXTAREA, SELECT;

Alte elemente: A, IMG, CODE, CODEBASE, APPLET, MAP.

Caracteristicile specificate în cadrul tag-ului de început sunt:

BACKGROUND: locatia imaginii de fundal, poate fi numai un fișier .jpg sau .gif;

BGCOLOR: #RRGGBB- culoarea fundalului în caz că nu se specifică caracteristca BACKGROUND sau fișierul sau asociat nu e găsit;

TEXT- #RRGGBB reprezintă culoarea asociata textului obișnuit.

LINK: #RRGGBB este culoarea textului sau a chenarului pentru link-urile ce nu au fost accesate;

VLINK: #RRGGBB este culoarea textului sau a chenarului pentru link-urile care au fost deja accesate;

ALINK: #RRGGBB reprezintă culoarea textului sau a chenarului pentru link-uri care tocmai au fost activate(pâna se realizează o nouă legatură-link).

Specificăm culoarea prin nume (black, white, red) sau prin codul culorilor, în cazul in care se folosește notația hexazecimală, precedată de simbolul ”#”.

Cu toată standardizarea în domeniu, modul în care apar culorile pe monitor depinde de placa video și software-ul folosit. Unele browsere pot interpreta anumite culori în moduri neașteptate.

Legarea unei imagini la document,<IMG>, se face in felul urmator:

Vom scrie sintaxa <IMG atribute >, atributul, apoi ALIGN, pentru a alinia imaginea in raport cu textul, TOP, va alinia partea superioară a imaginii, cu elementul cel mai înalt din randul care conține imaginea. MIDDLE, BOTTOM va alinia imaginea cu randul de la baza textului care conține imaginea, ALT va afișa textul când localizarea imaginii nu este posibilă sau textul apărut în apropierea cursorului mouse-ului trece peste o imagine și in final SRC-URL-ul pentru resursa imaginii respective.

Elementul ANCHOR <A> se va folosi pentru plasarea legăturilor către alte documente sau în cadrul aceluiași document. Textul cuprins intre <A> si </A> este afișat de browser evidentiat.

Tagul <A> trebuie exclusiv sa includa cel putin una dintre urmatoarele atribute: NAME(specifica destinația unui URL) și HREF(numele anchorei).

1.2.4. Formatarea textului

<BLOCKQUOTE> se folosește pentru a cita un text, iar acesta va avea un aspect evidențat și cursiv. (<BLOCKQUOTE> Exemplu de text</BLOCKQUOTE>).

<B> </B> este folosit când vom dori sa scriem textul ingroșat (Bold)

<I></I> când vom dori sa scriem un text inclinat(Italic)

<CODE> </CODE> este folosit atunci când include fragmente de cod, utilizand un font monospațiat(<CODE> x+=3 </CODE> este prescurtarea pt <CODE>x=x+3</CODE>).

Elemente specifice HEADING-ului sunt următoarele

<H1> – text bold cu font foarte mare, centrat, cu unul sau mai multe randuri albe subt el;

<H2> – text bold cu font foarte mare și aliniat la stanga;

<H3> – text italic cu font foarte mare și usor evidențiat la stanga, cu câteva randuri albe deasupra și subt;

<H4> – text bold cu font normal unde evidențierea este mai mare ca la H3;

<H5> – text italic normal, iar evidențierea este la fel ca la H4, titlul aflându-se cu un rand alb deasupra;

<H6> – text bold normal, unde evidențierea este mai mare decât la H5 și titlul are un rand alb deasupra.

<P> </P> ne arată definirea unui paragraph în cadrul unui document. Primul rând din paragraf este evidențiat.

<PRE> </PRE se folosește pentru text preformatat.

<HR>trasează o linie orizontală pe toată lațimea ferestrei.

<STRONG> </STRONG>accentuează fontul (bold).

Identificatori de fragment reprezintă toate caracterele ce urmeaza după simbolul #, din componența unui URL. Acestea sunt folosite pentru a deschide documentul intr-o anumită zona, cum ar fi la inceputul paginii.

Exemplu:<A HREF="#Introducere" > Introducere </A>
sau
<A HREF="http://www.coverbook.go.ro/cap2/cap2.htm#Introducere" > Introducere </A>

< A NAME="Introducere" > </A> – este ca și cum am fixa un semn de carte în înteriorul documentului, la care ne putem referi mai târziu prin numele ei (în acest caz: Introducere). La un click pe zona respectivă ar trebui să ne poziționăm cu bowserul exact în interiorul documentului, în dreptul fragmentului de introducere. Dar pentru asta mai avem nevoie de declarația unei locații, ancoră NAME, care sa aibă același nume cu cel care urmează după caracterul #, din exemplul de mai sus.

<BIG> </BIG>reprezintă fontul de dimensiuni mari.

<BR> este scrierea textului ce urmează la capat de linie, fără a lasa vreun rand liber.

<CENTER> </CENTER> reprezintă centrarea unui text.

<DIV> </DIV> reprezintă împarțirea unui text in unitațile cărora li se pot aplica anumite atribute.

<EM> </EM> ne evidențiează tipografia (Italic) și nu are atribute.

<FONT> </FONT> selectează dimensiunea fontului care este intre 1 si 7; ea este prestabilită la 3. Când utilizăm elementul FONT, valoarea caracteristicii SIZE trebuie precedată de "+" sau "-" pentru a specifica marimea unui font, în funcție de fontul de bază al documentului.

<SMALL> </SMALL> sintaxa pentru fonturi de dimensiuni reduse în comparație cu fontul curent.

– <STRIKE> </STRIKE> delimitează o zonă în care textul apare taiat cu o linie orizontală.

<STRONG> </STRONG> reprezintă evidentierea puternica.

<SUB> </SUB> este textul scris cu caractere mai mici și este poziționat la nivelul unui indice.

<SUP> </SUP> reprezintă superscriptul sau exponentul.

<U> </U> folosirea acestei sintaxe va sublinia textul.

1.2.5. Tabele

Elementul <TABLE> se folosește pentru a crea un tabel. La începerea oricărui tabel se pune un nume optional, urmat de unul sau mai rânduri, care au una sau mai multe cellule, Celulele pot fi de 2 tipuri: celule cap de tabel si celule de date. Tabelul poate conține paragrafe, liste, antete, formulare, imagini și text și se foloseste de mai multe ori pentru o aranjare mai buna in pagina. In celulele „cap de tabel” textul este centrat, iar in celulele de date textul este aliniat la stanga. Sintaxa folosită este: <TABLE> </TABLE>

Caracteristicile tabelelor sunt următoarele : 

ALIGN=left, center, right, WIDTH-n sau p%, BORDER-n, CELLSPACING-n, CELLPADDING-n

ALIGN controlează alinierea tabelului propriu, dar nu a celulelor individuale.Pot fi și: left, center, sau right;

WIDTH lațimea poate fi exprimata in pixeli „n” sau in procente „p%”; valoarea 100% înseamnă că tabelul va ocupa toata lațimea ferestrei browserului; evitați să specificați lațimea tabelului in pixeli;

BORDER va specifica lațimea chenarului în pixeli dar, dacă se omite, nu va fi desenat nici un chenar;

CELLPADDING controleaza în pixeli spațiul dintre chenar și conținutul celulelor;

CELLSPACING controleaza în pixeli spațiul dintre celulele individuale.

Elemente descriptive

CAPTION se folosește pentru etichetarea tabelelor și permite prezența atributului VALIGN (top, bottom).

<TR> </TR> sau Table Row indică unde începe și se termină valoarea unui rând.

Permite folosirea atributelor ALIGN SI VALIGN.

ALIGN aliniere pe orizontală și poate avea valorile : LEFT, RIGHT, CENTER;

VALIGN aliniere pe verticală și poate avea valorile : TOP, MIDDLE, BOTTOM.

        Prin utilizarea lui <TR> cu atributele de mai sus, se stabilesc alinierile pe orizontală sau verticală pentru un întreg rând.
        Poate include elementele TH si TD.

<TD> </TD> definește o celula individuală în cadrul unei linii, deși nu este obligatoriu, este bine să fie închisa orice celula de date folosind tagul </TD>, astfel se poate face citirea mai ușoara a tabelelor.

Atribute : 

ALIGN left, right, center : alinierea se face pe orizontală a conținutului celulei;

VALIGN top, middle, bottom : alinierea se face pe verticală a continutului celulei;

WIDTH n :va fi lațimea specificata în pixeli;

HEIGHT n : va fi înalțimea unei celule în pixeli;

ROWSPAN n : numărul de rânduri în care se poate divide o celula, implicit 1;

COLSPANn : numărul de coloane în care se poate divide o celula;

NOWRAP : conținutul celulei nu va fi rearanjat când nu încape pe lațimea celulei.

<TH> </TH> definește o celula „cap de tabel” , iar fontul este evidențiat față de celulele de date și are aceleași atribute ca și TD.

1.2.6. Formulare

Formularul este un document realizat utilizând elemente HTML. Scopul folosirii lui este adunarea de informații de la utilizator în vederea trimiterii lor catre un program server, pentru a fi procesate. Aceste informații sunt prelucrate de un program de pe server numit script CGI. În acest fel se poate comunica interactiv cu serverul Web, acesta putand genera pagini și de a le trimite înapoi la client, pe baza informațiilor culese de la acesta. 

Pentru început, ne vom ocupa doar de designul formularelor pentru partea de client, fără a ne interesa cum sunt procesate la server datele obținute.

Sintaxa folosita pentru formulare este : <FORM>…</FORM>

Atributele pentru FORM sunt: 

ACTION format din URL, METHOD=get; post, ENCTYPE=string :

ACTION specifică URL-ul scriptului CGI responsabil de procesarea datelor culese din formular;

METHOD este modul GET-implicit sau POST, în care sunt trimise datele către server;

ENCTYPE specifică tipul de conținut MIME, pentru codificarea conținutului formularului (exemplu uuencode).

Poate include INPUT , TEXTAREA, SELECT.

Elementul INPUT este folosit pentru a defini zonele dintr-un formular destinate culegerii datelor.

Sintaxa este <INPUT TYPE=x NAME=y>

Numele specificate prin NAME, sunt obligatorii și sunt folosite de programele de pe server, acolo unde sunt procesate datele.

Atribute:

TYPE=text, password, checkbox, radio, submit, reset, file, hidden, image.

NAME string, VALUE string.

CHECKED, SIZE-n, MAXLENGTH-n, SRC-URL.

LIGN top, middle, bottom, left, right.

TYPE TEXT deci poate lipsi, creeaza o casetă de text pe un singur rând.

Se pot folosi cu TEXT urmatoarele atribute :

MAXLENGTH limitează numarul de caractere introduse de către utilizator;

SIZE definește dimensiunea spațiului de afișare;

VALUE fixează valoarea inițiala a câmpului de intrare;

NAME stabilește un nume pentru acest camp.

TYPE- PASSWORD pentru scrierea parolelor,caracterele nu sunt afișate și funcționează la fel ca TEXT.

TYPE- CHECKBOX construiește căsuțe de validare, care trebuie neaparăt sa includă atributele NAME și VALUE care memoreaza valoarea câmpului și dacă sa vrea ca o casetă sa fie inițial validată se folosește atributul CHECKED.

TYPE- RADIO se folosește pentru selectarea unei opțiuni din mai multe,una și numai una. Se poate selecta un anumit câmp folosind atributul CHECKED.

TYPE- SUBMIT creează un buton, care când este acționat trimite conținutul formularului către server dar, pot exista mai multe butoane SUBMIT pe același formular dar,  fiecare trebuie să aiba un nume diferit. Numele si valoarea butonului apasat vor fi transmise de asemenea catre server.

Sintaxa pentru SUBMIT : <INPUT TYPE=SUBMIT>

TYPE- RESET creează un buton RESET care atunci când este acționat reface valorile inițiale ale câmpurilor din formular.

Sintaxa pentru RESET: <INPUT TYPE=RESET>.

Elementul TEXTAREA se folosește pentru introducerea unui text de dimensiuni mai mari. Sintaxa folostita pentru TEXTAREA: <TEXTAREA NAME-string ROWS-r COLS-c> </TEXTAREA>

Atributele pentru TEXTAREA sunt:

NAME-string, specifică numele câmpului;

ROWS- r, specifică numărul de rânduri vizibile;

COLS- c, specifică numărul de coloane vizibile.

Elementul SELECT – se foloseste pentru a crea liste derulante.

Sintaxa este <SELECT NAME=string> </SELECT> și conține elementul OPTION.

Atributele pentru SELECT sunt:

NAME-string specifică numele;

SIZE-n specifică numărul de articole din lista, ce pot fi vizibile simultan;

MULTIPLE – dacă se folosește, permite mai multe selecții simultan.

Elementul OPTION are sintaxa : <OPTION> </OPTION>

Atributele pentru OPTION sunt

VALUE- string este valoarea returnată de formular la alegerea opțiunii respective

SELECTED pentru selectarea inițiala a unei opțiuni;

Conține text obișnuit.

Capitolul 2

Extensible Markup Language

-XML-

2.1 Ce este XML

XML – extensible Markup Language este un limbaj flexibil bazat pe SGML. XML combină SGML (Standard Generalized Markup Language) cu limitatul HTML (Hypertext Markup Language). HTML este un limbaj de marcare și înțelegerea conceptului de limbaj de marcare și este cheia înțelegerii XML.

XML este un limbaj de marcare care poate rula pe orice platformă, orice sistem de operare și este facut pentru a oferi dezvoltatorilor un mecanism mai bun de a descrie conținutul paginilor pe care le realizează. XML a fost realizat inițial pentru a publica proiecte și a fost optimizat pentru a face schimbul de informație pe Web mai ușor și mai eficient. XML permite dezvoltatorilor să scrie definirea structurii unui document DTD – document type definition.

El este suficient de robust pentru a putea fi folosit la descrierea nu doar a conținutului ci și a informațiilor care descriu alte informații, metadata. În momentul de față s-ar putea spune că XML și HTML sunt înruditi, dar în viitor XML s-ar putea sa devină părinte pentru HTML. Atât HTML cât și XML au pornit de la SGML, dar XML este un meta-markup language în timp ce HTML este doar un limbaj de marcare specializat. Cine știe despre HTML, știe despre XML. Webul încă are la bază HTML, așa că vor trebui cunoștințe de HTML persoanelor care doresc să foloseasca XML.

Multe din noile ustensile care sunt create pentru a analiza sintaxa XML sunt realizate în Java. Pentru a include un applet Java într-o pagină Web, trebuie să fie utilizat HTML-ul. Acest lucru nu se va schimba cu siguranță în viitor. Cel puțin în urmatorii anii HTML și XML vor exista împreună pe Web, iar HTML va fi o parte necesară pentru implementarea soluțiilor XML. Probabil că una din întrebările cel mai des puse este dacă se poate folosi XML pentru a realiza pagini web. Din păcate răspunsul la această întrebare nu poate fi un simplu da sau nu. Atât în Internet Explorer 4.0 și 5.0 cât și Netscape Navigator 5.0 au integrat suport XML.

Acum, nu se poate include pe o cale simplă XML, într-o pagină web. Dezvoltatorii determinați să facă acest lucru trebuie să apeleze la scripturi, realizate în JavaScript, ca să transforme un document XML într-unul HTML, ceea ce nu reprezintă o soluție prea bună. Cu ajutorul XML, oricine poate realiza tag-uri. Numai că cei care doresc să creeze propriile tag-uri nu o vor face foarte ușor. Pentru a realiza propriile tag-uri, o persoană trebuie să realizeze propriile DTD.

Mecanismul de realizare a unui DTD nu este foarte complicat dar, realizarea unui DTD eficient și extensibil nu este foarte ușoara.

2.2.1. Formatarea documentului

Formatul unui document XML este similar celui SGML. Exemplu:

<?XML version = “1.0” standalone = “yes” ?>

<conversation>

<greetings>Hello, world!</greetings>

<response>Stop the planet, I want to get off…</response>

</conversation>

Diferența față de SGML și HTML este că în cazul XML contează modul de scriere a tag-urilor cu caractere mici sau mari (exact ca la limbajul C): <tag> va fi diferit de <Tag> sau <TAG>.

Mai mult, în cazul legăturilor hiper-text, în XML există mai multe mecanisme de conexiuni:

Sunt independente de locație.

Au legături specificate și organizate în afara documentului.

Au legături n-are.

Au legături agregate, provenite din surse multiple.

Dispun de legături interne, localizate în cadrul documentului.

2.2.2. Trăsături principale ale XML

Este un subset simplificat al SGML foarte puternic, dar ușor de implementat, fără limite în ceea ce privește complexitatea structurilor ce pot fi definite îndeajuns de compact pentru a fi suportat de navigatoarele Web. Oferă suport pentru uzul internațional, marcajele și conținutul pot fi reprezentate în UniCode iar, uneltele de dezvoltare XML pot suporta orice codificări. Este alcătuit din Metalimbaj conceput pentru a suporta definirea unui număr nelimitat de limbaje specializate, oferind suport de extinderi și portabilitate.

2.2.3. Deosebiri esențiale față de SGML

Orice document XML trebuie să înceapă cu meta-elementul <?xml…>.

În XML nu trebuie realizate definiții ale tipului de document obligatorii.

Elementele vide nu sunt acceptate. Un element vid are o sintaxă modificată: <element />.

Numele de elemente și de atribute sunt sensibile daca sunt cu litere capitale, sau nu (<tag> este diferit de <Tag> sau de <TAG>).

În XML pot fi specificate anumite instrucțiuni de procesare de forma <?nume informații ?>. nume, denumit ținta, identifică instrucțiunile de procesare pentru o aplicație.

Incluziunile și excluziunile nu sunt permise, la fel și parametrii de minimizare în declarațiile de elemente.

Numele începând cu xml ori XML sunt rezervate. XML predefinește semantica atributelor xml:space și xml:lang.

Regula spațiilor albe- în editarea documentelor, este uneori necesara apariția “spațiilor albe” (spații, tab-uri). Anumite spații albe nu trebuiesc incluse în versiunea finală a documentului, pe când altele sunt obligatorii (de exemplu, în codul sursa sau în cazul poeziilor).
Un atribut special xml:space poate fi inserat în documente pentru a specifica, în cadrul elementului în care apare acest atribut, ca spațiile albe să fie tratate în mod semnificativ. Valorile acestuia pot fi “default” sau “preserve”.

<!ATTLIST poem xml:space (default|preserve) 'preserve'>

Identificarea limbajului- caracteristica specială xml:lang poate fi inclus în documente pentru a defini limbajul utilizat în conținutul și valorile atributelor unui element.

2.2.4. Hyper-legături în XML

Specificația legăturilor în XML, numită XLL, reprezintă un model standard pentru realizarea hyper-legăturilor. O legătură exprimă o relație între resurse. O resursă este orice locație, un element identificat de un atribut ID sau conținutul unui element de legătură, de exemplu, care este adresată de o legătură. XLL-ul dă posibilități de a defini semantica unei legături, nu doar sintaxa ei, introducând și noțiunea de legături extinse în care sunt implicate mai mult de două resurse ,nu doar o sursă și o destinație, adica direcția XLink. XLL introduce și pointeri extinși cu ajutorul Xpointer, oferindu-ne o metodă sofisticată de a localiza resursele.

Două atribute speciale, SHOW și ACTUATE, permit controlul asupra comportamentului legăturii. Atributul SHOW ne spune dacă documentul pointat de o legătură este inclus în documentul curent, înlocuindu-l sau afișându-l într-o altă fereastră atunci când legătura este activată. Atributul ACTUATE determină cum va fi activat un link, automat sau când e selectată de utilizator. Un exemplu de link-uri extinse care ilustrează relațiile dintre mai multe resurse:

<clink xml-link="extended" role="annotation">

<locator xml-link="locator" href="odix.txt">

Textul

</locator>

<locator xml-link="locator" href="adn1.loc">

Adnotari

</locator>

<locator xml-link="locator" href="adn2.loc">

Alte adnotări

</locator>

<locator xml-link="locator" href="obs.loc">

Observații critice

</locator>

</clink>

XML XPointer folosește concepte din HyTime și TEI, oferind o sintaxă ce ne permite localizarea unei resurse prin traversarea arborelui de elemente al documentului conținând acea resursă. Pot fi folosite și grupuri de link-uri extinse (legături recursive).

Capitolul 3

JavaScript

3.1. Scurt istoric și prezentare generală a limbajului JavaScript

Limbajul JavaScript a fost creat de firma Netscape. Spre deosebire de Java, care este un limbaj compilat adică, programele sunt compilate pe server si executate apoi local pe calculatorul utilizatorilor), JavaScript este un limbaj interpretat ( interpretarea limbajului se face de către browsere, care au încorporate un interpretator ce analizeaza instrucțiunile JavaScript și le executa pe calculatorul utilizatorului). Limbajele interpretate sunt mai simple decât cele compilate si mai ușor de învățat. Modificarea și depanarea este mult mai ușor de realizat pentru că nu mai este nevoie de compilare de fiecare dată. Spre deosebire de scripturile CGI, care se executa pe calculatorul server, script-urile JavaScript sunt încarcate de pe server pe calculatorul local. Interpretatorul va decodifica instrucțiunile script-urilor și le va executa la momentul potrivit, la incărcarea paginii pe server, la apăsarea unui buton, la mișcarea mouse-ului. Script-urile JavaScript sunt parte din codul sursă HTML al paginilor Web, dându-le acestora un aspect dinamic, interactiv și mai atractiv. Acest lucru însă are un mare dezavantaj. Aceste script-uri pot fi copiate, modificate si refolosite. În cazul applet-urilor Java, nu apare această problemă, deoarece codul sursă al acestora, nu este trimis de pe server pe calculatorul client. Ambele limbaje creează aplicații independente de platforma pe care se execută. Programele în Java sunt executate de mașina virtuală Java iar, script-urile de către interpretator, ambele fiind incluse în navigator. În timp ce Java este un limbaj complex, orientat obiect, JavaScript este un limbaj mai ușor. Are foarte multe asemănări cu Java, însa sintaxa este mai simpla, iar regulile mai puțin complexe. Chiar dacă Java și JavaScript au o sintaxă asemănătoare, aceste limbaje sunt utilizate in scopuri diferite. Se poate spune ca sunt mai mult complementare decât concurente.

Caracteristici JavaScript:

este un limbaj ce creeaza scenarii, atât pentru partea de client, cât și pentru cea de server;

este proprietate a corporațiilor Netscape Communication și Sun Microsystems;

are o sintaxa ce se asemamănă cu cea a limbajului C;

a fost implementat o data cu versiunea 2.0 a programului Netscape Navigator;

avantajul principal este ca nu necesita compilator;

scenariile Java Script sunt executate direct de către browser;

instrucțiunile Java Script sunt incluse in cadrul unui document HTML;

cu Java Script, paginile devin "smart", deoarece răspund la acțiunile utilizatorului (mouse, tastatură).

JavaScript oferă posibilitatea de a crea pagini mai interactive, care își modifică conținutul în funcție ideile programatorul, mai spectaculoase, pagini care nu au acces la HDD și, pagini care nu folosesc baze de date. Înainte de a observa cum înserăm liniile de JavaScript în documentul HTML vă prezint câteva reguli de bază:

JavaScript este case sensitive

sintaxa este asemănătoare cu a C++

este un limbaj orientat obiect

Inserarea liniilor JavaScript în documentele HTML, se poate face în patru feluri:

prin folosirea tagului <SCRIPT> al HTML;

prin menționarea fișierului cu comenzi JavaScript;

prin includerea de expresii JavaScript în HTML;

prin funcții de gestionare a evenimentelor.

Java este un limbaj orientat pe obiecte. La baza lui constă noțiunea de clasă. Clasa apare ca șablon pentru realizarea obiectelor. El poate gestioneze datele și metodele. Există diferite metode pentru acces la elementele clasei. Acestea sunt: private, protected, public.

Java este un limbaj complet orientat pe obiecte, fiecărei noțiuni care (clase, obiecte, metode) corespunde cu clasa, susțin prelucrarea programelor corespunzător informatiilor obiectelor.

În limbajul Java, clasele se adună în pachete. Fiecare pachet determină un spațiu aparte pentru nume. Toate clasele, intrând într-un pachet, sunt unite și avem în vedere că au acces la schimbări și metode, anume private sau protected. Pentru însemnarea moștenirii se atribuie cuvântul cheie extends. În limbajul Java lipsesc multe, dar există interfața care ne ușureaza această sarcina. Interfața prezintăo grupare de metode descrise. Clasele pot reda interfețe. Cuvantul cheie pentru aceasta clasa este ”implements„. Clasa class se folosește pentru primirea informației despre proprietățile “claselor” de obiecte. Metodele tipice acestui fel de clase sunt: forName (obiectul de primire a clasei class după adăugarea numelui), newInstance (produsul obiectului nou dat acestei clase), getMethods (primirea obiectului, descriind metoda publică clasei).

Mecanismul curenților reprezintă linia obligatorie a operațiilor avansate a mediului de programare. În limbajul Java curenții sunt reprezentați de clase Thread, a interfeței rulabile. Programele în Java se împart în două tipuri de categorii, prima fiind aplicarea de sinestătător și appleturi. Appleturile se execută în Web-navigator și pot apărea pe rețea. Aplicarea și apleturile se deosebesc în esență, după măsurile securității, primite în procesul de lucru.

3.2.1. Folosirea tag-ului <SCRIPT>

Tag-ul <SCRIPT> este un tag al HTML-urilor și poate să cuprindă un număr nelimitat de linii JavaScript. Se folosește în felul următor:

<SCRIPT language=” JavaScript”>
…linii JavaScript…
</SCRIPT>

Un document HTML poate să conțină mai multe tag-uri <SCRIPT>. Atributul „language” poate specifica versiunea de JavaScript:

<SCRIPT language=”JavaScript1.0”>
<SCRIPT language=”JavaScript1.1”>
<SCRIPT language=”JavaScript1.2”>

3.2.2. Ascunderea scriptului în comentariu

Browserele care nu recunosc JavaScript-ul, vor ignora tagul <SCRIPT> și vor afișa liniile de comenzi ca text în HTML. Pentru a preveni astfel de situații se introduce întregul script în comentariu HTML:

<SCRIPT language=” JavaScript”>

<!–

…linii JavaScript…

// –> </SCRIPT>

3.2.3. Specificarea fișierului cu comenzi JavaScript

Putem specifica fișierul inclus prin intermediul atributului SRC al tagului <SCRIPT>. De exemplu:

<HEAD>

<SCRIPT src=”fișier.js”>

</SCRIPT>

</HEAD>

Acest procedeu este foarte, util mai ales când folosim aceleași funcții în mai multe pagini.
Liniile de comenzi introduse între <SCRIPT> și </SCRIPT> sunt ignorate dacă nu apar eroari la deschiderea fișierului “fișier.js” specificat. În cazul unei erori se vor executa liniile introduse în cadrul tagului.

Fișierele JavaScript externe nu conțin decât linii JavaScript și definiții de funcții. Este recomandat ca fișierul JavaScript sa aibă extensia .js.
Folosirea expresiilor JavaScript ca valoare a atributelor HTML, folosind entitățile JavaScript putem specifica o expresie JavaScript este valoarea unui atribut HTML. Valoarea entității este evaluata dinamic, în acest fel putem construi pagini HTML flexibile, pentru că atributul unui element HTML, depinde de o informație plasată undeva în pagina.

Ca și entitățile HTML, entitățile JavaScript încep cu caracterul “&” și se termină cu caracterul ”;”. În plus entitatea JavaScript este încadrată între acolade.

Exemplu:

<HR width=”&{barWidth};%”>

Unde, barWidth este o variabilă JavaScript și reprezintă lățimea liniei orizontale în procente.

Tagul <NOSCRIPT> se folosește în cazul în care browserul care încarcă pagina nu recunoaște JavaScript sau avem dezactivat JavaScript din browser.

Exemplu:

<NOSCRIPT>

Această pagină conține linii JavaScript.

</NOSCRIPT>

3.2.4. . Definirea funcțiilor

Funcțiile sunt una dintre cele mai importante părți în JavaScript. Ca în majoritatea limbajelor de programare o funcție este compusă din urmatoarele părți: cuvântul cheie „function”, urmat de numele funcției, apoi de lista de parametrii separați de caracterul „;”, încadrată in paranteze rotunde și de corpul funcției, inchis intre acolade.

În general definirea funcțiilor se face în partea de antet a paginii, adică în tag. În felul acesta, toate funcțiile sunt definite înainte de afișarea paginii. Deci, există posibilitatea de a apela o funcție înainte de a fi încărcată în browser.

Folosirea metodei write a obiectului document, scrie în pagina HTML. Metoda este o funcție asociată cu un obiect. Apelul unei metode se face astfel:

numeObiect.numeMetoda(argumente…)

Ca și argument pentru metoda write se acceptă orice număr sau șir de numere. Se pot de asemenea concatena mai multe șiruri cu caracterul “+”.

Exemplu:

document.write(“<HR align=’left’

width=”+barWidth+”%>”)

3.2.5. Funcții de gestiune a evenimentelor

Evenimentele sunt acțiuni ale utilizatorului care folosește browserul. De exemplu, mutarea mouseului pe suprafața unui link, sau executarea unui click pe un buton. Folosirea unei astfel de funcții se face în următorul fel:

<A href=”pagina.htm” onMouseOver=”document.bgColor=”red”>Text</A>

În momentul în care mouseul este peste “Text”, culoarea fundalului se schimbă în roșu (dacă nu era roșu inițial). Vă prezint în continuare câteva din aceste funcții:

onClick() – se activează dacă s-a efectuat click pe element.

onChange() – se activează dacă s-a modificat valoarea elementului

onLoad() – se activează la încărcarea paginii (se folosește în <BODY>)

onMouseOut() – se activează dacă mouse-ul părăsește suprafața unui element

onMouseOver() – se activează dacă mouse-ul intră pe suprafața unui element

onReset() – se activează dacă utilizatorul resetează un formular

onSubmit() – se activează dacă s-a utilizatorul trimite un formular.

Folosirea ghilimelelor- trebuie avută în vedere alternarea tipului de ghilimele pentru a nu crea erori la citirea paginii adică, în interiorul unei expresii închise între ghilimele duble putem folosi doar ghilimele simple și invers.

3.2.6. Culori

Există trei metode de a schimba culoarea elementelor:

Prin atributele HTML ale tag-ului <BODY>

Prin obiectul document al JavaScript-ului

Prin metoda fontcolor(“culoare”) a obiectului string.

Exemple:

<BODY text=”blue”>

document.fgColor=”yellow”

document.write(“text roșu”)

Se poate schimba culoarea oricărui atribut din cele enumerate mai jos, prin obiectul document, în felul următor :

culoare de fundal: document.bgColor=”culoare”

culoare pentru text: document.fgColor=”culoare”

culoare pentru legături: document.linkColor=”culoare”

culoare pentru legături active: document.alinkColor=”culoare”

culoare pentru legături vizitate: document.vlinkColor=”culoare”

JavaScript: trusa de instrumente

JavaScript este cel mai cunoscut și, cel mai folosit limbaj pentru realizarea de script-uri pe web.

Una dintre cele mai întâlnite întrebări referitoare la Javascript este legată de “gradul de rudenie” cu limbajul Java. Potrivirile dintre cele două limbaje se regăsesc la nivelul sintaxei, al structurilor de control și într-o anumită măsură, la securitate. În rest, Java este un limbaj mult mai complex (ca urmare și mai greu de înteles, ca majoritatea limbajelor orientate-obiect). Diferențe există inclusiv în legătură cu rularea codului, chiar nu au nicio relevanță.

Meritul principal al JavaScript, este că pune la dispoziția creatorilor de pagini web, o metodă excelentă de “a anima” paginile create. Și aceasta fără a apela la programarea pe partea de server. Fără a înlocui acest gen de programare menționat, script-urile pot rezolva o serie de probleme – ce e drept, nu foarte complexe – cu toate acestea, complexitatea este relativă, depinzând de abilitățile programatorului, cum ar fi validarea unui câmp dintr-o formă sau afișarea unui mesaj după un click pe un buton (la programarea evenimentelor). Iar avantajul integrării complete în paginile HTML a căpătat o nouă dimensiune acum cu apariția interfețelor HTML și mai ales în producția CD-ROM-urilor.

Prin urmare, JavaScript pare să aibă cu adevărat sens, dacă raportăm mini-programale create la paginile web. Documentații JavaScript se găsesc peste tot pe web și vă pot ajuta să vă faceți o primă impresie despre acest limbaj. Acum aș prefera să aduc în discuție o serie de aspecte nu prea evidente, dar care ajută la înțelegerea script-urilor ce vor fi prezentate în viitor.

JavaScript este “case sensitive”, adică se face diferență între literele mari și cele mici întâlnite în numele identificatorilor (nume de variabile, funcții, obiecte). De acest motiv, este foarte important să fiți atenți la acest lucru. Depanarea script-urilor poate fi o adevărată bătaie de cap, dintr-o simplă înlocuire a literei 'A' cu 'a' în cazul unei funcții cum ar fi 'Adăuga' (care nu este niciodata 'adăuga').

JavaScript este un limbaj slab tipizat în comparație cu Pascal, C++ sau Java. Astfel tipul unei variabile sau, “rețeta de stocare în memorie”, nu este determinată în momentul creării variabilei, iar pe parcursul execuției programului se poate schimba în funcție de context. Acest fapt poate fi un avantaj, în sensul unei libertăți în realizarea programului, dar și un dezavantaj legat de lipsa de precizie ce poate să apară, codul fiind mai greu de înțeles. Dar, dacă la un moment dat, doriți să aflați tipul unei variabile aveți la dispoziție operatorul typeOf. Prin folosirea lui se obține un șir ce conține tipul variabilei, inclusiv undefined sau object, pe lângă tipurile standard.

Raportat la variabile, există o anumită facilitate de "type-casting" sau “convertire automată a tipului”. În cazul acesta, în funcție de context, tipul variabilelor se modifică automat. În JavaScrpit câștigul nu este totunitar. Astfel o variabilă numerică se transformă automat la șir, cum e cazul în titlul paragrafului, însă reciproca nu este valabilă. De aceea, în multe script-uri veți întâlni funcția „parseInt” care transformă, după posibilitate, un șir în număr. Motivând de ce după posibilitate: parseInt(x) va returna NaN – not a number – dacă x='a20'; 20, dacă x='20'; 2, dacă x='2a0'.

Avem o valoare specială în JavaScipt și anume „null”. Adică, după nume, nimic. Există diferite situații când o veți întâlni, cum ar fi utilizarea de variabile nedefinite dar și unele rezultate de funcții. Atentie!Null nu este același lucru cu string-ul vid ('').Trebuie spus că șirurile în JavaScript sunt obiecte. Aceasta are relevanță, mai ales, dacă în cazul manipulării trebuie folosită notația cu punct pentru aplicarea funcțiilor. Dacă doriți să convertiți un șir (strA) în litere mici veți nota: strA.toLowerCase().

JavaScript permite utilizarea expresiilor condiționale (prezente și în alte limbaje de programare), care pot dovedi foarte utile. Cum ar fi : isNS = (document.layers)? 1 : 0;
Dacă browserul recunoaște această colecție de obiecte, atunci expresia va fi True și variabila noastră va lua valoarea 1, dacă nu, Falsesi aceasta va fi 0. Aceasta este o metodă extrem de simplă de a identifica un browser.

Cuvântul cheie „this” poate dovedi extrem de util, deoarece, întotdeauna se referă la obiectul respectiv. Important e să puteți folosi o expresie de genul self.proprietate pentru a accesa proprietatea obiectului respectiv, fără a ști care obiect este in esență.

Dată fiind caracteristica multi-platoforma a limbajului JavaScript, este important să dispunem de funcții care să asigure compatibilitatea în mai multe situații. Două asemenea funcții ce se completează sunt escape și uescape. String-ul de caractere primit ca argumet este transformat la codificarea standard ISO Latin-1 și invers. Este necesară mai ales în cazul cookie-urilor pentru a transforma caractere depinzând de setul de caractere, ce sunt dependente, la rândul lor, de platformă

Macrosubstituția este o facilitate puternică a unor limbaje de programare. Poate că în acest caz e vorba de o mini-implementare a unei asemenea facilitați, prin funcția „eval”, însă este foarte utilă. Astfel „eval” execută șirul primit ca argument ca și cum ar fi o linie de cod JavaScript: eval('alert(strA)') va genera o fereastră numita prompt window, care va afișa valoarea șirului strA. Utilitatea este dată și de diferentele dintre browsere la nivelul referirii obiectelor suportate. În acest caz „eval()” ne ajută la scrierea unui cod frumos.

Toate variabilele și obiectele sunt distruse la reîncărcarea paginii web sau la încărcarea unei pagini noi. Singura soluție în acest caz, pentru crearea unei aplicații mai complexe, rămâne folosirea frame-urilor și, în cazul de față, a unui frame ce nu își reîncarcă conținutul.

Capitolul 4

Personal HomePage

-PHP-

4.1. Notiuni generale despre PHP

La fel ca multe alte proiecte software importante, PHP a luat nașstere sub forma unui mic utilitar cu care trebuia să se rezolve o problemă simplă și foarte particulară. În 1995, un programator pe nume Rasmus Lerdorf și-a publicat CV-ul în pagina sa Web. Pentru ca să poată urmării cine i-a vizitat pagina, Rasmus a implementat în pagină un tag special și a scris în Perl un script CGI care să adune informații despre vizitatori, pe care apoi le scria într-un jurnal. A denumit acest cod PHP tools. Mai apoi, în cadrul unui alt proiect , a trebuit să realizeze o interfață care să faca legătura între clienții de pe Web și o bază de date. A apelat la aceeași idee: etichete HTML proprii, procesate de un script CGI de aceasta data, scris în C care le înlocuia cu conținutul care trebuia inserat în pagină. A numit aceste etichete "Form Interpreters" pentru că rolul lor era de a prelua datele trimise prin formulare HTML și de a le transforma în variabile simbolice pe care le folosea apoi pentru interogarea bazei de date.

A combinat codul PHP cu Form Interpreters și l-a publicat sub numele PHP/FI. Comunitatea programatorilor s-a ocupat de restul. Programul a fost corectat, dezvoltat și tranfsormat în regim open source, depășind cu mult scopul său inițial. Cu toate că numele PHP s-a păstrat, semnificația sa este cu totul alta, cea din titlul articolului – observați caracterul recursiv, similar cu GNU. A ajuns între timp la versiunea 4. PHP este un limbaj de scripting server-side foarte puternic, inzestrat cu peste 1000 de funcții, implementat pe foarte multe platforme, colaborând cu toate serverele Web importante și dispunând de interfețe pentru majoritatea bazelor de date utilizate. Popularitatea sa a crescut neîncetat, statisticile estimând că PHP este folosit în circa 1,5 milioane de domenii Web.

Ce putem face cu PHP? Orice. PHP se axeaza, în principiu, pe partea de scripting ce rulează pe server, deci poți face orice poate face și un program CGI, cum ar fi colectarea de date de la formulare, generarea de conținut dinamic sau trimitere și primire cookie-urilor. Dar el poate face mult mai multe.

Există trei domenii principale unde sunt folosite scripturile PHP:

Scripturi ce ruleaza pe server – acesta este cel mai obișnuit și cel mai important pentru PHP. Ai nevoie de trei lucrui pentru a-l face sa meargă. Interpretorul PHP, un server de web și un navigator de web. Este nevoie ca serverul de web să fie pornit și cu o conexiune PHP instalată. Poți vedea rezultatul programelor PHP cu un navigator print intermediul serverului de web.

Scripting la linia de comandă – poți face ca PHP să ruleze fără a fi nevoie de server și de browser, ci doar de interpretorul PHP. Această metodă este ideală pentru scripturile ce se vor a fi executate folosind regula cron, sau sarcini simple de procesare a textelor.

Scrierea de aplicații ce rulează de partea clientului în mod grafic (Graphic User Interface). Poate că PHP nu este limbajul cel mai bun de a scrie aplicații cu ferestre pentru Windows sau alte sisteme de operare, dar dacă cunoști PHP foarte bine și vrei vrei să folosești niște facilități avansate a PHP-ului în aplicațiile tale ce ruleaza de partea clientului poți totuși folosi PHP-GTK pentru a scrie astfel de programe. PHP-GTK este o extensie a PHP-ului, ne fiind disponibila în distribuția principală de PHP.

PHP se poate folosii pe aproape toate marile sisteme de operare, incluzând aici Linux, variante de Unix ,incluzând HP-UX, Solaris și OpenBSD, Microsoft Windows, Mac OS X, RISC OS, și multe altele. PHP dispune deasemenea, de suport pentru majoritatea serverelor de web din prezent. Includem aici serverele Apache, Microsoft Internet Information Server, Personal Web Server, Netscape și iPlanet, serverul Oreillz Website Pro, Caudium, Xitami, OmniHTTPd, și altele. Pentru majoritatea serverelor, PHP are un modul, iar pentru celelalte suportă standardul CGI, PHP putând să lucreze ca un procesor CGI.

PHP-ul îți oferă libertatea de a alege aproape orice sistem de operare și un server de web. Chiar mai mult, ai posibilitatea de a alege programarea procedurală sau programarea orientată obiect, sau chiar sa le combini. Cu toate acestea, nu orice facilitate a standardului Programarii Orientate Obiect este prezentă în versiunea curent a PHP-ului, multe librării de cod și aplicații mari, incluzând și librăria PEAR, sunt scrise folosind doar cod orientat obiect.

Cu PHP nu ești limitat să scoți un rezultat asemanator HTML-ului. Posibilitățile PHP-ului includ afișarea de imagine, fișiere PDF și chiar filmulețe Flash, folosind librăriile libswf și Ming, toate generate instant. Poți face ca rezultatul tău să fie orice fișier text, cum ar fi XHTML sau orice alte fișiere XML. PHP poate genera automat aceste fișiere și să le salveze în sistemul de fișiere în loc să le afișeze, formând un cache de partea serverului pentru continutul tău animat.

Cu ajutorul PHP-ului se pot crea pagini WEB dinamice(animate), care sunt generate în momentul în care programul utilizator a formulat cererea către serverul de WEB.

Serverul de WEB trebuie sa aibă activat suportul pentru PHP. Toate fișierele care au extensia .php3 trebuie rulate de către motorul PHP.

Fișierele se creează in aceeași maniera ca si fișierele HTML.

Exemplu de pagina cu tag-uri PHP:

<html><head><title>PHP Test</title></head>

<body>

<?php echo "Hello World<P>"; ?>

</body></html>

Una dintre cele mai puternice și importante facilități în PHP este suportul său pentru o gamă larga de baze de date. Scrierea une pagini web ce lucrează cu o bază de date este foarte simplă. Bazele de date suportate sunt urmatoarele:

Tabel 4.1.

4.1.1.Principiul utilizarii PHP-ului

Presupunem că instalarea PHP nu va da bătăi de cap și ca toată lumea cunoaște diferența dintre un script Web care este executat de serverul Web și un script care este executat de browser, îmi rămâne de precizat că exemplele din acest articol au fost testate cu PHP 4.0.1, instalat pe un server Apache 1.3.2 rulând sub Windows 98. Fișierele cu extensia .php sunt considerate scripturi PHP și sunt preprocesate, dar serverul Web poate fi configurat și altfel (o alta extensie des folosită este "phtml").

În acest fel, PHP este un pachet suficient de puternic care oferă un limbaj de programare accesibil în cadrul fișierelor HTML, limbaj asemănător cu Perl sau C și în plus oferă suport pentru manipularea bazelor de date într-un limbaj SQL. Acest pachet este disponibil gratuit pe Internet, pentru medii UNIX, inclusiv sursele lor.

Limbajul PHP se introduce în cadrul documentului HTML printr-o etichetă specială <?statement> unde statement este o instrucțiune a limbajului cum ar fi echo, if, break, while. Variabilele se declară repede, tipul lor putând fi integer, double sau string, iar numele de variabile trebuiesc precedat de $. Sunt permiși operatorii obișnuiți și se pot defini și funcții de utilizator, prin construcția Function.

Exemplu: presupunem ca definim următorul formular:

<form action="/cgi-bin/php.cgi/~user/display.html" method=post>

<input type="text" name="nume">

<input type="text" name="virsta">

<input type="submit">

</form>

Se cere utilizatorului un nume și vârsta sa care vor fi procesate de programul PHP/FI conținut în fișierul display.html.

Acesta poate conține:

<?

if ($virsta>50);

echo "<p>Salut $nume, ești vârstic…</p>";

elseif ($virsta>30); echo "<p>Salut $nume, ești matur…</p>";

else; echo "<p>Salut $nume, ești tânăr…</p>";

endif;

>

După cum se observă, PHP oferă un limbaj script robust și simplu, accesul la câmpurile formularului facându-se prin intermediul unor variabile create automat.

Alături de suportul pentru încărcarea fișierelor de pe calculatorul client: upload și de suportul pentru cookies, PHP/FI oferă integrarea bazelor de date prin sistemul de gestiune mini-SQL (mSQL), sistemul Postgres95 și sistemul Solid care suportă standarde ca Ansi SQL2, ODBC, SAG CLI si X/Open SQL.

Există de asemenea o mulțime de funcții predefinite:

Funcții matematice;

Funcții de conversie;

Funcții de manipulare a șirurilor de caractere;

Funcții de acces la resursele sistemului de operare și de lucru cu fișiere;

Funcții de manipulare a bazelor de date;

Funcții cu privire la conexiunile de Internet;

Funcții generale;

4.1.2. PHP3-arhitectura limbajului

PHP este un limbaj de scripting, utilizat în fișierele HTML. Scriptul PHP este rulat la nivel de server.

Sintaxa PHP este o amestecare intre limbajele C, Java si Perl. Scopul limbajului este de a permite programatorilor WEB sa scrie rapid pagini care se generează dinamic.

Prin intermediul PHP3 se pot accesa serverele Microsoft SQL și baze de date Microsoft Access cu ajutorul ODBC.

4.2. Eticheta PHP-ului

Fiecare etichetă PHP începe cu <? php , și continua cu propoziția PHP apoi se închide în partea dreaptă cu ?>. Într-un fișier HTML pot exista un număr nelimitat de etichete PHP.

4.2.1. Identificarea tipului de browser

Putem observa tipul de browser pe care utilizatorul îl folosește pentru a vizualiza pagina datorita informațiilor pe care browserul le trimite împreuna cu cererea pe care o face către serverul de web. Limbajul PHP se introduce în interiorul documentului HTML printr-o etichetă specială <?statement> unde statement este o instrucțiune a limbajului cum sunt și echo, if, break, while . Variabilele se declară ușor, tipul lor putând fi integer, double sau string, iar numele de variabile trebuie precedat de $. Sunt permiși operatorii obișnuiți și se pot defini și funcții utilizator prin construcția „Function”.

Capitolul 5

MySQL

2.1. Despre MySQL

MySQL este un sistem de gestiune a bazelor de date relaționale și este distribuit în regim Open Source. Aceasta înseamnă că MySQL poate fi gasit și descărcat de pe Internet, poate fi folosit fără a fi nevoit sa plătesti ceva și, dacă se dorește, codul sursă poate fi studiat și se pot face modificări necesare.

Serverul de baze de date MySQL este foarte rapid și ușor de utilizat. Inițial a fost dezvoltat pentru a manipula baze de date de dimensiuni mari, mult mai rapid decât soluțiile existente. Conectivitatea sa, viteza și securitatea fac ca Serverul MySQL să fie potrivit pentru accesarea bazelor de date prin Internet.

MySQL Database Software este un sistem de tip client/server ce constă într-un server MySQL multithreaded care suportă diverse programme client și biblioteci, ustensile administrative și o gamă variată de interfețe pentru programarea aplicațiilor (Application Programming Interfaces – APIs)

2.2. Caracteristici de bază ale MySQL

2.2.1. Componente interne și portabilitate

Vom enumera câteva dintre caracteristicile de baza ale MySQL:

Este scris în C și C++ ;

Este testat cu o gamă largă de diferite compilatoare ;

Funcționează pe platforme diferite;

Dispune de API pentru C, C++, Java, Perl, PHP, Pyton ;

Complet multi-threaded folosind thread-uri de kernel. Acest lucru înseamnă că poate lucra cu ușuință pe mai multe procesoare dacă sunt accesate

Oferă motoare convenționale și non- convenționale, de stocare a datelor

Un sistem de alocare a memoriei foarte rapid și bazat pe thread-uri

alaturări ale tabelelor foarte rapide

Folosește tabele temporare stocate în memorie

Funcțiile SQL sunt implementate folosind o bibliotecă de clase bine optimizată. De obicei, nu mai are loc alocarea memoriei după inițializarea interogărilor.

Serverul este disponibil ca program separat ce poate fi folosit într-un mediu de rețea de tip client/server. De asemenea, este disponibil și ca bibliotecă ce poate fi inclusă în aplicații individuale.

2.2.2. Tipurile coloanelor

MySQL de oferă o varietate de tipuri de date pentru coloane, cum ar fi numere întregi de 1,2,3,4 și 8 bytes lungime cu sau fără semn, FLOAT, DOUBLE, CHAR, VARCHAR, TEXT, BLOB, DATE, TIME, DATETIME, TIMESTAMP, YEAR, SET, ENUM, și tipuri geometrice OpenGIS și înregistrări cu lungime fixă sau cu lungime variabilă.

2.2.3. Funcții și comenzi

MySQL oferă suport complet pentru operatori și funcții în momentul folosirii sintaxelor SELECT și WHERE în interogări. Pentru sintaxele GROUP BY și pentru grupul de funcții (COUNT(), COUNT(DISTINCT …), AVG(), STD(), SUM(), MAX(), MIN(), și GROUP_CONCAT()). Pentru LEFT OUTER JOIN și RIGHT OUTER JOIN. Pentru diferite tabele și coloane. DELETE, INSERT, REPLACE și UPDATE vor returna numărul de rânduri modificate iar, comanda SHOW, specifică MySQL, poate fi folosită pentru a face rost de informații despre bazele de date, indecși și tabele. Numele funcțiilor, cel al tabelelor și al coloanelor nu vor intra în conflict niciodată iar, în aceeași interogare se pot folosii tabelele situate în baze de date diferite.

2.3. Chestiuni de baza ale MySQL

2.3.1. Conectarea și deconectarea de la un server

Pentru a realiza conectarea la server trebuie să specificăm un nume de utilizator și o parolă. Dacă serverul rulează pe un alt calculator trebuie specificat și un hostname. Conectarea se realizează astfel:

shell> mysql -h host -u user -p

Enter password: ********

unde host și user reprezintă hostname-ul pe care rulează serverul MySQL și respectiv numele unui cont MySQL, iar „*****” reprezintă parola care trebuie introdusă.

Conectarea se realizează cu succes în continuare și sunt afișate informații introductive, urmate de prompt-ul mysql

>shell> mysql -h host -u user -p

Enter password: ********

Welcome to the MySQL monitor. Commands end with ; or \g.

Your MySQL connection id is 25338 to server version: 4.0.14-log

Type 'help;' or '\h' for help. Type '\c' to clear the buffer.

mysql>

Aceasta înseamnă că mysql este pregătit pentru a primi comenzile introduse.

Deconectarea de la serverul MySQL se poate realiza oricând prin introducerea comenzii QUIT sau la prompt-ul mysql.

mysql> QUIT

bye

2.3.2. Folosirea interogărilor

Următoarea comandă este o interogare simplă care va cere serverului informații precum versiunea curentă și data curentă:

mysql> SELECT VERSION(), CURRENT_DATE;

+–––––+–––––+

| VERSION() | CURRENT_DATE |

+–––––+–––––+

| 3.22.20a-log | 1999-03-19 |

+–––––+–––––+

1 row in set (0.01 sec)

mysql>

Această interogare ilustrează câteva lucruri despre mysql: în mod normal, o comandă constă într-o declarație SQL urmată de semnul „;” iar, cât se lansează o comandă, mysql o trimite serverului spre execuție și afișează rezultatele, apoi afișează din nou prompt-ul mysql> pentru a indica că este pregătit să accepte alte comenzi. Mysql va afișa rezultatul interogărilor într-o formă tabelară. Prima linie conține tag-urile coloanelor, iar liniile următoare sunt rezultatele interogării. Va afișa și numărul de rânduri returnate și de cât timp a fost nevoie pentru a executa interogarea.

Pe o singură linie pot fi introduse mai mule comenzi, separate cu câte un semn punct și virgulă, de exemplu:

mysql> SELECT VERSION(); SELECT NOW();

+–––––+

| VERSION() |

+–––––+

| 3.22.20a-log |

+–––––+

+–––––––+

| NOW() |

+–––––––+

| 1999-03-19 00:15:33 |

+–––––––+

O comandă nu trebuie să fie neapărat introdusă pe o singură linie:

mysql> SELECT

-> USER()

-> ,

-> CURRENT_DATE;

+–––––––+–––––+

| USER() | CURRENT_DATE |

+–––––––+–––––+

| joesmith@localhost | 1999-03-18 |

+–––––––+–––––+

Prompt-ul se schimbă din mysql> în -> după introducerea primei linii a unei interogări pe mai multe linii. El va indica faptul că respectiva interogare este incompletă și mysql așteaptă introducerea restului interogării.

Se poate întrerupe introducerea unei interogări pe linii multiple folosind simbolurile \c

mysql> SELECT

-> USER()

-> \c

mysql>

2.3.3. Construcția și utilizarea unei baze de date

Pentru a vedea bazele de date existente pe un server se folosește comanda SHOW:

mysql> SHOW DATABASES;

+–––-+

| Database |

+–––-+

| mysql |

| test |

| tmp |

+–––-+

Baza de date mysql este necesară deoarece sunt descrise privilegiile de acces ale utilizatorilor, iar baza de date de test este oferită, de obicei, ca mediu de test pentru utilizatori.

Dacă baza de date test există, aceasta se accesează astfel:

mysql> USE test

Database changed

2.3.4. Construcția și selectarea unei baze de date

Comanda pentru a crea o nouă bază de date este CREATE DATABASE. Exemplu:

mysql> CREATE DATABASE menagerie;

Construcția unei baze de date nu implică și selectarea acesteia pentru utilizare, aceasta trebuie selectată folosind comanda USE:

mysql> USE menagerie

Database changed

Selectarea bazei de date pe care se dorește să se lucreze se poate realiza și în momentul desciderii unei sesiuni mysql, la conectarea la server, astfel:

shell> mysql -h host -u user -p menagerie

Enter password: ********

2.3.5. Crearea tabelelor

După ce a fost construită, o bază de date nu conține nici un tabee, după cum se poate observa introducând comanda SHOW TABLES:

mysql> SHOW TABLES;

Empty set (0.00 sec)

Pentru a crea un tabel, se folosește comanda CREATE TABLE

Exemplu:

mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),

species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

Comanda SHOW TABLES va avea următorul rezultat:

mysql> SHOW TABLES;

+–––––––+

| Tables in menagerie |

+–––––––+

| pet |

+–––––––+

Pentru a vedea detaliile unui tabel se folosește comanda DESCRIBE:

mysql> DESCRIBE pet;

+–––+––––-+––+––+–––+––-+

| Field | Type | Null | Key | Default | Extra |

+–––+––––-+––+––+–––+––-+

| name | varchar(20) | YES | | NULL | |

| owner | varchar(20) | YES | | NULL | |

| species | varchar(20) | YES | | NULL | |

| sex | char(1) | YES | | NULL | |

| birth | date | YES | | NULL | |

| death | date | YES | | NULL | |

+–––+––––-+––+––+–––+––-+

Concluzii

Cel puțin pentru zece ani de acum încolo, HTML-ul, mai ales prin utilitățile oferite de standardul 4.0, va fi principalul limbaj de marcare a paginilor Web, dând programatorilor de site-uri Web flexibilitate, maleabilitate în design și suport pentru includerea de elemente animate. Va trebui însă să ofere și posibilitatea de introducere de formule matematice și elemente de realitate virtuală și mecanisme de interogare a bazelor de date eterogene și distribuite. În completare, XML se afla încă la începuturi atât privind cercetările teoretice, cât și aplicațiile dezvoltate. Cert este că oricare ar fi tehnologia de elaborare a paginilor Web în viitor, ea ar trebui să rezolve o mulțime de probleme cu care se confruntă astăzi Internetul. Cea mai arzătoare este problema securității păstrării și transmiterii informației. Umătoarea ar fi problema de supraveghere și respectării unui eventual cod de etică la elaborarea și prezentarea site-urilor. Un alt scop al Internetului pentru viitor, va fi cu siguranță, structurizarea mai bună a informației din Internet. Această structurizare poate fi ori conform domeniului de utilizare, ori limbajului în care este prezentată informația.

Cu toate minusurile pe care le are în prezent, Internetul este o sursă de informare destul de accesibilă. Diverse persoane din orice domeniu de activitate se pot folosi accesând Internetul și nu numai, orice persoană își poate prezenta activitatea pe o pagină Web.

Internetul devine tot mai utilizat ca mijloc de comunicare (poșta electronică, teleconferințe, tebele de discuții și dezbateri etc.)

O noțiune mai nouă în Internet este comerțul electronic care din anumite probleme tehnice și de securitate se află în faza testărilor finale.

Indiferent de câte minusuri are astăzi Internetul, viitorul va depinde într-o oarecare măsură de el. Aceststa trebuie să ia în calcul promoterii tehnologiilor de elaborare a paginilor Web în viitor.

Bibliografie

Similar Posts