Sunteți pe pagina 1din 60

Programare Web

Curs: Florin Radulescu Ciprian Dobre

F. Radulescu. Curs: Programare Web, anul 4 C5.

Administrative

F. Radulescu. Curs: Programare Web, anul 4 C5.

Notare
Nota finala la cursul de Programare Web se calculeaza dupa urmatoarea formula: Nota = ROUND(NotaCurs*0,15 + NotaLaborator*0,45 + NotaExamen*0,4) unde: NotaCurs, NotaLaborator sunt obtinute pentru activitatile din timpul semestrului; NotaExamen este nota obtinuta la examen. Examenul este promovat numai daca se obtine minimum 50% atat din nota de la examenul final cat si din punctajul din timpul semestrului.
F. Radulescu. Curs: Programare Web, anul 4 C5. 3

Notare
NotaCurs se calculeaza pe baza
activitatii la curs (prezenta), a unor teste (neanuntate) si a unor teme de casa.

Temele de casa date la curs de dificultate medie - se predau la cursul imediat urmator celui in care au fost propuse si nu se refac.
F. Radulescu. Curs: Programare Web, anul 4 C5. 4

Notare
NotaLaborator se calculeaza pe baza
notelor la temele de laborator, a activitatii de la laborator si a task-urilor propuse dupa fiecare laborator

Se tine cont nu doar de prezenta fizica in laborator, ci este notata mai ales implicarea studentului in realizarea lucrarilor practice din fiecare saptamana. Regulamentul de curs si laborator se va afisa pe situl cursului (de la curs.cs.pub.ro)
F. Radulescu. Curs: Programare Web, anul 4 C5. 5

Participarea la ore
Fiecare student participa la curs conform seriei in care este inscris. Fiecare student participa la laborator conform grupei din care face parte. Participarea cu alta serie / grupa este posibila in cazuri bine justificate, cu acordul cadrelor didactice implicate.

F. Radulescu. Curs: Programare Web, anul 4 C5.

Capitolele cursului

F. Radulescu. Curs: Programare Web, anul 4 C5.

Capitole - FR
1. Arhitectura unei aplicatii web 2. Servere HTTP: caracteristici, exemple 3. Limbajul HTML: elemente de baza, tabele, cadre, formulare 4. Scripturi CGI. Scripturi scrise in limbaje compilate. 5. Folosirea limbajului SQL pentru programarea web. ODBC 6. Limbaje de scripting server-side, PHP
F. Radulescu. Curs: Programare Web, anul 4 C5. 8

Capitole - CD
7. Programare web client-side, jscript 8. Continut si design in programarea web, CSS, DHTML 9. Elemente multimedia pentru programarea web 10. Administrarea continutului site-urilor Web: optimizarea paginilor web pentru indexarea de catre motoarele de cautare, solutii profesionale 11. Elemente de securitate si optimizare
F. Radulescu. Curs: Programare Web, anul 4 C5. 9

Capitolul 1. Arhitectura unei aplicatii web

F. Radulescu. Curs: Programare Web, anul 4 C5.

10

Evolutie
Arhitectura unei aplicatii informatice folosita intr-o organizatie a trecut prin mai multe etape: 1. Etapa Mainframe 2. Etapa Client-Server 3. Etapa Web Based (aplicatii web sau web-enabled)

F. Radulescu. Curs: Programare Web, anul 4 C5.

11

Etapa Mainframe
Un calculator de tip Mainframe. O multitudine de terminale (dumb terminals) conectate la acesta. Aplicatiile erau centralizate (rulau pe sistemul mare). Nu se punea problema arhitecturii aplicatiei decat in termenii de mai sus. Nu existau de obicei conexiuni din afara organizatiei -> securitatea nu era o problema majora.
F. Radulescu. Curs: Programare Web, anul 4 C5. 12

Etapa client-server
Un calculator (uneori mai multe) de tip minicalculator pe care ruleaza serverul. O serie de PC-uri pe care ruleaza programele client (programe dedicate furnizate o data cu aplicatia). Retea locala prin care comunica masinile respective. Apare si posibilitatea calculului distribuit (distributed computing) favorizat de vitezele din ce in ce mai mari de comunicatie
F. Radulescu. Curs: Programare Web, anul 4 C5. 13

Etapa client-server
Softul de baza (SO, SGBD) se adapteaza si el pentru lucrul in retea si calcul distribuit. Problemele noi care apar sunt legate de:
Conectivitate Performanta Securitate
F. Radulescu. Curs: Programare Web, anul 4 C5. 14

Etapa client-server
In prima perioada a etapei clientserver aplicatiile erau mai ales departamentale: In cadrul organizatiei fiecare departament (productie, financiar, resurse umane, relatii cu clientii, etc) avea propria sa aplicatie accesata in reteaua locala a departamentului.
F. Radulescu. Curs: Programare Web, anul 4 C5. 15

Etapa client-server
Din aceasta cauza problemele de conectivitate si securitate nu erau critice, cele mai importante fiind problemele de performanta. Ca urmare, de cele mai multe ori responsabilitatile unui astfel de sistem erau cumulate de catre administratorul bazei de date (principalele elemente de performanta ale unei aplicatii erau date de performantele bazei de date)
F. Radulescu. Curs: Programare Web, anul 4 C5. 16

Etapa client-server
Aparitia sistemelor de tip ERP (Enterprise Resource Planning sistem informatic integrat de intreprindere) a dus la necesitatea interconectarii si integrarii aplicatiilor departamentale intr-un tot unitar. In acel moment problemele de securitate si de conectivitate au capatat o mult mai mare importanta.
F. Radulescu. Curs: Programare Web, anul 4 C5. 17

Etapa web-based
Deosebirea principala in acest caz este accesarea aplicatiei
Printr-un client standard (browserul) De foarte multe ori din afara locatiei unde se afla aplicatia Comunicatia se face nu prin canale private / dedicate ci prin Internet

O arhitectura tipica este in figura urmatoare [1]:


F. Radulescu. Curs: Programare Web, anul 4 C5. 18

F. Radulescu. Curs: Programare Web, anul 4 C5.

19

Probleme de rezolvat
In care locatii trebuie sa existe server (= bani necesari dotarii cu asa ceva) si in care nu. Pentru asta se analizeaza:
Numarul de utilizatori dintr-o anumita locatie Latimea de banda disponibila intre locatia respectiva si locatia principala Timpul de raspuns necesar de asigurat utilizatorilor
F. Radulescu. Curs: Programare Web, anul 4 C5. 20

Probleme de rezolvat
Rezolvarea problemelor de securizare a transmisiei de date: datele circuland in afara retelei organizatiei trebuie de exemplu criptate corespunzator. Problemele legate de browser: aplicatia trebuie sa poata fi accesata in acelasi mod si fara pierderi de functionalitate prin oricare din tipurile principale de browser existente.
F. Radulescu. Curs: Programare Web, anul 4 C5. 21

Probleme de rezolvat
Probleme legate de conectivitate: din toate locatiile de unde aplicatia e necesar sa fie accesibila timpul de raspuns trebuie sa fie in parametrii ceruti. De asemenea trebuie apreciat traficul generat de o aplicatie in contextul in care aceasta ruleaza in paralel cu alte aplicatii. Performantele pot fi afectate in cazul in care traficul cumulat depaseste anumite praguri.

F. Radulescu. Curs: Programare Web, anul 4 C5.

22

Cum continuam?
In partea a doua a cursului veti studia dezvoltarea de aplicatii web complexe. In prima parte insa ne vom concentra pe elementele de baza: HTML, CGI, folosirea bazelor de date in aplicatii web si limbajul de scripting PHP.

F. Radulescu. Curs: Programare Web, anul 4 C5.

23

Cum continuam?
In partea a doua a cursului veti studia dezvoltarea de aplicatii web complexe. In prima parte insa ne vom concentra pe elementele de baza: HTML, CGI, folosirea bazelor de date in aplicatii web si limbajul de scripting PHP.

F. Radulescu. Curs: Programare Web, anul 4 C5.

24

Exemplu de arhitectura
In cele ce urmeaza prezentam arhitectura unei aplicatii web simple in care datele sunt stocate intro baza de date relationala. Actorii implicati intr-o astfel de aplicatie sunt: Browserul care poate fi oricare, ex.: Opera, Microsoft Internet Explorer, etc. Serverul de web. Exista o multitudine de servere de web, printre care cel mai folosit in aplicatii de acest gen este Apache Un sistem de gestiune a bazelor de date (SGBD) relaional. Se poate folosi atat sistemul MySQL care practic gratuit dar si sisteme comerciale (Oracle, MS SQL Server, etc), acestea oferind in ultimul timp versiuni gratuite pentru aplicatii de dimensiuni mici.
F. Radulescu. Curs: Programare Web, anul 4 C5. 25

1. 2. 3.

Exemplu de arhitectura
4. Una sau mai multe formulare, care sunt fiiere HTML permitnd utilizatorului introducerea prin tastare sau selectarea din meniuri sau prin butoane a unor date. Acestea vor defini anumite operaii asupra bazei de date. Scripturi CGI asociate formelor. Acestea sunt programe care interpreteaz datele completate n formular i genereaz un raspuns ctre utilizator inclusiv prin interogarea unei baze de date. Fiecare dintre aceste componente poate exista sau rula pe o alt main. n mod obinuit browserul ruleaz pe o main client iar celelalte pe una sau mai multe maini aflate la furnizorul serviciului de web respectiv.
F. Radulescu. Curs: Programare Web, anul 4 C5. 26

5.

Arhitectura aplicatiei
Browser
1. Browserul cere un fiier coninnd un formular 2. Serverul trimite formularul 3. Browserul trimite datele completate

Server de web

7. Serverul trimite rezultatul scriptului

4,5

Sistem de gestiune a bazelor de date (SGBD)

5.1. Cereri SQL

5.2. Rezultate cereri

Script CGI asociat formularului

F. Radulescu. Curs: Programare Web, anul 4 C5.

27

Desfasurarea procesului
1. 2. 3. Browserul cere serverului de web o pagin HTML coninnd un formular. Serverul trimite acea pagin browserului. Acesta o afieaz pe ecran lsnd apoi utilizatorul s completeze elementele formularului. Dup completare, utilizatorul selecteaz un buton de tip "trimite datele". Browserul mpacheteaz informaiile completate trimindu-le serverului de web. Serverul de web lanseaz scriptul CGI asociat formularului dndu-i acestuia datele primite de la browser.
F. Radulescu. Curs: Programare Web, anul 4 C5. 28

4.

Desfasurarea procesului
5. Scriptul CGI despacheteaz aceste date i le folosete ca informaii de plecare pentru aciunea pe care o efectueaz. Printre operaiile efectuate de acest script pot fi:
5.1. Trimiterea de cereri SQL ctre un SGBD. 5.2. Primirea i interpretarea rezultatelor acestor cereri.

6. Scriptul CGI scrie la ieire un fiier (n general de tip HTML dar nu numai) i i ncheie execuia. 7. Serverul de web preia acest rezultat i l trimite browserului spre afiare.
F. Radulescu. Curs: Programare Web, anul 4 C5. 29

Script CGI
Scripturile CGI sunt o modalitate de a furniza pagini dinamice HTML sau de alt tip (imagini, video, sunet, postscript, etc). Acestea nu sunt efectiv stocate ca atare pe serverul web ci sunt generate pe baza datelor obinute de la utilizator (n general conform datelor completate de ctre acesta ntr-un formular). Din aceast cauz ele nu pot fi servite direct de serverul web ci trebuiesc create de ctre un program care se numete script CGI.
F. Radulescu. Curs: Programare Web, anul 4 C5. 30

Script CGI
Numele de script CGI provine din denumirea specificaiei interfeei ntre serverul de web i astfel de programe, numit Common Gateway Interface prescurtat CGI. Teoretic orice program executabil care respect anumite convenii n ceea ce privete mediul din care i colecteaz datele iniiale i modul n care scrie rezultatul poate fi un script CGI.
F. Radulescu. Curs: Programare Web, anul 4 C5. 31

Exemplu
Cel mai simplu exemplu de script este un program care pentru orice date de intrare afieaz un mesaj standard. Iat un exemplu scris n limbajul C:
#include <stdio.h> int main() { printf("Content-Type: text/html\n\n"); printf("<html>\n"); printf("<body>\n"); printf("Sunt un script CGI\n"); printf("</body>\n); printf("</html>\n"); }
F. Radulescu. Curs: Programare Web, anul 4 C5. 32

Exemplu
Rezultatul rulrii acestui script este urmtorul:
Content-Type: text/html [Linie goala] <html> <body> Sunt un script CGI </body> </html>
F. Radulescu. Curs: Programare Web, anul 4 C5. 33

Exemplu
Observm dou poriuni separate printr-o linie goal. Prima reprezint un header coninnd tipul rspunsului (fiier de tip text n format HTML) iar a doua conine efectiv fiierul respectiv. Mai multe informaii despre sintaxa HTML se gsesc ntr-un capitol urmator. Detalierea modului n care scriptul i colecteaz informaia de intrare i a modului n care trebuie s arate rezultatul este fcut n paragrafele urmatoare.
F. Radulescu. Curs: Programare Web, anul 4 C5. 34

Scripturi CGI
Cele mai multe servere sunt deja preconfigurate pentru a putea lansa scripturi CGI. Cteva elemente comune sunt urmtoarele: Orice server web gestioneaz o anumit zon din sistemul de fiiere al mainii respective pornind dintr-un punct (director) numit SERVER_ROOT (pe serverele Apache/Unix acesta este de exemplu /usr/local/etc/httpd/). n general i scripturile trebuiesc stocate n aceast zon. Exist cazuri n care se poate trece peste aceast restricie dar o astfel de abordare poate crea probleme de securitate mrind posibilitatea accesului nepermis la datele stocate pe acea main. Unele servere web nu recunosc scripturile de tip program executabil dect dac acestea au extensia .cgi.
F. Radulescu. Curs: Programare Web, anul 4 C5. 35

Scripturi CGI
Exist configurri de servere n care scripturile trebuiesc stocate doar n directoare cu nume predefinit (de exemplu SERVER_ROOT/cgi-bin sau ~user/cgi-bin). Pe sistemele de tip Unix serverul de web ruleaz de obicei sub un user-Unix far drepturi de login (de exemplu userul nobody). n acest caz calea de la SERVER_ROOT pn la scriptul CGI trebuie s-i fie accesibil: protecie 701 pentru directoare i 604 pentru scripturi sau +x pentru directoare i +r pentru scripturi. Orice server web are unul sau mai multe fiiere de configurare (la Apache de exemplu fiierul se numeste httpd.conf) care sunt citite la lansare. Acestea conin o serie de directive care afecteaz i tratarea scripturilor CGI i trebuiesc eventual modificate n anumite cazuri. Dup o astfel de modificare serverul trebuie relansat pentru a citi noile valori ale parametrilor.
F. Radulescu. Curs: Programare Web, anul 4 C5. 36

Script CGI in pagina web


Pn acum am considerat un script CGI ca fiind un fiier executabil. Acesta poate proveni dintr-un program compilat (C sau alt limbaj) sau poate fi un fiier executabil scris n shell sau alt limbaj interpretat (cum este perl). n cazul multor servere web exist ns i posibilitatea de a include scripturile direct n fiierele HTML. n acest caz o pagin web va conine att directive HTML care sunt interpretate obinuit de browser ct i programe scrise n anumite limbaje care vor fi nlocuite cu rezultatul execuiei lor. Exist dou abordri n acest caz:

F. Radulescu. Curs: Programare Web, anul 4 C5.

37

Client side
Abordarea client-side: paginile coninnd scripturi sunt trimise de serverul web far nici o modificare ctre browser, urmnd ca execuia lor s aib loc acolo. Este cazul limbajului Java (pentru acest caz programele incluse n paginile web sunt numite i applet-uri) pe care browserele uzuale l conin nativ. n felul acesta o parte a procesrilor se transfer de la server micsornd volumul de activitate pentru primul.
F. Radulescu. Curs: Programare Web, anul 4 C5. 38

Server side
Abordarea server-side: serverul nlocuiete n pagina cerut programul cu rezultatul acestuia. Pentru aceasta serverul trebuie s aib suport pentru limbajul respectiv. In prima parte a cursului nostru vom prezenta limbajul de scripting server side PHP
F. Radulescu. Curs: Programare Web, anul 4 C5. 39

CGI date de intrare


Fiecare formular are asociat o metod prin care datele completate de utilizator sunt transmise de serverul de web ctre scriptul CGI. Aceste informaii sunt mpachetate sub forma unui ir de perechi de forma:
simbol1=valoare1&simbol2=valoare2&&simbolk=valoarek

unde numele simbolilor este dat de numele cmpurilor formularului iar valorile sunt cele furnizate de utilizator prin completare.
F. Radulescu. Curs: Programare Web, anul 4 C5. 40

CGI date de intrare


Metodele care pot fi folosite sunt n numr de dou i anume: 1. Metoda GET pentru care datele sunt stocate ntr-o variabil de mediu (environment) cu nume predefinit (QUERY_STRING). 2. Metoda POST pentru care datele sunt plasate n fiierul standard de intrare al scriptului (stdin n cazul scripturilor scrise n limbajul C) iar lungimea irului care le conine este stocat ntr-o variabil cu nume predefinit (CONTENT_LENGTH).
F. Radulescu. Curs: Programare Web, anul 4 C5. 41

CGI date de intrare


Pe lng aceste informaii serverul seteaz o serie de alte variabile de mediu coninnd o multitudine de alte informaii. n cazul scrierii de scripturi n limbajul C acestea se pot obine folosind funcia getenv() iar n cazul scripturilor care utilizeaz modulul PHP acestea sunt direct disponibile. Informaiile furnizate cuprind:
F. Radulescu. Curs: Programare Web, anul 4 C5. 42

Variabile de mediu
Informaii generale: Versiunea interfetei CGI utilizate, protocolul folosit i metoda utilizat de formular: GET sau POST Datele primite de la browser coninnd informaiile furnizate de utilizator prin intermediul completrii cmpurilor formularului. Informaii despre client: numele i adresa mainii client, numele userului i modul de autentificare dac e cazul, tipul browserului folosit, limbile suportate de acesta, tipurile de date acceptate, pagina precedent accesat, etc.
F. Radulescu. Curs: Programare Web, anul 4 C5. 43

Variabile de mediu
Informaii despre serverul de web care lanseaz scriptul: tipul serverului, numele sau, portul pe care a fost primit cererea, rdcina arborelui de documente (DOCUMENT_ ROOT) precum i numele i calea ctre scriptul lansat. Alte informaii primite de la client: ci suplimentare ctre alte documente i translaia lor n contextul sistemului de fiiere al mainii pe care se afl.
F. Radulescu. Curs: Programare Web, anul 4 C5. 44

Variabile de sistem
Pe baza variabilelor de mediu, a datelor primite, etc, mediul PHP prseteaza pentru executia scriptului o serie de variabile care pot fi folosite apoi direct de catre acesta. Marea lor majoritate sunt tablouri asociative, elementele tablourilor respective putand fi accesate prin numele lor si nu doar prin indici ca in cazul tablourilor obisnuite. Cateva dintre cele mai importante astfel de variabile sunt:
$_GET, $_POST tablouri asociative care contin informatiile trimise de formular $_SESSION tablou asociativ care permite transmiterea de valori de la o pagina PHP la alta.

F. Radulescu. Curs: Programare Web, anul 4 C5.

45

CGI - Date de iesire


Un script CGI trebuie s scrie la ieirea standard un rezultat cu urmtoarea form: 1. Un header format dintr-o succesiune de directive, cte una pe linie. Acesta va conine opional directiva Status iar n caz de succes una din cele dou directive Content-type sau Location (dar nu ambele). 2. O linie goal. 3. Un document de tipul specificat n Contenttype.
F. Radulescu. Curs: Programare Web, anul 4 C5. 46

Status
Directiva Status: Aceast directiv are sintaxa: Status: <cod_numeric> [<denumire>] Codurile numerice uzuale sunt date n continuare (vezi si [3]) Directiva se poate folosi n cazurile n care se dorete semnalarea unei erori. Ea va fi transmis mai departe de serverul de web ctre browser care va afia un mesaj de eroare corespunztor (un text explicativ se poate include n zona de document a rspunsului, dup linia goal care marcheaz "sfrit de header". n caz de succes se poate folosi cu codul 200
F. Radulescu. Curs: Programare Web, anul 4 C5. 47

Status
Cod
200 201 202 204 301 302 304 400 401 403 404 500 501 502 503

Descriere
Succes. Rspunsul corespunztor urmeaz dup header. Dac o resursa (fiier de exemplu) a fost creat de ctre server se poate trimite acest cod mpreun cu locaia acesteia. Se folosete n cazul metodei POST pentru "file uploading". Cerere acceptat dar nc neprocesat. Se poate folosi atunci cnd rezultatul va fi trimis ulterior (de exemplu prin email). Succes dar rspunsul corespunztor este vid. Documentul a fost mutat permanent la alt adres. Aceasta se specific cu Location. Documentul a fost mutat temporar la alt adres. Aceasta se specific cu Location. Documentul nu este servit. Se poate utiliza atunci cnd cererea a fost condiional (de exemplu documentul solicitat a fost modificat dup o anumit dat) iar condiia nu este ndeplinit. Cerere eronat. n general acest cod nu poate fi primit dect dac browserul conine erori. Cererea privete un document care necesit autentificarea utilizatorului. Cerere corect dar care nu poate fi servit (de exemplu serverul sau clientul nu au drepturile necesare de acces). Fiierul cerut nu exist. Eroare server. Acest cod este trimis dac scriptul CGI are erori sau nu trimite headerele necesare. Tip de cerere neimplementat pe acel server Este trimis de server atunci cnd el acioneaz ca "proxy server" sau "gateway" i a primit un raspuns eronat de la un alt server. Serverul este prea solicitat pentru a trata alte cereri.

F. Radulescu. Curs: Programare Web, anul 4 C5.

48

Content type
Directiva Content-type Aceast directiv este esenial pentru ca serverul de web s tie ce fel de document urmeaz. Forma ei este:
Content-type: tip/subtip

Cateva tipuri uzuale care se pot include n aceast directiv sunt cele din tabelul urmator. Valoarea implicit este text/plain, nsa este recomandat ca ea s nu lipseasc deoarece serverul de web poate s nu neleag rezultatul scriptului i s transmit o eroare de tip 500 (Internal server error) ctre browser.
F. Radulescu. Curs: Programare Web, anul 4 C5. 49

Content Type
Tip/Subtip
Text/plain Text/html

Descriere

Text. Este tipul implicit. Fiier HTML. Rich Text Format (RTF). Este un tip recunoscut de majoritatea Text/richtext procesoarelor de texte. Image/gif Imagine n format GIF, recunoscut de majoritatea browserelor. Image/jpeg Imagine n format JPEG, de asemenea recunoscut de browsere. Imagine n format X bitmap, un format foarte simplu recunoscut de Image/x-xbitmap browsere. Extensia standard pentru astfel de fiiere este .xbm Sunet n format ulaw comprimat. Extensia standard pentru astfel de audio/basic fiiere este .au. audio/x-wav Sunet n format specific Microsoft Windows. video/mpeg Imagini video n format MPEG comprimat. video/quicktime Imagini video n format Quicktime video. video/x-msvideo Imagini video n format Microsoft Video. Extensia uzual este .avi. Fiier binar. La primirea unui astfel de fiier browserul permite pe baza application/octet-stream dialogului cu utilizatorul salvarea pe discul local. application/postscript Fiiere Postscript.

F. Radulescu. Curs: Programare Web, anul 4 C5.

50

Location
Directiva Location Forma acestei directive este: Location: URL Prin aceast directiv se semnaleaz c rezultatul trebuie cutat la adresa specificat. Browserul va fi automat redirectat i va prezenta documentul respectiv. Din acest motiv n cazul folosirii directivei Location dup linia goal care marcheaz "Sfarit de header" rspunsul poate s nu conin altceva.
F. Radulescu. Curs: Programare Web, anul 4 C5. 51

Erori returnate de server


Eroarea 403: Forbidden (Acces interzis) n mediul Unix fiecare user are sau nu drepturi de citire (read- r) scriere (write - w) sau execuie (execute - x) asupra directoarelor i fiierelor. Cum serverul web ruleaz de obicei sub userul nobody trebuie ca ntreaga cale de la SERVER_ROOT pn la scriptul CGI s fie accesibil acestuia. Pentru aceasta directoarele trebuie s permit dreptul de execuie pentru server iar fiierele coninnd scripturi cgi i forme drepturi de citire i execuie. n caz contrar se va semnala aceast eroare.
F. Radulescu. Curs: Programare Web, anul 4 C5. 52

Erori returnate de server


Eroarea 404: File not found (fiier inexistent) Aceast eroare apare atunci cnd referina absolut sau relativ la un fiier coninnd un formular sau un script CGI este greit. Este des ntlnit atunci cnd n formular se specifica o adres relativ a scriptului asociat. n cazul mutrii formularului n alt director referina nu mai este valabil.

F. Radulescu. Curs: Programare Web, anul 4 C5.

53

Erori returnate de server


Eroarea 500: Internal Server Error (Eroare intern server) Aceast eroare apare atunci cnd serverul web nu poate interpreta rezultatul scriptului. Aa cum am vzut, un rezultat corect const n: 1. Un header care conine opional directiva Status iar n caz de succes una din cele dou directive Content-type sau Location. 2. O linie goal. 3. Corpul documentului, compatibil cu Content-type dac aceasta este prezent n header n cazul n care rezultatul scriptului nu arat astfel serverul va semnala aceast eroare.
F. Radulescu. Curs: Programare Web, anul 4 C5. 54

Erori returnate de server


Eroarea 501: Method not implemented (metod neimplementat) Aceast eroare poate apare n cazul metodei POST dac serverul web a fost configurat s nu permit execuia scripturilor n anumite directoare. Toate scripturile stocate n acestea vor fi tratate ca fiiere obinuite pentru care metoda POST este interzis.
F. Radulescu. Curs: Programare Web, anul 4 C5. 55

Alte situatii
Directivele de header ale rspunsului (Content-type de exemplu) apar pe ecranul browserului. Aceast situaie apare cnd directivele de header ale rspunsului au fost emise de scriptul CGI mai trziu dect trebuie, ele fiind interpretate ca fcnd parte din documentul propriuzis.
F. Radulescu. Curs: Programare Web, anul 4 C5. 56

Alte situatii
n locul unui rezultat se obine un fiier binar indescifrabil n acest caz este posibil ca cererea s fi fost fcut fr a se trece prin serverul de web. Aceast situaie poate apare atunci cand browserul i formularul sunt pe aceeai main iar accesul la formular a fost fcut direct (majoritatea browserelor pot fi folosite i pentru a afia fiiere HTML fr intervenia serverului de web).
F. Radulescu. Curs: Programare Web, anul 4 C5. 57

Alte situatii
Modificrile fcute n formulare sau scripturi nu se reflect n rspunsul primit de la server. Multe servere (inclusiv Apache) se pot configura cu caching. Acest lucru nseamn c serverul stocheaz n cache ultimele pagini servite ctre clieni iar la o nou cerere pentru una dintre acestea nu mai citete pagina de la locaia originala ci din cache. Pentru a fora rencrcarea paginii se poate folosi butonul Reload existent la majoritatea browserelor.
F. Radulescu. Curs: Programare Web, anul 4 C5. 58

Bibliografie
1. 2. 3. Vispi Munshi, Developing a technical architecture for Web-based enterprise software systems, http://www.ibm.com/developerworks/web/library/watecharch/ F. Radulescu, Baze de date in Internet, Editura Printech, 2000 Hypertext Transfer Protocol -- HTTP/1.1, Cap. 10 Status Code Definitions, http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

F. Radulescu. Curs: Programare Web, anul 4 C5.

59

Sfritul Capitolului 1

F. Radulescu. Curs: Programare Web, anul 4 C5.

60