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.

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.

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.

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.

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.

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


1.
2.
3.

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

Exemplu de arhitectura
4.

5.




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

Arhitectura aplicatiei
Browser

1. Browserul cere un fiier coninnd un formular


2. Serverul trimite formularul

Server de
web

3. Browserul trimite datele completate

7. Serverul trimite rezultatul scriptului

Sistem de
gestiune a
bazelor de date
(SGBD)

5.1. Cereri SQL

5.2. Rezultate cereri

F. Radulescu. Curs: Programare Web,


anul 4 C5.

4,5

Script CGI
asociat
formularului

27

Desfasurarea procesului
1.
2.
3.

4.

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

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

Descriere

200

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.

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

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

Descriere

Text/plain
Text/html

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

S-ar putea să vă placă și