Documente Academic
Documente Profesional
Documente Cultură
CUPRINS
CUPRINS ................................................................................................................................................25
Noțiuni generale ....................................................................................................................................26
Limbajul HTML .......................................................................................................................................27
Culori .................................................................................................................................................27
Stiluri pentru blocuri de text ...............................................................................................................28
Configurarea fonturilor.......................................................................................................................28
Familia fontului ..............................................................................................................................28
Marimea fontului ...........................................................................................................................29
Blocuri de text ....................................................................................................................................29
Blocuri de titlu....................................................................................................................................29
Trasarea liniilor ..................................................................................................................................30
Liste ...................................................................................................................................................30
Liste ordonate ................................................................................................................................31
Lista de definitii ..............................................................................................................................31
Definirea culorilor pentru un tabel .....................................................................................................33
Pagina cu legaturi ...............................................................................................................................34
Formulare ..........................................................................................................................................35
Interactivitatea paginilor web.........................................................................................................35
Radiobutoane ....................................................................................................................................38
Casete de valitare sau Checkbox .........................................................................................................38
Casete de fisiere.................................................................................................................................39
Liste de selecție..................................................................................................................................39
Câmpuri de editare multilinie .............................................................................................................40
Cadre .................................................................................................................................................42
Stiluri dedicate ...............................................................................................................................43
Clase de stiluri ....................................................................................................................................44
Stiluri identificate ...........................................................................................................................45
25
PROIECTAREA PAGINILOR WEB
Noțiuni generale
Există mai multe metode de acces la informația stocată pe un calculator prin intermediul
rețelei internet.
FTP = file transfer protocol, folosit in general pentru transferul de fișiere.
E-Mail = serviciul de poștă electonică
NEWS = serviciul de știri
WWW = world wide web
www utilizeaza tehnologia client-server, care constă din urmatoarele :
1 calculator, numit client, formuleaza o cerere. Cererea este expediată unui server.
Cererea parcurge un mediu până la server. Serverul analizează cererea, o execută, formulează
răspunsul și îl trimite înapoi clientului. Răspunsul parcurge mediul de transmitere către client.
Clientul receptionează răspunsul.
Pentru a comunica între ele, două calculatoare folosesc un sistem de reguli ce formează
un protocol. Serviciul www utilizează ca protocol de comunicare între client și server http://
(hypertext transfer protocol).
Hypertext reprezintă un text îmbogățit ce conține text obișnuit, precum și etichete
pentru formatarea textului și incapsularea altor tipuri de informatii, ca legaturi catre alte resurse,
sunete, imagini s.a.m.d.
Hypertextul este salvat in fisiere cu extensia .html
Limbajul care descrie hypertextul este asadar HTML (HYPERTEXT MARKUP
LANGUAGE).
Un calculator din reteaua internet poate fi identificat in mod unic prin intermediul unui
nume, sau adresa. Informatia care circula intre calculatoarele interconectate este incapsulata in
pachete.
Pachetele contin adresa expeditorului și adresa destinatarului, informația propriuzisă,
precum și numele aplicației de pe server care va primi cererea spre rezolvare.
Rețeaua internet dispune de mijloace de dirijare a pachetelor astfel încât acestea să
ajungă la destinaîie. Unul dintre mecanismele de dirijare se numeste IP (internet protocol).
Paginile web, adică paginile obținute prin vizualizarea pe calculatorul client, formează un
site web.
Prima pagină a unui site web mai este cunoscută și sub numele de HomePage. Prima
pagină trebuie să descrie informațiile conținute pe site, să prezinte o hartă a site-ului și în
principiu să fie placută ca aspect.
Numim Browser web aplicația de pe calculatorul client în care vizualizăm site-ul.
Numim server web o aplicație care rulează continuu pe un calculator central și care
este capabilă să răspundă în permanență cererilor clientului.
Un utilizator al serviciului www poate solicita vizualizarea prin intermediul browserului
a unei pagini web ce poate fi localizată pe un calculator aflat oriunde în lume. Aceasta se
face prin adresa URL atașată (Uniform Resource Locator).
URL identifică metoda de lucru, numele calculatorului, numele paginii și eventualii
parametri necesari vizualizării paginii.
Pentru scrierea unei pagini statice avem nevoie de un editor de texte, care poate fie
Notepad, EditPlus, WordPad etc. și de un browser web care să vizualizeze paginile (Internet
Explorer, Mozilla, Opera etc.).
26
PROIECTAREA PAGINILOR WEB
Limbajul HTML
Exemplu.html
<html>
<head>
<title>
Exemplu o
</title>
</head>
<body>
Salut
</body>
</html>
Un fisier .html este format dintr-o succesiune de marcaje. Marcajele cuprind blocuri.
Există marcaj pentru începutul blocului, respectiv pentru sfârșitul blocului.
Marcajul de sfârșit începe cu caracterul /
Cel mai cuprinzator marcaj este <html>, compus din două blocuri. Primul identificat de
marcajul <head> și cel de-al doilea de <body>.
Marcajul <head> include informații generale despre pagina curentă. In cazul exemplului
nostru, pagina va avea un titlu introdus de marcajul <title>.
Acest titlu va fi vizualizat pe prima linie a ferestrei browserului. Toate informatiile
cuprinse în blocul <body> vor fi vizualizate în browser.
Obs.: Marcajele de bloc pot contine și atribute, care sunt date sub forma perechilor nume
= valoare , atributele fiind separate prin spatiu.
Intr-un fisier .html caracterele obișnuite folosite în editarea unui text nu sunt
neapărat recunoscute. Astfel, caracterul enter nu are nici un fel de semnificație pentru browserul
web.
<body>
Prima linie
A doua linie
A treia linie
<body>
Rezultatul va fi :
Prima linie A doua linie A treia linie
Pentru a separa liniile trebuie folosit marcatorul <br> (break)
<body>
Prima linie <br> A doua linie<br> A treia linie
<body>
Culori
In html o culoare poate fi precizată in doua feluri: printr-un nume asociat culorii (html
pune la dispozitie 16 nume de culori, intre care "aqua", "black", "blue", "grey", "lime",
"maroon", "navy", olive, purple, red, silver, white, yellow), fie printr-o succesiune de 6 caractere
precedate de semnul diez.
Pe ecranul unui calculator culorile sunt obținute prin combinarea a 3 culori de baza :
RGB.
Cantitatea de culoare din fiecare poate avea valori cuprinse intre 00 și FF. Se obțin
27
PROIECTAREA PAGINILOR WEB
astfel câteva milioane de culori. Spre exemplu, #5C73F1 reprezintă o culoare validă.
#00FF00 = verde
Atributul care dă culoarea de fond a întregii pagini web este atributul <bgcolor> =
background color.
<body bgcolor = "red"> Prima linie <br>
A doua linie<br> A treia linie
<body>
Culoarea textului poate fi setată folosind atributul text=, valoarea acestui atribut fiind
o culoare validă
(exemplu text="#536189").
Configurarea fonturilor
Un font este caracterizat de următoarele atribute: culoare, familia fontului, marimea
fontului sau grosimea fontului.
Toate acestea pot fi stabilite prin atribute ale etichetei font. Textul pe care dorim să-l
supunem schimbării fontului va fi cuprins intre aceste etichete.
Culoarea este dată de atributul color.
Familia fontului
Exista 5 familii generice de fonturi, care sunt de regulă disponibile pe toate
calculatoarele. Acestea sunt :
Serif
Sans serif
Cursive
Monospace
Fantasy
Alte fonturi specifice pot fi utilizate doar dacă sunt instalate pe calculatorul client.
Spre exemplu :
Times
Helvetica
Arial și Courrier
Western
Atributul care stabileste familia fontului este "face".
Observatie :
Valoarea atributului "face" este recomandat a fi o listă de familii de stiluri în care pe
28
PROIECTAREA PAGINILOR WEB
Exemplu:
<html>
<head>
<title> Exemplu 1
</title>
</head>
<body>
<font color="red"> Aceasta linie este scrisa cu rosu
</font><br>
<font face="Times Roman, sans serif"> Linie scrisa cu
Times Roman </font><br>
<font size="4"> Linie scrisa cu marimea 4 </font><br>
<font weight="400"> Linie scrisa cu grosimea 400
</font><br>
</body>
</html>
Blocuri de text
Modalitatea cea mai e ficientă de delimitare și de formatare a unui bloc de text este
folosirea delimitatorului <div> .... </div> (division).
Div are multiple atribute, intre care atributul align determina alinierea textului din cadrul
blocului.
Valorile posibile pentru align sunt :
Align="left"
Align="right"
Align="center"
Obs.:
Blocul div permite existenta altor blocuri div in interiorul său.
Blocul <p>...</p> ; paragraf ; și acesta permite atributul align cu aceleasi 3 valori, dar
spre deosebire de div, toate browserele introduc un spatiu înainte și după blocul paragrafului.
Blocuri de titlu
Intr-un text sunt necesare titluri de capitole, subcapitole, paragrafe s.a.m.d.
Acestea pot fi introduse cu ajutorul urmatoarelor etichete : <h1>, <h2>, <h3>, ... <h6> ;
(header).
29
PROIECTAREA PAGINILOR WEB
<h1>......</h1>
și aceste blocuri acceptă align, <h1> permite scrierea cu caracterele cele mai mari și
cele mai groase, iar <h6> cu cele mai mici și mai subțiri.
Trasarea liniilor
Html permite trasarea liniilor orizontale cu ajutorul etichetei <hr> (horizontal row) care
are intre atribute align pentru aliniere, widht care permite alegerea lungimii liniei cu valori
posibile numere întregi reprezentând lungimea absolută a liniei dată în pixeli sau numere
întregi în intervalul 1-100 urmate de semnul % reprezentând lungimea în procente relativ la
dimensiunea blocului în care se află linia.
Alt atribut este size reprezentând grosimea liniei, cu valori numere întregi. Dacă lipsește,
size="2", adică 2 pixeli.
Atributul noshade care atunci când este prezent definește o linie fără umbră.
Blocul <center>......</center>, care determină centrarea tuturor elementelor cuprinse în
interiorul său.
<h2> sucesiune de linii
centrate </h2>
<center>
<hr width="10%"> <hr
width="40%">
<hr width="70%"> <hr
width="100%">
<hr width="70%"> <hr width="40%">
<hr width="10%">
</body>
</html>
Liste
HTML permite inserarea într-o pagina web a listelor, pune la dispoziție liste
neordonate, sunt introduse între delimitatorii
<ul>
...............
</ul> (unordered list).
Un element în cadrul unei liste este introdus prin eticheta <li> ; list item.
Ambele etichete ul și li au atributul type ce defineste simbolul de inceput al listei.
Valoarea lui type poate fi:
Circle – reprezentand un cerc gol
Disk – reprezentand un cerc plin (valoare predefinita)
Square – reprezentand un patrat
Exemplu:
<html>
<head>
<title>Exemplul 3
Type="Circle"
<h2> Lista neordonata </h2>
<ul> Pentru a cunoaste internetul trebuie sa studiati
<li> HTML
30
PROIECTAREA PAGINILOR WEB
<li> CSS
<li> PHP
</ul>
</body>
</html>
Liste ordonate
Lista de definitii
31
PROIECTAREA PAGINILOR WEB
Exemplu :
<html>
<head>
<title> Exemplu 5
</title>
</head>
<body>
<h2> Lista de definitii </h2>
<dl> dictionar de termeni internet
<dt> Browser
<dd> aplicatie ce ruleaza pe calculatorul client
<dt> Server
<dd> aplicatie ce ruleaza continuu pe calculatorul central
</dl>
</body></html>
O structura foarte importanta pentru o aplicatie web este structura tabelara.
Tabelele ne permit sa cream o retea dretpunghiulara de domenii, fiecare domeniu avand
proprietatile de culoare pentru font și text, aliniere s.a.m.d.
Un tabel este introdus intr-o pagina web prin intermediul etichetei
<table>
...
</table>
Tabelul este format din linii, o linie fiind introdusa prin eticheta
<tr> ; table row
Iar in cadrul unei linii avem mai multe elemente ce contin date, cunoscute sub numele de
celule
<td> ; table data
In mod prestabilit, un tabel nu are chenar. Pentru a adauga un chenar unui tabel folosim
atributul border atasat etichetei table.
Atributul border are valori numere intregi pozitive, inclusiv 0, reprezentand grosimea in
pixeli a liniei ce deseneaza chenarul.
Border="2"
32
PROIECTAREA PAGINILOR WEB
Exemplu :
<html>
<head>
<title> Exemplu 6
</title>
</head>
<body>
<h2> Tabel cu chenar </h2>
<table border="5">
<tr><td>celula 11 <td> celula 12 <td> celula 13
<tr><td>celula 21 <td> celula 22 <td> celula 23
</table>
</body>
</html>
Eticheta table are la randul sau atributul align, cu valorile left, right și center,
determinand alinierea la stanga, la dreapta și centrat a tabelului in pagina.
Align="left"
33
PROIECTAREA PAGINILOR WEB
Exemplu8.htm :
<html>
<head>
<title> Exemplu 8
</title>
</head>
<body>
<h1> Inserarea unei imagini
intr-o pagina web</h1>
<img src ="imagine.jpg" border="5">
</body>
</html>
Cum sa facem o imagine care sa se raspandeasca pe tot fundalul paginii:
Exemplu9.htm:
<html>
<head>
<title> Exemplu 9
</title>
</head>
<body background ="imagine.jpg">
<h1> Pagina cu imagine de fond </h1>
</body>
</html>
Pagina cu legaturi
Intr-o pagina web putem introduce legaturi catre alte pagini sau resurse din internet.
Legaturile se fac prin intermediul etichetei <a> (anchor) ... </a>.
Aceasta eticheta are atributul href, care va introduce pagina ce inlocuieste pagina curenta.
Pagina1.htm :
<html>
<head>
<title> Pagina 1
</title>
</head>
<body >
<h1> Prima pagina </h1>
<a href ="pagina2.html"> legatura catre pagina 2 </a>
</body>
</html>
34
PROIECTAREA PAGINILOR WEB
Pagina2.htm :
<html>
<head>
<title> Pagina 2
</title>
</head>
<body >
<h1> Prima pagina </h1>
<a href ="pagina1.html"> legatura catre pagina 1 </a>
</body>
</html>
Pagina3.htm :
<html>
<head>
<title> Pagina 3
</title>
</head>
<body >
<h1> Pagina 3 </h1>
<a href ="http://www.studiieconomice.com" target="blank"> Cursuri, referate </a>
</body>
</html>
Formulare
Interactivitatea paginilor web
Interactivitatea unei pagini web reprezinta posibilitatea ca un client sau utilizator sa
comunice cu un server astfel incat sa obtina informatia de care are nevoie.
Limbajul html fiind o forma particulara de realizare a hipertextului, ofera
posibilitatea navigarii intre diverse surse de informatii aflate in internet prin intermediul
legaturilor.
Pe langa legaturi, HTML pune la dispozitie formularele.
Un formular reprezinta un ansamblu de zone active alcatuit din butoane de apasat,
casete de selectie, campuri de editare s.a.m.d.
O sesiune de lucru cu o pagina web ce cuprinde un formular are urmatorii pasi :
1. utilizatorul completeaza formularul și il expediaza unui server
2. o aplicatie dedicata de pe server analizeaza formularul completat și stocheaza
eventual date in baza de date
3. serverul expediaza un raspuns utilizatorului
Un formular este inclus intr-o pagina web in interiorul blocului :
<form>
</form>
Obs: actiunea cea mai simpla pe care o putem face cu un formular este trimiterea unui
e-mail cu datele formularului. Pentru aceasta avem nevoie de un server de e-mail.
35
PROIECTAREA PAGINILOR WEB
Obs: într-o pagina web putem avea oricate formulare, dar acestea nu pot fi incluse unul in
altul. Elementul <form> are doua atribute esentiale:
1. atributul action, care precizeaza ce se va intampla cu datele formularului in momentul
in care acestea ajung la destinație. De regulă, valoarea atributului action este un URL ce
conține adresa unei aplicații de pe server ce prelucrează formularul.
Aplicatia de pe server poate fi scrisa PHP, Java, C#, Perl s.a.
Cea mai simplă prelucrare este transmiterea unui e-mail, caz în care valoarea lui action
este :
action = "mailto:student@yahoo.com"
2. Al doilea atribut este method, care precizeaza metoda utilizata de browser pentru
expedierea datelor formularului.
Cele mai frecvente valori sunt :
method = "get" – care este și valoarea implicita. In acest caz, datele din formular sunt
adaugate la adresa
URL precizata de atributul action.
La adresa URL se va adauga un ? și apoi perechi de forma : nume=valoare &, perechile
fiind separate prin atributul &.
Ex. www.yahoo.com/index.php? user=ion&pass=123
A doua valoare pentru method este "post". In acest caz datele sunt expediate separat.
Daca in cazul lui "get" puteam trimite maxim 1 KB de date, in cazul lui "post" putem trimite
cantitati mari de date, de ordinul MB.
Majoritatea elementelor unui formular sunt definite cu ajutorul etichetei <input>. Pentru a
preciza tipul elementului, <input> foloseste atributul type.
Daca dorim ca într-un formular să introducem un câmp de editare, atributul type va primi
valoarea :
type="text"
Alte atribute esentiale ale lui <input> sunt :
Name, care dă nume elementului formularului, îl regasim in URL, și value, care va da
valoarea elementului formularului, pe care îl putem regăsi deasemenea în URL.
Un buton de expediere al unui formular se introduce tot prin <input>, dar în acest
caz type va avea valoarea : type="submit".
Dacă nu se precizează valoarea elementului, pe buton va fi scris "Submit Query".
Valoarea precizată de utilizator va fi inscrisă ca etichetă a formularului.
36
PROIECTAREA PAGINILOR WEB
Exemplu:
<html>
<head>
<title> Exemplu 10
</title>
</head>
<body>
<h1> Formular cu camp de editare și buton de expediere</h1>
<form action="mailto:student@yahoo.com" method="post">
Numele : <input type="text" name ="Numele" value = "Numele și prenumele"><br>
<input type="submit" value="expediaza">
</form>
</body>
</html>
Rezultatul va fi un email pe care il vom primi : Numele = Ion Popescu
In plus, daca valoarea atributului type este type="text", <input> mai admite și
urmatoarele atribute : Atributul size, specifica latimea campului de editare, daca textul introdus
in campul de editare depaseste lungimea campului, atunci se va produce o defilare a acestuia
spre stanga.
Atributul maxlenght, care specifica numarul maxim de caractere care pot fi introduse
intr-un element text. Caracterele introduse peste numarul maxim vor fi ignorate.
In cazul in care intr-un formular introducem un element in care atributul type are
valoarea reset, type="reset", in pagina se va insera un buton care prin apasare determina
modificarea elementelor formularului la valorile predefinite.
Intr-un formular putem introduce de asemenea elemente de tip parola : In acest caz,
atributul type va avea valoarea : type="password"
Intr-un camp de tip parola, caracterele tiparite nu vor fi afisate in valoarea lor reala, ci
prin asteriscuri (*).
Exemplu:
<html>
<head>
<title> Exemplu 11
</title>
</head>
<body>
<h1> Formular cu
camp parola și buton de
resetare</h1>
<form action="mailto:student@yahoo.com" method="post">
Numele : <input type="text" name ="Numele" value = "Numele"><br> Prenumele : <input
type="text" name ="Prenumele" value = "Prenumele"><br> Parola : <input type="password" name
="Parola"><br>
<input type="reset" value = "Sterge"><br>
<input type="submit" value="expediaza">
</form>
37
PROIECTAREA PAGINILOR WEB
</body>
</html>
Radiobutoane
Butoanele radio permit alegerea la un moment dat alegerea unei singure variante
dintre mai multe posibile. Un element input ce defineste un radiobuton are atributul
type="radio".
Obs:
Pentru a obține efectul de radiobuton, adică doar o valoare selectată dintr-o listă de valori,
toate elementele listei vor aparține aceleiași familii, adică vor avea același nume.
In plus, în acest caz, elementul input poate avea atributul checked, determinând
selectarea predefinită a unui radiobuton.
Exemplu:
<html>
<head>
<title>
Exemplu 12</title>
</head>
<body>
<h1> Formular cu radio butoane</h1>
<form action="mailto:student@yahoo.com"
method="post"> Alegeti sexul: <br>
Barbatesc <input type="radio" name ="sex" value = "b"> Femeiesc <input type="radio" name
="sex" value = "f"><br>
<input type="submit"> </form>
</body>
</html>
38
PROIECTAREA PAGINILOR WEB
Pizza <input type="checkbox" name ="pizza" value = "o portie"> Nectar <input type="checkbox"
name ="nectar" value = "un pahar"> Cafea <input type="checkbox" name ="cafea" value = "o
ceasca"><br>
<input type="submit">
</form>
</body>
</html>
Casete de fisiere
Pentru a introduce un element care sa contina posibilitatea selectarii unui fisier care apoi
este transmis formularului pentru ca apoi sa fie expediat impreuna cu acesat, vom folosi un
element input in care atributul type="file".
Pentru acest tip de element, atributul name permite atasarea unui nume, value va avea ca
valoare adresa URL a fisierului ce urmeaza a fi incarcat impreuna cu formularul, value putand fi
tastat intr-o caseta text sau ales dintr-o fereastra de selectie prin apasarea butonului browse.
Un al treilea atribut este enctype, care precizeaza metoda utilizata la criptarea fisierului
de expediat. Valoarea acestui atribut trebuie sa fie obligatoriu "multipart/form-data".
Liste de selecție
O lista de selectie permite utilizatorului sa aleaga unul sau mai multe elemente dintr-o
lista finita. O lista de selectie se introduce in formular prin intermediul etichetei :
<select>
</select>
Lista de selectie are urmatoarele atribute : Name, care atasaza listei un nume.
Size, care precizeaza printr-un intreg pozitiv cate elemente din lista vor fi vizibile la
un moment dat pe ecran, celelalte elemente devenind vizibile prin actionarea unor bare de
derulare.
Elementele listei sunt incluse in lista prin atributul <option>. Acesta contine value,
care primeste ca valoare un text, respectiv selected, fara alte valori, ce permite selectarea
predefinita a unui element al listei.
39
PROIECTAREA PAGINILOR WEB
Exemplu:
<html>
<head>
<title> Exemplu 14
</title>
</head>
<body>
<h1> Formular cu lista de selectie</h1>
<form action="mailto:student@yahoo.com" method="post"> Universitatea absolvita : <br>
<select name="universitate" size="3">
<option value="B"> Universitatea din
Bucuresti
<option value="CJ"> Universitatea din Cluj
<option value="TM"> Universitatea din
Timisoara
<option value="IS"> Universitatea din Iasi
</select><br>
<input type="submit">
</form>
</body>
</html>
40
PROIECTAREA PAGINILOR WEB
41
PROIECTAREA PAGINILOR WEB
Cadre
Pana in acest moment, in fereastra browserului era incarcat un singur document HTML.
Cadrele ne permit sa definim in fereastra browserului subferestre in care sa fie incarcate
documente HTML diferite.
Cadrele sunt definite in fisiere HTML speciale in care blocul <body> este inlocuit de
blocul :
<frameset>
</frameset>
In interiorul acestui bloc fiecare cadru este introdus prin eticheta <frame>
Un element esential al etichetei <frame> este src, ce primeste ca valoare adresa URL
a documentului
HTML ce va fi incarcat in acel frame.
Impartirea unei ferestre intr-un numar de subferestre de tip coloana se face cu atributul
cols. Impartirea unei ferestre intr-un numar de subferestre de tip linie se face cu atributul rows.
Valoarea acestor atribute este o lista de elemente pentru fiecare subfereastra cate un
element, separate prin virgula, ce descriu modul in care se face impartirea.
Elementele listei pot fi :
- un numar intreg, urmat de unitatea de masura
- un numar intreg, urmat de semnul procent %
- numarul in intervalul 1-100, respectiv n* determinand impartirea ferestrei in n
subferestre de dimensiune egală.
Exemplu:
<html>
<head>
<title> Exemplu 16
42
PROIECTAREA PAGINILOR WEB
</title>
</head>
<frameset cols="20%,*">
<frame src="p1.html">
<frameset rows = „*,*”>
<frame src="p2.html">
<frame src="p3.html">
</frameset>
</frameset>
</frameset>
</html>
Fișierele p1.html, p2.html și p3.html au fost create anterior și salvate în directorul
curent al aplicației. Ele vor fi introduse in cadrul al caror atribute sunt. Pagina va fi impartita
astfel:
Initial in doua coloane, prima coloana ocupand 20% din spatiu in care incarcam fisierul
p1.html, cea de a doua coloana ocupa intreg spatiul ramas, la randul sau constituind un frameset
care va fi impartit pe linii in doua zone de dimensiune egala.
Putem stabili culori pentru chenarul unui cadru, utlilizand pentru aceasta atributul
bordercolor.
Atributul poate fi atasat tuturor cadrelor prin eticheta frameset sau unui singur cadru prin
eticheta frame.
De asemenea putem stabili dimensiunea cadrelor prin eticheta border.
Toate cadrele au aceeasi dimensiune. De aceea border se aplica numai etichetei
frameset.
Implicit valoarea lui border este 5, adica 5 pixeli. Daca valoarea ar fi 0, atunci am
obtine un cadru fara chenar.
In mod prestabilit, chenarul unui cadru este vizibil și are un aspect tridimensional.
Afisarea chenarului poate fi dezactivata daca utilizam atributul frameborder cu valoarea ="no".
Atributul poate fi folosit atat pentru frameset cat și pentru frame.
Frame poate avea și atributul scrolling, utilizat pentru a adauga unui cadru bare de
defilare. Valorile posibile ale lui scrolling sunt :
="yes". Barele de defilare sunt adaugate intotdeauna.
="no". Barele de defilare nu sunt adaugate vreodata
="auto". Adaugate doar atunci cand este nevoie.
Stiluri
Stilurile pun la dispozitia autorilor de site-uri posibilitati de personalizare a paginilor web.
Un stil reprezinta un mod de a scrie un bloc de text, adica posibilitati de setare a
fontului, a marimii, a culorii, alinierii, distantei fata de margine și asa mai departe.
Vom utiliza pentru definirea stilului sintaxa CSS (cascading style sheet).
Sintaxa CSS este sintaxa predefinita de utilizare a stilurilor, dar este bine sa informam
browserul asupra sintaxei folosite printr-o metainformatie :
<meta http-equiv = "content-style-type" Content="text/css">, metainformatie ce va fi
plasata in blocul <head>.
Definirea stilului presupune doua etape :
- Definirea propriuzisa a sa
- Specificarea domeniului in care se va utiliza acest stil.
Stiluri dedicate
Se aplica numai blocurilor pentru care au fost definite.
Inserarea unui stil se face intr-un bloc <style> ... </style>, iar blocurile definite se numesc
43
PROIECTAREA PAGINILOR WEB
reguli.
O regula este formata dintr-un selector și o descriere.
Selectorul specifica domeniul de utilizare a stilului iar descrierea defineste stilul utilizat.
Descrierea stilului este facuta intre acolade.
Stilul este definit prin intermediul perechilor atribut:valoare și sunt separate prin ;.
Presupunem ca dorim ca intr-o pagina web toate titlurile de marime 1 sa fie de culoare
rosie și centrate.
Exemplu:
<html>
<head>
<style>
<title> Exemplu 17
</title>
h1{text-align:center ; color:red;}
</style>
</head><body>
<h1>acest header este rosu și centrat </h1>
<h2>header cu stil predefinit </h2>
</html>
Daca dorim ca un selector sa fie aplicate la mai multe stiluri vom preciza separate
prin virgula lista acestora.
Clase de stiluri
Permit definirea unui stil general și folosirea lui oriunde este necesar.
Definirea clasei de stiluri se face tot in blocul style iar apelul clasei de stiluri folosit se
face prin intermediul atributului class, atribut de este disponibil tuturor elementelor HTML.
Exemplu:
<html>
<head>
<style>
<title> Exemplu 18
</title>
all.rc{text-align:center; color:red;}
</style>
</head><body>
<h1>acesta este un header cu stil predefinit </h1>
<h1 class=rc>Acesta este un header cu stil definit intr-o clasa</ h1>
<h2>header cu stil predefinit </h2>
</html>
Obs:
All se refera la faptul ca stilul poate fi utilizat de orice element HTML.
Putem restrictiona acest lucru prin specificarea numelui elementului (ex. h1.rc inseamna
ca stilul se aplica doar elementelor h1).
44
PROIECTAREA PAGINILOR WEB
Stiluri identificate
Toate elementele unui document admit atributul id. Acesta are rolul de a identifica
in mod unic un element in cadrul unui document. Atributul id poate identifica stilul utilizat de
un anumit element.
Un stil identificat definit in blocul style va avea primul caracter #.
Exemplu:
<html>
<head>
<style>
<title> Exemplu 19
</title>
#ROSU{text-
align:center ; color:red;}
</style>
</head><body>
<h1>acesta este un header cu stil predefinit </h1>
<h1 id=ROSU>Acesta este un header cu stil definit intr-o clasa</ h1>
<h2>header cu stil predefinit </h2>
</html>
Pentru a exprima valoarea unui atribut se pot utiliza diferite unitati de masura. Cele mai
raspandite sunt :
- Pt, puncte tipografice
- Px, pixeli
- In, inch
- Mm
- Cm
Relatia intre aceste unitati de masura este urmatoarea :
1 inch = 72 pt = 2,54 cm
Marimea unui font este stabilita prin atributul font-size și poate fi exprimata in 4 moduri:
- Prin valoarea absolut: font-size= xx-small, x-small, small, medium, large, x-large,xx-
large;
- Prin marimi relative: larger, smaller;
- Un număr întreg urmat de unitatea de masură;
- Un număr întreg în intervalul 0-100 urmat de semnul %, reprezentand procentul din
dimensiunea curenta pentru care aplicam fontul.
Grosimea fontului este exprimată prin atributul font-weight.
Poate avea urmatoarele valori : normal, bold, bolder, lighter.
Stilul fontului : font-style= normal, italic, oblique
Variantele fontului sunt date prin intermediul atributului font-variant= normal, small-
caps.
Avem un atribut unic, font, prin intermediul caruia pot fi stabilite simultan toate
valorile posibile ale fontului.
Ordinea este font-style, font-variant, font-weight, font-size, font-family.
45
PROIECTAREA PAGINILOR WEB
Exemplu:
<html>
<head>
<style>
<title> Exemplu 20
</title>
p {font:italic bolder 20pt "times new roman", serif;}
h2 {font:bold 20px "new century schoolbook",serif;}
</style>
</head><body>
<p>paragraf scris cu stil definit prin atributul font </p>
<h2>bloc header cu stil definit </h2>
</html>
Obs:
Pentru fiecare dintre cele doua stiluri definite, la atributul font-family am folosit o listă
de valori, deoarece este posibil ca pe calculatorul client să nu avem instalate toate fonturile.
Fontul al cărui nume este format din mai multe cuvinte a fost scris între perechi de
ghilimele.
Configurarea blocurilor de text. Un bloc de text este format din :
- Continut;
- Distanta dintre continut și chenar;
- Chenar;
- Margini.
Toate aceste atribute au valori cuprinse in intervalul 0-100 urmate de semnul % sau
valori intregi urmate de unitatea de masura.
Sintaxa css pune la dispozitie un atribut unic border, ce cuprinde toate valorile separate
prin spatiu.
46
PROIECTAREA PAGINILOR WEB
Bibliografie
http://www.w3schools.com/
47
PROIECTAREA PAGINILOR WEB
1
Bibliografie ........................................................................................................................................... 39
APLICAŢIE ............................................................................................................................................. 40
2
PROIECTAREA PAGINILOR WEB
1. Principii de proiectare
Principalele funcţii ale unui site sunt de informare, comunicare, poate avea ca scop simpla
prezentare de produse sau servicii dar trebuie neapărat să convingă.
Structura și aspectul grafic al site-ului trebuie să îndeplinească câteva caracteristici specifice de
bază.
În vederea proiectării unui site de calitate este necesară parcurgerea următoarele
etape:
1. Etapa de identificare clară a obiectivului ce trebuie atins prin publicarea site-ului și
particularităţile publicului căruia i se adresează (domeniu de business, vârstă, educaţie, interese, alte
aspecte psihologice);
2. Etapa a doua de culegere de informaţii referitoare la subiectul site-ului
În această etapă se adună toate informaţiile necesare construirii site-ului. Toate informațiile
sunt într-o formă inițială brută, neprelucrate. Ca orientare trebuie să aveți câteva site-uri model care se
apropie de obiectivul ales pentru propriul site;
3. Etapa de selectare a informaţiilor relevante
Din multitudinea de informații acumulate, se selectează cele relevante astfel încât să se
adapteze volumul de informaţii la obiectivul urmărit;
4. Etapa de proiectare a structurii site-ului
Se oganizează pe categorii toate informaţiile disponibile selectate anterior, se stabilește
numărul de pagini, conţinutul acestora, relaţiile dintre pagini.
5. Etapa de proiectare a aspectul grafic al site-ului
Este foarte important ca toate paginile site-ului să aibă un aspect grafic comun, unitar. Dacă
fiecare pagină arată complet altfel, aspectul general va fi neprofesional.
Aspectul grafic al unei pagini Web este determinat de:
text (fontul folosit, dimensiunea caracterelor, stiluri, culori),
fundalul paginii (imagine sau culoare),
imaginile folosite,
secvenţele audio sau video.
Țineți cont aici de regula de aur a imaginii site-ului Dvs. “Ce este peste 3 este prea mult!”
Aici mă refer la mai mult de trei fonturi pe pagină, mai mult de trei culori de text etc.
6. Etapa de implementare a site-ului
Descrirea codul necesar pentru realizarea paginilor în modul în care a fost proiectat.
Descrierea documentelor externe de definire a stilurilor.
Verificarea cu atenţie a corectitudinea lexicale și gramaticală a textelor.
Asocierea un titlu semnificativ fiecărei pagini, datarea și/sau semnarea paginii;
7. Etapa de testare a site-ului
Verificarea funcţionalității tuturor paginilor.
Verificarea fiecărui link, fiecare imagine, fiecare element multimedia.
Vizualizarea paginii pe diferite dispozitive inteligente (Desktop, Laptop, Notebook,
iPhone, Tabletă, etc.), cu diferite browser-e (Opera, Google Chrome, Internet Explorer, etc) folosind
monitoare cu diferite rezoluţii.
8. Etapa de publicare a site-ului
3
După ce s-a finalizat cu succes faza de testare, dacă avem deja cumpărat un nume pe un
domeniu (de ex .ro, .edu, .com etc) putem alege un server (gratuit sau contra cost) pentru a publica
pagina.
9. Etapa de promovare a site-ului
Pentru ca site-ul să fie vizitat, nu este suficient să-l publicăm, trebuie să îi facem cunoscută
prezenţa.
Un prim pas este înscrierea site-ului la principalele motoare de căutare (exemplu: Google
AdWords, Yahoo, Excite, AltaVista), deoarece sunt primele locuri către care se îndreaptă cineva care
caută informaţii pe Internet.
O altă tehnică de a atrage vizitatori sunt listele de corespondenţă. Se vor crea liste de vizitatori
cărora le trimitem prin e-mail informări despre site și despre actualizările acestuia.
Dacă urmărim atragerea unei audienţe internaţionale pentru site-ul, este bine să apelăm la
servicii speciale de promovare a site-urilor.
Proiectarea unui site nu este un proces secvenţial. Toatele etapele prezentate anterior vor fi cu
siguranță parcurse de mai multe ori. Pe parcursul proiectului se vor evalua și reevalua fiecare din
acțiunile desfașurate în cadrul fiecărei etape, cu siguranţă se va reveni la un anumit pas, pentru a rafina
o idee, pentru a îmbunătăți anumite elemente, până când site-ul proiectat va corespunde cerinţelor
obiectivului stabilit iniţial.
Pentru crearea unei pagini Web, se foloseşte limbajul HTML. Limbajul HTML oferă
posibilitatea de a publica pe Web documente ce conţin texte, liste, tabele, imagini, secvenţe audio şi
video, legături.
2. Limbajul HTML
Unul din primele elemente fundamentale ale WWW (World Wide Web) este HTML
(HyperText Markup Language), care descrie formatul primar în care documentele sunt distribuite și
văzute pe Web. Multe din trăsăturile lui, cum ar fi independenţa faţă de platforma, structurarea
formatării și legăturile hipertext, fac din el un foarte bun format pentru documentele Internet şi
Web.
Limbajul HTML a fost creat în 1990 de către Tim Berners-Lee și Daniel Connoly.
Primele din specificaţiile de bază ale Web-ului au fost HTML, HTTP (HyperText Transfer
Protocol) şi URI (Uniform Resource Identifier) cu subclasa URL (Uniform Resource Locator).
URI constă în trei elemente:
schema de accesare a resursei (mai precis, protocolul de comunicaţie folosit: HTTP,
FTP etc);
numele serverului care găzduieşte acea resursă;
numele resursei, inclusiv calea de acces către ea (path).
Inițial HTML a fost gândit ca o posibilitate pentru fizicienii care utilizează computere diferite
și schimbă între ei informaţii utilizând Internetul șă poata avea acces rapid și facil la informații. Erau
prin urmare necesare câteva trăsături:
independenţa de platformă;
posibilităţi de utilizare și vizualizare corectă de hypertext
structurarea clară a documentelor.
Independenta de platformă însemna că un document poate fi afişat în mod asemănător de
dispositive inteligente diferite (deci cu fonturi, grafică și culori diferite), lucru vital pentru o audienţă
atât de variată.
În hipertext orice cuvânt, frază, imagine sau alt element al documentului văzut de un utilizator
(client) poate face referinţă la un alt document, ceea ce uşurează mult navigarea între documente
multiple sau chiar în interiorul unui aceluiaşi document, între paragrafe. Structurarea riguroasă a
documentelor permite convertirea acestora dintr-un format în altul precum şi interogarea unor baze de
date formate din aceste documente.
În proiectarea paginilor şi site-urilor web trebuie să se aibă în vedere trei elemente:
4
PROIECTAREA PAGINILOR WEB
structura documentelor;
prezentarea acestora;
asigurarea interactivităţii.
În acest mod, este mai uşor de întreţinut şi de îmbunătăţit orice resursă web.
5
De asemenea există extensii Netscape și Microsoft care nu fac parte din specificaţia HTML
3.2, fie pentru că sunt mai puţin utilizate, fie că au fost omologate după apariţia HTML 3.2.
Pentru că navigatorul Netscape a fost printre primele browsere care suporta anumite elemente
HTML 3.0, iar Netscape deţine în jur de 70% din piaţa de browsere, mulţi au crezut eronat că toate
extensiile Netscape (incluzând noi elemente ca și o serie de facilităţi, precum „ferestrele”) fac parte
din HTML 3.0 sau HTML 3.2.
La momentul apariţiei acestui tutorial, HTML 4.0 este larg utilizat şi au fost deja publicate
specificaţiile HTML 4.01.
Documentele HTML sunt documente în format ASCII și prin urmare pot fi create cu orice
editor de texte. Au fost însă dezvoltate editoare specializate dar navigatoarele afişează acelaşi
document oarecum diferit, în funcţie de platforma pe care rulează. Au fost de asemenea dezvoltate
convertoare care permit formatarea HTML a documentelor generate (și formatate) cu alte editoare.
Evident conversiile nu pot păstra decât parţial formatările anterioare deoarece limbajul HTML este
încă incomplet.
Internaţionalizarea HTML a devenit posibilă prin standardul ISO 10646 dat de W3C, care
include toate caracterele, printabile și de control, admise în documentele web precum şi modalităţile de
formatare a textelor.
Unele blocuri prezintă etichetele de sfârşit de bloc, în timp ce pentru alte blocuri acest
delimitator este opţional sau chiar interzis.
Orice document HTML este marcat cu etichetele <html>și </html>,opţionale.
O etichetă poate fi scrisă atât cu litere mici, cât şi cu litere mari, adică:
<HTML> = <HtmL> = <html>.
<head>
</head>
<body>
</body>
</html>
6
PROIECTAREA PAGINILOR WEB
Titlul unei pagini web se declară în antet, fiind marcat în mod obligatoriu de perechea de
etichete: <title>…</title>.
Fără marcajele < sau >, interpretorul HTML va afişa ca simplu text orice şir de caractere.
Exemplu:
<html>
<head>
</head>
<body>
</body>
</html>
7
Dacă introducem mai multe linii într-o pagină, browser-ul le va afişa continuu într-un singur
rând, întrucât caracterele "CR/LF" nu sunt recunoscute de browser. Trecerea pe o linie nouă se face la
comanda explicită "line break" (întrerupere de linie), care trebuie să apară în pagina HTML.
Această comandă este declarată prin eticheta unică <br>.
Folosind aceleaşi operaţii ca mai sus, vizualizaţi noua pagina! Veţi vedea textul ce apare în
fereastra navigatorului. În plus, pagina va avea un titlu nou, cel introdus de programator.
Exemplu:
<html>
<head>
</head>
<body>
</body>
</html>
Un document HTML valid trebuie să conţină o declaraţie a versiunii de limbaj HTML
utilizată. Aceasta precede antetul și specifică versiunea utilizată (strict, transitional, frameset etc.), cu
sau fără elemente depreciate, și limba în care este editat documentul:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
Prin această declaraţie se pot include diverse seturi de entităţi HTML care vor putea fi
recunoscute de browser:
• "strict.dtd"
• "loose.dtd"
• "frameset.dtd"
• "HTMLlat1.ent"
• "HTMLsymbol.ent"
• "HTMLspecial.ent"
Informaţii despre autorul paginii web sau drepturi de copyright pot fi incluse în elementul
meta-data cu eticheta unică <meta>:
<META name="Autor" content="Numele autorului sau adresa URI
a unui site web" lang="ro">
Orice comentariu este inclus în documentul web și interpretat ca atare sub forma:
<-- comentariu -->
<html>
<head>
8
PROIECTAREA PAGINILOR WEB
</head>
<body><pre>
Prima linie
A doua linie
A treia linie
</pre></body>
</html>
Într-un fişier HTML, caracterele "<" și ">" au o semnificaţie specială pentru browser. Ele
încadrează comenzile şi atributele de afişare a elementelor într-o pagină. Dacă dorim ca un fragment
de text să conţină astfel de caractere, acesta t rebuie încadrat de una dintre perechile de etichete:
• <xmp>...</xmp>( 80 de caractere pe rând );
• <listing>...</listing> ( 120 de caractere pe rând ).
Aceste marcaje interpretează corect caracterele " spaţiu ", " eticheta " și "CR/LF ". Textul
fişat în pagină este monospaţiat.
Exemplu:
<html>
<head>
<title> </title>
</head>
<body>
Un fişier html standard arată astfel:
<xmp><html>
<head>
<title> </title>
</head>
<body>
O pagina Web ...
</body>
</html> </xmp> </body>
</html>
9
<body>
O pagina Web ...
</body>
</html>
<head>
<title>culoare de fond </title>
</head>
<body bgcolor=blue>
O pagina web pe fond BLUE!
</body>
</html>
<html>
<head>
<title>Configurarea textului și stabilirea
marginii </title>
</head>
11
<body leftmargin="100" topmargin="50">
Textul are atribute implicite. <br><basefont style="Arial" color="blue" size="6">
Textul este scris cu fontul "Arial", culoare albastra şi marime 6. </body>
</html>
<html>
<head>
<title> Culoarea şi familia fontului</title>
</head>
< body>
Această linie este scrisa cu caractere normale.
<br> <font color="red">Aceasta linie este
roşie.</font>
<br>Aici<font color="green">fiecare</font>
<font color="blue">cuvant</font>
<font color="yellow">are</font>
<font color="cyan">alta</font>
<font color="#3478fa">culoare.</font>
<font face="monospace">Linie scrisa cu caractere monospatiate.</font>
<br> <font face="arial">Linie scrisa cu caractere arial.</font>
</body>
</html>
Exemplu:
12
PROIECTAREA PAGINILOR WEB
<html>
<head>
<title> Marimea fontului</title>
</head>
<body>
Aceasta linie este scrisa cu
caractere normale.
<font size="5">Fonturi de marime
5.</font>
<basefont size="4">Fonturi de
marime 4.</font>
<font size="-3">Fonturi de marime
1.</font>
<font size="+2">Fonturi de marime
6.</font>
<font point-size="30">Fonturi de
marime 30 pt (numai cu Netcape Communicator).</font>
</body>
</html>
13
unitate <big>mai mare<big> și mai mare<big> și mai mare.</big></big></big></big><br>
<small>Textul este scris cu caractere micşorate cu o unitate <small>mai mic.</small></small><br>
<i>Text scris cu caractere italice.</i>
<br> In această linie <sup>sus</sup> este superscript iar <sub>jos</sub> este subscript.<br>
<strike>Această linie este în întregime secţionată de o linie orizontală.</strike> <br> În aceasta linie
următorul cuvânt este <u>subliniat</u>, iar cuvântul <s>strike</s> sectionat.
</body>
</html>
Obs:
1. Aceste etichete pot fi imbricate (intercalate) pentru definirea atributelor multiple.
2. Un fragment de text poate fi scris cu caractere aldine și cursive în acelaşi timp.
3. Pentru un fragment de text se pot folosi simultan stilurile subliniat, exponent, mărit şi
cursiv.
Exemplu:
<html>
<head>
<title>Imbricarea etichetelor </title>
</head>
<body> Aceasta linie este formata din text
normal.<br> Normal <b>îngrosat <i>
ingrosat și italic </i> îngrosat </b>.
<br> Normal <u>subliniat, <b> subliniat și
îngrosat, <big>subliniat, ingrosat și marit.
<br>
<i>Subliniat, îngrosat ,marit și italic.</i>
</big></b></u>
</body>
</html>
14
PROIECTAREA PAGINILOR WEB
<html>
<head>
<title>Blocuri de
caractere monospaţiate
şi clipitoare </title>
</head>
<body>
Aceasta linie este
formată cu text
normal.<br>
Codul funcţiei f(x,y) este:
<code>Function f(x,y)
{return x+y;}</code><br>
Tastaţi următoarea
comandă DOS:
<kbd>copy c:\windows\*
c:\temp<kbd><br>
<tt>Aşa se tipăreste la
imprimata.</tt><br>
Acest cuvânt are aparitie intermitenta <blink>Blink.</blink>
</body>
</html>
<html>
<head>
<title> Adresa</title>
</head>
<body>
Adresa instituţiei noastre este
:<address> Universitatea
Petrosani<br>
Str. Universitatii nr 20 <br>
Petrosani, Hunedoara, Romania </address>
</body>
15
</html>
Exemplu:
<html>
<head>
<title> Indentarea unui bloc</title>
</head>
<body>
Textul ce urmeaza este
indentat:<blockquote> Hypertext reprezintă
un text îmbogățit ce conține text obișnuit,
precum și etichete pentru formatarea textului
și incapsularea altor tipuri de informatii, ca
legaturi catre alte resurse, sunete, imagini
s.a.m.d. </blockquote>
</body>
</html>
<html>
<head>
<title> Blocuri paragraf</title>
</head>
<body>
Prima linie
<p> Linie generata de un paragraf (in mod implicit paragraful este aliniat la stânga).
<p align="right"> Paragraf aliniat la dreapta. Paragraf aliniat la dreapta. <br> Paragraf aliniat la
dreapta. Paragraf aliniat la dreapta. <br> Paragraf aliniat la dreapta. Paragraf aliniat la
dreapta. <br>
<p align="center"> Paragraf aliniat în centru. Paragraf aliniat în centru. <br> Paragraf aliniat în
centru. Paragraf aliniat în centru. <br> Paragraf aliniat în centru. Paragraf aliniat în centru.
16
PROIECTAREA PAGINILOR WEB
</body>
</html>
Vizualizare:
<html>
<head>
<title> Blocuri de titlu</title>
</head>
<body>
<h1 align="center"> Titlu de mărime 1 aliniat în centru </h1>
<h2 align="right"> Titlu de mărime 2 aliniat la dreapta. </h2>
<h4> Titlu de mărime 4 aliniat la stânga (implicit) </h4>
</body>
</html>
Vizualizare:
17
2.10.5 Blocuri <nobr>
Blocul de text cuprins intre etichetele <nobr>...</nobr>va fi afişat pe o singură linie.
Exemplu:
<html>
<head>
<title> Blocul <nobr></title>
</head>
<body>
<nobr> O singura linie. O singura linie. O singura linie. O singura linie. O singura linie.
</nobr>
</body>
</html>
Vizualizare:
18
PROIECTAREA PAGINILOR WEB
<html>
<title> Aliniere pe orizontală <div></title>
<body>
Aceasta linie este o linie normală. Următoarele paragrafe sunt aliniate la dreapta.
<div align="right">
O singură linie. O singură linie. O singură linie. O singură linie.<br>
O singură linie. O singură linie. O singură linie. O singură linie.<br>
</div>
<div align="center">
Paragraf aliniat în centru. Paragraf aliniat în centru.<br>
Paragraf aliniat în centru. Paragraf aliniat în centru.<br>
</div>
</body></html>
Vizualizare:
19
2.11. Linii orizontale
Într-o pagină Web pot fi inserate linii orizontale folosind eticheta <hr> și următoarele
atribute:
• align permite alinierea liniei orizontale. Valorile posibile sunt "left" ,"center", "right";
• widthpermite alegerea lungimii liniei;
• sizestabileşte grosimea liniei;
• noshade,când este prezent, defineşte o linie fără umbră;
• colorpermite definirea culorii liniei.
Exemplu:
<html>
<head>
<title> Linii orizontale</title>
</head>
<body>
<h1 align="center"> Tipuri de linii orizontale </h1>Linie implicită alinierea stânga,
lăţime 100%, grosime 2 cu umbră.
<hr> Linie aliniată în centru , de lăţime 50%, grosime 5 pixeli , fără umbră.
<hr align="center" width="50%" size="5" noshade>Linie aliniata la dreapta, de lăţime 150 de
pixeli, grosime 12 pixeli.
<hr align="right" width=150 size=12 >
</body>
</html>
Vizualizare:
Exemplu:
<html>
<head>
<title> Linii orizontale</title>
20
PROIECTAREA PAGINILOR WEB
</head>
<body>
<center> <hr width=10%> <hr width=40%> <hr width=70%> <hr width=100%> <hr
width=70%> <hr width=40%> <hr width=10%> </center>
</body>
</html>
Vizualizare:
21
Alinierea unei imagini se poate face prin intermediul atributului align care poate lua
următoarele valori:
• " left " - aliniere la stânga; celelalte componente sunt dispuse pe în partea dreaptă;
• " right " - aliniere la dreapta; celelalte componente sunt dispuse în partea stângă;
• " top " - aliniere deasupra; partea de sus a imaginii se aliniază cu partea de sus a
textului ce precede imaginea;
• " middle " - aliniere la mijloc; mijlocul imaginii se aliniază cu linia de baza a textului
ce precede imaginea.
• " bottom " - aliniere la bază; partea de jos a imaginii se aliniază cu linia de baza a
textului.
Atributele hspace și vspace precizează distanţa în pixeli pe orizontală, respectiv pe verticală,
dintre imagine și restul elementelor din pagină.
În versiunile mai noi de HTML, sunt admise diferite „comportări” ale obiectelor (imagine,
applet, formulare etc) în funcţie de anumite „evenimente” produse (onMouseOver, onKezPress etc).
Dacă imaginea se află în acelaşi director cu fişierul HTML care face referire la imagine,
atunci adresa URL a imaginii este formată numai din numele imaginii, inclusiv extensia.
Obs:
1. O imagine poate fi utilizată pentru a stabili fondul unei pagini Web. In acest scop se
foloseşte atributul background al etichetei <BODY>, având ca valoare adresa URL a imaginii.
Imaginea se multiplică pe orizontală şi pe verticală până umple întregul ecran.
2. O legătură (link) introduce în pagina Web o zona activă. Efectuând click cu butonul mouse-
ului pe aceasta zona în browser se va încărca o alta pagină. În mod prestabilit imaginea utilizată
pe post de zonă activă este înconjurată de un chenar având culoarea unei legături. Dacă stabilim
pentru atributul borderal etichetei valoarea0 acest chenar dispare.
3. Imaginile pot fi utilizate pentru a obţine efecte deosebite într-o pagină web (linii orizontale
formate cu ajutorul imaginilor , simboluri speciale pentru elementele unei liste neordonate sau
elemente de animaţie etc).
Exemplu:
<html>
<head></head>
<BODY>
<P>Astazi a nins la Petrosani. Iata o fotografie a Universitatii din Petrosani, iarna.
<CENTER> <IMG src="iarna_la_univ.bmp" alt="Iarna la universitate"> </CENTER>
</BODY>
</html>
Vizualizare:
22
PROIECTAREA PAGINILOR WEB
<html>
<head>
<title>
23
Ancore
</title>
</head>
<body>
<h3>
Ancore definite in acelasi document și in alt document
</h3>
<a href="#ancora1">
Link catre ancora 1
</a>
<br>
<a href="../../fisier.html#anc">
Link catre o ancora din alt document
</a>
<br>1<br>2<br>3<br>4<br>5
<br>6<br>7<br>8<br>9<br>10
<br>11<br>12<br> 13<br>14<br>15
<br>16<br> 17<br>18<br>19<br>20
<br> 21<br>22<br>23<br>24<br>25
<br>26<br>27<br>28<br>29<br>30
<br>
<a name="ancora1">textul marcat cu ancora 1</body>
</html>
Vizualizare:
24
PROIECTAREA PAGINILOR WEB
17
18
19
20
21
22
23
24
25
26
27
28
29
30
textul marcat cu ancora 1
Ancorele pot fi definite prin atributul „identificator” id. Atributul id este un atribut
universal, adică poate fi ataşat oricărui element sau obiect al unei pagini Web. Acest atribut va
înlocui complet atributul name, care putea fi ataşat numai anumitor elemente.
Atributul id primeşte ca valoare un nume (de exemplu "id1") care identifică în mod unic un
element.
Atributul idpoate fi utilizat pe post de ancoră într-o pagină Web conform sintaxei:
<eticheta id = "id1"> ... </eticheta>
Exemplu:
Exemplu:
<html>
<head><title>Ancore</title></head>
<body>
<H1>Cuprins</H1>
<P><A href="#a1">Introducere</A><BR>
<A href="#a2">Generalitati</A><BR>
<A href="#a2.1">Paragraful 2.1</A><pre>
...
...
...
...
...
...
...
...
...
...</pre>
<H2><A name="a1">Introducere</A></H2>
25
...
...
...
...
...
...</pre>
<H2><A name="a2"> Generalitati </A></H2>
...sectiunea 2...<pre>
...
...
...
...
...
...
...
...
...
...
...</pre>
... sectiunea 1... <pre>
...
...
...
<H3><A name="a2.1"> Paragraful 2.1</A></H3>
...sectiunea 2.1...
<pre>
...
...
...
...
...
...</pre></body></html>
Acelaşi efect se obţine prin folosirea identificatorilor direct în etichetele de header.
Exemplu:
<html>
<head><title>Ancore</title></head>
<body>
<H1>Cuprins</H1>
<P><A href="#a1">Introducere</A><BR>
26
PROIECTAREA PAGINILOR WEB
<A href="#a2">Generalitati</A><BR>
<A href="#a2.1">Paragraful 2.1</A><pre>
...
...
...
...
...
...
...
...</pre>
<H2 id=a1">Introducere</A></H2>
...sectiunea 1...<pre>
...
...
...
...
...
...
...
...
...
...</pre>
<H2 id="a2"> Generalitati </A></H2>
...sectiunea 2...<pre>
...
...
...
...
...
...
...
...
...
...
...</pre>
<H3 id=”a2.1"> Paragraful 2.1</A></H3>
...sectiunea 2.1...
<pre>
...
...
...
...
...
...</pre></body></html>
Culoarea textului care specifică un link poate fi precizată în funcţie de starea acestuia, prin
3 atribute ale etichetei <body> :
o link nevizitat: link
o link vizitat: vlink o link activ: alink.
Tot ca linkuri apar şi adresele de poştă-electronică care permit lansarea în execuție a
serviciului de e-mail direct din pagina web:
<a href=mailto:destinatar@yahoo.com title=”adresa de e-mail”>.
E-mail:destinatar@yahoo.com </a>
27
Atributul title al etichetei <a> comandă apariţia unei mici ferestre în pagina Web când
indicatorul mouse-ului se află pe o legătură, fereastră în care este afişată valoarea acestui atribut
pentru a furniza informaţii suplimentare despre semnificaţia acelei legături.
Elementul „ancoră” permite realizarea legăturilor între paginile web și fişiere audio sau
video, cu diferite formate (AU, AIFF/AIFC, WAVE, MPEG, MIDI sau Quick Time, AVI), cu
extensiile corespunzătoare (.au, .aiff, .aif, .wav, .mpeg, .mp3, .midi, .mid, .mov, .avi). Calea spre
fişierul respectiv poate fi omisă atunci când acesta se află în acelaşi director cu pagina propriu-zisă sau
poate fi specificată în formă relativă la nodul rădăcină din sistemul de fişiere sau în format
absolut.
<html>
<head>
28
PROIECTAREA PAGINILOR WEB
<title>liste imbricate</title>
</head>
<body><h1 align=center>O lista ordonata de liste ordonate și neordonate</h1><hr>
<ol>Un sistem informatic include:
<li>Elemente hardware:
<ol>
<li> placa de baza
<li> procesor/cooler
<li> memorie RAM
<li> harddisk
<li> placă video
<li> placă de retea
<li> periferice
</ol>
<li>Sistem de operare:
<ul>
<li> DOS
<li> Linux
<li> Unix
<li> Windows
</ul>
<li>Programe de aplicatii:
<ul type="disc">
<img src="1.gif"> CorelDraw <br>
<img src="1.gif"> Excel <br>
<img src="1.gif"> Matlab <br>
<img src="1.gif"> Word <br>
</ul>
</ol>
</body>
</html>
Vizualizare:
29
O listă de meniuri este un bloc delimitat de etichete corespondente <menu>...</menu>. Fiecare
element al listei este iniţiat de eticheta <li> (list item). Cele mai multe browsere afişează lista de
meniuri ca pe o listă neordonată.
O listă de directoare este un bloc delimitat de etichete corespondente <dir>...</dir>
("directory"). Fiecare element al listei este iniţiat de eticheta <li>. Cele mai multe browsere afişează
lista de directoare de asemenea ca pe o listă neordonată.
2.14.2 Tabele
Tabelele sunt create cu etichetele <table> ... </table>, prin marcarea liniilor tabelului cu
eticheta <tr> (table row), şi divizarea lor în coloane cu elementul <td>.
Exemplu:
<table>
<tr> <td> Linia 1, Coloana 1 <td> Linia 1, Coloana 2
<tr> <td> Linia 2, Coloana 1 <td> Linia 2, Coloana 2
<tr> <td> Linia 3, Coloana 1 <td> Linia 3, Coloana 2
</table>
Dimensiunile unui tabel - lăţimea și înălţimea - pot fi stabilite exact prin intermediul a două
atribute ale etichetei <table>:widthşi height.
Valorile acestor atribute pot fi:
• numere întregi pozitive reprezentând lăţimea, respectiv înălţimea, tabelului,
exprimate în pixeli.
• numere întregi cu valori cuprinse între 1 şi 100, urmate de semnul %, reprezentând
procente din lăţimea şi înălţimea totală a paginii web.
Mai multe detalii pentru un tabel se specifică prin intermediul altor elemente HTML, ca în
30
PROIECTAREA PAGINILOR WEB
următorul exemplu în care se creează un tabel cu un grup de 5 coloane și 3 linii, având diferite
lăţimi precizate prin elementul <COLGROUP>:
Exemplu:
<html>
<TABLE border="1">
<THEAD>
<TR center> ... header ...
</THEAD>
<TBODY>
<COLGROUP span="2", width="50">
<COLGROUP span="3", width="100">
<TR><TD> 1,1 <td> 1,2 <td> 1,3 <td> 1,4 <td> 1,5
<TR><TD> 2,1 <td> 2,2 <td> 2,3 <td> 2,4 <td> 2,5
<TR><TD> 3,1 <td> 3,2 <td> 3,3 <td> 3,4 <td> 3,5
</TBODY>
</TABLE>
</html>
Dacă se doreşte formatarea diferită a coloanelor din tabel, se foloseşte elementul <COL>
care permite impunerea lăţimii fiecărei coloane în mod absolut, ca număr de pixeli, sau relativ,
procentual sau cu ponderi, ca în următoarele exemple:
<html>
<TABLE border="1">
<COLGROUP>
<COL width="30">
<COLGROUP>
<COL width="20">
<COL width="0*">
<COL width="2*">
<COLGROUP align="center">
31
<COL width="1*">
<COL width="3*" align="char" char=",">
<TR> <TD> 1,1 <td> 1,2 <td> 1,3 <td> 1,4 <td> 1,5 <td> 1,6
<TR> <TD> 2,1 <td> 2,2 <td> 2,3 <td> 2,4 <td> 2,5 <td> 2,6
<TR> <TD> 3,1 <td> 3,2 <td> 3,3 <td> 3,4 <td> 3,5 <td> 3,6
</TABLE>
sau
<html>
<TABLE border="2">
<COLGROUP align="left">
<COL width="30%">
<COL width="10%">
<COL width="20%">
<COLGROUP align="center">
<COL width="10%">
<COL width="10%" >
<COL width="20%" align="char" char=",">
<TR> <TD> 1,1 <td> 1,2 <td> 1,3 <td> 1,4 <td> 1,5 <td> 1,6
<TR> <TD> 2,1 <td> 2,2 <td> 2,3 <td> 2,4 <td> 2,5 <td> 2,6
<TR> <TD> 3,1 <td> 3,2 <td> 3,3 <td> 3,4 <td> 3,5 <td> 3,6
</TABLE>
0* semnifică alocarea unui spaţiu minim coloanei respective.
Orice valoare numerică pozitivă urmată de un asterisc reprezintă o pondere din suma
tuturor valorilor astfel marcate. În exemplul de mai sus apar trei valori nenule marcate cu un asterisc
(1*, 2*, 3*) cu suma 6 ceea ce înseamnă că lăţimile acelor coloane corespund la 1/6, 1/3 și 1/2 din
spaţiul alocat acestora.
Se observă modalitatea de aliniere a textului din coloanele tabelului prin atributul de
aliniere align cu valorile posibile left,right sau center.
Dacă se omite să se specifice lăţimea unei singure coloane, browserul va afişa tabelul cu
dimensiuni relative la lăţimea ecranului.
Titlul tabelului se specifică prin elementul <CAPTION>, care poate avea atributul de
32
PROIECTAREA PAGINILOR WEB
aliniere align care să precizeze poziţia titlului faţă de tabel și care poate lua una dintre valorile:
• " bottom" (sub tabel);
• " top" (deasupra tabelului);
• " left" (în stânga tabelului);
• " right" (în dreapta tabelului).
Pentru a specifica denumirea fiecărei coloane se utilizează etichete de tip cap de tabel
<TH> …
</TH>(tabel header). Conţinutul celulelor astfel definite este scris cu caractere aldine și centrat.
Exemplu:
<center>
<TABLE border="1" summary="Examen la disciplina 'Retele de calculatoare'">
<CAPTION align=”center”>
<b> Note obtinute la examenul „Rețele de calculatoare”</b> </CAPTION>
<COLGROUP align="left" span="2" width="150">
<COLGROUP align="center">
<COL width="20%">
<TR>
<TH>Nume</TH>
<TH>Prenume</TH>
<TH>Nota</TH>
<TR>
<TD>Anton</TD>
<TD>Ioanan</TD>
<TD>10</TD>
<TR>
<TD>Barbu</TD>
<TD>Georgiana</TD>
<TD>9</TD>
<TR>
<TD>Costea</TD>
<TD>Mircea</TD>
<TD>8</TD>
</TABLE>
33
Unele celule din tabel pot fi reunite, fie pe orizontală (colspan), fie pe verticală (rowspan),
având grijă să nu se producă suprapuneri nedorite între celule. De asemenea, se pot impune diferite
spaţieri între celule dar şi între marginea tabelului și cele ale celulelor:
<center>
<TABLE border="1" cellspacing="20" cellpadding="20%">
<CAPTION> <b> Tabel cu celule reunite </b>
<TR><TD>1 <TD>2 <TD>3
<TR><TD colspan="2"> 4 <TD> 6
<TR><TD>7 <TD>8 <TD>9
<TR><TD rowspan="2">10 <TD>11 <TD>12
<TR><TD> 14 <TD> 15
<TR><TD> 16 <TD> 17<TD> 18
</TABLE>
Gruparea liniilor din tabel se face cu ajutorul elementului <TBODY>, cu eticheta de final
</TBODY> opţională:
<html>
<TABLE border="2" rules="groups">
<TBODY>
<COLGROUP span="2", width="50">
<COLGROUP span="3", width="100">
<TR><TD> 1,1 <td> 1,2 <td> 1,3 <td> 1,4 <td> 1,5
<TR><TD> 2,1 <td> 2,2 <td> 2,3 <td> 2,4 <td> 2,5
<TBODY>
<TR><TD> 3,1 <td> 3,2 <td> 3,3 <td> 3,4 <td> 3,5
</TABLE>
Culoarea de fond a unui tabel respectiv a unei celule din tabel se stabileşte prin atributul
bgcolor care poate fi introdus în orice etichetă din tabel: <TABLE>, <TR>, <TD> (în ordinea
crescătoare a priorităţii).
2.14.3 Cadre
Pentru gruparea elementelor în cadre și crearea acestora în paginile web, se înlocuiesc
etichetele <body> ... </body>cu <frameset> ... </frameset>.
Descrierea structurii cadrelor se face fie prin precizarea numărului de pixeli alocat, fie prin
modul de dispunere a acestora ca linii (rows) sau coloane (cols), cu alocarea spaţiului în mod egal
(*) sau diferenţiat (%):
<frameset cols=”*,*,*”>
În interiorul setului se specifică sursele cadrelor:
<frame src=”c1.html”> cadrul 1
<frame src=”c2.html”> cadrul 2
<frame src=”c3.html”> cadrul 3
2.14.4 Formulare
Formularele sunt utilizate în documentele HTML pentru transmiterea unor informaţii de la
utilizator la serverul web, în diverse aplicaţii de comerţ electronic, învăţământ la distanţă etc.
34
PROIECTAREA PAGINILOR WEB
Pentru crearea acestora se folosesc etichetele: <FORM > … </FORM> și diferite elemente
de control:
• butoane (submit, push, reset), declarate prin elementele BUTTONsau INPUT.
• căsuţe de validare (check box) sau butoane „radio” care acţionează ca elemente de
comutare
(on/off), create prin elementul INPUT.
• căsuţe de introducere a textelor (text box), create fie prin elementul INPUT, fie prin
TEXTAREA.
• meniuri, create cu elementele SELECT, OPTGROUP, OPTION.
• elemente de selecare a unor fişiere (file select) care se vor transmite serverului
odată cu formularul respectiv. Sunt create tot cu ajutorul elementului INPUT.
• controlere ascunse, utile pentru comunicaţia client/server, create prin elementul INPUT.
• obiecte de control, create cu elementul OBJECT.
Câmpurile dintr-un formular sunt etichetate şi asociate unor variabile, de diferite tipuri.
Se pot folosi diverse imagini ca butoane pentru selectarea unor opţiuni și efectuarea unor
acţiuni, cu comportamente dictate de diferite evenimente (onmouseon, onmouseover, onmouseup,
onmousedck, onmouseout, onkeypress etc) descrise prin diverse scripturi.
Utilizatorul completează formularul electronic prin înscrierea de texte în căsuţele
corespunzătoare, selectarea opţiunilor dorite prin acţionarea unor butoane sau alegerea lor din listele
de căutare sau de valori impuse, urmănd ca la final să transmită datele pentru procesare unui server
(Web, de poştă electronică etc) specificat prin URI, aceasta reprezentând acţiunea de trimitere a
formularului (submit).
Elementele de control sunt descrise prin atributele name şi value prin care se specifică numele,
respectiv valoare lor iniţială şi implicită pe care o iau în cazul resetării formularului. Dintre atributele
elementului FORMse remarcă:
• action URI
• method cu valorile getsau post
• enctype pentru trimiterea formularului prin poşta electronică, se foloseşte
o tehnică de criptare "application/x-www-form-urlencoded" sau "multipart/form-data”
• name sau id.
Elementul INPUT are următoarele atribute:
• type cu valorile posibile text, password, checkbox, radio, submit, reset, file, hidden,
image, button
• name
• value - opţional pentru controler radio sau checkbox
• size -specificat ca număr de pixeli sau de caractere.
• maxlength
• checked - numai pentru controler radio sau checkbox
• src -specifică fişierul sursă al unui element.
Exemplu:
35
<INPUT type="radio" name="varsta" value="1"> sub 25 de ani <BR>
<INPUT type="radio" name="varsta" value="2"> 25 – 35 <BR>
<INPUT type="radio" name="varsta" value="3"> 36 – 45 <BR>
<INPUT type="radio" name="varsta" value="4"> peste 45 de ani <BR>
<INPUT type="submit" value="Send"> <INPUT type="Reset">
</pre></P>
</FORM>
Vizualizare:
În multe formulare se utilizează meniuri speciale (jump menu)sau liste de căutare, care permit
selectarea unui element dintr-o listă dată, ceea ce elimină riscurile introducerii unor date eronate, cu
greşeli de scriere.
Exemplu:
36
PROIECTAREA PAGINILOR WEB
<option>TIMISOARA</option>
</select>
Vizualizare:
Stilul unui document HTML poate fi specificat fie direct în interiorul acestuia, fie într-un
fişier extern scris într-un anumit limbaj de programare (de exemplu, CSS – Cascading Style Sheet).
Stilul este marcat ca element HTML cu etichetele <STYLE> … </STYLE>, care are mai
multe atribute:
type = specifică limbajul folosit pentru definirea stilului (de exemplu "text/css").
media = specifică mediul căruia i se adresează acel stil (valoare implicită: "screen", alte
valori: "aural" , "print", "projection", sau valori multiple separate prin virgule.)
title= specifică numele unui stil.
Se pot utiliza mai multe stiluri pentru aceeaşi pagină web, în funcţie de mediul de prezentare:
ecran (screen), imprimantă (print), proiector (projection) sau oral (aural).
Exemplu:
<HEAD>
<STYLE type="text/css" media="projection"> H1 { color: darkblue}
</STYLE>
<STYLE type="text/css" media="print"> H1 { text-align: center }
</STYLE>
<STYLE type="text/css" media="aural">
A { cue-before: uri(bell.aiff); cue-after: uri(dong.wav)}
</STYLE>
</HEAD>
Stilurile definite în fişiere externe pot fi utilizate în mai multe documente HTML ceea ce le
face deosebit de atractive pentru creatorii de pagini web.
Un stil astfel creat este apelat prin elementul HTML link cu atributele href, type, rel și
37
title.
Atributul href ia ca valoare adresa URI a fişierului extern în care este definit stilul
HTML respectiv.
Ca și în cazul stilurilor definite intern, atributul typeia ca valoare numele limbajului utilizat.
Pentru a crea un stil persistent, atributul rel ia valoarea "stylesheet" iar atributul title nu este
definit.
Pentru a crea un stil preferat, atributul relia valoarea "stylesheet"iar cu atributul titlese specifică
numele acestuia.
Pentru a crea un stil alternativ, atributul rel ia valoarea "alternate stylesheet" iar numele
stilului apare ca valoare a atributului title.
Aplicarea stilului dorit pe un paragraf dat se face prin setarea atributului class al
elementului
<P>.
Exemplu:
<HTML>
<HEAD>
<LINK href="special.css" rel="stylesheet" type="text/css">
</HEAD>
<BODY>
<P class="special" align="center">Acesta este stilul dorit.
</BODY>
</HTML>
unde fişierul special.css conţine numai câteva comenzi CSS:
P.special { color : blue; border: solid blue; margin-left: 450px;
margin-right: 450px;
}
Într-o pagină web, se pot utiliza atât stiluri definite intern, cât și stiluri definite în alte fişiere
externe. Scopul lor este de a crea site-uri web personalizate și atractive.
38
PROIECTAREA PAGINILOR WEB
BIBLIOGRAFIE
[1] http://www.w3schools.com/
[2]
39
APLICAŢIE
Creaţi un site web personalizat în care să includeţi cât mai multe dintre elementele specifice
paginilor web, aşa cum au fost prezentate anterior în lucrare.
40
LABORATOR NR.1
Noţiunea de liniar media descrie un obiect media care are un început, o evoluţie şi un
sfârşit bine determinat. Exemple de liniar media sunt: filmele, casetele audio şi video.
Internetul este organizat diferit. Noţiunea de hypermedia reprezintă posibilitatea
alegerii, adică utilizatorii aleg ce-i interesează. Un exemplu bun în acest sens este un CD
audio, de pe care se alege spre ascultare piesa cu numarul 7 şi este imediat ascultată, în
contrast cu cu o casetă unde pemtru a asculta piesa cu numărul 5, trebuie parcursă caseta
pentru a ne poziţiona la începutul piesei, spre a o asculta.
Aplicat asupra textului acest concept ne face să obţinem hypertext, unde executând
click pe o legătură suntem imediat mutaţi în altă locaţie în cadrul aceleiaşi pagini sau într-o
pagină diferită. Când sunt legate mai multe astfel de pagini de pe calculatoare diferite din
lume, se obţine un fel de plasă de paianjen cunoscută sub numele de World Wide Web.
Sistemul este cât se poate de util deoarece paginile de internet sunt create utilizând
acelaşi format. Formatul sau limbajul se numeşte HTML – Hypertext Markup Language şi
reprezintă un subset al unui standard internaţional pentru documente electronice numit SGML
– Standard Generalized Markup Language.
Element Valoare
Atribut
Cele mai multe elemente au mai multe atribute ca în exemplul următor
<FONT COLOR = “BLUE” SIZE=”3”></FONT>
2.2. PARAGRAFE
2.3. LISTE
2.6. ADRESE
HTML
Acest element indică programului tău de explorare faptul că fişierul conţine informaţii
codate în limbaj HTML. Extensiile html sau htm indică, de asemenea, acest lucru, şi trebuie
utilizate.
HEAD
Elementul de antet („head") identifică prima parte a documentului tău codificat
HTML, care conţine numele. Acest nume este afişat în partea de sus a ferestrei programului
de explorare.
TITLE
Elementul „title" conţine numele documentului tău şi identifică conţinutul său într-un
context global. Acesta este afişat în antetul paginii, şi de asemenea, în lista de semne de carte
(„bookmarks"), aşa încât alege ceva relevant, unic şi relativ scurt.
BODY
A doua şi cea mai mare parte a documentului tău HTML este corpul propriu-zis, care
conţine textui documentului, afişat în zona de text a ferestrei programului de explorare.
Etichetele explicate în continuare se utilizează în corpul documentului HTML.
Titluri
HTML are şase niveluri de titluri, numerotate de la 1 la 6, nivelul 1 fiind cel mai
proeminent. Titlurile sunt afişate pe ecran în fonturi mai mari şi/sau mai îngroşate decât
textul obişnuit. Primul titlu ar oricărui document va fi etichetat cu <H1>.
Sintaxa unui element de titlu este:
<Hy>Textul titlului </Hy>
unde y este un număr între 1 şi 6, indicând nivelul titlului.
Observaţie: Nu treceţi peste un nivel de titlu în documentele pe care le scrieţi. De
exemplu, să nu începeţi cu titlul de nivel unu (<Hl>) şi apoi să treceţi direct la nivelul 3
(<H3>).
2.2. PARAGRAFE
Spre deosebire de majoritatea editoarelor de texte, returul de car (Enter) nu este
important. Aşadar, HTML nu ţine cont de cât de lung este un rând din textul tău şi, în plus,
mai multe spaţii vor fi transformate (la afişare) într-unul singur. Un program de explorare nu
va interpreta trecerea la un nou rând din cadrul textului tău, decât dacă apare marcajul <p>.
Astfel, de pildă, textul primului paragraf din documentul minimal descris mai înainte
este echivalent cu următorul:
<P>Bine ai venit în lumea HTML! Acesta este primul paragraf. Chiar daca este asa de
scurt, este totuşi un paragraf! </P>
Aşadar, trebuie să indici paragrafele cu elemente <p>. Un program de explorare ignoră
orice aliniere sau grup de spaţii în cadrul textului sursă. Fără elementele <p>, întregul document
devine un singur paragraf. (Excepţie face textul marcat ca fiind preformatat, care va fi explicat
mai târziu.)
Astfel, următorul exemplu, va produce acelaşi efect ca şi cel minimal, prezentat anterior.
<html>
<head>
<TITLE>Un exemplu HTML simplu</TITLE>
</head>
<body>
<H1>HTML este uşor de invatat </Hl>
<P>Bine ai venit în lumea HTML! Acesta
este primul paragraf. Chiar daca e asa de
scurt, este totuşi un paragraf!</P>
<P>Iar acesta este cel de al doilea paragraf.
</P>
</body>
</html>
Pentru păstrarea lizibilităţii într-un fişier HTML, pune titlurile pe linii separate, foloseşte
linii goale pentru a identifica începutul unei noi secţiuni şi foloseşte paragrafe separate cu linii
goale, în completarea etichetelor <p>. Acestea te vor ajuta la editarea documentului, chiar dacă
programul de explorare le va ignora.
De notat că eticheta de final </p> poate fi omisă. Aceasta deoarece programul de
explorare înţelege că întâlnirea unei noi etichete <p> marchează şi finalul paragrafului
precedent.
Utilizând atributul align între <p> şi </p> poţi alinia după dorinţă conţinutul
respectivului paragraf, iată un exemplu, în care textul apare aliniat pe centru:
<P ALIGN=CENTER> Acesta este un paragraf centrat. </P>
Efectul va fi:
Acesta este un paragraf centrat.
2.3. LISTE
HTML acceptă liste numerotate, nenumerotate şi de definiţie. Poţi avea şi liste imbricate
una în alta, dar foloseşte-le raţional, deoarece mai multe liste imbricate pot fi greu de urmărit.
2.6. Adrese
Eticheta <address> este, în general, utilizată pentru a specifica autorul unui document, o
modalitate de a-l contacta (de exemplu, o adresă e-mail). Este, de obicei, ultima linie dintr-un
document.
Exemplu:
<ADDRESS>
Istoria Universitatii din Petrosani, xyz@upet.ro, martie 1999.
</ADDRESS>
Rezultatul este:
Istoria Istoria Universitatii din Petrosani, xyz@upet.ro, martie 1998.
Marcajul <address> nu este utilizat pentru adrese poştale.
3.2. LEGĂTURI
3.3. IMAGINI
Limbajul HTML are două tipuri de stiluri pentru cuvinte individuale sau propoziţii:
logic şi fizic. Stilurile logice marchează textul în concordanţă cu semnificaţiile lor, pe când
stilurile fizice indică înfăţişarea specifică unei secţiuni.
De exemplu, dacă vrem să scriem un cuvânt cu caractere cursive (italic), putem fie să
marcăm respectivul cuvânt ca o definiţie (la majoritatea programelor de explorare), fie să
folosim o etichetă care să specifice exact acest lucru.
Îţi pui întrebarea, probabil - dacă ambele tipuri de stiluri produc aceleaşi efecte, de ce
există amândouă? Ei bine, stilurile logice depind, totuşi de modul de configurare a
programelor de navigare. De pildă, de obicei, caracterele dintr-o definiţie se afişează înclinat,
dar această regulă poate fi schimbată de un utilizator, iar dacă vrei ca, totuşi, cuvintele să fie
afişate înclinat în orice program de navigare, indiferent de configurarea curentă a
utilizatorului, atunci va trebui să foloseşti un stil fizic, care să precizeze efectiv acest lucru (de
exemplu, <I>).
Totuşi, se recomandă folosirea stilurilor logice, deoarece acestea au avantajul
consecvenţei şi al flexibilităţii documentelor HTML.
În orice caz, dacă vei opta pentru folosirea stilurilor logice, mergi cu ele până la
sfârşitul documentelor, iar dacă vei alege stilurile fizice, fă la fel.
Secvenţe escape
Aceste secvenţe au un dublu rol. Pe de o parte de a permite utilizarea caracterelor
speciale, cum ar fi parantezele unghiulare, iar pe de altă parte pentru a afişa caracterele ASCII
extinse (cu diacritice).
Astfel, parantezele unghiulare (<, >) sunt folosite în etichete HTML, iar caracterul &
(„ampersand") se foloseşte pentru marcarea chiar a secvenţelor escape. De aceea, acestea nu
vor apărea în text aşa cum sunt. Ghilimelele pot fi scrise prin dublarea apostrofului sau prin
folosirea secvenţei escape ".
Pentru a folosi unul din cele trei caractere într-un document, va trebui să scrii în locul
lui secvenţa escape corespunzătoare: < pentru < , > pentru > , & pentru &
Există şi secvenţe escape pentru unele caractere cu accente (semne diacritice), cum ar
fi:
” ş ” = ş , ” ţ ” = ţ , ” ă ” = ă , ” â ” = â , ” î ” = î,
Spre deosebire de restul limbajului HTML, secvenţele escape fac diferenţa între
caracterele minuscule şi cele majuscule. De exemplu, nu poţi folosi < - în loc de <.
3.2. Legături
Poţi face legături către documente din alt director, prin specificarea unei căi relative.
De exemplu, dacă vrei o legătură către fişierul Hunedoara.html, aflat în subdirectorul
Transilvania, va trebui să scrii:
<A HREF=„Transilvania/Hunedoara.html">Judetul Hunedoara</A>
Ai avut de-a face cu o legătură relativă, deoarece ai specificat calea către fişierul
referit, relativ la locaţia fişierului curent.
De asemenea, poţi folosi numele căii complete (URL-ul complet) a fişierului referit,
dar legăturile relative sunt mult mai eficiente în accesarea unui server.
Numele de căi folosesc sintaxa standard din sistemul de operare Unix. Aici, sintaxa
pentru directorul părinte este "..", iar despărţirea între numele de subdirectoare se face cu
simbolul slash (/). Se poate folosi şi simbolul back-slash (\).
Dacă te afli în fişierul Hunedoara.html şi vrei să faci o referinţă la fişierul
România.html, legătura ta va trebui să arate cam aşa:
<A HREF="../România.html">Romania</A>
În general, e bine să utilizezi legăturile relative, deoarece:
1. E mai uşor să muţi un grup de documente într-o altă locaţie (căile relative se vor
păstra).
2. Conexiunea la server e mai eficientă.
3. Ai mai puţin de scris...
Uneori, însă, legăturile absolute trebuie neapărat utilizate - de exemplu, atunci când nu
ai o referinţă directă către un anumit document, cum ar fi o adresă oarecare de pe alt server
din Internet (un URL).
Astfel, de exemplu, pentru a face o referire la serverul de căutare Yahoo, va trebui ca
în documentul tău să ai o legătură de genul:
<A HREF=„http://www.yahoo.com"> Serverul Yahoo </A>
Ancorele pot fi folosite şi pentru a trimite cititorul către o anumită secţiune dintr-un
document (fie că acesta e documentul curent, sau altul), în altă parte decât la începutul
documentului (aşa cum se face în mod prestabilit). Acest gen de ancoră se numeşte adesea
ancoră cu nume, deoarece pentru a crea legături, trebuie să inserezi în documente anumite
nume HTML.
Să presupunem că vrei să faci o legătură din documentul Romania.html către o
secţiune aparte (referitoare la relieful ţării), din alt document (Date.html).
Pentru aceasta, în documentul Romania.html va trebui să faci o trimitere de genul
următor:
<a href=„Date.html#RELIEF„>Relieful Romaniei</a>.
Caracterul diez (#) din cadrul legăturii indică programului de navigare faptul că
trimiterea se face către o secţiune numită relief din cadrul fişierului Date.html. Aceasta
înseamnă că, după ce execuţi clic pe textul legăturii, programul de navigare va încărca pagina
Date.html, poziţionându-se la începutul secţiunii (marcate în vreun fel) cu numele relief.
De aceea, în fişierul Date.html va trebui să ai o ancoră cu nume (în acest exemplu,
relief), înainte de începutul acelei secţiunii referite.
<H2><A NAME=„RELIEF">Relieful țării</A></H2>
Acum totul e gata şi fii atent ca nu cumva să faci trimiteri către anumite secţiuni
dintr-un document, care nu sunt denumite.
Pentru a face o legătură către o secţiune din cadrul documentului curent, tehnica
folosită este aceeaşi, doar că se omite numele fişierului.
De exemplu:
<A HREF=„#RELIEF">Relieful tarii</A>
este o legătură care se poate face în fişierul Date .html.
Folosind tehnica ancorelor cu nume în cadrul unui singur document HTML, poţi crea:
o tablă de materii a unui astfel de document, cu trimiteri la diferitele secţiuni ale |
documentului.
Mailto
Poţi să vii în sprijinul unui cititor al paginii Web, care vrea să trimită un mesaj e-mail
către o anumită adresă, prin folosirea atributului mailto în cadrul unei legături.
Formatul său este:
<A HREF=„mailto: nume_adresa@host">Name</A>
De exemplu, introdu:
<A HREF=„mailto:ssm®yahoo.com">Autorul documentului</A> pentru a-mi putea
trimite o scrisoare.
Scrisoarea este trimisă, dacă se execută un clic pe textul „Autorul documentului", în
urma căruia se va deschide o fereastră de trimis e-mail.
3.3. IMAGINI
Mai multe programe de explorare Web pot afişa imagini lângă text („inline"), care
sunt în format JPEG, GIF sau XBitmap (xbm), Portable Network Graphic (png).
Fiecare imagine consumă timp pentru a putea fi decodificată şi afişată pe ecran, fapt ce
încetineşte mult procesul de afişare a documentului. Trebuie să ai grijă ce şi câte imagini
inserezi într-un document.
Pentru a include o imagine „inline", introdu:
<IMG SRC=nume_imagine>
unde nume_imagine este URL-ul fişierului imagine.
Sintaxa pentru astfel de adrese URL este identică cu cea utilizată pentru alte ancore
href. Dacă imaginea este un fişier GIF, atunci nume_imagine trebuie să aibă extensia .gif, iar
dacă este un fişier JPEG, va avea una dintre extensiile . jpg sau . jpeg.
3.3.1. Atributele de mărime a imaginii
Va trebui să incluzi două atribute în etichetele <img> pentru a indica programului
navigator care este mărimea imaginii ce va fi preluată alături de text. Aceste atribute se
numesc height şi width şi permit programului de navigare să stabilească spaţiul adecvat (în
pixeli) pentru imagini.
(Mărimea în pixeli poate fi aflată din programul de procesare a imaginii, de exemplu
PaintShop Pro sau Adobe Photoshop.)
Exemplu de utilizare a acestor atribute:
<IMG SRC=persoana.gif HEIGHT=100 WIDTH=65>
3.3.2. Alinierea imaginilor
Există diferite opţiuni pentru afişarea imaginilor. Ele pot fi aranjate separat de text, la
stânga sau la dreapta textului, sau chiar pe centru. încearcă mai multe posibilităţi pentru a
vedea care este forma cea mai potrivită şi mai estetică a paginii tale.
În mod prestabilit, partea de jos a unei imagini este aliniată cu textul care urmează.
Poţi alinia imaginile cu partea superioară, sau cu centrul paragrafului, folosind atributele de
aliniere: align=top sau align=center.
De exemplu:
<IMG SRC=„Imagine.gif" ALIGN=CENTER>
3.3.3. Imagini fără text
Pentru a afişa o imagine fără un text asociat (de exemplu, sigla organizaţiei sau a
firmei tale) plaseaz-o într-un paragraf separat şi foloseşte atributul align pentru a centra
imaginea sau a o aşeza în partea din dreapta a ferestrei, ca în exemplul următor:
<p ALIGN=CENTER>
<IMG SRC = „sigla.gif*>
</p>
3.3.4. Texte alternative pentru imagini
Limbajul HTML dispune de un mecansim prin care se poate spune cititorului ce
imagini îi lipsesc din pagină, înlocuind imaginea ce ar trebui să fie afişată cu un text
explicativ.
Atributul alt permite afişarea unui text în locul unei imagini, ca în exemplul următor:
<IMG SRC=„SageataSus.gif" ALT=„Sus">
unde SageataSus.gif este o imagine ce indică în sus.
Dacă dispui de un program de navigare ce are posibilitatea de vizualizare a imaginilor,
vei obţine imaginea săgeţii (imediat după textul alternativ), iar în celelalte cazuri vei vedea
doar textul „Sus". E recomandabil să incluzi texte alternative pentru toate imaginile din
documentul tău text (sau măcar pentru cele mari), ca un semn de respect faţă de cititorii tăi.
4.1. TABELE
Inainte ca tehnica etichetelor HTML pentru tabele să fi fost pusă la punct, autorii de
pagini web prezentau informaţia sub formă tabelară. Utilizând marcajele <PRE>, numărând
spaţiile şi previzualizându-şi rezultatul. Lucrul era dificil, ceea ce a impus apariţia etichetelor de
tabelare.
Tabelele sunt foarte folositoare în prezentarea unor informaţii sub formă tabelară, dar
unii autori creativi şi inventivi, folosesc tabelele şi pentru pagini Web obişnuite.
Un tabel are un cap de tabel – antet, unde se explică ce conţin coloanele/rândurile,
rânduri pentru informaţii şi celule pentru fiecare element. În tabelul următor de exemplu prima
coloană conţine informaţii de cap de tabel, fiecare rând explică o etichetă de tabel HTML, iar
fiecare celulă conţine o pereche de etichete sau explică funcţionarea lor.
Elemente de tabel
Element Descriere
<TABLE>… Defineşte un tabel HTML. Dacă atributul BORDER este prezent browserul
</TABLE> va afişa tabelul cu o margine
Defineşte titlul tabelului. Poziţia prestabilită a titlului este în mijlocul părţii
<CAPTION>… de sus a lui. Atributul ALIGN=BOTTOM poate fi folosit pentru
</CAPTION> poziţionarea titlului sub tabel. Orice tip de etichetă de marcare poate fi
folosită în cadrul secţiunii de titlu, CAPTION.
Indică un rând în cadrul tabelului. Poţi defini atributele prestabilite pentru
întregul rând:
<TR>…</TR>
Alinierea orizontală: ALIGN (LEFT,CENTER, RIGHT)
Şi/sau verticală: VALIGN (TOP,MIDLLE, BOTTOM)
Defineşte o celulă cap de tabel. În mod prestabilit, textul din această celulă
<TH>…</TH> este îngroşat şi centrat. Celulele din capul de tabel pot conţine alte atribute
pentru determinarea caracteristicilor celulei şi/sau conţinutul ei.
Defineşte o celulă obişnuită a tabelului pentru date. În mod prestabilit,
textul din această celulă este aliniat la stânga şi centrat pe verticală. Celulele
<TD>…</TD>
pot conţine alte atribute pentru determinarea caracteristicilor celulei şi/sau
conţinutul ei.
Atribut Descriere
ALIGN (LEFT,CENTER, RIGHT) Alinierea orizontală a celulei
VALIGN (TOP,MIDLLE, BOTTOM) Alinierea verticală a celulei
COLSPAN=n Numărul n de coloane pe care le acoperă o
celulă.
ROWSPAN=n Numărul n de rânduri pe care le acoperă o
celulă.
NOWRAP Precizează ca fals atributul de împachetare
”wrapping” al celulei
Folosind atributele COLSPAN şi ROWSPA poţi controla înălţimea coloanelor şi a
liniilor. De exemplu, marcajul <TH COLSPAN=2> crează un cap de tabel cu o lăţime de două
coloane. Cu ajutorul atributelor ROWSPAN şi COLSPAN se pot crea tabele complexe.
Formatul gemeral al unui tabel
Formatul general al unui tabel arată astfel:
<TABLE>
Începutul definiţiei tabelului
<CAPTION> conţinutul titlului </CAPTION>
Definitia titlului
<TR>
Inceputul definitiei primului rand
<TH> continutul celulei </TH>
Prima celula din randul 1 – capul de tabel
…………………….
<TH> continutul celulei </TH>
Ultima celula din randul 1 – capul de tabel
</TR>
Sfirsitul definitiei primului rand
<TR>
Inceputul definitiei celui de al doilea rand
<TD> continutul celulei </TD>
Prima celula din randul 2
…………………….
<TD> continutul celulei </TD>
Ultima celula din randul 2
……………….
</TR>
Sfirsitul definitiei celui de al doilea rand
……………….
<TR>
Inceputul definitiei ultimului rand
<TD> continutul celulei </TD>
Prima celula din ultimul rand
…………………….
<TD> continutul celulei </TD>
Ultima celula din ultimul rand
……………….
</TR>
Sfirsitul definitiei ultimului rand
</TABLE>
Sfirsitul definitiei tabelului
Marcajele <TABLE> şi </ TABLE > trebuie să cuprindă în interiorul lor întreaga
definiţie a tabelului. Primul element din cadrul tabelului este titlul CAPTION care este optional.
Apoi, poţi avea oricâte rânduri definite prin etichetele <TR> şi </TR>. În cadrul unui rand poţi
avea oricâte celule definite prin etichetele <TD>….</TD> sau <TH> si </TH>. Fiecare rând al
tabelului este formatat independent de rândul anterior sau cel urmator.
LABORATORUL NR. 5
5.1. CONSTRUIREA UNUI SITE WEB
Meniuri
Shortcut-uri
Panou de
activitaţi
Zona de
lucru a
aplicaţiei
Figura 5.2 – Butoanele care permit vizualizarea paginii proiectate în diferite formate
Cele 4 butoane sunt utilizate penru:
Design – afişează fereastra de editare a aplicaţiei
Split – afişează fereastra aplicaţiei împărţită pe orizontală în două zone: partea
de sus va afişa codul HTML, iar partea de jos fereastra de proiectare Design
Code – afişează codul HTML, corespunzător paginii proiectate
Preview – ne prezintă cum va araăta pagina noastra când va fi deschisă prin
intermediul unui browser de internet.
Indiferent de ce va conţine pagina sau site-ul un lucru este clar. Acel ceva trebuie
adăugat în pagină. FrontPage-ul permite adăgarea de texte, hyperlink-uri, imagini sunete, etc.
Adăugarea textelor
Chiar şi o pagină alcătuită în mare parte din imagini, conţine ceva text. Următorii paşi
trebuie respectaţi la introducerea unui text:
1. Se dă clic pe pagina în partea de sus a cesteia pentru a se scrie titlul paginii.
2. Se dă click pe caseta drop-down din bara de butoane de formatare şi se alege
stilul titlului.
3. În bara de butoane de formatare se da click pe butonul de centrare.
4. Se trece apoi la introducerea textului din pagina. După scrierea unui rând se
apasă Enter şi se trece la rândul următor.
5. Dupa ce textul este scris se trece la formatarea acestuia.
Adăugarea hyperlink-urilor
Hyperlink-urile realizează legăturile între pagini. Se pot adăuga hyperlink-uri care fac
legatura cu alte zone din aceeaşi pagină, cu alte pagini sau site-uri sau cu o adresă de e-mail.
Pentru a crea un hyperlink se procedează astfel:
Se selectează un cuvânt sau un rând.
Se execută click dreapta pe selecţie sau se selectează din meniul Insert comanda
Hyperlink, Insert →Hyperlink, sau se foloseşte combinaţia Ctrl+K.
Ca efect se deschide fereastra din figura 5.4.
Adăugarea de imagini
Pentru salvarea paginii folosim una dintre metodele: se poate da un click pe pictograma
Save în bara de butoane, se poate folosi combinaţia de taste Ctrl+S sau se poate selecta din
meniul File comanda Save.
Se deschide fereastra din figura 5.5.
6.1. CADRE
În continuare vom învăţa cum putem să împărţim fereastra browser-ului în mai multe
secţiuni, fiecare secţiune conţinând câte un document HTML. Aceste secţiuni se numesc
cadre (frames). Prin urmare, asemenea tabelelor, cadrele oferă posibilitatea de a structura în
pagină informaţii diverse, dar oferă şi avantaje suplimentare, prin faptul că în cadre se pot
vizualiza documente HTML diferite. Cadrele (frames) sunt secţiuni ce oferă posibilitatea de
a vizualiza simultan în fereastra browser-ului mai multe pagini Web.
Exemplu:
Iată o pagină foarte simpă cu cadre, care separă ecranul în două secţiuni, prima având
o înălţime de 80 de pixeli, iar a doua ocupând restul fererestrei:
<HTML>
<FRAMESET ROWS="80,*">
<FRAME SRC="unu.html">
<FRAME SRC="doi.html">
</FRAMESET>
</HTML>
b) Indicând volumul de spaţiu alocat fiecărui cadru prin procente:
<HTML>
<FRAMESET ROWS="nr%,*">
<FRAME SRC"nume_cadrul_l. extensie_cadrul_1 ">
<FRAME SRC=" nume_cadrul_2. extensie_cadrul_2">
</FRAMESET>
</HTML>
primul cadru ocupă nr% din înălţimea ferestrei browser-ului;
al doilea cadru ocupă diferenţa de procent din 100% din înălţimea ferestrei
browser-ului şi procentul ocupat de primul cadrul, această diferentţă este specificată prin
caracterul *.
Exemplu:
Pagina de mai jos separă ecranul în două secţiuni, prima ocupând 30% din înăţimea
ferestrei browser-ului, iar a doua ocupând diferenţa rămasă din fererestră:
<HTML>
<FRAMESET ROWS="30%,*">
<FRAME SRC="unu.html">
<FRAME SRC="doi.htroT>
</FRAMESET>
</HTML>
2. împărţirea ferestrei browser-ului în trei secţiuni orizontale:
a) Indicând volumul de spaţiu alocat fiecărui cadru prin numărul de pixeli:
<HTML>
<FRAMESET ROWS="nrl, nr2, *">
<FRAME SRC="nume_cadrul_l. Extensie_cadrul_1">
<FRAME SRC=" nume_cadrul_2.extensie_cadrul_2">
<FRAME SRC="nume_cadrul_3. extensie_cadrul_3 ">
</FRAMESET>
</HTML>
primul cadru ocupă un număr de nrl pixeli din înălţimea ferestrei browser-ului;
al doilea cadru ocupă un număr de nr2 pixeli din înălţimea ferestrei browser-
ului;
al treilea cadru ocupă diferenţa de pixeli din totalul de pixeli ai înălţimii
ferestrei browser-ului şi suma de pixeli (nrl+nr2) ocupată de primul şi al
doilea cadru, această diferenţă este specificată prin caracterul *.
Exemplu:
<HTML>
<FRAMESET ROWS="80,50,*">
<FRAME SRC="unu.html">
<FRAME SRC="doi.html">
<FRAME SRC="trei.html">
</FRAMESET>
</HTML>
Ecranul este separat în trei secţiuni, prima având o înălţime de 80 de pixeli, a doua o
înălţime de 50 de pixeli, iar a treia ocupând restul din înălţimea fererestrei:
b) Indicând volumul de spaţiu alocat fiecărui cadru prin procente:
<HTML>
<FRAMESET ROWS="nrl%, nr2%, *">
<FRAME SRC="nume_cadrul_l. extensie_cadrul_1 ">
<FRAME SRC="nume_cadrul_2. extensie_cadrul_2">
<FRAME SRC="nume_cadrul_3. extensie_cadrul_3">
</FRAMESET>
</HFML>
primul cadru ocupă nrl% din înălţimea ferestrei browser-ului,
al doilea cadru ocupă nr2% din înălţimea ferestrei browser-ului,
al treilea cadru ocupă diferenţa de procent din 100% al înălţimii ferestrei
browser-ului şi suma de procentelor (nrl+nr2) ocupată de primul şi al doilea, această diferenţă
este specificată prin caracterul *.
Exemplu:
<HTML>
<FRAMESET ROWS="30%,*">
<FRAME SRC="unu.html">
<FRAME SRC="doi.html">
<FRAME SRC="trei.html">
</FRAMESET>
</HTML>
Ecranul este separat în trei secţiuni, prima ocupând 30% din înălţimea ferestrei
browser-ului, a doua ocupă 10%, iar a treia ocupând diferenţa râmasă din înălţimea
fererestrei.
7.1. FORMULARE
Formularele sunt una dintre cele mai populare metode interactive de comunicare din
World Wide Web (WWW). Puteţi crea formulare furnizând un anumit număr de câmpuri în
care un utilizator poate introduce informaţii sau poate alege o opţiune dintr-o listă de opţiuni.
Formularele HTML vă oferă posibilitatea de a aduna informaţii sau impresii de la cei care vă
vizitează pagina Web. Pentru a putea prelucra datele dintr-un formular, aveţi nevoie însă de
un script. Veţi vedea în partea a doua a cărţii cum se poate realiza aceasta.
Acestea au trei componente principale: <TEXTAREA>, <SELECT> şi <INPUT>.
<TEXTAREA> - defineşte un câmp în care utilizatorul poate introduce un text
pe mai multe linii;
<SELECT> - oferă utilizatorului posibilitatea de a alege dintr-o listă de
opţiuni;
<INPUT> - defineşte toate celelalte metode de introducere a datelor (text pe o
singură linie, butoane radio, butoane de trimitere sau de anulare a datelor.
Formularele HTML sunt delimitate de marcajul <FORM>, care se specifică prin
<FORM ACTION=url METHOD=metoda> şi de marcajul de terminare </FORM>.
ACTION specifică URL-ul (adresa) la care vor fi trimise informaţiile din
formular. Dacă acesta nu se specifică, vor fi trimise la acelaşi URL de unde provine şi pagina
Web.
METHOD specifică cum vor fi trimise informaţiile. Cea mai folosită metodă
este POST, care trimite toate informaţiile din formular separat faţă de URL. Cealaltă opţiune
pentru METHOD este GET, care ataşează informaţiile din formular la sfârşitul URL-ului.
Vom prezenta în continuare, fiecare componentă pe larg:
<TEXTAREA>
Cu aceasta componentă puteţi defini o zonă în care se poate introduce un text, pe mai
multe linii. Atributele pentru aceasta sunt:
NAME - defineşte numele câmpului;
ROWS - stabileşte numărul de linii din câmp;
COLS - stabileşte numărul de coloane din câmp.
Exemplu:
<HTML>
<FORM>
<TEXTAREA NAME="Comentariu" ROWS=5 COLS=40>
</TEXTAREA>
</FORM>
</HTML>
<SELECT>
Această componentă permite utilizatorului să aleagă dintr-o listă de opţiuni. Se poate
specifica câte opţiuni să fie afişate în acelaşi timp. Atributele pentru aceasta sunt:
NAME - defineşte numele câmpului;
SIZE - stabileşte câte opţiuni sunt afişate în acelaşi timp;
MULTIPLE - permite selectarea mai multor opţiuni în acelaşi timp.
Opţiunile sunt delimitate de marcajele <SELECT> şi </SELECT> şi sunt listate în
cadrul etichetei <OPTION>. Valorile pentru aceasta eticheta sunt:
VALUE - reprezintă valoare ce este atribuită opţiunii şi care este apoi trimisă .
către script;
SELECTED - stabileşte o opţiune ca fiind implicită.
Exemplu:
<HTML>
Alegeţi o opţiune din lista
<FORM>
<SELECT NAME="Optiuni">
<OPTION SELECTED VALUE="Optiunel">Optiune1
<OPTIONVALUE="Optiune2">Optiune2
<OPTION VALUE=**Optiune3 ">Optiune3
</SELECT>
</FORM>
</HTML>
<INPUT>
Spre deosebire de <TEXTAREA> şi <SELECT>, <INPUT> este un câmp pentru o
singură opţiune ce permite colectarea de informaţii, incluzând câmpuri simple de text,
butoane radio, căsuţe de bifare şi butoane de trimitere sau de anulare a informaţiilor din
formulare. Atributele pentru acesta sunt:
NAME - defineşte numele câmpului. Acesta este obligatoriu pentru toate
tipurile cu excepţia butoanelor de trimitere şi anulare;
SIZE - dimensiunea câmpului specificată în număr de caractere pentru text;
MAXLENGTH - specifică numărul maxim de caractere ce pot fi citite pentru
un câmp de text;
VALUE - defineşte pentru un câmp de text, textul implicit ce va fi afişat.
Pentru un buton radio sau o căsuţă de bifare specifică opţiunea implicită ce va fi selectată.
Pentru butoanele de trimitere sau anulare a informaţiilor din formular, specifică textul ce va fi
afişat în interiorul butonului;
CHECKED - activează un buton radio sau o căsuţă de bifare;
TYPE - defineşte tipul câmpului de intrare.
Exemplu pentru câmp simplu de text:
<HTML>
<FORM>
Introduceţi numele:
<INPUT TYPE="text" NAME="Nume" SIZE="15"
MAXLENGTH="12">
</FORM>
1.1 Obiective
• Instalarea şi configurarea serverului Apache;
• Instalarea şi configurarea PHP;
• Instalarea şi configurarea serverului MySQL şi a aplicației PhpMyAdmin
Pentru a instala pachetele corespunzătoare pe sistemul FreeBSD sunt necesare îndeplinirea
câtorva condiții:
• logarea ca root;
• verificarea conexiunii la Internet, pentru a putea descărca pachetele în timpul instalării.
$cfg['Servers'][$i]['controluser'] = 'root';
$cfg['Servers'][$i]['controlpass'] = 'parola';
...
$cfg['ShowChgPassword'] = FALSE; // simple users or not
autentificare :
În mod implicit, parola pentru root este nesetată (vidă), iar la apăsarea butonului
Execută se încarcă pagina următoare:
Deoarece existența contului root fără parolă de acces este periculoasă pentru integritatea bazei de
date, va trebui să-i setăm o parolă de acces. Vom face aceasta apăsând pe legătura "Drepturi de acces"
sau "Privileges" dacă interfața este în engleză. Se va încărca pagina cu drepturi de acces asupra
MySQL, şi în dreptul lui root apăsăm pe butonul ce indică modificarea:
Apoi după ce s-a încărcat următoarea
pagină, găsiți unde apare ”Schimbare
parola” şi bifați ”Parola”, apoi tastați
parola dvs. şi în prima, şi în a-II-a
căsuță, după care apăsați pe butonul „Executa”. După setarea parolei de root, mai apare un cont de
utilizator "Oricare", fără parole şi cu privilegii reduse.
3.2.Introducere
Orice
document
HTML începe
cu notația
<html> şi se
termină cu
notația
</html>.
Aceste notații
se numesc în
literatura de
specialitate
"TAG-uri".
Prin convenție,
toate
informațiile
HTML încep
cu o paranteză
unghiulară
deschisa "<" şi
se termină cu o
paranteză
unghiulară închisă ">".
Tag-urile dintre aceste paranteze transmit comenzi către browser pentru a afişa pagina într-un
anumit mod. Unele blocuri prezintă delimitator de sfârşit de bloc, în timp ce pentru alte blocuri acest
delimitator este opțional sau chiar interzis.
Între cele două marcaje <html> şi </html> vom introduce două secțiuni:
• secțiunea de antet <head>...</head> şi
• corpul documentului <body>...</body>. Blocul <body>...</body> cuprinde conținutul
propriu-zis al paginii HTML, adică ceea ce va fi afişat în fereastra browser-ului.
O etichetă poate fi scrisă atât cu litere mici, cât şi cu litere mari. Adică <HTML> = <HtmL> =
<html>. Caracterele "spațiu" şi "CR/LF" (Enter) ce apar între etichete sunt ignorate de către browser.
Deci un prim document HTML ar putea fi:
<html>
<head> </head>
<body>
</body>
</html>
Aşa arată primul document HTML. Copiați-l folosind Copy/Paste într-un fişier nou şi salvați-l ca
test3.htm sau test3.html. Apoi porniți Mozilla Firefox sau Internet Explorer, dați CTRL-O şi
introduceți calea spre fişier. Dați OK şi ... nimic. – Normal, între tagurile <body> nu este scris nimic.
Să adăugăm primele elemente la pagina noastră. În primul rând, titlul unei pagini se obține inserând
în secțiunea <head>...</head> a următoarei linii:
<title>Aceasta este prima mea pagina de Web</title>
În plus, în secțiunea <body>...</body> se pot scrie oricate linii de text. Dacă nu întâlnim nici un
marcaj < sau > atunci interpretorul HTML le va lua ca texte simple şi le va afişa pe ecran.
Noua versiune a paginii este:
<html>
<head>
<title>Aceasta este prima mea pagina de Web</title>
</head>
<body>
Bine ati venit in pagina mea de Web!
</body>
</html>
Conținutul blocului <title>...</title> va apărea în bara de titlu a ferestrei browser-ului. Dacă acest
bloc lipseşte într-o pagină HTML, atunci în bara de titlu a ferestrei browser-ului va apărea numele
fişierului.
Dacă introducem mai multe linii într-o pagină browser-ul va afişa într-un singur rând, întrucât
caracterele "Enter - CR/LF " sunt ignorate de browser. Trecerea pe o linie nouă se face la o comandă
explicită, care trebuie să apară în pagina html. Această comanda este marcajul <br> ( de la " line break
" - întrerupere de linie ).
Folosind aceleaşi operații ca mai sus, vizualizați noua pagina! Veți vedea textul ce apare în fereastra
navigatorului. În plus, pagina dvs. va avea un titlu nou, cel introdus de dvs.
<html>
<head>
<title> titlul paginii</title>
</head>
<body>
Bine ati venit in <br> pagina mea de Web!
</body>
</html>
4.2. Recapitulare
Orice document HTML începe cu notația <html> şi se termină cu notația </html>. Aceste caractere
se numesc în literatura de specialitate "TAG-uri". Prin convenție, toate informațiile HTML încep cu o
paranteză unghiulară deschisa "<" şi se termină cu o paranteză unghiulară închisă ">".
Tag-urile dintre aceste paranteze transmit comenzi către browser pentru a afişa pagina într-un
anumit mod. Unele blocuri prezintă delimitator de sfârşit de bloc, în timp ce pentru alte blocuri acest
delimitator este opțional sau chiar interzis.
Între cele două marcaje <html> şi </html> vom introduce două secțiuni:
• secțiunea de antet <head>...</head> şi
• corpul documentului <body>...</body>. Blocul <body>...</body> cuprinde conținutul
propriu-zis al paginii HTML, adică ceea ce va fi afişat în fereastra browser-ului.
O etichetă poate fi scrisă atât cu litere mici, cât şi cu litere mari. Adică <HTML> = <HtmL> =
<html>. Caracterele "spațiu" şi "CR/LF" (Enter) ce apar între etichete sunt ignorate de către browser.
Fişier de lucru:
Se va crea un director Lucrare4, în care va crea fişierul de lucru lucrare4.html, în care vor scrie,
următoarele:
<html >
<head>
<title>Document Nou</title>
</head>
<body>
<h1>Lucrarea de laborator nr 4 <br> lectii de html</h1>
<h2>Crearea legaturilor in html</h2>
</body>
</html
şi
<html >
<head>
<title>Pagina 2</title>
</head>
<body>
<font color=blue><h3>Lucrarea de laborator nr 4 <br> pagina 2</h3></font>
</body>
</html>
O legătură către o pagină aflată în acelaşi director se formează cu ajutorul etichetei <a> (de la
"anchor"=ancora). Pentru a preciza pagina indicată de legătură se utilizează un atribut al etichetei
<a> numit href, care ia valoare numele fişierului HTML aflat în acelaşi director. Zona activă care
devine sensibilă la apăsarea butonului stâng al mouse-ului este formată din textul cuprins între etichetele
<a>...</a>. Prezența etichetei de sfârşit </a> este obligatorie.
În pagina principală, de lucru, lucrare4.html se scriu în continuare legăturile către pagina 1 şi
către pagina2:
Legatura catre pagina1: <a href="pagina1.html"> apasa aici </a><br> Legatura catre
pagina2: <a href="pagina2.html"> apasa aici </a><br>
Dacă vrem să creăm o legătură către o pagină de pe disc, în loc de "pagina1.html" vom scrie calea
către fişierul respectiv.
Pentru a crea o legătură către un iste extern, vom scrie adresa site-ului, de ex:
<a href="http://www.yahoo.com"><b> Catre site-ul YAHOO</b> </a><br>
4.3.1 Ancore
Într-o pagină foarte lungă pot exista puncte de reper către care se definesc legături.
O ancoră se defineşte de asemenea prin eticheta <a>. Pentru a defini ancora se utilizează atributul
name care primeşte ca valoare un nume atribuit ancorei (de exemplu "leg1").
Pentru a insera o legătura către "leg1" definită în aceeaşi pagină se utilizează eticheta <a>
având atributul href de valoare "#leg1".
Pentru a introduce o legătură către o ancoră definita în alt document (alta pagină) aflat în acelaşi
director, atributul href primeşte o valoare de forma "nume_fisier.html#nume_ancora".
Vom defini o ancoră în top-ul paginii şi una la sfârşitul paginii astfel: În topul paginii, după tag-ul
<body> se scrie: <a name="top">top
În josul paginii: înainte de </body> se scrie: <a name="jos">jos
Pentru apelarea ancorelor, scriem în continure, de unde am rămas data trecută:
<h3>Ancore definite in acelasi document </h3>
<a href="#jos">
Link catre sfarsit pagina</a>
4.4. Liste
4.4.1 Liste neordonate
O listă neordonată este un bloc de text delimitat de etichetele corespondente <ul>...</ul> (" ul
" vine de la " unordered list " = lista neordonata). Fiecare element al listei este inițiat de eticheta <li>
(list item).
Lista va fi indentată față de restul paginii Web şi fiecare element al listei începe pe un rând nou.
În fişierul pagina1.html se introduc următoarele scripturi, înainte de tagul </body>:
<h1 align="center">O lista neordonata</h1><hr> Glosar de termeni de World Wide Web
<ul>Culori uzuale disponibile prin nume
<li>Black <li>White <li>Red <li>Green <li>Blue <li>Yellow <li>Purple <li>Aqua
</ul>
Tag-urile <ul> şi <li> pot avea un atribut type care stabileşte caracterul afişat în fața fiecărui
element al listei. Valorile posibile al acestui atribut sunt:
o "circle" (cerc)
• "disc" (disc plin) (valoarea prestabilita);
"square" (patrat)
Listele neordonate pot fi imbricate pe mai multe niveluri: exemplu: în continuare se introduc
rândurile:
<h1 align="center">O lista neordonata de liste neordonate</h1><hr> Glosar de termeni de World Wide Web
<ul>Elemente si atribute a unei pagini HTML
<li>Frameset <ul>Atribute: <li>cols <li>rows <li>border </ul>
<li>Frame <ul>Atribute: <li>src <li>name <li>scrolling </ul>
</ul>
4.5. Tabele
Tabelele ne permit să creăm o rețea dreptunghiulară de domenii, fiecare domeniu având propriile
opțiuni pentru culoarea fondului, culoarea textului, alinierea textului etc. Pentru a insera un tabel se
folosesc etichetele corespondente <table>...</table>. Un tabel este format din rânduri. Pentru a
insera un rând într-un tabel se folosesc etichetele <tr>...</tr> (de la " table row "= rând de tabel).
Folosirea etichetei de sfârşit </tr> este opțională.
Un rând este format din mai multe celule ce conțin date. O celulă de date se introduce cu eticheta
<td>..</td>.
Toate exemplele de tabele vor fi scrise în fişierul pagina2.html.
În mod implicit, un tabel nu are chenar. Pentru a adăuga un chenar unui tabel, se utilizează un
atribut al etichetei <tabel> numit border.
Acest atribut poate primi ca valoare orice număr întreg ( inclusiv 0 ) şi reprezintă
grosimea în pixeli a chenarului tabelului.
Dacă atributul border nu este urmată de o valoare atunci tabelul va avea o grosime
prestabilita egală cu 1 pixel, o valoare egală cu 0 a grosimii semnifică absența chenarului.
Când atributul border are o valoare nenulă chenarul unui tabel are un aspect tridimensional.
Exemplu: tabel cu trei rânduri şi patru coloane:
<table border="3">
<tr> <td>celula 11</td> <td>celula 12</td><td>celula 13</td></tr>
<tr> <td>celula 21</td> <td>celula 22</td><td>celula 23</td></tr>
<tr> <td>celula 31</td> <td>celula 32</td><td>celula 33</td></tr>
</table>
Pentru a modifica alinierea tabelului nostru, se adaugă align="center" după tagul <table şi
înainte de border"3", aşa ca mai jos:
<table align="center" border="3">
5.2. Introducere
PHP este un limbaj dinamic, ceea ce înseamnă că PHP comunică cu utilizatorul, el efectuează
dinamic operații, iar conținutul paginii se schimbă în real-time, în funcție de preferințe. De exemplu în
HTML nu putem modifica conținutul unei pagini decât dacă o înlocuim cu una nouă (cu conținut
nou). În PHP lucrurile stau mai simplu, printr- un script putem introduce ştiri pe pagina noastră sau
putem modifica titlul paginii, sau putem construi formulare dinamice pe care utilizatorii să le
folosească. Totuşi acest lucru nu înseamnă că ne debarasam de limbajul HTML, nicidecum. Cei care au
cunoştințe HTML vor înțelege şi învăța mai uşor PHP.
5.2.1 Sintaxa
La fel ca şi în limbajul HTML, atunci când deschidem un tag, el trebuie automat închis, pentru a nu
genera erori (ex. <table> şi </table>), şi în PHP, cu ajutorul tagurilor <?php şi respectiv ?> vom putea
delimita codul PHP de codul HTML. Este foarte important de ştiut, pentru lejeritate se pot folosi mai
simplu tagurile <? şi respectiv ?>, cu toate acestea metodele prin care putem delimita tagurile PHP sunt
mai multe, spre exemplu:
<script language="php">
echo "Acesta este un text";
</script>
sau
<% echo "Acesta este un text"; %> atunci când este activată opțiunea asp_tags din php.ini.
<?php
………
Este recomandată utilizarea primelor taguri descrise anterior, adică:
cod php aici
………
?>
Ca în orice limbaj de programare/scripting, în PHP există posibilitatea adăugării de comentarii sau
note în codul sursă. Acestea nu sunt luate în considerare de către compilator. Iată câteva exemple de
comentarii acceptate în PHP:
/* Comentariu in stil C */
// Comentariu in stil C++
# Comentariu in stil Bourne shell
<?php
$salut=”Salutare natiune”;
echo($salut);
?>
Conținutul variabilei $salut este pasat funcție echo care va afişa conținutul acesteia, deci va
rezulta textul ’Salutare natiune’.
Următorul cod demonstrează conceptul de variabilă încapsulată. În cazul de mai jos este vorba
despre o variabilă încapsulată într-un text:
<?php
$nume = ”Popescu Ion”;
echo(”Numele meu este $nume”);
//folosim functia echo() pentru a afisa textul
?>
Rulați în browser scriptul de mai sus şi veți vedea că el afişează textul ’Numele meu este Popescu
Ion’.
Probabil v-ați dat seama până acum de ce se lucrează cu variabile. Pentru că ne fac viața de
programator mai uşoară, unei variabile îi putem asigna orice valoare, orice text oricât ar fi el de mare, şi
pe care îl putem manipula doar prin apelarea unei simple variabile asignate.
<?php
$numarul1 = 25;
$numarul2 = 20;
$numarul1 + $numarul2 = $rezultat;
echo($rezultat);
?>
În codul de mai sus am declarat două variabile $numarul1 şi $numarul2, cărora le-am dat
valorile 25, respectiv 20. Mai jos am efectuat operația simplă de adunare, al cărei rezultat este conținut
de variabila $rezultat. Pentru a afişa această valoare ne folosim de funcția echo(). Rezultatul este clar,
pe ecran va fi afişat, numărul
45 (20+25=45).
Pe lângă operația de adunare (+) se mai pot efectua opera următoarele operații matematice: (-)
scădere, (*) înmulțire, (/) împărțire, (%) modul.
Tipurile de date în PHP sunt următoarele:
• array-uri;
• numere de tip float sau double;
• integer;
• object;
• string
Aceste noțiuni ar trebui să vă fie cunoscute de la programarea în C++. În continuare vom discuta
despre tipurile string şi integer.
Un string este format dintr-o plajă de caractere. Acesta poate să fie un cuvânt, o linie, sau poate un
întreg articol. Un integer este un număr întreg care ia valori între (-32768 şi 32767).
Pentru a determina ce tip de dată este o anumită variabila, putem folosi funcția
gettype(). Iată un exemplu:
<?php
$variabila_mea=”Salut, sunt o variabila”;
$tip=gettype($variabila_mea);
echo(”Aceasta este o variabila de tip $tip”);
?>
Mai sus am creat o variabilă numită $variabila_mea căreia i-am dat valoarea
”Salut, sunt o variabila”. Apoi prin funcția gettype() am chemat această variabilă pentru a afla ce fel
de tip este ea. Mai jos am utilizat echo() pentru a afişa tipul variabilei. Pe ecran se va afişa, ’Aceasta
variabila este de tip string’.
Faceți un test si pentru $variabila_mea=6
Cu alte cuvinte, mai sus am creat o variabila cu numele $salutare şi i-am dat valoarea ’lume’. Ne
putem juca cu variabile dinamice la infinit, dar atunci când s-a ajuns la un nivel mare deja se
crează confuzii iar dacă cineva ar dori să citească, pentru a îmbunătăți, codul scris de tine, atunci nu ar
mai înțelege nimic.
Există o sintaxă specială care se foloseşte pentru variabilele complexe, şi anume, încadrarea între
acolade {}:
Atunci când folosim array-uri, o sintaxă ca $$variabila[1] este incorectă pentru că PHP nu ar ştii
cărui nivel să aplice indexul, de aceea se foloseşte expresia:
{$variabila[1]} sau ${$variabila}[1].
Codul de mai sus ilustrează foarte bine colaborarea dintre PHP şi HTML. Codul PHP poate fi
asimilat cu uşurință de tagurile HTML atât timp cât el se află între delimitările <?php respectiv ?>.
De asemenea se pot introduce mai multe declarații între tagurile html, în diferite moduri:
<html> ......... <body>
<?php
echo (”Salut”);
echo (”Ce mai faci?”);
?>
</body> ......... </html>
sau
Exemplele de mai sus sunt concludente, însă trebuie specificat că folosirea fişierelor de tip .inc nu
este recunoscuta de Apache şi nu este parsata ca php, aşa că informații senzitive se pot vedea prin
intermediul browserului, de aceea trebuie să apelam la setările httpd.conf şi să adăugăm următoarele
linii:
<Files ~ "\.inc$"> Order allow,deny Deny from all
</Files>
6.2 Introducere
În continuare se prezintă o modalitate de cum se poate construi un site cu ajutorul
limbajului PHP. Exemplul prezentat nu este un standard, este doar o modalitate de a vedea cum se poate
construi un site şi cum se preiau sau trimite variabilele prin intermediul site-ului. Puteți, pe baza acestui
exemplu, să vă construiți propriul site, în forma preferată de dvs. şi adaptând modelul acesta la
necesitățile voastre. În exemplul prezentat, s-a preferat existența unei singure pagini, anume index.php,
în care să fie incluse conținutul şi meniul, în funcție de ce link accesează vizitatorul.
Puteți vedea acest model într-un fel modular, fiecare script fiind de fapt un modul care
execută anumite operații specifice. Astfel, în pagina index.php se includ mai multe module
(scripturi) care luate separat, fiecare fac anumite lucruri, dar puse împreună, formează pagina de web
generată dinamic.
Partea de sus a paginii (head)
După cum se poate vedea mai sus, am despărțit fiecare parte a unei pagini în bucăți, fiecare bucată
este colorată diferit pentru o mai bună vizualizare. Puteți introduce în fiecare bucată câte un script php
care să genereze respectiva bucată dinamic. Astfel, în cazul unei modificări, va fi mult mai uşor să
modificați doar scriptul care se ocupă de o anumită parte a paginii, pe când dacă tot site-ul ar fi fost
făcut static în HTML, la un site cu 100÷200 de pagini chiar şi cea mai mică modificare ar fi însemnat un
chin.
{
die('<br>Eroare: Nu se gaseste fisierul head.php');
}
// se include modulul de body
if (file_exists("body.php"))
{
include_once("body.php");
}
else
{
die('<br>Eroare: Nu se gaseste fisierul body.php');
}
// se inchid tagurile html
echo '</body>
</html>';
?>
6.3.2 head
head.php - în acest fişier se afişează codul html pentru începutul paginii, şi dacă
există, se încarcă şi fişierele cu cod CSS şi JavaScript folosite în pagină.
<?php
/***************************
modulul head.php
creat de Birkoff pentru www.tutoriale.far-php.ro
Data: 16-07-2006
Versiune modul: 1.0
**************************/
// se trimite la browser codul html
echo '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-
1" />';
{
$titlu = 'Pagina principala';
}
switch ($titlu)
{
case 'a':
$titlu = 'Pagina A';
break;
case 'b':
$titlu = 'Pagina B';
break;
default:
$titlu = 'Alte pagini';
}
css.php - acest fişier conține codul CSS folosit pentru formatarea şi afişarea paginii HTML.
<?php
/***************************
modulul css.php
creat de Birkoff pentru www.tutoriale.far-php.ro
Data: 16-07-2006
Versiune modul: 1.0
**************************/
// se seteaza variabila care contine codul css
$valoare_css = '<style type="text/css">
<!-- body,td,th {
font-family: Arial, Helvetica, sans-serif;
font-size: 12px;
color: #000000;
}
body {
background-color: #FFFFFF;
margin-left: 0px;
margin-top: 0px; margin-right: 0px; margin-bottom: 0px;
}
.style1 {
font-size: 24px;
font-weight: bold;
}
-->
</style>';
// se trimite la browser codul css echo $valoare_css;
?>
js.php - dacă se foloseşte cod JavaScript în pagini, este de preferat să se salveze codul în acest
fişier, pentru a putea avea acces rapid la el în cazul în care doriți să faceți modificări.
6.3.3 body
body.php - conține codul HTML existent între tagurile <body> şi </body> Dacă există, se încarcă
şi fişierele care conțin meniul orizontal şi/sau vertical, precum şi fişierul care afişează conținutul
paginii cerute. Pe lângă acestea, dacă doriți să băgați alte scripturi în pagini, se include şi fişierul
module.php
<?php
</table></td>
</tr>
<tr>
<td valign="top">';
{
die('EROARE: Nu exista fisierul continut.php');
}
// se continua prelucrarea paginii
echo '</td>
<td width="20%" valign="top">';
6.3.5 Conținut
continut.php - afişează conținutul paginilor, în funcție de linkul cerut. Dacă se cer pagini externe,
se verifică dacă acea pagină există şi se încarcă pentru afişare.
<?php
/***************************
modulul continut.php
creat de Birkoff pentru www.tutoriale.far-php.ro
Data: 16-07-2006
Versiune modul: 1.0
**************************/
// se verifica daca se cere o pagina
if (isset($_GET['pagina']))
{
// daca se cere o pagina se verifica daca variabila nu este goala if(!empty($_GET['pagina']))
{
$pagina = $_GET['pagina'];
}
// daca este goala se ia pagina principala else
{
$pagina = 'index';
}
}
/* daca nu se cere nici o pagina înseamnă ca trebuie afişata pagina
principala */
else
{
$pagina = 'index';
}
break;
case 'b':
$afisare = '<br>A fost ceruta pagina B. <br>Aceasta este
pagina B.';
break;
case 'contact':
if (file_exists("contact.php"))
{
include_once("contact.php");
$afisare = '';
}
else
contact.php';
break;
{
$afisare = '<br>Eroare: Nu se gaseste fisierul
}
case 'index':
$afisare = 'Aceasta este pagina principala';
break;
default:
$afisare = '<br>Eroare: A fost ceruta pagina cu numele
<b>'.$pagina.'</b> dar nu exista pe server.';
}
contact.php - poate fi o pagina externă, cu conținut HTML sau PHP, precum şi formulare de
contact.
<p>Aceasta este pagina de contact. Este o pagină; separată; şi se găseşte în fişierul
<em>contact.php</em></p>
<p>Se pot folosii fişiere separate în php pentru diferite pagini, precum şi formulare şi alte scripturi.
</p>
6.3.6 Module
module.php - este un fişier care atunci când este accesat, verifică ce fişiere există în
directorul MODULE şi le încarcă pe fiecare.
<?php
/***************************
modulul module.php
creat de Birkoff pentru www.tutoriale.far-php.ro
Data: 16-07-2006
Versiune modul: 1.0
**************************/
// se verifica ce module sunt in directorul de module
if (!$director = opendir("module"))
{
echo("Eroare: Nu exista directorul cu module");
}
else
{
$citire = readdir($director);
while ($citire)
{
if ($citire != '.')
{
if ($citire != '..')
{
$fisier[] = $citire;
}
}
$citire = readdir($director);
}
closedir($director);
}
// se incarca fiecare modul existent in director
foreach ($fisier as $valoare)
{
if (file_exists("module/".$valoare))
{
include_once("module/".$valoare);
}
else
}
?>
{
echo "<br>module/".$valoare;
}
<?php
/***************************
modulul module.php
creat de Birkoff pentru www.tutoriale.far-php.ro
Data: 16-07-2006
Versiune modul: 1.0
**************************/
// se verifica ce module sunt in directorul de module
if (!$director = opendir("module"))
{
echo("Eroare: Nu exista directorul cu module");
}
else
{
$citire = readdir($director);
while ($citire)
{
if ($citire != '.')
{
if ($citire != '..')
{
$fisier[] = $citire;
}
}
$citire = readdir($director);
}
closedir($director);
}
// se incarca fiecare modul existent in director
foreach ($fisier as $valoare)
{
if (file_exists("module/".$valoare))
{
include_once("module/".$valoare);
}
else
}
?>
{
echo "<br>module/".$valoare;
}
{
background-color:#fffaf0;
}
li,p,th,td
{
font-size: 80%;
}
table {border-style:outset}
li {list-style: square;)
7.3 Crearea chestionarelor în php
De multe ori este nevoie pe un stie de un chestionar prin care vizitatorii să poată vota sau prin care
să îşi poată exprima punctul de vedere. De aceea în continuare se prezintă un chestionar pe care cred că
şi voi vreți să îl aveți pe paginile voastre.
El este compus din 2 fişiere: chestionarul în format html şi modulul de prelucrare şi trimitere a
datelor din chestionar (un script php). Puteți să adăugați sau să ştergeți întrebări, să puneți alte butoane
(specifice html - text field, check box, radio button, etc) şi să îl modificați aşa cum doriți.
Explicații:
În modulul chestionar.php aveți grijă să introduceți datele şi check box-urile doar în form altfel pot
apărea probleme la afişarea sau trimiterea datelor. Tot în chestionar, dacă mai adăugați întrebări trebuie
să specificați numele butonului ca fiind
8-9-10 sau alt nume (vezi <input name = "1" type = "checkbox" id = "1" value="da">). În
situația de față eu le-am numerotat şi la valoarea am pus "da" (adică dacă e bifată apare ca "da"). Dacă
aveți şi un text field (cum este la <textarea name="8" id="8"> scrie aici ce vrei să găseşti sau poți să
întrebi pe forum. </textarea>) trebuie să îi puneți şi lui un nume (în cazul de față numele este "8").
După completarea şi trimiterea chestionarului către server, se accesează fişierul prelucrare_chest.php
care verifică datele introduse şi dacă sunt corecte le afişează şi le trimite pe e-mail la adresa specificată.
Puteți să introduceți datele din chestionar şi într-o bază de date sau într-un fişier text, adăugând doar
câteva linii de cod.
Mod de lucru: Fiecare student va crea un director propriu (de ex: chestionar_inițiale-student) în
C:\Program Files\EasyPHP 2.0b1\www, în care se vor scrie cele trei fişiere listate mai jos: index.php,
chestionar.php şi prelucrare_chestionar.php.
<html>
index.php
<head>
<title>Formular – Chestionar</title>
</head>
<body>
<table width="100%" border="1">
<tr>
<td width="30%" valign="top">
<?php
include ("chestionar.php");
?>
</td>
<td><div align="center"> Completați chestionarul alăturat, şi după
verificare, apăsați TRIMITE. Dacă nu sunțeți siguri, apăsați ANULARE
</div></td>
</tr>
</table>
</body>
</html>
chestionar.html
<style type="text/css">
<!--
.style1 {
}
-->
color: #FFFFFF;
font-weight: bold;
</style>
<!-
Chestionar varianta 1
Creat la data de 08-01-2004
Copyright Alex - http://www.tutoriale.far-php.ro
->
<table width="100%" border="1" cellpadding="0" cellspacing="0"
bordercolor="#000099">
<tr>
<td valign="top" bgcolor="#9999cc"><div align="center"
class="style1 style1">Ce doriti sa gasiti<br>
in acest site? </div></td>
</tr>
<tr>
<td valign="top"><form action="prelucrare_chest.php"
method="post" name="chestionar" id="chestionar">
<input name="1" type="checkbox" id="1" value="da"> Scripturi php freeware.<br>
<input name="2" type="checkbox" id="2" value="da"> Mai multe articole despre php.<br>
<input name="3" type="checkbox" id="3" value="da"> Mai multe detalii despre comenzi.<br>
<input name="4" type="checkbox" id="4" value="da">
Mai multe despre MySQL.<br>
<input name="5" type="checkbox" id="5" value="da"> Mai multe despre baze de date.<br>
<input name="6" type="checkbox" id="6" value="da"> Mai multe despre baze de date in format
txt.<br>
<input name="7" type="checkbox" id="7" value="da"> Altceva - si anume:<br>
<textarea name="8" id="8">scrie aici ce vrei sa gasesti sau poti sa intrebi pe forum.</textarea>
<br><br>
<div align="left"><input type="reset" value="sterge"> <input type="submit" value="expedieaza">
</div>
</form></td>
</tr>
</table>
<html>
<head>
prelucrare_chestionar.php
<title>Untitled Document</title>
/* Modul Prelucrare chestionar varianta 1 Creat la data de 08-01-2004
Copyright Alex - http://www.tutoriale.far-php.ro */
</head>
<body>
<?php
// echo $servdate;
$g - Altceva - si anume:<br>\n
$h - Comentarii.<br><br>\n\n
Mesajul a fost trimis la data de $servdate <br>\n Browser: $browser , host: $ip_name , ip: $ip
<br>\n ";
echo "<br><br>";
echo "Va multumesc pentru informatii";
?>
8 Formular de prelucrare a datelor din baza de date MySQL
8.1 Obiective
• Realizarea unei baze de date MySQL;
• Realizarea unui formular în php de introducere, prelucrare şi vizualizare a datelor din baza de
date mai sus creată.
value="">
Acum că am realizat formularul, trebuie să îi prelucrăm datele prin $_POST şi să verificăm
conținutul acestora, apoi să îl introducem în baza de date.
Se realizează un fişier cu numele validare.php şi introducem codul de mai jos, apoi testăm în
browser, se introduc date în formular şi se apasă butonul “Trimite”.
<?php
require_once('config.php');
$_SESSION['nume'] = $_POST['nume'];
$_SESSION['prenume'] = $_POST['prenume'];
$_SESSION['varsta'] = $_POST['varsta'];
$_SESSION['e-mail'] = $_POST['e-mail'];
$_SESSION['observatii'] = $_POST['observatii'];
echo 'Nume: '.$_SESSION['nume'].'<br> Prenume: '.$_SESSION['prenume'].'<br> Varsta:
'.$_SESSION['varsta'].'<br> Email: '.$_SESSION['e-mail'].'<br>
Comentariu: '.$_SESSION['observatii'].'<br><br>
Daca datele sunt corecte, apasati <a href="prelucrare.php">aici</a>
pentru a le valida
<br> si a le introduce in baza de date.';
?>
Ca noutate, observați că s-a folosit $_SESSION. Scopul unei sesiuni este de a reține o informație
care să se mențină de la o pagină la alta.
Pentru a seta o sesiune şi a o menține de la o pagină la alta, este nevoie de a o declara cu ajutorul
unei funcții, şi anume: session_start(); Această funcție se pune la început de PAGINA, prima linie din
script.
Pentru a distruge sesiunile, ne putem folosi de o funcție care va şterge toate sesiunile existente, şi
anume session_destory(); sau de declararea sesiunilor ca fiind nule: $_SESSION[‘nume_sesiune’] =
‘’;
Întorcându-ne la formularul nostru de înregistrare, ați văzut că valoarea câmpurilor este o sesiune.
Vom seta câte o sesiune pentru fiecare câmp, astfel încât să păstrăm datele scrise de el, iar dacă
utilizatorul completează greşit câmpurile şi este redirecționat la pagina cu formularul, datele introduse
de el vor apărea din nou în formular, astfel încât el va putea să corecteze doar câmpurile în care a greşit.
<?php require_once('config.php');
if(($_SESSION['nume'] == "") || ($_SESSION['prenume'] == "") || ($_SESSION['varsta'] ==
"") || (!is_numeric($_SESSION['varsta'])) || ($_SESSION['e-mail'] == "") ||
($_SESSION['observatii'] == "") || (strlen($_SESSION[' observatii ']) >
255) )
{
echo 'Nu ai introdus date in formular sau cele introduse nu sunt corecte. <br>
Apasa <a href="index.php">aici</a> pentru a te intoarce la pagina anterioara.';
} else {
echo 'Va multumim. <br>
Datele au fost introduse cu succes in baza de date. <br>
Pentru vizualizare apasati <a href="vizualizare.php">aici</a>.';
$cerereSQL = "INSERT INTO `intrari` (`nume`, `prenume`, `varsta`, `e-
mail`,`observatii`)
VALUES ('".$_SESSION['nume']."', '".$_SESSION['prenume']."',
'".$_SESSION['varsta']."', '".$_SESSION['e-mail']."',
'".$_SESSION['observatii']."');";
mysql_query($cerereSQL);
$_SESSION['nume'] = '';
$_SESSION['prenume'] = '';
$_SESSION['varsta'] = '';
$_SESSION['e-mail'] = '';
$_SESSION['observatii'] = '';
}
?>
După ce ați testat în browser şi ați trecut toți paşii din formular, accesați phpMyAdmin şi vizualizați
datele introduse în baza de date.
În continuare se va realiza un script prin care afişăm în browser datele introduse în baza de date.
Astfel, se realizează un fişier vizualizare.php în care se introduce scriptul de mai jos:
<?php
require_once('config.php');
$cerereSQL = 'SELECT * FROM intrari';
$rezultat = mysql_query($cerereSQL); while($rand = mysql_fetch_array($rezultat)) { echo
'<b>Nume:</b> '.$rand['nume'].' <br>
<b>Prenume:</b> '.$rand['prenume'].'
<br>
<b>Varsta:</b> '.$rand['varsta'].' ani
<br>
<b>Email:</b> '.$rand['e-mail'].' <br>
<b>Observatii:</b> '.$rand['observatii'].'
<br><br>';
}
?>
Acest fişier va fi accesat astfel:
http://localhost/formular/vizualizare.php
Se vor introduce mai multe înregistrări
în baza de date, apelând de fiecare dată
http://localhost/formular/index.php, şi
apoi se accesează http://localhost/formular/vizualizare.php pentru a vedea rezultatele
<?php
require_once('config.php');
if(!isset($_GET['actiune']))
$_GET['actiune'] = '';
if(!isset($_SESSION['user']))
$_SESSION['user'] = '';
if(!isset($_SESSION['parola1'])) $_SESSION['parola1'] = '';
if(!isset($_SESSION['parola2'])) $_SESSION['parola2'] = ''; if(!isset($_SESSION['nume']))
$_SESSION['nume'] = ''; if(!isset($_SESSION['prenume'])) $_SESSION['prenume'] = '';
if(!isset($_SESSION['varsta'])) $_SESSION['varsta'] = ''; if(!isset($_SESSION['localitate']))
$_SESSION['localitate'] = '';
switch($_GET['actiune'])
{
case '':
echo '<table width="309" border="0" cellpadding="0" cellspacing="0">
<form name="formular" action="inregistrare.php?actiune=validare" method="post">
<tr>
<td height="36" colspan="4" valign="top"><h1>Formular inregistrare
</h1></td>
</tr>
<tr>
<td width="80" height="19" valign="top"> </td>
<td width="15" rowspan="5" valign="top"></td>
<td width="144" valign="top"> </td>
<td width="70" valign="top"> </td>
</tr>
<tr>
<td height="22" align="right" valign="top">Utilizator:</td>
<td colspan="2" valign="top">
<input type="text" name="user" value="'.$_SESSION['user'].'">
</td>
</tr>
<tr>
<td height="7"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22" align="right" valign="top">Parola:</td>
<td colspan="2" valign="top"><input type="password" name="parola1"
value="'.$_SESSION['parola1'].'"></td>
</tr>
<tr>
<td height="7"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="38" align="right" valign="top">Reintroduceti<br> Parola:</td>
<td> </td>
<td align="middle" valign="middle"><input type="password" name="parola2"
value="'.$_SESSION['parola2'].'"></td>
<td> </td>
</tr>
<tr>
<td height="7"></td>
<td valign="top"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="19" align="right">Nume:</td>
<td> </td>
<td colspan="2" valign="top"><input type="text" name="nume"
value="'.$_SESSION['nume'].'"></td>
</tr>
<tr>
<td height="7"></td>
<td valign="top"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22" align="right">Prenume:</td>
<td valign="top"></td>
<td colspan="2" valign="top"><input type="text" name="prenume"
value="'.$_SESSION['prenume'].'"></td>
</tr>
<tr>
<td height="8"></td>
<td valign="top"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22" align="right" valign="top">Varsta:</td>
<td valign="top"></td>
<td colspan="2" valign="top"><input type="text" size="3" maxLength="3" name="varsta"
value="'.$_SESSION['varsta'].'">
ani</td>
</tr>
<tr>
<td height="15"></td>
<td valign="top"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22" align="right" valign="top">Localitate:</td>
<td valign="top"></td>
<td colspan="2" valign="top"><input type="text" name="localitate"
value="'.$_SESSION['localitate'].'"></td>
</tr>
<tr>
<td height="19"> </td>
<td valign="top"></td>
<td> </td>
<td> </td>
</tr>
<tr>
<td height="24"> </td>
<td valign="top"></td>
<td colspan="2" valign="top"><input name="Trimite" type="submit" id="Trimite"
value="Trimite">
<input name="Reseteaza" type="reset" id="Reseteaza" value="Reseteaza"> </td>
</tr>
<tr>
<td height="24"> </td>
<td valign="top"></td>
<td> </td>
<td> </td>
</tr>
</form>
</table>';
break;
case 'validare':
$_SESSION['user'] = $_POST['user'];
$_SESSION['parola1'] = $_POST['parola1'];
$_SESSION['parola2'] = $_POST['parola2'];
$_SESSION['nume'] = $_POST['nume'];
$_SESSION['prenume'] = $_POST['prenume'];
$_SESSION['varsta'] = $_POST['varsta'];
$_SESSION['localitate'] = $_POST['localitate'];
Observăm construcția if, care are ca şi condiție negativă (!) o funcție isset (se foloseşte numai
pentru a verifica dacă o variabilă există, returnează adevărat atunci când o găseşte şi fals atunci când nu
o găseşte). Prin urmare, cu această construcție if.. verificăm dacă $_GET[‘actiune’] este setat, dacă nu, o
setăm noi.
În continuare, uitându-ne peste script, observăm construcția switch. Am folosit aceasta pentru a
implementa mai multe acțiuni într-o singură pagină.
După cum vedem, primul case este null, ceea ce înseamnă că se execută scriptul pentru pagina
curenta .php.
Avem un formular în care sunt 7 câmpuri: utilizator, parola, reintroducerea parolei, nume, prenume,
vârsta şi localitate.
Daca va uitați atenți, o să observați că în valoarea câmpurilor avem declarate nişte sesiuni:
<input type="text" name="user" value="'.$_SESSION['user'].'">
Vom seta câte o sesiune pentru fiecare câmp, astfel încât să păstrăm datele scrise de el, iar dacă
utilizatorul completează greşit câmpurile şi este redirecționat la pagina cu formularul, datele introduse
de el vor apărea din nou în formular, astfel încât el va putea să corecteze doar câmpurile în care a greşit.
Ca acțiune a formularului este setat inregistrare.php?actiune=validare
Acest case îl găsiți la linia 119.
După cum vedeți, avem declarate sesiunile de care ne vom folosi în valoarea câmpurilor din
formular, şi anume:
$_SESSION['user'] = $_POST['user'];
Valoarea acestei sesiuni user, este valoarea POST cu numele user, şi tot aşa.
În următoarele linii de cod avem structura if şi else cu condițiile necesare, iar dacă condițiile nu
sunt adevărate, ne rezultă eroarea, dacă sunt acceptate, rezultă mesajul de mulțumire şi inserarea în
baza de date, apoi setarea sesiunilor folosite ca fiind nule.
După acest case cu numele 'validare', vom închide structura switch, respectiv scriptul php.
Observăm ca la introducerea în baza de date am complicat procedeul. Motivul este pentru a ne
proteja de procedeul numit SQL INJECTION.
Aceasta operațiune se foloseşte pentru a introduce vulnerabilități în comanda care trimite
datele la baza de date (comanda query) şi cu ajutorul acestora, se poate păcăli cu uşurință baza de
date.
Pentru a proteja datele care se introduc prin formular, ne-am folosit de o funcție,
şi anume: addentities();
număr.
<?php
În exemplul următor se calculează cu ajutorul unei funcții PHP, pătratul unui
function patrat($n) {
return $n * $n;
}
echo '4^2 = <b> '.patrat(4).' </b>';
?>
Observați că am atribuit valoarea 4 funcției noastre cu numele patrat, iar rezultatul apelării acesteia
este calculul din interiorul funcției: return $n * $n; adică returnează 4 x 4, care ne dă 16.
9.4 Scriptul de autentificare
La fel ca si la scriptul de înregistrare, observăm setarea $_GET[‘actiune’] ca fiind nulă, apoi
deschiderea structurii switch.
În case null avem formularul de autentificare ce cuprinde 2 câmpuri: utilizator și
parolă.
În case validare, avem sesiunea user cu valoarea postului user urmată de construcția if şi else cu
condițiile aferente.
Fişierul autentificare.php conține:
<?php
require_once('config.php');
switch($_GET['actiune'])
{
case '':
echo '<form action="autentificare.php?actiune=validare" method="post"> Utilizator: <input
type="text" name="user" value=""><br>
Parola: <input type="password" name="parola" value=""><br>
<input type="submit" name="Login" value="Login">
</form>';
break;
case 'validare':
$_SESSION['user'] = $_POST['user'];
În aceasta construcție else, avem selectarea din baza de date unde câmpul utilizator este egal cu
POST user, iar parola este egală cu criptarea parolei pentru POST parola.
Dacă numărul de rânduri rezultate este 1, atunci setăm o sesiune cu numele logat şi valoarea Da,
apoi redirecționăm - cu ajutorul etichetei HTML meta refresh – către pagina utilizatorului.
Dacă numărul de rânduri rezultate nu este 1, atunci afişăm un mesaj de eroare.
În cazul în care rezultatele au fost găsite în baza de date, autentificarea s-a efectuat cu succes şi vom
fi redirecționați în pagina.php
9.5 Scriptul pagina utilizator – pagina.php
<?php
require_once('config.php');
if($_SESSION['logat'] != 'Da')
{
echo 'Pentru a accesa aceasta pagina, trebuie sa va autentificati.
<br>
Pentru a va autentifica, apasati <a href="autentificare.php">
aici</a><br>
Pentru a va inregistra, apasati <a href="inregistrare.php">
aici</a>';
}
else
{
switch($_GET['actiune'])
{
case '':
echo '<h1>Profilul dumneavoastra</h1>
Apasati <a href="profil.php?actiune=date_personale">aici</a>
pentru a schimba datele personale.<br>
Apasati <a href="profil.php?actiune=parola">aici</a> pentru a schimba parola
dumneavoastra.<br><br>
<a href="pagina.php">Intoarceti`va la pagina
principala.</a>';
break;
case 'date_personale':
$cerereSQL = 'SELECT * FROM `utilizatori` WHERE
utilizator="'.$_SESSION['u ser'].'"';
$rezultat =
mysql_query($cerereSQL);
while($rand =
mysql_fetch_array($rezulta t))
{
echo '<table width="347"
border="0" cellpadding="0" cellspacing="0">
<form name="formular" action="profil.php?actiune=validare" method="post">
<tr>
<td height="50" colspan="4" valign="top"><h1>Modifica date
personale</h1></td>
</tr>
<tr>
<td width="80" height="19"> </td>
<td width="15"> </td>
<td width="214"> </td>
<td width="38"> </td>
</tr>
<tr>
<td height="10"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22" align="right" valign="top">Nume:</td>
<td valign="top"></td>
<td valign="top"><input type="text" name="nume" value="'.$rand['nume'].'"></td>
<td></td>
</tr>
<tr>
<td height="9"></td>
<td valign="top"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22" align="right" valign="top">Prenume:</td>
<td valign="top"></td>
<td valign="top"><input type="text" name="prenume" value="'.$rand['prenume'].'"></td>
<td></td>
</tr>
<tr>
<td height="9"></td>
<td valign="top"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22" align="right" valign="top">Varsta:</td>
<td valign="top"></td>
<td valign="top"><input type="text" size="3" maxLength="3"
name="varsta" value="'.$rand['varsta'].'">
ani</td>
<td></td>
</tr>
<tr>
<td height="8"></td>
<td valign="top"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="22" align="right" valign="top">Localitate:</td>
<td valign="top"></td>
<td valign="top"><input type="text" name="localitate" value="'.$rand['localitate'].'"></td>
<td></td>
</tr>
<tr>
<td height="14"></td>
<td valign="top"></td>
<td></td>
<td></td>
</tr>
<tr>
<td height="24"></td>
<td valign="top"></td>
<td valign="top"><input name="Trimite" type="submit" id="Trimite" value="Modifica date">
<input name="Reseteaza" type="reset" id="Reseteaza" value="Reseteaza"> </td>
<td></td>
</tr>
<tr>
<td height="19"></td>
<td valign="top"></td>
<td> </td>
<td></td>
</tr>
</form>
</table>';
}
break;
case 'parola':
case 'validare':
if(!isset($_POST['parola1'])) $_SESSION['parola1'] = '';
else $_SESSION['parola1'] = $_POST['parola1'];
$_SESSION['nume'] = '';
$_SESSION['prenume'] = '';
$_SESSION['varsta'] = '';
$_SESSION['localitate'] = '';
}
elseif(($_POST['Trimite'] == 'Modifica parola') && ($_SESSION['parola1'] == '' ||
$_SESSION['parola1'] !=
$_SESSION['parola2']))
{
echo 'Completeaza campurile.<br>
Apasa <a href="profil.php?actiune=parola">aici</a> pentru a te intoarce.';
}
elseif(($_POST['Trimite'] == 'Modifica parola') && ($_SESSION['parola1'] != '' ||
$_SESSION['parola1'] ==
$_SESSION['parola2']))
{
echo 'Parola a fost modificata. <br>
Apasa <a href="pagina.php">aici</a> pentru a te intoarce la pagina principala.';
$cerereSQL = "UPDATE `utilizatori` SET parola='".md5($_SESSION['parola1'])."' WHERE
utilizator='".$_SESSION['user']."'"; mysql_query($cerereSQL);
$_SESSION['parola1'] = '';
$_SESSION['parola2'] = '';
}
break;
}
}
?>
case.
Şi în acest script, la fel ca şi în celelalte, ne-am folosit de construcția switch şi
În case null, avem legăturile către următoarele case unde vom avea formularele de prelucrare a
datelor existente utilizatorului autentificat.
În case ‘date_personale’: selectăm tot din baza de date unde utilizator este egal cu utilizatorul
autentificat. Dacă conexiunea returnează rezultate, executăm formularul de prelucrare a datelor, iar în
câmpul value al fiecărui input vom seta ca valoare câmpul din baza de date aferent acelui input.
Exemplu:
<input type="text" name="nume" value="'.$rand['nume'].'">
Observați că acest case, precum şi cel de modificare parolă, se foloseşte de aceeaşi acțiune,
respectiv: profil.php?actiune=validare
Da, este posibil deoarece am setat 2 valori diferite pentru cele 2 formulare:
• pentru formularul cu date am setat ca valoare: “Modifica date” iar pentru cel cu parola am
setat “Modifica parola”, apoi, în funcție de ce buton era apăsat, am realizat condițiile if.
<html>
<head>
<title>Formular de contact</title>
</head>
<body>
<form action="trimite.php" method="post">
E-Mail: <input type="text" name="email" value=""> <br> Nume: <input type="text" name="nume"
value=""> <br> Prenume: <input type="text" name="prenume" value=""> <br> Subiect: <input
type="text" name="subiect" value=""> <br>
Mesaj: <textarea name="mesaj" cols="60" rows="6"></textarea>
<br><br>
<input type="submit" name="Trimite" value="Trimite">
<input type="reset" name="Reseteaza" value="Reseteaza">
</form>
</body>
</html>
Se salvează şi se vizualizează în browser accesand http://localhost/contact/index.php.
<?php
Se crează un fişier numele trimite.php în care se introduce codul de mai jos:
if(($_POST['email'] == '') || ($_POST['nume'] == '') || (is_numeric($_POST['nume'])) ||
($_POST['prenume'] == '') || (is_numeric($_POST['prenume'])) || ($_POST['subiect'] == '')
|| ($_POST['mesaj'] == ''))
{
echo 'Completati campurile corect <br>
Apasati <a href="index.php">aici</a> pentru a va intoarce la
pagina principala.';
}
else
{
$catre = 'adresaemail@yahoo.com';
$data_trimitere = date('d-m-Y H:i:s');
$subiect = $_POST['subiect'];
$mesaj = '
<html>
<head>
<title>Formular de Contact</title>
</head>
<body>
<p><tt>Data trimitere: '.$data_trimitere.' </tt></p>
<table>
<tr>
<td><tt> Nume: '.$_POST['nume'].' </tt></td>
</tr>
<tr>
<td><tt> Prenume: '.$_POST['prenume'].' </tt></td>
</tr>
<tr>
<td><tt> E-Mail: <a href="mailto:'.$_POST['email'].'"> '.$_POST ['email'].'</a> </tt></td>
</tr>
<tr>
<td><tt> Mesaj: <br><br> '.$_POST['mesaj'].' </tt></td>
</tr>
</table>
</body>
</html>';
$headere = "MIME-Version: 1.0\r\n";
$headere .= "Content-type: text/html; charset=iso-88591\r\n"; headere .= "From:
".$_POST['nume']." ".$_POST['prenume']."<".$_POST['email'].">\r\n";
mail($catre, $subiect, $mesaj, $headere);
echo 'Mesajul a fost trimis';
}
?>
Modificați adresa de email din variabila $catre ='adresaemail@yahoo.com';
cu email-ul dvs.
Pentru a face acest script să trimita mail, este aveti nevoie de un server SMTP, un server de E-
Mail.
Vă recomand serverul QK care poate fi descărcat de la adresa http://www.qksoft.com/ După ce ați
instalat serverul şi l-ati pornit, ar trebui să vă apară în bara de start de lânga ceas.
Testați scriptul şi verificați email-ul dvs pentru a vedea dacă ați primit mesajul. (În caz că nu apare
în Inbox, uitați-vă în Bulk).
Observați că în scriptul trimite.php ne-am folosit de condițiile if şi else (condiții pe care deja le
ştiam) însă am folosit şi 2 noi functii, şi anume:
date(); şi mail();
Acum, analizând exemplul nostru de trimitere email din scriptul trimite.php, observăm că de fapt
nu este aşa greu precum pare, ci chiar este foarte uşor:
După cum vedeți, am declarat nişte variabile:
$catre = 'adresamail@yahoo.com'; // adresa de email unde primim informațiile
$data_trimitere = date('d-m-Y H:i:s'); // data la care mesajul a fost trimis
$subiect = $_POST['subiect']; // subiectul (pe care l-a completat utilizatorul în form)
Apoi avem variabila $mesaj ce conține ca valoare un cod HTML cu datele trimise prin formular şi
variabila $data_trimitere.
Şi, ca ultimă alcătuire, avem headerele şi funcția mail ce conține variabilele
setate mai sus.
mail($catre, $subiect, $mesaj, $headere);
11 Sistem de căutare în baza de date
11.1 Obiective
• Realizarea unei baze de date mysql cu următoarele câmpuri: ID, titlu, adresa, descriere,
vizite; anume:
Tabela bazei de date trebuie să aibă cinci câmpuri (care sunt obligatorii), şi
• id - int(11), not-null, auto_increment ;
• titlu – varchar(255), not-null, cu minim 2 caractere, cel mult 255;
• adresa – varchar(255), not-null, cu minim 2 caractere, cel mult 255;
• descriere – varchar(255), not-null, cu minim 2 caractere, cel mult 255;;
• vizite – bigint(10), not-null, default = 0.
function addentities($data){
if(trim($data) != ''){
$data = htmlentities($data, ENT_QUOTES);
return str_replace('\\', '\', $data);
} else return $data;
} // End addentities() --------------
?>
În continuare se realizează fişierul index.php în care se introduce codul de mai jos, şi se
vizualizează în browser.
<?php
echo '<a href="adauga.php">Adauga site</a> | <a href="cauta.php">Cauta site</a>';
?>
case 'verifica':
$_SESSION['titlu'] = $_POST['titlu'];
$_SESSION['adresa'] = $_POST['adresa'];
$_SESSION['descriere'] = $_POST['descriere'];
$_SESSION['titlu'] = '';
$_SESSION['adresa'] = '';
$_SESSION['descriere'] = '';
<?php
require_once 'config.php';
case '':
echo '<form name="cauta" action="cauta.php?pag=cauta" method="post"> Titlu: <input type="text"
name="cauta" value=""> <input
type="submit" name="Cauta" value="Cauta"> <br>
<a href="cauta.php?pag=cautare-avansata">Cautare avansata</a>
</form>';
break;
case 'cauta':
if($_POST['cauta'] == '') {
echo 'Introdu un cuvant pentru a cauta in baza de date. <br> Apasa <a href="cauta.php">aici</a>
pentru a te intoarce.';
} elseif(strlen($_POST['cauta']) < 3) {
echo 'Cuvantul trebuie sa contina cel putin 3 caractere. <br>
Apasa <a href="cauta.php">aici</a> pentru a te intoarce.';
} else {
$cerereSQL = 'SELECT * FROM `intrari` WHERE `titlu` LIKE
"%'.addentities($_POST['cauta']).'%"';
$rezultat = mysql_query($cerereSQL);
if(mysql_num_rows($rezultat) > 0) {
while($rand = mysql_fetch_array($rezultat)) {
echo '<a href="'.$rand['adresa'].'">'.$rand['titlu'].'</a> -
'.$rand['adresa'].'<br> <i>'.$rand['descriere'].'</i> <br><br>';
}
} else {
echo 'Nu au fost gasite rezultate pentru cautarea: <font
color="red"><b><i>'.addentities($_POST['cauta']).'</i></b></font> <br>
Apasati <a href="cauta.php">aici</a> pentru a va intoarce';
}
break;
case 'cautare-avansata':
case 'cautare-avansata2':
if($_POST['cauta'] == '') {
echo 'Introdu un cuvant pentru a cauta in baza de date. <br> Apasa <a href="cauta.php">aici</a>
pentru a te intoarce.';
} elseif(strlen($_POST['cauta']) < 3) {
echo 'Cuvantul trebuie sa contina cel putin 3 caractere. <br> Apasa <a href="cauta.php">aici</a>
pentru a te intoarce.';
} else {
$rezultat = mysql_query($cerereSQL);
if(mysql_num_rows($rezultat) > 0) {
<font
echo 'Cautati in: <font color="red">'.$in.'</font> dupa:
color="red"><b>'.addentities($_POST['cauta']).'</b></font><br><br>';
while($rand = mysql_fetch_array($rezultat)) {
echo '<a href="'.$rand['adresa'].'">'.$rand['titlu'].'</a> -
'.$rand['adresa'].'<br> <i>'.$rand['descriere'].'</i> <br><br>';
}
} else {
echo 'Nu au fost gasite rezultate pentru cautarea: <font
color="red"><b><i>'.addentities($_POST['cauta']).'</i></b></font> in
<font color="red">'.$in.'</font><br>
Apasati <a href="cauta.php?pag=cautare-
avansata">aici</a> pentru a va intoarce';
}
}
break;
}
?>
comandă SQL:
Această comandă SQL, selectează tot din baza de date unde câmpul titlul conține cuvântul trimis
prin formular $_POST['cauta'].
Aceasta este o căutare simplă în baza de date, după titlu, însă se poate realiza şi o căutare mai
avansată după titlu, adresă sau descirere.
Analizând case-ul 'cautare avansata':, observă, scriptul pentru căutare avansată:
if(($_POST['in1'] != 'titlu') && ($_POST['in2'] != 'adresa') &&
($_POST['in3'] != 'descriere'))
{
$cerereSQL = 'SELECT * FROM `intrari` WHERE `titlu` LIKE
"%'.addentities($_POST['cauta']).'%"';
$in = '';
}
Această parte de cod se interpretează astfel:
Dacă valoarea post in1 nu este egală cu titlu, şi valoarea post in2 nu este egală
cu adresa, şi valoarea post in3 nu este egală cu descriere:
{
creează o variabilă cerereSQL care să caute doar în titlu după textul dat, creează o variabilă cu
numele "in" cu valoare nulă,
}
adică, dacă nu se selectează nici o opțiune, căutarea se va efectua ca cea anterioară, adică doar
după câmpul titlu.
Dacă valoarea post in1 este egală cu titlu (adică dacă opțiunea titlu a fost selectată), şi dacă valorile
post-ului 2 şi 3 nu sunt selectate
{
creează o variabila cerereSQL care să caute în titlu după textul dat creează o variabilă cu numele
“in” cu valoarea titlu
}
…………
….
elseif(($_POST['in1'] == 'titlu') && ($_POST['in2'] == 'adresa') && ($_POST['in3'] != 'descriere'))
{
$cerereSQL = 'SELECT * FROM `intrari` WHERE `titlu` LIKE
"%'.addentities($_POST['cauta']).'%" AND `adresa` LIKE "%'.addentities($_POST['cauta']).'%"';
$in = 'titlu, adresa';
}
Dacă valoarea post in1 este egală cu titlu (adică dacă opțiunea titlu a fost selectată), şi dacă valoarea
post-ului in2 este egală cu adresa (adică dacă şi opțiunea adresa a fost bifată), şi dacă valoarea post-ului
in3 nu este descriere
{
creează o variabilă cerereSQL care să caute în titlu şi adresa după textul dat creează o variabilă cu
numele “in” cu valoarea titlu, adresa
}
…………
….
Efectuați un test în browser, în funcție de adresele introduse de dumneavoastră
în formular, bifați opțiunile pe rând şi testați.
12 Sistem de blocare acces al unui utilizator aspra site-ului, sistem de
contorizare a click-urilor pe un link
12.1 Obiective
• Realizarea a două pagini în php, index şi admin cu următoarea structură:
• admin.php:
o utilizator sau adresa IP (tip text, not null, între 2 şi 255 caractere) ;
o motiv (tip text, not null, între 2 şi 255 caractere);
• realizarea unei pagini php în care să se contorizeze clck-urile efectuate pe un link din
pagină.
function addentities($data){
if(trim($data) != ''){
$data = htmlentities($data, ENT_QUOTES);
return str_replace('\\', '\', $data);
} else return $data;
} // End addentities() --------------
?>
$_SESSION['utilizator'] = 'student';
$adresa_ip = $_SERVER['REMOTE_ADDR'];
$cerereSQL = 'SELECT * FROM `acces_interzis` WHERE
interzis="'.$_SESSION['utilizator'].'" OR interzis="'.$adresa_ip.'"';
$rezultat = mysql_query($cerereSQL);
if(mysql_num_rows($rezultat) > 0)
{
while($rand = mysql_fetch_array($rezultat)) {
$motiv = $rand['motiv'];
}
}
if(isset($motiv)) {
echo 'Acces interzis asupra paginii, motivul: <i>'.$motiv.'</i>';
} else {
echo 'Continutul paginii.<br>
Apasa <a href="admin.php">aici</a> pentru a
interzice acces-ul asupra paginii.';
}
?>
Observați faptul că la începutul paginii avem setată sesiunea cu utilizatorul logat (acum am definit-o
manual, normal această sesiune o setați atunci când utilizatorul se autentifică, pagina index.php fiind
una din paginile protejate, prin urmare vom avea sesiunea cu numele utilizatorului).
Adresa IP a utilizatorului o luăm cu ajutorul variabilei globale $_SERVER, REMOTE_ADDR.
După ce am obținut utilizatorul sau adresa ip a acestuia, avem comanda SQL care selectează tot
din tabela acces_interzis unde interzis este utilizator ori interzis este adresa ip.
Dacă returnează rezultate, setăm variabila $motiv, cu valoarea rândului motiv din baza de date,
apoi realizăm o construcție if cu condiția: dacă este setată variabila motiv, înseamnă că au fost găsite
rezultate, înseamnă că utilizatorul apare în baza de date ca fiind blocat, prin urmare afişăm un mesaj
de eroare.
Dacă nu, afişăm conținutul paginii web.
Creați o pagină cu numele admin.php, introduceți codul de mai jos, apoi testați în browser.
<?php
require_once 'config.php';
Descoperiți modalitatea de a înlătura adresa mai sus introdusă, pentru a da acces utilizatorului la
pagina index.php.
12.3 Partea a II-a – contorizare click-uri
Avem nevoie de o bază de date. În acest scop o vom folosi pe aceea care a fost utilizată în lucrarea
cu scripturile de căutare. Vom utiliza celula vizite din baza de date cautare, tabela intrari.
În directorul rădăcină al serverului web (Apache) vom crea directorul contorizare, în care vom
copia fişierul config.php din directorul contorizare (este acelaşi, deoarece ne conectăm la aceeaşi bază
de date).
Realizăm o pagină cu numele index.php, în care introducem scriptul de mai jos:
<?php
require_once('config.php');
case '':
$cerereSQL = 'SELECT * FROM `intrari`';
$rezultat = mysql_query($cerereSQL);
while($rand = mysql_fetch_array($rezultat))
{
echo '<a href="index.php?pag=
redirectionare&id='.$rand['id'].'">'.$rand['titlu'].'</a> -
'.$rand['adresa'].' <font color="blue" size="2">(vizualizari:
'.$rand['vizite'].')</font> <br> <i>'.$rand['descriere'].'</i>
<br><br>';
}
break;
case 'redirectionare':
if(!is_numeric($_GET['id'])) {
echo 'ID nu este numeric, ce incerci sa faci?';
} else {
$cerereSQL = 'SELECT * FROM `intrari` WHERE id="'.$_GET['id'].'"';
$rezultat = mysql_query($cerereSQL);
while($rand = mysql_fetch_array($rezultat))
{
header("Location: ".$rand['adresa']."");
$cerereSQL = 'UPDATE `intrari` SET vizite="'.($rand
['vizite']+1).'" WHERE id="'.$rand['id'].'"';
$rezultat = mysql_query($cerereSQL);
}
}
break;
}
?>
Observați că în primul case avem selectarea şi afişarea în pagină a tuturor adreselor introduse din
proiectul căutare; mai observați şi transferarea prin:
<a href="index.php?pag=redirectionare&id='.$rand['id'].'">
a id-ului corespundator fiecărei intrări.
În al II-lea case avem verificarea dacă valoarea trimisă prin $_GET este numerică. Dacă nu este
numerică, afişăm un mesaj de eroare, iar dacă este, selectăm tot din baza de date unde id-ul este id-ul
trimis prin get.
Redirecționăm utilizatorul către pagina selectata prin metoda header Location.
header("Location: ".$rand['adresa']."");
Apoi updatam vizitele cu +1, unde id-ul este id-ul trimis prin $_GET.
Accesați din nou pagina principală index.php şi observați rezultatele:
OBS: php este un limbaj case sensitive, dacă unul din câmpurile din baza de date are numele
scris cu litere mari (de exemplu ID), atunci scriptul index-php de mai sus trebuie corectat (să fie scris
ID şi nu id).
Tehnologii Internet
Bibliografie
1. http://www.bsdguides.org/guides/freebsd/
2. http://www.cssplaza.com/tutoriale-css/
3. http://www.dplus.ro/resurse.php#ghid
4. http://www.drogoreanu.ro/tutorials/index.php
5. http://www.freebsd.org/
6. http://freebsd.ournet.md/docs/system/index.phtml
7. http://www.geocities.com/WallStreet/Floor/7071/jstutor.htm
8. http://www.infodamina.ro/jscript/index.html
9. http://www.itzone.ro/tutoriale.php?categorie_id=9
10. http://jalobean.itim-cj.ro/Cursuri/www.my-sql.go.ro/instalare.htm#mysqll
11. http://www.linux-magazin.ro/
12. http://www.mcli.dist.maricopa.edu/tut/lessons.html
13. http://www.mydigitallife.info/2006/04/13/installing-web-server-in-freebsd-60- with-apache-22-
mysql-50-and-php-5-part-4/
14. www.oriceon.com/tutoriale
15. http://www.supremeweb.org/fusion/news.php
16. http://www.rofug.ro/
17. http://www.tutoriale.far-php.ro/
18. http://www.worklance.com/htmltutorial/
19. The PHP begginers tutorial - Leendert Brouwer, PHP Pocket Reference editia 2
– O’Reilly, Manual PHP (ro) HTML And XHTML The Definitive Guide editia
5 – O’Reilly;
20. Inițiere în PHP & MySQL, Valentin Ivaşcu, 06.2005