honlapépités a xxi. században v1.1
DESCRIPTION
ProgramozásTRANSCRIPT
-
Honlap p t s a XXI. sza zadban
A Microsoft ASP.NET Web Pages egy ingyenes webfejleszt technolgia, melyet gy terveztek meg, hogy a vilg legjobb fejleszti lmnyt nyjtsa webfejlesztk szmra. Ezen knyv segtsgvel megtanulhatjuk az internet s a Web mkdst, tovbb kpesek lesznk XXI. szzadi, korszer dinamikus webes tartalmak ksztsre az ASP.NET s a Razor szintaxis segtsgvel.
Megjegyzs: Ez a dokumentum a Microsoft WebMatrix and ASP.NET Web Pages Beta 3 kiadshoz kszlt. A termk a fejleszts sorn nmileg vltozhat. A legjabb informcikrt ltogassunk el a http://www.asp.net/webmatrix oldalra.
A Microsoftos fejleszti kzssg WebMatrix-os oldalt az albbi linken talljuk: http://webmatrix.devportal.hu
Weblapfejlesztssel, WebMatrix-szal, Razor nyelvvel kapcsolatos szakami krdseinket az albbi frumon tehetjk fel: http://devportal.hu/forums/348.aspx
A Facebookon a WebMatrix magyarorszgi rajong tborhoz val csatlakozssal rteslhetnk a legjabb hrekrl! WebMatrix Magyarorszg
Ez a knyv elektronikusan, kizrlag vltozatlan formban szabadon terjeszthet. A knyv rszeinek brmilyen cl felhasznlshoz a kiad elzetes rsbeli engedlye szksges.
A knyv fordtsa s lektorlsa sorn a kiad a legnagyobb gondossggal jrt el. Az esetleges hibkat s szrevteleket a [email protected] cmen szvesen fogadjuk.
Az 1. fejezet Balssy Gyrgy munkja Internet: http://www.msdnkk.hu/Users/balassy
Szerkesztette s szakmailag lektorlta: Szab Vince
Anyanyelvi lektor: Dr. Bonhardtn Hoffman Ildik
Kiad: Jedlik Oktatsi Stdi Kft. 1212 Budapest, Tncsics Mihly u. 92. Internet: http://www.jos.hu E-mail: [email protected] Felels kiad: a Jedlik Oktatsi Stdi Kft. gyvezetje
http://www.asp.net/webmatrixhttp://webmatrix.devportal.hu/http://devportal.hu/forums/348.aspxhttp://www.facebook.com/pages/WebMatrix-Magyarorszag/151899551525209mailto:[email protected]://www.msdnkk.hu/Users/balassyhttp://www.jos.hu/mailto:[email protected] -
Tartalomjegyzk
1. fejezet Balssy Gyrgy: Bevezets a web programozsba ................................................6
Az internet mkdse ..................................................................................................................... 6
Gptl gpig ............................................................................................................................................... 6
Szmok a gpeknek .................................................................................................................................... 8
Nevek az embereknek ................................................................................................................................ 9
Programok egyms kztt ........................................................................................................................ 12
A HyperText Transfer Protocol ...................................................................................................... 13
Fbb jellemzk ......................................................................................................................................... 13
A krs s a vlasz .................................................................................................................................... 14
Biztonsgos kommunikci ...................................................................................................................... 20
llapotkezels .......................................................................................................................................... 22
A HyperText Markup Language ..................................................................................................... 24
A HTML nyelv elemei ................................................................................................................................ 24
Fontosabb HTML elemek .......................................................................................................................... 25
Validls ................................................................................................................................................... 37
Cascading Style Sheets stluslapok ................................................................................................ 38
Attribtumok ............................................................................................................................................ 39
Elhelyezs ................................................................................................................................................. 40
A CSS szelektorok ..................................................................................................................................... 41
Span s div ................................................................................................................................................ 44
rkls ..................................................................................................................................................... 44
Doboz modell ........................................................................................................................................... 45
Oldalelrendezsek .................................................................................................................................... 46
Tbb stluslap ........................................................................................................................................... 48
Ellenrzs ................................................................................................................................................. 50
2. fejezet Bevezets a WebMatrixba s az ASP.NET weboldalakba ...................................... 52
Mi az a WebMatrix? ...................................................................................................................... 52
Webmatrix teleptse .................................................................................................................... 52
Els lpsek a WebMatrixszal ....................................................................................................... 53
Weboldal ltrehozsa .................................................................................................................... 55
Helperek teleptse a Package Manager segtsgvel .................................................................. 57
ASP.NET weboldal kdok hasznlata ............................................................................................ 59
ASP.NET Razor oldalak programozsa Visual Studiban ............................................................... 62
ASP.NET oldalak ltrehozsa s tesztelse sajt szvegszerkesztvel ..................................................... 63
3. fejezet Bevezets az ASP.NET webszerkesztsbe Razor szintaxissal ................................. 65
8 f programozsi tipp .................................................................................................................. 65
HTML kdols ........................................................................................................................................... 66
-
HTTP GET s POST metdusok s az IsPost tulajdonsg .......................................................................... 70
Egyszer pldakdok ..................................................................................................................... 70
Programozsi alapfogalmak .......................................................................................................... 72
Osztlyok s pldnyok ............................................................................................................................ 73
Nyelv s szintaxis ........................................................................................................................... 74
Tovbbi forrsok ............................................................................................................................ 91
4. fejezet Egysges megjelens kialaktsa ......................................................................... 92
Tbbszr hasznlhat tartalomblokkok ltrehozsa .................................................................... 92
Egysges ltvny kialaktsa layout oldalakkal .............................................................................. 95
Tbbfle tartalommal rendelkez layout oldalak tervezse ......................................................... 98
Opcionlis tartalomszakaszok ltrehozsa .................................................................................. 101
Adat kldse layout oldalakra ..................................................................................................... 102
Egyszer helper ltrehozsa s hasznlata ................................................................................. 106
5. fejezet Munka az rlapokkal ........................................................................................ 109
Egy egyszer HTML rlap ltrehozsa ......................................................................................... 109
Felhasznl ltal bevitt rtk olvassa az rlapbl ..................................................................... 110
HTML kdols a megjelensrt s biztonsgrt ..................................................................................... 112
Adatbevitel ellenrzse ............................................................................................................... 112
Az rlap rtkeinek visszalltsa az elklds utn ..................................................................... 114
Tovbbi forrsok angolul ............................................................................................................. 115
6. fejezet Mveletek adatokkal ........................................................................................ 116
Bevezets az adatbzisokba ........................................................................................................ 116
Relcis adatbzisok .............................................................................................................................. 116
Adatbzis ltrehozsa.................................................................................................................. 117
Adatok hozzadsa az adatbzishoz ........................................................................................... 118
Adatok megjelenttse az Adatbzisbl ...................................................................................... 119
Strukturlt lekrdez nyelv (SQL) ........................................................................................................... 120
Adatok beillesztse egy adatbzisba ........................................................................................... 121
Adatok frisstse egy Adatbzisban ............................................................................................. 124
Adatok trlse egy Adatbzisbl ................................................................................................. 129
Csatlakozs egy adatbzishoz ................................................................................................................. 131
Tovbbi forrs angolul ................................................................................................................. 132
7. fejezet Adatok megjelentse gridekben ....................................................................... 133
A WebGrid Helper ....................................................................................................................... 133
Adatok megjelentse a WebGrid Helper hasznlatval ............................................................. 133
-
Oszlopok kivlasztsa s formzsa megjelentshez ................................................................. 134
A teljes grid formzsa ................................................................................................................ 137
Adatok lapozsa .......................................................................................................................... 138
Tovbbi forrsok .......................................................................................................................... 139
8. fejezet Adatok megjelentse diagramokon .................................................................. 140
A Chart helper ............................................................................................................................. 140
A diagram elemei......................................................................................................................... 141
Diagram ksztse az adatokbl .................................................................................................. 141
lltsok s teljesen kvalifiklt nevek hasznlata ................................................................................... 146
Diagramok megjelentse weboldalakon .................................................................................... 147
Diagram formzsa ...................................................................................................................... 148
Diagram mentse ........................................................................................................................ 150
Tovbbi forrs angolul ................................................................................................................. 155
9. fejezet Munka fjlokkal ............................................................................................... 156
Szvegfjl ltrehozsa s adatok belersa ................................................................................. 156
Adat hozzadsa meglv fjlhoz ............................................................................................... 159
Adatok olvassa s megjelentse fjlbl .................................................................................... 160
Adatok megjelentse Microsoft Excel vesszvel elvlasztott fjlbl .................................................... 162
Fjlok trlse ............................................................................................................................... 162
Fjlok feltltse a felhasznlk ltal ........................................................................................... 163
Tbb fjl feltltse a felhasznlk ltal ....................................................................................... 166
Tovbbi forrs angolul ................................................................................................................. 168
10. fejezet Munka kpekkel ............................................................................................... 169
Kp dinamikus hozzadsa egy weboldalhoz .............................................................................. 169
Kp feltltse .............................................................................................................................. 171
A GUID-okrl .......................................................................................................................................... 174
Kp tmretezse ........................................................................................................................ 174
Kp forgatsa s tkrzse ......................................................................................................... 175
Vzjel hozzadsa kphez ............................................................................................................ 177
Kp hasznlata vzjelknt ............................................................................................................ 178
11. fejezet Mveletek videkkal ........................................................................................ 180
Videolejtsz kivlasztsa ........................................................................................................... 180
MIME tpusok ......................................................................................................................................... 181
Flash videk (.swf) lejtszsa ...................................................................................................... 181
-
Media Player (.wmv) videk lejtszsa ....................................................................................... 183
Silverlight videk lejtszsa ......................................................................................................... 184
Tovbbi forrsok angolul ............................................................................................................. 185
12. fejezet E-mail hozzadsa a webhelynkhz ................................................................. 186
E-mail zenet kldse a webhelyrl ............................................................................................ 186
Fjl kldse e-mail hasznlatval ................................................................................................ 189
Tovbbi forrs angolul ................................................................................................................. 191
13. fejezet Keres hozzadsa a webhelynkhz ................................................................ 192
Keress a webhelynkn ............................................................................................................. 192
Tovbbi forrsok angolul ............................................................................................................. 195
14. fejezet Kzssgi hlzatok hozzadsa a weboldalunkhoz .......................................... 196
Weboldalunk linkelse kzssgi oldalakon ............................................................................... 196
Twitter hrfolyam hozzadsa ..................................................................................................... 197
Gravatar kp megjelentse ........................................................................................................ 199
Xbox Gamer krtya megjelentse .............................................................................................. 200
Facebook Like gomb megjelentse ......................................................................................... 201
15. fejezet Forgalomanalzis .............................................................................................. 204
Ltogatsok informciinak kvetse (Analzis) ......................................................................... 204
16. fejezet Gyorsttrazs a webhely teljestmnynek nvelshez ................................. 207
Cache-els a weboldal sebessgnek nvelshez .................................................................... 207
17. fejezet Biztonsgi elemek s felhasznli fikok hozzadsa ......................................... 210
Bevezets a felhasznli fikokba ............................................................................................... 210
Weboldal ltrehozsa regisztrcis s bejelentkez oldalakkal ................................................. 210
Csak felhasznlk szmra elrhet oldal ltrehozsa ............................................................... 214
Csoportok biztonsgi belltsai (szerepek) ................................................................................ 215
Jelszt megvltoztat oldal ltrehozsa ..................................................................................... 217
j jelsz ltrehozsnak lehetsge ........................................................................................... 219
Automatizlt programok csatlakozsnak megakadlyozsa ..................................................... 222
18. fejezet Bevezets a hibakeressbe ............................................................................... 225
A ServerInfo helper hasznlata a szerverinformcik megjelentshez ................................... 225
Oldal rtkek kijelzse kifejezsek begyazsval ...................................................................... 226
Objektumrtkek kijelzse az ObjectInfo helper hasznlatval ................................................. 229
-
Hibakeres eszkzk hasznlata ................................................................................................. 231
Internet Explorer Developer Tools .............................................................................................. 231
Firebug ......................................................................................................................................... 232
Tovbbi forrsok angolul ............................................................................................................. 233
19. fejezet A Site-Wide viselkeds testreszabsa ................................................................ 234
Weboldal indulsakor lefut kd hozzadsa ............................................................................. 234
Kd futtatsa egy mappa fjljainak elindulsa eltt s lefutsa utn......................................... 237
Knnyebben olvashat s kereshet URL-ek ksztse .............................................................. 242
Fggelk ASP.NET API referencia ......................................................................................... 245
Osztlyok ..................................................................................................................................... 245
Adatok ......................................................................................................................................... 250
Helperek ...................................................................................................................................... 251
Fggelk ASP.NET Weboldalak Visual Basickel ..................................................................... 256
A 8 legjobb programozsi tipp s trkk ....................................................................................... 256
HTML kdols ......................................................................................................................................... 256
Egyszer pldakdok ................................................................................................................... 261
A Visual Basic programozsi nyelv s szintaxisa .......................................................................... 263
Tovbbi forrsok angolul ............................................................................................................. 279
Fggelk ASP.NET weboldalak programozsa Visual Studiban ............................................ 280
Mirt vlasszuk a Visual Studit? ................................................................................................ 280
Az ASP.NETRazorTools teleptse ................................................................................................ 280
Az ASP.NET Razor Tools hasznlata Visual Studioval .................................................................. 281
Az IntelliSense hasznlata ........................................................................................................... 282
A Debugger hasznlata ................................................................................................................ 283
Nyilatkozat ............................................................................................................................ 286
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 6
1. fejezet Balssy Gyrgy: Bevezets a web programozsba
Az internet mkdse Avagy honnan jn a vezetk s mi trtnik benne?
Az ASP.NET WebPages technolgia s a Microsoft WebMatrix segtsgvel nagyon egyszeren s hatkonyan kszthetnk j weboldalakat, interaktv webhelyeket. A hatkonysg s az egyszersg egyik kulcsa, hogy a rendszer szmos terhet levesz a vllunkrl, azaz bizonyos problmkat nem neknk kell megoldanunk, hanem kszen kapjuk a mkd megoldst. Nha azonban elfordul, hogy a legjobb igyekezetnk ellenre valami mgsem mkdik, biztos mindannyian tallkoztunk mr a nincs internet, a nem jn be az oldal vagy pp a nem tltdik le a fjl jelensgekkel. Ezek mindennapos problmk egy webfejleszt letben, melyek megoldshoz nlklzhetetlen, hogy rtsk, hogyan is mkdik az internet.
Ennek a fejezetnek a clja, hogy megismerjk, mi trtnik a httrben, mikzben egy weboldalt nznk a bngszben. A fejezet vgre egyrtelm lesz, hogy a gpnkbl kilg kbel hova fut a vilgban, s hogyan tallja meg a bngsz a webszervert a bert webcm alapjn.
Gptl gpig
Ahhoz, hogy az nll szmtgpeket vilghlba tudjuk szervezni, termszetesen valahogy fizikailag is ssze kell tudnunk kapcsolni ket. Az internet nlklzhetetlensgnek ksznheten a mai szmtgpeknek ma mr szinte ktelez tartozkuk az erre a clra szolgl hlzati krtya (ms nven hlzati csatol, angolul network interface card, vagy egyszeren csak NIC). Ha megnzzk a gpnk csatlakozit, valami ehhez hasonlt biztosan tallunk rajta, rla van sz:
1. bra - A hlzati csatlakoz a szmtgp htoldaln
A hlzati krtya rgebben a nevhez hen valban nll, krtya formj, opcionlis rsze volt a szmtgpnek, ma mr a szmtgp nlklzhetetlen rszv vlt. St, ha hordozhat szmtgpnk van, akkor valsznleg egy vezetk nlkli hlzati krtya (wireless network card) is tallhat a gpben. Mivel ehhez nem csatlakozik kbel, legfeljebb annyit fogunk szrevenni belle, hogy sok gpen egy kln kapcsolval szablyozhatjuk, hogy mikor legyen be- vagy kikapcsolva a vezetk nlkli hlzati krtynk, ezzel is cskkentve a laptopunk fogyasztst.
A hlzati krtyba kell bedugnunk a hlzati kbelt. A csatlakozja (hivatalosan RJ45-knt szoktk feltntetni) nagyon hasonl a telefonkbel csatlakozjhoz (amit pontosan RJ11-nek hvnak), csak egy kicsit szlesebb, ezrt ha nem erltetjk, nem tudjuk rossz helyre dugni. Ha ilyen kbelre van szksgnk, a boltban UTP patch kbel nven vsrolhatjuk meg, klnbz hosszsgokban.
2. bra - Hlzati kbel
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 7
MEGJEGYZS: Ebben a knyvben a hlzat sz alatt mindenhol a szmtgp-hlzatokat rtjk,
ezt mg vletlenl se keverjk ssze a 230V-os elektromos hlzattal! A hlzati kbeleket
(network cable s nem power cable) s eszkzket gyengeram jelek tovbbtsra
terveztk, s rossz nven veszik, ha a fali konnektorba erszakoljuk ket.
A nagy krds persze az, hogy a gpnkbl indul kbel hova megy tovbb. Az internet olyan risi hlzat, hogy nem lehet minden egyes szmtgpet egyetlen kzponti csomponthoz csatlakoztatni, ezrt inkbb hlzatok hlzataknt valstottk meg. Egy-egy kisebb alhlzatban (local area network *LAN+, vagy egyszeren csak subnet) a gpeket legtbbszr csillag alakzatban rendezik el, azaz van egy helyi kzponti eszkz, amelyhez az sszes krnyken lv szmtgp csatlakozik, s amely kpes a gpek kztt zajl forgalomban rendet tartani. Erre a feladatra egy aktv hlzati eszkz, a hlzati kapcsol (amit magyarul is inkbb switchnek szoktunk hvni) szolgl.
3. bra - Egy 48 portos switch
Egy-egy switchre 8, 16, 24, 48 szmtgpet lehet csatlakoztatni attl fggen, hogy hny csatlakozja (azaz portja) van, a switch pedig a csillag kzepn gondoskodik arrl, hogy a gpek megtalljk egymst.
4. bra - Ngy szmtgp sszektse egy switch segtsgvel
De mi van akkor, ha egy szmtgp egy olyan szmtgppel kvn kommuniklni, amelyik nem erre a switchre csatlakozik? Itt egy jabb hlzati eszkzre van szksg, ami okosabb, mint a switch s kpes egy switchre csatlakoztatott sszes gpet a vilghl tbbi rszhez kapcsolni. Ez az eszkz az tvonalvlaszt (router vagy default gateway).
5. bra - Kt alhlzat sszekapcsolsa routerrel
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 8
Ha csak egyetlen szmtgppel szeretnnk az internetre csatlakozni, akkor elfordulhat, hogy otthon sem switchcsel, sem routerrel nem fogunk tallkozni. Ha azonban tbb gpet szeretnnk egymssal s a vilghlval sszektni, akkor vsrolhatunk olyan eszkzt, amely egyben kpes elltni a router s a switch funkciit is.
Szmok a gpeknek
Miutn megrtettk, hogy az interneten lv gpek fizikailag hogyan kapcsoldnak egymshoz, ejtsnk pr szt arrl, hogy ezeken a kbeleken hogyan vndorolnak az adatok!
Fizikai cm
A gpek egymst szmokkal azonostjk, azaz minden egyes gpnek van egy nll cme. A hlzati krtyk gyrti minden egyes krtynak adnak egy egyedi cmet, n. Media Access Control addresst, rviden MAC-addresst, vagy ms nven fizikai cmet. Ez egy 6 bjtos cm, egyedi a vilgon, az n gpemben lv hlzati krty pldul ez: 00-1C-7E-1D-B8-B5.
Mivel ezt a cmet a rendszergazdk s az internet szolgltatk belltsnl s hibakeressnl
gyakran szoktk krni, ezrt a laptopok gyrti gyakran rrjk egy matricra a laptop aljn. Ha
laptopod van, fordtsd meg a gpet, htha a tidre is rrtk!
Akr rrtk, akr nem, a gp meg is tudja mondani magrl, hogy mi az fizikai cme. Indtsd
el a Start menbl a Parancssort (Command Prompt), s rd be, hogy ipconfig /all! Az
elszalad hossz listban a Fizikai cm (Physical Address) sorban tallod a gped egyedi cmt.
IP cm
A fizikai cmmel tbb problma is van, melyek kzl a legfontosabb, hogy semmilyen jelentst nem hordoz. Br kiderl belle, hogy pontosan melyik cg gyrtotta az adott hlzati krtyt, de azt pldul mr nem tudja, hogy fldrajzilag hol tallhat a gp, vagy hogy melyek a szomszdos gpek.
Ugorjunk teht egy magasabb absztrakcis szintre, s a fizikai cm helyett hasznljunk egy msik cmet, ami tbb informcit hordoz, ez pedig az IP cm (Internet Protocol address). Az IP cm egy 4 bjtbl ll cm, aminek a 4 elemt (angolul octetjt) ponttal elvlasztva szoktuk lerni. Ez pldul egy nagyon bartsgos IP cm: 152.66.188.13.
Kvncsi vagy a sajtodra? Indtsd el a Start menbl a Parancssort (Command Prompt), s rd
be, hogy ipconfig, majd ss Entert! Az IPv4 cm (IPv4 Address) sorban tallod a gped ltal
hasznlt IP cmet.
Ha pedig ki szeretnd prblni, hogy a gped lt-e egy msik gpet a cme alapjn, akkor
szintn Parancssorban rd be a ping parancsot, majd utna a msik gp IP cmt!
Az IP cmek szintn egyediek a vilgon, az internet szolgltatk gondoskodnak rla, hogy a krlbell 4 millird cm kzl mindenkinek olyan jusson, amit ppen ms nem hasznl. Mivel az internet szolgltatk fldrajzilag helyhez ktttek (pldul egy adott orszgban lv gyfeleknek nyjtanak szolgltatst), ezrt az IP cmekbl az is kiderl, hogy az IP cmet hasznl szmtgp hol tallhat.
Az IP cm mellett mg szksg van az n. alhlzati maszk (subnet mask) belltsra is. Az alhlzati maszk segtsgvel egy szmtgp, amely adatot akar kldeni egy msik szmtgp szmra a hlzaton, meg tudja llaptani, hogy a cmzettel azonos alhlzaton tartzkodik-e. Ez azrt fontos, mert ha egy alhlzaton vannak, akkor kzvetlenl kommuniklhatnak egymssal, ha viszont nem, akkor a felad a router fel kldi a csomagot, a router pedig gondoskodik a csomag tovbbtsrl
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 9
ms alhlzatok fel. Innen a router msik neve, hvjk ugyanis alaprtelmezett tjrnak (default gateway) is.
Teht legalbb hrom cmet kell belltanunk minden szmtgpen, ha azt szeretnnk, hogy a szmtgp adatokat tudjon kldeni s fogadni az interneten:
Az IP cmet, ami minden szmtgp esetn egyedi cm.
Az alhlzati maszkot, amivel a felad eldntheti, hogy a cmzett vele azonos alhlzaton
van-e.
Az alaprtelmezett tjr cmt, ami a routernek az adott alhlzatra kapcsold hlzati
krtyjnak cme.
TIPP: Parancssorban kiadva az ipconfig parancsot, az IPv4 cm (IPv4 Address), az Alhlzati
Maszk (Subnet Mask) s az Alaprtelmezett tjr (Default Gateway) sorokban lthat a
hrom cm. Windows 7 alatt a Hlzati Kapcsolat Rszletek ablakban tekinthetjk t
knyelmesen az sszes belltst.
A krds mr csak az, hogy honnan tudjuk, pontosan milyen rtkeket kell belltanunk? A knyelem rdekben a legtbb esetben nem szksges ennek a hrom rtknek a kzi belltsa, a szmtgp tudja ket magtl. Ez valjban azt jelenti, hogy a hlzaton zemel egy n. DHCP kiszolgl (Dynamic Host Configuration Protocol), amelytl a szmtgp kpes lekrdezni a szksges belltsokat. Ezrt fordulhat el, hogy a legtbb nyilvnos hlzaton elg rcsatlakoznunk a hlzatra, nem kell a belltsokkal bajldnunk.
J TUDNI: Webfejlesztknt rdemes tudnunk, hogy van egy specilis IP cm, ami mindig a sajt
gpnket jelli, ez pedig a 127.0.0.1. Teht ha egy bngsz cmsorba berjuk, hogy
http://127.0.0.1, akkor mindig az ugyanazon a gpen lv webkiszolglhoz fogunk
csatlakozni, gy akr hlzati kapcsolat nlkl is kszthetnk weboldalakat.
sszefoglalva eddigi tudsunkat, ha a mi gpnknek helyesen belltjuk a hrom cm paramtert s ismerjk a cmzett gp IP cmt, akkor a kt gp tud egymssal kommuniklni. Ez a gyakorlatban valban gy mkdik, m ha hs-vr felhasznl is l a gp eltt, akkor a cmek hasznlata nem tl praktikus. A gpek jl mkdnek szmokkal, de az emberek inkbb neveket tudnak megjegyezni. A kvetkez fejezetben annak jrunk utna, hogyan lesznek a nevekbl szmok.
Nevek az embereknek
Mikor kedvenc bngsznk cmsorba berunk egy webcmet, pldul azt, hogy http://devportal.hu, akkor azt a bngsznek le kell fordtania egy IP cmre, hiszen az elz fejezetben lttuk, hogy a gpeknek cmekre van szksgk a sikeres kommunikcihoz. Ezt a folyamatot nvfeloldsnak hvjuk, s a Domain Name System (DNS) szolgltats a felels rte.
DNS
A DNS szolgltats ktflekppen tud mkdni. Dinamikus nvfelolds esetn az elz fejezetben bemutatott hrom cmen kvl a gpnk automatikusan megkapja a DHCP kiszolgltl a DNS kiszolgl cmt is. A DNS kiszolgl egy olyan szolgltats a hlzaton, amelynek a hlzat gpei krseket kldenek, s visszaadja a bekldtt nvhez tartoz IP cmet (vagy akr fordtva, az IP cmhez tartoz nevet). Egyetlen DNS kiszolgl nem tudja a vilghlra kapcsolt sszes szmtgp nevt s IP cmt, ezrt ha nem tud vlaszolni a krdsre, akkor tovbbtja azt ms DNS kiszolglknak. Ha egy rendszergazda j gpet kt a hlzatra, s azt szeretn, hogy azt ms gpek nv szerint is megtalljk, akkor be kell jegyeznie az j gpet a helyi DNS kiszolgl adatbzisba. Mivel a DNS kiszolglk kapcsoldnak egymshoz, egy tvoli gprl rkez nvfeloldsi krs elbb-
http://devportal.hu/ -
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 10
utbb el fog jutni az adott alhlzatrt felels DNS kiszolglhoz, aki gy kpes lesz megadni a nvhez tartoz IP cmet. Ennek a mdszernek az az elnye, hogy semmit nem kell konfigurlni az egyes szmtgpeken, a kzponti szolgltats belltsval az sszes kliens szmtgp el fogja tudni rni az adatokat.
TIPP: Parancssorban kiadva az ipconfig /all parancsot, a DNS kiszolglk sorokban
lthatak a szmtgp szmra belltott nvszerverek. Ezeket is be lehet lltani kzzel, de
tbbnyire a DHCP szervertl kapja meg a gpnk a DNS szerverek IP cmeit is. Tbb
nvszervert is bellthatunk, de rdemes tudni, hogy elszr mindig az elsdleges DNS
szerverhez fordul a gpnk, a msodlagoshoz csak akkor, ha az elsdleges nem vlaszol.
Hosts fjl
Egy msik lehetsges megolds a statikus nvfelolds. Statikus nvfelolds esetn nincs kzponti szolgltats, hanem minden egyes gpen nyilvntartjuk az elrni kvnt gpek nv-IP cm prosait. Ez az adatbzis alaprtelmezs szerint a C:\Windows\System32\drivers\etc\hosts fjlban tallhat, ami egy egyszer szveges llomny, brmilyen szvegszerkesztvel, pldul Jegyzettmbbel is szerkeszthet. Ennek a megoldsnak az elnye, hogy egy IP cmhez tetszleges nevet vehetnk fel, s azzal a nvvel hivatkozhatunk az adott gpre mg akkor is, ha az nincs bejegyezve a kzponti DNS szolgltatsba.
A gyakorlatban a statikus nvfelolds nem nllan, hanem a dinamikus nvfeloldssal egytt szokott mkdni, teht a kt mdszer kiegszti egymst.
Webfejleszts kzben nagyon j szolglatot tehet a hosts fjl. Elfordulhat, hogy a gpnkn fut webszerveren tbb webhelyet is szeretnnk futtatni, ekkor a rendszer pldul a nv alapjn klnbztetheti meg ket. A hosts fjlban felvehetnk tbb nevet, s mindegyik mutathat a 127.0.0.1 IP cmre.
Egy msik gyakori eset, amikor praktikus a hosts fjl hasznlata: ha mg nincs bejegyezve a hivatalos tartomny (domain) nv egy internet szolgltatnl, de az alkalmazsnak mindenkpp szksge van r. Ebben az esetben ideiglenesen felvehetjk a nevet a sajt hosts fjlunkba, ksbb pedig amikor megtrtnik a hivatalos nvbejegyzs, akkor knnyen trlhetjk onnan.
TIPP: A nvfelolds mkdsnek tesztelsre kivlan hasznlhat az nslookup parancs.
Nyissunk egy Parancssort, s rjuk be, hogy nslookup devportal.hu, majd ssnk Entert.
A vlaszban ltni fogjuk a nvfeloldst vgz kiszolgl nevt s a devportal.hu IP cmt is. Az
nslookup fordtva is tud mkdni, azaz ha egy nv helyett IP cmet runk be utna, akkor
megmondja a cmhez tartoz nevet (feltve, hogy az adott tartomny rendszergazdja nem
csak a nvhez tartoz IP cmet regisztrlta, hanem az IP cmhez tartoz nevet is).
Dinamikus DNS
A fenti megoldsok mind azt felttelezik, hogy az IP cm, amire a nvbejegyzs hivatkozik, lland. Csakhogy a mai vilgban az internet szolgltatk tbbsge az otthoni felhasznlk szmra dinamikus IP cmet ad, azaz bizonyos idkznknt az IP cm megvltozik. Mivel a DNS szerverek errl a cmvltozsrl automatikusan nem rteslnek, ezrt az ilyen dinamikus IP cmre mutat nvbejegyzsek nagyon hamar elavulnnak.
Erre a problmra jelent megoldst a dinamikus DNS szolgltats (nem sszekeverend a dinamikus nvfeloldssal). A dinamikus DNS mkdse megegyezik a hagyomnyos DNS szerverek mkdsvel, azzal az egyetlen klnbsggel, hogy ha egy szmtgp IP cme vltozik, akkor a szmtgp rtesti a DNS szervert, s automatikusan frissti a sajt nvbejegyzshez tartoz IP cmet.
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 11
A vilgon szmos ingyenes dinamikus DNS szolgltat van, a legismertebbek a DynDns.com s
a no-ip.com, de ltezik tbb magyar szolgltat is, pldul a myip.hu s a dynpro.hu. Ezekrl a
weboldalakrl a regisztrci utn egy kliens programot kell letltennk, amely a gpnkn
folyamatosan figyeli a hlzati kapcsolatot, s ha IP cm vltozst tapasztal, automatikusan
frissti a DNS szerveren a nvbejegyzst. gy megoldhat, hogy pldul az otthoni gpnket,
amely akr naponta tbbszr j IP cmet kap, nv szerint el tudjuk rni tvolrl.
DNS gyorsttr
Gyakori eset, hogy egy fut programnak egyms utn tbbszr van szksge egy adott nvhez tartoz IP cmre. Mivel a nvfelolds idignyes folyamat (el kell mennie a krsnek a hlzaton keresztl a nvszerverig s vissza), ezrt a vlaszok egy n. gyorsttrba (cache) kerlnek. Ez azt jelenti, hogy a szmtgp egy ideig megjegyzi a DNS szervertl kapott vlaszt, s ez alatt az id alatt ha egy program ismt erre kvncsi, akkor nem fordul a nvkiszolglhoz, hanem fejbl azonnal nyomja a vlaszt.
A vlaszt annyi idre gyorsttrazhatja a kliens, amennyi idre a DNS kiszolgl engedi. A
vlaszban teht nemcsak a krdezett nvhez tartoz IP cmet kldi vissza a nvszerver, hanem
egy n. time-to-live (TTL) rtket is, ami azt jelzi, hogy mennyi ideig rizheti a kliens a
gyorsttrban a vlaszt.
A DNS gyorsttr hasznos szolgltats, a webfejlesztknl azonban nha okoz egy kis galibt. Kpzeljk el az albbi esetet:
1. Fejlesztknt ksztnk egy weboldalt, s kitesszk egy szerverre.
2. Berjuk a kedvenc Internet Explorer bngsznk cmsorba a szerver nevt, de keseren
tapasztaljuk, hogy nem jn be semmi .
3. Kiprbljuk gy, hogy a szerverre nv helyett IP cmmel hivatkozunk, s gy minden
mkdik. Hmm.
4. Nmi gondolkods utn a homlokunkra csapunk, hogy hopp, elfelejtettk regisztrlni a
nevet, ezrt irny a hosts fjl vagy a DNS kiszolgl, ahova felvesszk a szerver nevhez
tartoz IP cmet.
5. Visszatrnk a bngsznkhz, frisstjk az oldalt, de az eredmny ugyanaz. Fehr oldal
szp nagy hibazenettel: A kiszolgl nem tallhat.
Hol a hiba?
Ebbe a szituciba elbb-utbb minden webfejleszt belekeveredik, ezrt rdemes ismernnk a megoldst: a problmt a DNS gyorsttr okozza.
Mikor a 2. lpsben a bngszben megprbljuk megnyitni az oldalt, a gpnk a DNS kiszolglhoz fordul, s megksrli elvgezni a nvfeloldst. Mivel azonban a DNS kiszolgln nincs bejegyezve a webkiszolgl neve, ezrt a DNS kiszolgl azt fogja mondani, hogy ilyen nev szerver nincs. Ez a vlasz legyen brmennyire hasznlhatatlan ugyangy bekerl a DNS gyorsttrba, mint a sikeres vlaszok.
JEGYEZZK MEG: a negatv vlasz is vlasz.
Ezek utn hiba frisstjk a nvszerver adatbzist, attl mg nem fog kikerlni a bejegyzs a szmtgp DNS gyorsttrbl. Ha nem akarjuk kivrni, amg a gyorsttrbl magtl kikerl ez a
http://www.dyndns.com/http://www.no-ip.com/http://myip.hu/http://www.dynpro.hu/ -
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 12
bejegyzs ez akr tbb nap mlva is lehet , akkor parancssorbl kiadhatjuk az ipconfig /flushdns parancsot, ami elvgzi az opercis rendszer DNS gyorsttrnak trlst.
m ettl mg valsznleg nem fog megjavulni minden, ugyanis a mai bngszk ltalban maguk is tartalmaznak egy DNS gyorsttrat. A bngszk gyorsttrt legegyszerbben a bngsz jraindtsval trlhetjk. Ha ezt a fenti 5. lps eltt megtesszk, akkor valsznleg mr sikeresen meg fog jelenni az j oldalunk.
Programok egyms kztt
Az elz fejezetben lttuk, hogy kt gp hogyan tallja meg egymst IP cm s nv alapjn. De mi van akkor, ha egy gpen tbb program is tallhat? Tegyk fel, hogy van egy szerver gpnk, amin fut egy webkiszolgl s egy FTP kiszolgl, illetve van egy ide kapcsold kliens szmtgpnk, amin fut egy webbngsz s egy FTP kliens program is. A kt gpen kt-kt program zenget egymsnak, hogy lehet, hogy mgsem keverednek ssze az zenetek, hogyan tall be egy zenet egy gpen bell a megfelel alkalmazshoz?
Ezt a problmt oldjk meg az n. portok. A port nem ms, mint egy egsz szm 0 s 65535 kztt, ami a gpen bell azonost egy alkalmazst. Amikor egy program egy msik gpen fut alkalmazsnak kvn zenetet kldeni, akkor nemcsak a clgp IP cmt kell megadnia, hanem a clgpen fut alkalmazs port szmt is, gy lesz egyrtelm, hogy pontosan melyik programnak kell feldolgoznia az zenetet.
Vannak nagyon gyakran hasznlt alkalmazsok mint pldul a webkiszolgl , melyeknek a port szmt az egyszersg rdekben szabvnyostottk. Pldul a webkiszolgl mindig a 80-as porton figyelve vrja a bejv HTTP krseket, a titkostott HTTPS krseket pedig a 443-as porton. Ezrt aztn nem is szksges ezeket a port szmokat kirnunk, a bngsz automatikusan tudni fogja, hogy ha a webcm http://-vel kezddik, akkor a kiszolgl 80-as portjra, ha https://-sel, akkor pedig a kiszolgl 443-as portjra kell kldenie a krst.
A portoknak nagy szerepk van a tzfalak belltsban, melyekkel korltozhatjuk egy
szmtgp kimen s bejv forgalmt. Pldul ha a webszervernk el betesznk egy
tzfalat, de azon nem nyitjuk ki a 80-as portot, akkor a webszerver nem lesz elrhet.
Elfordulhat, hogy egy alkalmazsbl tbb pldnyt is szeretnnk futtatni, vagy pldul egy webszervert zemeltetnk a gpnkn, amely tbb webhelynek ad otthont. Brmennyire is igaz, hogy a http:// protokollhoz a szabvny szerint a 80-as port tartozik, kt program vagy kt webhely nem osztozhat ugyanazon a porton, hiszen ha egy bngsz cmsorba bernnk, hogy http://localhost/default.cshtml, akkor a webkiszolgl nem tudn eldnteni, hogy melyik webhelyre gondolunk. Ilyenkor knytelenek vagyunk a kt webhelyet ms-ms porton zemeltetni, s a nem alaprtelmezett portszmokat a krsben kirni. Az egyik webhely kezdlapja lehet a http://localhost/index.php, a msik pedig pldul a http://localhost:8080/default.cshtml.
Mikor egy WebMatrixban kszl webhelyet futtatunk, akkor a WebMatrix elindtja az IIS
Expresst, ami egy kifejezetten fejleszti clra hasznlhat webkiszolgl. Az IIS Express kpes
egyszerre tbb webhelyet is futtatni, mgpedig gy, hogy mindegyiket nll port szmon
teszi elrhetv. Figyeljk meg a bngsz cmsort, s ltni fogjuk a port szmot.
A Windows beptett Internet Information Services webkiszolgljval (ami az elbb emltett
IIS Express nagy testvre) gy is zemeltethetnk tbb webhelyet, hogy mindegyik a HTTP
protokollhoz tartoz 80-as porton figyel. Ez akkor lehetsges, ha a webhelyek nll nven
rhetek el, az egyik pldul a http://forum.example.com, a msik pedig a
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 13
http://aruhaz.example.net cmen. Ilyenkor a webkiszolgl a nv alapjn kpes
eldnteni, hogy a bejv krs pontosan melyik webhelyre vonatkozik.
A HyperText Transfer Protocol Avagy mi trtnik a bngsz sznfalai mgtt?
A HyperText Transfer Protocol, azaz a HTTP a webbngszk ltal a weboldalak megjelentsre hasznlt informcitviteli protokoll a vilghln, ezrt amikor egy webalkalmazst ksztnk, akkor a legfontosabb elvrs a kdunkkal szemben, hogy HTTP protokollon keresztl lehessen vele kommuniklni. Br a legtbb szerver oldali programozsi krnyezet (pl. ASP.NET) jrszt elfedi a HTTP protokoll rszleteit, mindenkpp rdemes megismerkednnk a protokoll mkdsvel, mert ez a tuds sokat segthet a programjaink megtervezsben s a fejleszts sorn a hibakeressben is.
A HTTP aktulis verzija az 1.1 verzi, melyet pontosan az 1999 jniusban kiadott (nem egy mai darab, de mkdik ), 176 oldalas RFC 2616 specifikl. Ebben a fejezetben csak a legfontosabb rszeket rintjk, akit tovbbi rszletek rdekelnek, az eredeti dokumentumbl tjkozdhat.
A fejezet vgre pontosan ismerni fogjuk a HTTP protokoll mkdst, ami nagy segtsg lesz a weboldalak hibinak feltrsban.
Fbb jellemzk
A HTTP protokollal kt szoftver beszlget egymssal, egy webes kliens s egy webszerver. A webes kliens (angolul client, amit nha gyflnek is fordtanak) legtbbszr a felhasznl ltal elindtott webbngsz program (webbrowser), de lehet brmilyen ms szoftver is, ami rti a HTTP protokollt (pldul egy RSS olvas program), ppen ezrt ltalnossgban a klienseket sszefoglal nven user agentnek szoktk nevezni. A prbeszd msik rsztvevje a webszerver (ms nven webkiszolgl), amely a felhasznl ltal elrni kvnt tartalmat vagy szolgltatst biztostja.
A HTTP legfontosabb jellemzje, hogy egy n. krs-vlasz protokoll a kliens s a szerver kztt. Ez azt jelenti, hogy a kommunikcit mindig (rtsd MINDIG!) a kliens kezdemnyezi azzal, hogy elkld egy HTTP krst (request) a szervernek, aki erre egy HTTP vlasszal (response) vlaszol. Fontos, hogy a webszerver nagyon jlnevelt, ha nem krdezik, nem beszl. A kommunikci sorn teht mindig krs-vlasz prok kvetik egymst, valahogy gy:
6. bra - A HTTP krsek s vlaszok
Ebbl az kvetkezik, hogy a HTTP protokoll nem biztost lehetsget arra, hogy a szerveren
megjelen j informci azonnal megjelenjen a felhasznl bngszjben. A szerver nem
kpes arra, hogy elkldjn egy olyan j informcit a kliensnek, amit a kliens nem krt. Ilyen
teht nincs:
http://tools.ietf.org/html/rfc2616 -
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 14
rdekes mdon felhasznlknt mgis nagyon hasonlval tallkozunk, amikor a Facebookot
alkalmazva azt ltjuk, hogy a msok ltal rt bejegyzsek maguktl megjelennek az
zenfalunkon, vagy amikor a GMail arra figyelmeztet, hogy j levelnk rkezett. Ez csak gy
mkdhet, hogy mikzben mi a weboldalt nzegetjk, a bngsz a httrben (a felhasznl
szmra nem lthat mdon) bizonyos idnknt (pldul percenknt) krseket kld a
szervernek. Ezekre a krsekre a legtbb esetben a szerver azt fogja vlaszolni, hogy nincs
semmi jdonsg, amikor azonban a szerveren j informci keletkezik (pldul rkezik egy
levelnk), akkor a kvetkez krs alkalmval errl a kliens is rteslni is fog. Ezt hvjk a
szerver pollozsnak, a httrben trtn kommunikcit pedig Ajaxnak.
A HTTP msik jellemzje, hogy n. llapotmentes protokoll. llapotnak tekinthet az, hogy egy webruhzban hny termk van ppen a kosarunkban, vagy hogy egy kzssgi oldalra ppen be vagyunk-e jelentkezve. Ezek mind pillanatnyi llapotok, s mikzben hasznljuk a weboldalt, ezek az llapotok megvltozhatnak (pldul az elbb mg res volt a kosarunk, most mr van benne egy karalb). Mivel a HTTP llapotmentes, ezrt ezek az llapotok s azoknak a vltozsa protokoll szinten nem jelenik meg sehol, kr is keresni. Ahogy ksbb ltni fogjuk, ezt a problmt mshogy kell megoldanunk.
A krs s a vlasz
Miutn gy megbeszltk a HTTP legfontosabb jellemzit, ssunk egy kicsit mlyebbre, s nzzk meg, hogy pontosan mi trtnik, mikzben a kliens s a szerver beszlget egymssal!
A webfejlesztk szerszmosldjnak egyik legfontosabb eleme a sajt (de tnyleg!) HTTP forgalmunk elemzsre szolgl eszkz. Ezeket a szoftvereket sszefoglal nven HTTP debugging proxynak hvjk, s gy mkdnek, hogy bellnak a bngsz s a hlzat kz, s a rajtuk tmen forgalmat megmutatjk. Az egyik legknnyebben hasznlhat ilyen eszkz a Fiddler, de nagyon elterjedt a Firefox bngszbe bepl Firebug kiegszts is. Btran teleptsk fel ket, majd nzzk meg pldul a www.example.com oldalt kedvenc bngsznkben, s figyeljk meg, mit mutatnak!
Mg egyszerbb s knyelmesebb a helyzet, ha Internet Explorer 9-et hasznlunk, ott ugyanis a beptett Fejleszti Eszkztr (Developer Toolbar, F12) Hlzat (Network) fln azonnal ltszik a HTTP krs s a vlasz minden rszlete, nincs szksg kls eszkz teleptsre:
http://www.fiddler2.com/http://www.getfirebug.com/http://www.example.com/http://www.microsoft.com/ie -
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 15
7. bra Az Internet Explorer 9 Developer Toolbar Network fln a forgalom minden rszlete lthat
Mikzben elltogatunk egy oldalra, a bngsz az albbihoz hasonl HTTP krst kldi el a szervernek:
GET http://www.example.com/ HTTP/1.1 Accept: */* Accept-Language: en-US,hu-HU;q=0.5 User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64;
Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E; MS-RTC LM 8)
Accept-Encoding: gzip, deflate Connection: Keep-Alive Host: www.example.com Pragma: no-cache
Ahogy lthat, a HTTP egy szveges protokoll, gy a kommunikci nagyon knnyen rtelmezhet. A krs els rsze az n. metdus (method), amivel azt mondjuk meg, hogy milyen mveletet szeretnnk elvgezni. Ez leggyakrabban a letltshez hasznlt GET, vagy a feltltshez hasznlt POST.
A metdust kveti a krt erforrs webcme (itt: http://www.example.com/), majd a protokoll verziszma, ami szinte mindig HTTP/1.1.
A kvetkez sorok n. fejlc sorok, amellyel a bngsz tovbbi informcikat juttathat el a szerverhez. A fenti rszletben pldul egy Accept-Language fejlcben tudatja a bngsz a szerverrel, hogy elssorban angol (en-US), msodsorban magyar (hu-HU) nyelv tartalmat szeretne kapni.
A fejlc sorokat egy res sor kveti, majd utna kvetkezhet a krs trzse (body). Ilyet fknt HTTP POST krsekben lehet ltni (a fenti pldban teht nem), pldul egy rlapba bert szvegek a krsnek ebben a rszben jutnak el a szerverhez.
A szerver erre a krsre egy HTTP vlaszt kld vissza:
HTTP/1.1 200 OK
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 16
Date: Fri, 01 Oct 2010 10:42:07 GMT Server: Apache Last-Modified: Fri, 30 Jul 2010 15:30:18 GMT ETag: "573c1-254-48c9c87349680" Accept-Ranges: bytes Content-Length: 596 Connection: close Content-Type: text/html; charset=UTF-8 (mg folytatdik)
A vlasz els sora a sttusz sor, amiben a szerver ltal tmogatott verziszm (HTTP/1.1) utn egy sttusz kd (200) s egy angol nyelv indokls (OK) tallhat. A krshez hasonlan ezutn a fejlc, majd egy res sor utn a vlasz trzse kvetkezik. A vlasz trzsben kapjuk vissza a krt weboldalt, kpet vagy videt, amit le akartunk tlteni.
Ezek teht a krs s a vlasz ltalnos formi, a kvetkez fejezetekben egy kicsit rszletesebben is megnzzk, hogy az egyes rszek mire jk, milyen rtkekkel tallkozhatunk ott.
GET s POST
Az elz fejezetben lttuk, hogy a HTTP krs legels eleme a metdus, amivel meghatrozzuk, hogy milyen mveletet akarunk elvgezni a szerveren.
A leggyakoribb metdus a GET, amivel egy oldalt, kpet, fjlt, vagy ltalnos nven erforrst tudunk lekrni a szerverrl. Egy msik nagyon gyakori metdus a POST, amivel feltlteni tudunk; pldul egy rlap kitltse utn megadott rtkek legtbbszr HTTP POST krssel utaznak fel a szerverre a krs trzsben.
Egy webalkalmazs ksztse sorn nha dnts el kerlnk, hogy egy adott funkcit egy
GET vagy egy POST mvelettel valstsunk meg. Pldul egy webes levelez oldalon a nem
kvnt levelek trlse elviekben brmelyik mdon megoldhat, melyiket vlasszuk? Hasonl
problma jn akkor is el, amikor a felhasznli felletet tervezzk. A Trls funkcit egy
hiperlink vagy egy gomb (button) valstsa meg? A hiperlink ugyanis alaprtelmezs szerint
egy HTTP GET, mg a gomb egy HTTP POST krst kld a szervernek.
Ha technikailag brmelyiket vlaszthatjuk, akkor clszer aszerint dnteni, hogy a GET
krsek ltalban biztonsgosak, azaz nem vltoztatjk meg a szerver llapott, s tbbszri
vgrehajtsuk ugyanazt az eredmnyt vltja ki, mint az egyszeri. Pldul egy kerti trpe
katalgust tbbszr is letlthetek a szerverrl, vagy a Bingben is lefuttathatom ugyanazt a
keresst tbbszr, nem fj senkinek. Adatok lehvsra teht kivl a GET. Ha azonban adatok
felkldsrl vagy llapotvltozsrl van sz, amik radsul tbbszr vgrehajtva mst
eredmnyeznek, akkor inkbb hasznljunk POST-ot. Egy levl letrlse a Hotmailen
megvltoztatja az llapotot, egy banki tutals pedig tbbszr megismtelve a kvnt
mrtknl jobban apasztja a bankszmlnkat, ezrt ezekben az esetekben inkbb POST
javasolt.
Egy webes rlap (pldul krdv) kitltse sorn tbb HTTP krsre van szksg, amik kztt elfordulnak GET s POST krsek is:
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 17
8. bra - Egy webes rlap kitltsnek folyamata
A krt erforrs cme
A krs msodik rsze a krt erforrs (oldal, kp, dokumentum stb.) pontos cme. A szabvny szerint itt egy egysges erforrs azonostt, n. URI-t (Uniform Resource Identifier) kell megadnunk, ami formailag gy nz ki:
[sma]:[sma fgg rsz]
Elszr teht meg kell adnunk egy smt, majd a kettspont utn azt a szveget, amit a sma ismeretben tudunk rtelmezni. Lssunk r pldt! Ez itt vajon micsoda?
4633714
Csak egy szp nagy szm, de akrhogy nzem, nem derl ki belle, hogy mit kell kezdeni vele, s taln mr az sem emlkszik r, aki iderta. Lehet egy hangya cipmrete, de akr hrom fej kelkposzta ra is (persze ms mrtkegysgben). De ha gy rom le, mindjrt rtelmet nyer:
tel:4633714
A tel sma egyrtelmen megmondja, hogy ez egy telefonszm, errl pedig tudjuk, hogy mit kell csinlnunk vele: be kell nyomkodnunk a telefonunkba. A kettspont eltti rsz teht megmondja, hogy mire j a kettspont utni rsz.
Ezenkvl az URI mg egy dolgot r el, mgpedig azt, hogy ez egyrtelmen azonostson valamit. A fenti telefonszm egyrtelmen azonost egy kszlket, ami csrgni fog, ha felhvjuk. Itt egy msik URI plda, ahol a smbl az derl ki, hogy ez egy e-mail cm, azaz egyrtelmen azonost egy postaldt:
mailto:[email protected]
Ez alapjn mr rtjk az albbi URI-t is, ami azt mondja, hogy ez egy a HTTP protokoll szmra rtelmezhet cm:
http://balassygyorgy.wordpress.com/2010/05/21/facebook-like-button-xss
Csakhogy ennek a cmnek van mg egy rdekessge is: nemcsak hogy egyedileg azonost egy weboldalt, de azt is meghatrozza, hogy hol tallhat ez az oldal az interneten. Konkrtan a balassygyorgy.wordpress.com szerveren a 2010/05/21 mappban, s gy hvjk, hogy facebook-like-button-xss. Ezrt tudja megtallni a bngsz, mert tudja, hogy a gigantikus mret interneten hol kell keresnie. Mivel itt nemcsak azonostsrl, hanem a dokumentum lelhelynek meghatrozsrl is sz van, ezrt az URI elnevezs helyett gyakran hasznljuk az URL, azaz Uniform Resource Locator elnevezst.
Az URL ltalnos formja a kvetkez:
protocol://username:password@FQDN:port/path/file? variable1=value1&variable2=value2#name
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 18
Ell van teht a protokoll, amit opcionlisan egy felhasznlnv s egy jelsz kvethet, amit egy kukac (@) karakter vlaszt el az FQDN-tl. Az FQDN a Fully Qualified Domain Name, azaz a tartomny teljes neve, pldul balassygyorgy.wordpress.com. Az FQDN utn jhet a port szma a szerveren, amit tbbnyire elhagyunk, mert a bngsz tudja, hogy a HTTP protokoll a 80-as portra, a HTTPS protokoll a 443-as portra kapcsoldik. A portszm utn jhetnek mappk s almappk (path), majd vgl a lekrni kvnt fjl neve. A krdjel (?) utn kvetkez n. query stringben tovbbi informcikat adhatunk t a szervernek, amit a szerver tetszleges mdon dolgozhat fel. Ezek a paramterek nv=rtk formban, egymstl & jellel elvlasztva adhatk meg. Az URL legvgn a # karakter utn egy nv kvetkezhet, ami az oldalon belli hivatkozsra utalhat.
Egy webalkalmazs ksztse sorn gyakran elfordul feladat, hogy egy URL-t kell darabjaira
szednnk vagy ppen kt URL egyezsgt kell vizsglnunk. Fontos tudni, hogy br a fenti az
URL-ek szp ltalnos formja van, sajnos egy URL lehet teljesen lczott is, mert a
szabvny megengedi a karakterek kdolst. Pldul ez is egy rvnyes webcm, a bngsz
megrti, ha berjuk neki:
%77%77%77%2E%67%6F%6F%67%6C%65%2E%63%6F%6D
ppen ezrt egy URL feldolgozst manulisan, hagyomnyos string mveletekkel megoldani
nagyon kockzatos, mert knnyen hibzhatunk. A legtbb webalkalmazs programozi
keretrendszer erre biztost beptett lehetsget, pldul ASP.NET platformon a System.Uri
osztly segtsgvel egy csapsra megkaphatjuk az URL brmely rszt.
Az URL-ek kt nagyobb csoportba sorolhatak. Az abszolt URL-ek nem fggnek semmitl, nmagukban egyrtelmen meghatrozzk a krt erforrst. Pldul ez a cm mindig az MSDN Kompetencia Kzpont honlapjn tallhat ASP.NET Indul Kszlet oldalra mutat:
http://www.msdnkk.hu/Pages/InduloKeszlet/ASPNET/Default.aspx
Ez a kezdlap (a Default.aspx oldal) tartalmaz egy kpet, amire a hivatkozs gy trtnik:
ASPNET_Indulo_Keszlet.jpg
Ez a webcm nmagban nem teljes, csak a kezdlap cmhez viszonytva rtelmezhet, ezrt ezt relatv URL-nek hvjuk. Az ebbl kpzett abszolt URL ez lesz:
http://www.msdnkk.hu/Pages/InduloKeszlet/ASPNET/ASPNET_Indulo_Keszlet.jpg
Ha ppen egy msik oldalon lennnk, s ott hivatkoznnk ugyanezzel a relatv URL-lel erre a kpre, akkor mr valsznleg rossz lenne a hivatkozs, s a szerver nem talln meg a fjlt. Rszben ezrt szoktak n. gykr relatv cmeket (root-relative URL) hasznlni. Pldul az albbi egy ilyen URL:
/Storage/balassy/Avatar/avatar.jpg
A sima relatv URL-ekhez kpest az a nagy klnbsg, hogy egy / jellel kezddik, ez jelzi a bngsznek, hogy ne az aktulis oldal mappjhoz csapja hozz ezt a cmet, hanem a szerver neve utn illessze oda. Ez lesz az abszolt cm:
http://www.msdnkk.hu/Storage/balassy/Avatar/avatar.jpg
ltalban jobban szeretnk relatv cmeket hasznlni, mert rvidebbek, olvashatbbak, s ha a weboldalunkat msik szerverre kltztetjk, akkor nem kell a szerver nevt mindenhol trnunk.
Fejlc mezk
Ahogy a HTTP krs s vlasz ltalnos formjnak bemutatsnl lttuk, a bngsz s a szerver is kld fejlc sorokat, melyekben a krt tartalmon kvl tovbbi informcik utaznak. A fejlc sorok
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 19
formailag azonosak, elszr az adott fejlc mez neve ll, amit egy kettspont utn a hozz tartoz rtk kvet.
A kvetkezkben a teljessg ignye nlkl lljon itt nhny rdekesebb fejlc mez jelentse!
Az Accept fejlccel a kliens hatrozhatja meg, hogy milyen tpus fjlt szeretne letlteni, amire mintegy vlaszul a szerver a Content-Type fejlcben adja meg, hogy milyen tpus a fjl, amit visszakld. Szintn megadja hozz a szerver, hogy a letlteni kvnt fjl mekkora (Content-Length fejlc) s hogy ez a szm miben rtend (Accept-Ranges).
A bngsz a kommunikci sorn elg sokat elrul magrl, pldul a User-Agent mezben elkldi a sajt tpust, verziszmt s mg az opercis rendszer verziszmt is, ami alapjn gynyr statisztikk kszthetek szerver oldalon. Szintn elkldi az Accept-Language mezben, hogy a felhasznl hogyan lltotta be a nyelvi opcikat a bngszjben, gy ez alapjn a szerver eldntheti, hogy milyen nyelv tartalmat adjon vissza. St, ha egy oldalra gy jutottunk el, hogy egy msik oldalon kattintottunk egy linkre, akkor a bngsz a hivatkoz oldal cmt egy Referer (igen, a szabvny szerint gy kell rni) nev fejlc mezben elrulja a hivatkozott oldalnak.
A szerver is tud bbeszd lenni, pldul a Server sorban megmondja az tpust, a Date sorban pedig a szerver pillanatnyi dtumt.
Biztos tapasztaltuk mr, hogy egy weboldal els alkalommal kicsit lassabban tltdik be, mint a ksbbi alkalmakkor. Ez gyakran azrt van, mert az oldal egyes rszeit (pldul a kpeket) a bngsz a sajt gyorsttrban eltrolja, gy azokat legkzelebb nem kell letltenie. Hogy mit s mennyi ideig trolhat, azt a szerver hatrozza meg a Cache-Control s az Expires fejlc mezkkel, st ilyen esetekben azt is elkldi, hogy az egyes fjlokat mikor mdostottk utoljra a szerveren (Last-Modified fejlc). Ezt felhasznlva a kvetkez alkalommal a bngsz egy If-Modified-Since fejlc mezvel tudja jelezni a szerver fel, hogy csak akkor kri az adott fjlt, ha az a megadott id utn vltozott. Ha azt tapasztaljuk, hogy br a webszerveren mdostottunk valamit, de az nem jelenik meg a bngszben, akkor vizsgljuk meg a HTTP forgalmat, s figyeljnk ezekre a fejlc mezkre!
J TUDNI: A bngszk prbljk minimalizlni a hlzati forgalmat ezzel is gyorstva az oldal
megjelentst , ezrt a sajt gyorsttrukban igyekeznek eltrolni a szervertl kapott
vlaszokat (vagy legalbb egyes rszeit, pldul a kpeket). Ha teljesen frissteni szeretnnk az
oldalt a bngszben, akkor ne egyszeren az F5 gombot nyomjuk meg, hanem a CTRL+F5
billentyket, vagy a CTRL lenyomsa kzben kattintsunk a Frissts (Refresh) gombra!
Sttusz kdok
A HTTP vlasz legfontosabb rszei ktsgkvl a sttusz kd s a hozz tartoz szveges indokls. A hibakdok hromjegy szmok, melyek az els szmjegy alapjn csoportokba sorolhatak. me a leggyakoribb hibakdok:
o 1xx: Information A HTTP kapcsolattal kapcsolatos tjkoztat zenetek, a gyakorlatban
nagyon ritkn tallkozhatunk velk.
o 2xx: Successful Sikeres krs.
o 200 OK Ez a legjobb s szerencsre leggyakoribb eset.
o 3xx: Redirect tirnyts, a krt tartalom mshol tallhat, amit a Location fejlc
mezben ad meg a szerver.
o 301 Moved permanently A krt tartalom vgrvnyesen tkltztt egy msik cmre,
a bngsz akr meg is jegyezheti az j cmet.
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 20
o 302 Found (temporary move) A krt tartalom ideiglenesen mshol tallhat.
o 304 Not modified A krt tartalom az utols letlts ta nem vltozott. Ezt
vlaszolhatja a szerver, ha a kliens az If-Modified-Since fejlc mezvel jelzi, hogy mi
a nla trolt utols vltozat. Ekkor a krt fjl tartalma nem fog ismt letltdni a
szerverrl.
o 4xx: Client Error Hiba trtnt, ami valsznleg a kliens hibja.
o 401 Unauthorized A kliens olyan oldalt prbl elrni, amihez nincs joga. Ennek az
zenetnek a hatsra a bngsz fel fogja dobni a felhasznlnv s a jelsz
bekrsre szolgl ablakot.
o 403 Forbidden A kliensnek nincs jogosultsga a krt tartalom elrsre.
o 404 Not found Hibs a cm, a megadott cmen nem tallhat tartalom. Clszer
ellenrizni, hogy a krt cmen valban tallhat fjl a szerveren, vagy elgpeltk az
URL-t.
o 5xx: Server Error Hiba trtnt a szerveren.
o 500 Internal server error A szerveren fut webalkalmazsban bels hiba trtnt.
Ezt ltalban a programoz vagy az zemeltet tudja kijavtani.
o 503 Service unavailable A szerveren lellt a szolgltats, ami vagy a tl sok hiba
(ld. 500-as hiba), vagy a tl nagy forgalom (tlterhels) eredmnye.
Ha egy weboldal ksztsekor azt tapasztaljuk, hogy valami nem egszen gy trtnik, ahogy terveztk, akkor clszer megnzni a HTTP forgalmat s megkeresni a hibakdot. Ha pldul egy oldalon nem jelenik meg egy kp, akkor az valsznleg annak ksznhet, hogy elrtuk a kp URL-jt, amire a szerver 404-es hibval fog vlaszolni. Ettl mg az oldal meg fog jelenni, a bngsz nem fog hibt jelezni, de ez a kp hinyozni fog. A HTTP vlaszban lv hibakdbl egyrtelmen kiderl, hogy mirt.
Biztonsgos kommunikci
Ahogy az elz fejezetben lttuk, a HTTP protokoll egy nylt szveges protokoll, ennek ksznhet, hogy knnyen tudtuk rtelmezni a kommunikcit, ami a gyakorlatban nagyban segti a fejleszt munkjt. Sajnos ugyanez a nylt kommunikci a rosszindulat tmadk munkjt is ugyangy segti, ugyanis lehetv teszi a kommunikci egyszer lehallgatst.
Ha illetktelenek ell vdeni szeretnnk a HTTP forgalmat, akkor a HTTP protokoll mellett egy msik protokollt is be kell vetnnk. Ha a HTTP-vel egytt hasznljuk a Secure Sockets Layer (SSL) protokollt is, akkor az eredmny a HTTPS protokoll, ami az albbi kt elnnyel br:
Titkostja a forgalmat, gy az tkldtt informcit nem lehet lehallgatni.
Azonostja a szervert, gy a felhasznl szmra egyrtelm, hogy kinek kldi el pldul a
bankkrtyja adatait.
A nagy krds persze az, hogy amikor felhasznlknt megnyitunk egy weboldalt, ami pldul X banknak mondja magt, akkor honnan tudhatjuk, hogy az valban annak a banknak az oldala? Csak azrt, mert az oldal annak mondja magt, nyilvn nem. (Ennyi ervel brki mondhatn magrl, hogy szemlyesen a Batman.) Az URL alapjn? Az sem j, hiszen az adott bank tetszleges webcmet vlaszthat magnak. Akkor mi a megolds?
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 21
A megolds az, hogy vlasztunk egy megbzhat harmadik felet, akiben a kommunikci mindkt szereplje megbzik, a szerver is s a kliens is. Ha ez a harmadik fl azt lltja, hogy az adott weboldal tnyleg annak a banknak a honlapja, akkor a felhasznl ezt elhiheti.
Ez a gyakorlatban gy trtnik, hogy az adott cg vsrol egy tartomny nevet (pl. xbank.example.com), majd a cget s a tartomnyt igazol dokumentumokkal elmegy egy ilyen megbzhat harmadik flhez, a tanstvny kiadhoz (certification authority). A tanstvny kiad a lehet legalaposabban ellenrzi a dokumentumokat, majd killt egy tanstvnyt (certificate), amely igazolja, hogy a tanstvny tulajdonosa valban az, akinek mondja magt. A cgnek ezek utn fel kell teleptenie ezt a tanstvnyt a webszerverre, s innen kezdve megy minden magtl.
A bngsz, amikor https:// kezdet URL-t lt, akkor automatikusan HTTP helyett HTTPS protokollt fog hasznlni, s a szerver 80-as portja helyett a HTTPS protokollnak megfelel 443-as portjra fog csatlakozni. Lekri a szerver tanstvnyt, s ellenrzi a benne szerepl adatokat:
1. Ellenrzi, hogy tnyleg azt a webcmet nzzk-e ppen, amire a tanstvnyt killtottk.
Nem mindegy, hogy az example.com vagy a www.example.com oldalrl van-e sz.
2. Ellenrzi, hogy a tanstvny nem jrt-e le (ltalban 1 vre szl).
3. Ellenrzi, hogy a tanstvnyt nem vontk-e vissza. Ha egy tanstvny rossz kezekbe
kerl, akkor a tanstvny kiadja visszavonhatja azt.
4. Ellenrzi, hogy a tanstvnyt olyan tanstvny kiad lltotta ki, akiben a bngsz
megbzik.
A megbzhat tanstvnykiadk listja az Internet Explorer Internet Options ablaknak
Content fln, a Certificates gombra kattintva, a felugr ablak Trusted Root Certification
Authorities oldaln tekinthet meg:
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 22
Az Import gombra kattintva lehet olyan tanstvnykiadkat hozzadni a rendszerhez,
melyeket a bngsz beptetten nem ismer.
Ha ezek kzl brmelyik nem teljesl, akkor a tanstvnyt rvnytelennek tekinti a bngsz, s figyelmeztetst fog megjelenteni:
9. bra - Figyelmeztets az Internet Explorerben rvnytelen tanstvny esetn
Az rvnytelen tanstvny azt jelenti, hogy a felhasznl nem tudhatja biztosan, hogy a webszerver valban az-e, akinek mondja magt.
A tanstvny msik felhasznlsa, hogy a benne szerepl informcik felhasznlsval a kommunikci kt szereplje titkostani tudja a forgalmat. Ha egy tanstvny nem rvnyes, attl mg a forgalom titkostsra lehet alkalmas.
A tanstvnyt egy hiteles tanstvny kiadtl kell vsrolni, ha azt szeretnnk, hogy a
bngsz megbzhatnak tekintse. Ha ennek a kltsgeit nem szeretnnk kifizetni, akkor van
lehetsg a tanstvny hzi elksztsre is, az ilyet hvjk nalrt tanstvnynak (self-
signed certificate). Ebben az esetben a fenti ellenrz lista 4. pontja nem fog teljeslni, gy a
bngsz a tanstvnyt rvnytelennek fogja tekinteni, s a felhasznl sem tudhatja
biztosan, hogy kinek a szervervel kommunikl, kivel osztja meg a bizalmas adatait.
Br a kommunikci ebben az esetben is lehet titkostott, nalrt tanstvny esetn a
rosszindulat tmad nagyon knnyen kijtszhatja a felhasznlk figyelmetlensgt, s
belehallgathat a hlzati forgalomba, ezrt nalrt tanstvny helyett mindig clszer
hiteles kiadtl szrmaz tanstvnyt vsrolni.
llapotkezels
Ahogy arrl korbban mr sz volt, a HTTP llapotmentes protokoll, ami azt jelenti, hogy az egyes krs-vlasz prok kztt nincs kapcsolat. Ez valsznleg nem is okozott klnsebb gondot a web megjelensekor, de mra mr elengedhetetlenn vlt, hogy a webruhzakban meg tudjuk tmni a kosarunkat, vagy hogy be tudjunk jelentkezni a kedvenc kzssgi oldalunkra. Azaz a webalkalmazsokban szksgess vlt a felhasznli munkamenet (angolul session) kvetse.
A megoldst Lou Montulli tallta ki a stik, azaz angolul a HTTP cookie-k formjban.
Montullitl azta sokszor megkrdeztk, hogy mirt pont a cookie nevet adta ennek a
technolginak, amire azt szokta vlaszolni, hogy nincs ebben semmi klns, a program
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 23
ltal kapott s vltozatlanul visszakldtt informcidarabkra akkoriban elterjedt elnevezs
volt a magic cookie.
A cookie-k olyan informcidarabkk, amiket az els krsre vlaszolva a szerver elkld a bngsznek, a bngsz pedig minden egyes tovbbi HTTP krsben visszakldi a szervernek. Az tkldtt informci brmi lehet, de mivel a stik mrete korltozott, ezrt az a bevett megolds, hogy a webalkalmazs szerver oldalon trolja az sszes felhasznl munkamenethez tartoz adatait, s a stiben csak egy munkamenet azonost (session ID) utazik.
10. bra - A munkamenet azonost a HTTP krsekben s vlaszokban
A gyakorlatban a cookie HTTP fejlc sorokban utazik, elszr a szerver egy Set-Cookie nev fejlc mezben lltja be a cookie rtkt:
HTTP/1.1 200 OK Set-Cookie: lsd=2EDQr; path=/; domain=.facebook.com
A kvetkez krseknl pedig a bngsz egy Cookie nev fejlc mezben visszakldi azt a szervernek:
GET http://www.facebook.com/home.php? HTTP/1.1 Cookie: lsd=2EDQr;
Fontos, hogy a bngszknek a szabvny szerint gy kell kezelnik a stiket, hogy csak azoknak a weboldalaknak kldjk vissza ket, ahonnan kaptk, gy nem lehetsges az, hogy az egyik webhelyrl kapott stink eljut egy msik webhelyhez.
Ktfle sti ltezik:
A session cookie csak a munkamenet idejre ltezik, s a bngsz memrijban
troldik. Ha a munkamenetnk vget r vagy a bngszt bezrjuk, a sti elveszik.
Az lland stit (angolul permanent vagy persistent cookie) viszont a bngsz a diszkre
menti, gy meglesz akkor is, amikor jraindtjuk a bngszt vagy akr az egsz
gpnket. Amikor egy weboldalra bejelentkezve bejelljk az Emlkezz Rm (jegyezd
meg a jelszavam) opcit, akkor tipikusan ilyen lland sti keletkezik. Az opercis
rendszerben szerencsre minden bngsznek s minden felhasznlnak nll sti tra
van, gy nem fordulhat el, hogy a mi gpnkre bejelentkezve egy msik felhasznl a mi
munkamenetnket folytatja.
11. bra - A bejelentkezs s az Emlkezz Rm opci a Facebookon
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 24
A sti egy egyszer szveges llomny, ahogy az a fenti pldbl is ltszik. nmagban nincs benne semmi veszlyes, ezrt rgtn el is oszlathatjuk azokat a tvhiteket, miszerint a stik vrusokat, felugr ablakokat, kretlen leveleket vagy reklmokat terjesztennek a cookie-k erre nem kpesek. Az viszont igaz, hogy egy sti tartalmazhat szemlyes adatot vagy egy stinek pusztn a ltezse a gpnkn utalhat arra, hogy megltogattunk egy weboldalt. Ha nem szeretnnk, hogy a sti a hlzaton tutazva illetktelen kezekbe kerljn, akkor mindenkppen hasznljunk biztonsgos HTTPS protokollt!
A stikkel kapcsolatos sszes krdsnkre vlaszt kaphatunk az Unofficial Cookie FAQ oldaln.
A HyperText Markup Language Avagy milyen nyelven rtenek a bngszk?
Miutn megfejtettk, hogyan kommuniklnak egymssal a szmtgpeink az interneten keresztl, s megrtettk a kommunikci sorn hasznlt HTTP protokoll minden rszlett, a kvetkez krds az lehet, hogy mit kell visszakldeni a webszervernek a bngsz szmra ahhoz, hogy a felhasznl szmra az eredmny egy weboldal legyen? A HTTP vlasz trzsben a webszervernek egy HyperText Markup Language (az elnevezs magyarul hiperszveges jellnyelvet jelent), azaz HTML formtum dokumentumot kell visszakldenie, ez ugyanis a bngszk nyelve.
A HTML gykerei a nyolcvanas vek vgre nylnak vissza, amikor a svjci CERN1-ben dolgoz fizikus, Tim Berners-Lee azzal a problmval szembeslt, hogy a korabeli dokumentum formtumok nem megfelelek a fizikusok ltal ellltott kutatsi eredmnyek megjelentsre. Az egyik fj pont a kpek, brk, illusztrcik s ltalnossgban a gazdag formzsi lehetsgek hinya volt, a msik pedig az, hogy a kutatsi eredmnyek ltalban egymsra plnek, kapcsoldnak egymshoz, amit az akkori fjlformtumok nem tudtak kezelni. Ezen problmk megoldsra Tim Berners-Lee kt tlettel llt el, melyek a mai napig meghatrozzk a HTML nyelvet:
1. A dokumentum ne csak egyszer szveg legyen, hanem a tartalmat hordoz rszt lssuk
el cmkkkel, melyek kiegszt informcikat (metaadatokat) adnak a szveghez.
Hasonl cl egyszerbb jellseket a nyomdatechnikban mr korbban is hasznltak
(pl. egyszeres alhzs: dlt, ketts alhzs: flkvr bet), itt a nagy jdonsg a
formalizmus s cmkekszlet megalkotsa volt, gy jtt ltre a HTML mint jellnyelv
(markup language).
2. A dokumentumok mutassanak tl nmagukon, azaz olyan hiperszvegeket (hypertext)
tartalmazzanak, amelyek brmely rszlete egy msik dokumentumra hivatkozhat. Ez az,
amit ma gy ismernk, hogy egy weboldalon rkattinthatunk hivatkozsokra (linkekre),
aminek hatsra betltdik egy msik weboldal.
E kt f irnyvonal mentn szletett meg a HTML nyelv els lersa 1991-ben, melynek ma a tovbbfejlesztett s szabvnyostott 4.01-es, hamarosan pedig 5-s verzijt hasznljuk.
A HTML nyelv elemei
A HTML nyelv jellrendszere elemekbl s attribtumokbl pl fel. Az elemekkel tudjuk felcmkzni a szveg egyes rszeit, az attribtumokkal pedig ezeknek a cmkknek a tulajdonsgait tudjuk meghatrozni.
1 A CERN, a Conseil Europenne pour la Recherche Nuclaire (magyarul Nukleris Kutatsok Eurpai Tancsa) a
rszecskefizikai kutatsok eurpai szervezete, a vilg legnagyobb rszecskefizikai laboratriuma, mely a francia-svjci hatron helyezkedik el, Genftl kiss szakra. Forrs: Wikipedia.
http://www.cookiecentral.com/faq/http://hu.wikipedia.org/wiki/CERN -
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 25
Az elemek (angolul element) a szveget formailag egy kezd cmke (start tag) s egy zr cmke (end tag) kz zrjk:
szveg
Az elem elejn a kezd cmkt kacsacsrk kz kell tennnk; a zr cmkt szintn, de ott mg egy per-jelre is szksg van, hogy egyrtelmv tegyk, az az elem vge. A cmkk termszetesen nem fognak megjelenni a weboldalon, hanem csak kiegszt informcikat hordoznak, amiket a bngsz rtelmez.
A cmke viselkedst attribtumokkal tudjuk meghatrozni, melyekbl tbb is kapcsoldhat egy elemhez:
szveg
Az attribtumokat s rtkeiket a kezd cmknl adhatjuk meg, mghozz gy, hogy az rtket idzjelek ("rtk") vagy aposztrfok ('rtk') kz tesszk.
A legtbb elem a fenti formban egy szveg formjt vagy szerept (pl. cmsor) hatrozza meg, de vannak ms jelleg elemek is (pl. sortrs, kp hivatkozs). Ezrt formailag lteznek n. nbezr cmkk (self-closing tag), amelyeknek ilyen egyszer a formjuk:
Termszetesen ehhez is kapcsoldhatnak attribtumok:
Van lehetsg arra, hogy a HTML kdba megjegyzseket (comment) tegynk annak rdekben, hogy ksbb emlkezznk arra, mit mirt csinltunk, vagy hogy ppen a weboldal melyik rsznek a kdjt ltjuk:
Termszetesen ezek a megjegyzsek sem jelennek meg a bngszben, de brki szmra lthatak, aki a bngszben kivlasztja a View Source menpontot, ezrt bizalmas informcikat mg vletlenl se rjunk ide.
J TUDNI: A HTML nyelv eredeti szabvnya a fentieknl lazbb szintaktikt is megenged.
Pldul bizonyos esetekben a zr cmke elhagyhat (pl. j bekezds kezdete egyben az elz
vgt is jelenti), az attribtumok rtkeit nem ktelez idzjelek kz tenni s az nbezr
elemeket sem ktelez jellni. Ezek a lazn formzott HTML dokumentumok azonban sok
bosszsgot okoznak a HTML szerkeszt programoknak s a HTML kdot rtelmez
bngszknek is, ezrt ma mr inkbb XHTML kdot szoks rni, amely az XML (eXtensible
Markup Language) nyelv szigor formai szablyait kveti. A fent ismertetett szintaktika
megfelel ezeknek az elrsoknak.
Fontosabb HTML elemek
Miutn ttekintettk az elemek, cmkk s attribtumok formjt, ismerkedjnk meg a legfontosabb HTML elemek jelentsvel s hasznlatval! Fontos ltni, hogy a HTML nyelvben az elemek nevei rgztettek, nem tallhatunk ki tallomra jabb elemeket, azokat kell hasznlnunk, amik a szabvnyban megtallhatak.
A HTML dokumentum struktrja
A HTML dokumentum els sora az n. Document Type Definition, vagyis a DTD. A DTD hatrozza meg a bngsz szmra, hogy a dokumentum pontosan milyen szabvnyt kvet, gy a bngsz
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 26
pontosan tudni fogja, hogy a szabvnynak abban a verzijban milyen HTML elemek megengedettek, s melyiknek mi a jelentse.
A HTML 4.01 hromfle DTD-t ismer:
1. HTML 4.01 Strict: nem engedlyezi formz elemek hasznlatt, azok helyett mindenkpp Cascading Style Sheets stluslapok segtsgvel kell a formzst elvgezni. Ez a legelterjedtebb DTD:
2. HTML 4.01 Transitional: engedlyezi nhny korbbi, a szabvnybl ksbb kikerlt elem hasznlatt is:
3. HTML 4.01 Frameset: a fentieken kvl keretek (frame-ek) hasznlatt is tmogatja:
Hasonlan ltezik hromfle (strict, transitional, frameset) DOCTYPE deklarci az XHTML 1.0 szabvnyhoz is, az XHTML 1.1 verzihoz azonban csak ez az egy:
A kzelg HTML5 verziban (ami gyakorlatilag egyben az XHTML5 verzi is) szerencsre lnyegesen egyszersdik ez a sor:
Fontos, hogy a HTML fjlunk elejn szerepeljen ez a sor, klnben elfordulhat, hogy a bngsz nem gy jelenti meg az oldalt, ahogy szeretnnk.
A !DOCTYPE utn kvetkezik az oldal n. gykr eleme (root element), a html elem, ami tartalmazza a dokumentum fejlct (head) s trzst (body):
A fejlcben kap helyet a dokumentum cme, amit a bngsz az ablak cmsorban megjelent (title elem) s tovbbi ler informcik (meta elem), amik viszont nem jelennek meg az oldalon, pldul:
Bevezets az internet programozsba
Ennyi tudssal akr el is kszthetjk az els HTML oldalunkat! Ksztsnk egy j szvegfjlt, nyissuk meg a Jegyzettmbbel (Notepad), s rjuk ezt bele:
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 27
Els oldalam Szia Vilg!
Mentsk el a fjlt .htm kiterjesztssel, majd kattintsunk r dupln! Meg fog nylni az elsdleges bngsznk, s gy fog megjelenni az oldalunk:
12. bra - Az els HTML oldalunk
Lthat, hogy a dokumentum trzse (body elem) tartalmazza azokat a HTML elemeket, amelyek alapjn a bngsz megjelenti az oldal tartalmt. A kvetkez fejezetekben ezekkel az elemekkel foglalkozunk.
A szveg struktrja
Ha egy HTML dokumentumban rendezni, formzni szeretnnk a szveget, akkor ezt kizrlag HTML elemekkel tehetjk meg. Azaz hiba tesznk sortrseket a HTML kdba, vagy hiba tesznk egyms utn sok szkzt, a bngszben csak egyetlen szkz fog megjelenni helyette. Pldul trhatjuk az elz pldnk body elemnek kdjt gy:
els msodik harmadik negyedik tdik hatodik
De hiba is erlkdnk a sok szkzzel, sortrssel s tabultorral, a bngszben gy fog megjelenni, mintha csak egyetlen szkzt rtunk volna:
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 28
13. bra - A HTML forrskd trdelse nem jelenik meg az oldalon
Ha msknt szeretnnk, erre szolgl cmkket kell hasznlnunk.
Egy hosszabb szveget a p (paragraph) elem segtsgvel tagolhatunk bekezdsekre:
Els bekezds
Msodik bekezds
Ha egy bekezdsen bell j sort szeretnnk kezdeni, akkor azt a br (break) elemmel tehetjk meg. A br elem nllan ll, nincs sem zr cmkje, sem pedig attribtumai, mindssze ennyi:
A bekezdsek kz cmsorokat tehetnk, mghozz hat mretben, melyeket a h1..h6 (heading) elemekkel jellhetnk:
Fcm Alcm
Rakjuk ssze ezeket egyetlen pldba:
Bekezdsek, cmsorok Ma 2010. oktber 27. van Az v 300. napja a Gergely-naptr szerint. vfordulk
518 ve Kolumbusz Kristf felfedezte Kubt.
(Hivatalosan Kubai Kztrsasg, egykori spanyol gyarmat,ma a legnpesebb karibi orszg.)
85 ve Fred Waller feltallta a vzist.
Mindez gy jelenik meg a bngszben:
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 29
14. bra - Cmsorok s bekezdsek az oldalon
rdemes megfigyelni, hogy a bngsz nagyobb betkkel jelenti meg a cmsorokat, a bekezdsek kztt automatikusan hagy tvolsgot, st a hossz sorok trdelsrl is gondoskodik. Minden HTML elemre igaz, hogy van egy alaprtelmezett megjelensi mdja, amit termszetesen megvltoztathatunk, ha mi msknt szeretnnk. Errl rszletesebben a Cascading Style Sheets c. fejezetben lesz sz.
Ha listkra van szksgnk, akkor ktfle elemet hasznlhatunk attl fggen, hogy szmozott vagy csak egyszer felsorolsos listt szeretnnk megjelenteni az oldalon. A szmozott listk kerett ol (ordered list) elemek jelentik, amin bell az egyes lista tteleket li (list item) cmkk jelzik:
Els Msodik Harmadik
Ha nincs szksgnk a sorszmokra, akkor az ul (unordered list) elemmel egyszer felsorolsos listt kszthetnk:
Piros Fehr Zld
Igny szerint a felsorolsokat s szmozott listkat tbb szint mlyen akr egymsba is gyazhatjuk, a bngsz automatikusan gondoskodni fog a megfelel sorszm vagy lista ikon megjelentsrl. Ez pldul egy tbbszint lista:
Magyarul
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 30
Piros rzsaszn piros vrs bord Fehr Zld Angolul Red White Green
Amit a bngsz gy mutat meg:
15. bra - Tbbszint lista, automatikus szmozssal, ikonokkal, behzssal
A szveg tagolsra hasznlhat mg a hr (horizontal rule) elem is, amely egy vzszintes vonallal vlasztja el a felette s alatta lv tartalmat. A br elemhez hasonlan a hr is nbezr:
A hasznlata nagyon egyszer:
Fels tartalom
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 31
Als tartalom
A bngsz tudja a dolgt:
16. bra - gy jelenik meg a elem az oldalon
Hivatkozsok
Az egyes weboldalaink kztt a kapcsolatot hiperhivatkozsokkal (hyperlink) teremthetjk meg, amit az a (anchor=horgony) elem valst meg:
BME honlap
A nyit s a zr cmke kztt szerepel az a szveg, ami meg fog jelenni a weboldalon, a href attribtumban pedig azt a webcmet kell megadnunk, amire ezzel a hivatkozssal ugrani lehet. A title attribtumba olyan segtsg rhat, amely megjelenik a bngszben, amikor a felhasznl a hivatkozs fl viszi az egeret (n. tooltip). A target attribtumban azt adhatjuk meg, hogy hova tltdjn be a hivatkozott weboldal. Ha az rtke _blank, akkor a bngsz j ablakban fogja megnyitni az oldalt.
17. bra - A fenti hivatkozs kd gy jelenik meg az oldalon
Szintn az a elem hasznlhat oldalon belli ugrsok, pldul tartalomjegyzk vagy az oldal tetejre mutat hivatkozs ltrehozsra. Ehhez meg kell jellnnk a hivatkozni kvnt rszt a name attribtummal:
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 32
Majd az erre mutat linket be kell szrnunk a kvnt helyre:
Ugrs az oldal tetejre
Az a elemen bell tetszleges elem llhat, pldul ha egy kpet szeretnnk kattinthatv tenni, akkor a kp megjelentsre szolgl img elemet tehetjk a link belsejbe:
Szemantikai elemek
Az eddig bemutatott elemek tbbnyire a szveg megjelensn vltoztattak. A tovbbiakban lssunk pr olyan HTML elemet, amelyek jelentst (szemantikt) is trstanak a szveghez! Lttunk mr erre pldt a cmsorok esetn, hiszen a elem azonkvl, hogy megnagyobbtja a szveget mg azt is jelenti, hogy az a pr sz az oldal cme.
Hasonlan az s a elem nemcsak dlten s flkvren jelenti meg a tartalmazott szveget, hanem egyben azt is jelenti, hogy ez hangslyozott illetve kiemelt tartalom:
A fogalmakhoz pldul hasznlhatjuk az em elemet, a feltn szvegekhez pedig a strong elemet.
18. bra - Kiemelsek a szvegben
A elem nemcsak hogy alaprtelmezs szerint sok bngszben dlten jelenti meg a tartalmazott szveget, de azt is jelenti, hogy egy hivatkozott forrsrl van sz:
Douglas Adams Galaxis tikalauz stopposoknak c. mvben vlaszt kaphatunk Az let, A Vilgmindensg Meg Minden nagy krdsre.
19. bra - Forrs megjellse
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 33
A kls forrsbl tvett rvidebb idzeteket a elemmel, a hosszabbakat pedig a elemmel jelezhetjk (ez utbbiban tbb bekezds is lehet,
elemekkel jellve), mindkt esetben az opcionlis cite attribtummal hivatkozhatunk a forrs URL-jre:
Nem vagyok nagy iv. Szilveszterkor kt martini utn megprbltam elrabolni s Kubba trteni egy liftet.
20. bra - A szveg kr automatikusan odakerltek az idzjelek
A rvidtsekhez s mozaikszavakhoz az s elemeket hasznlhatjuk. Ezeknek az elemeknek a trzse mindkt esetben a rvid verzi, a kifejtst a title attribtumban adhatjuk meg. A title attribtumra ltalban az jellemz, hogy a bngszk egy felugr tipp ablakban jelentik meg a tartalmt, gy ha a rvidts fl viszi a felhasznl az egeret, akkor rgtn ltja a rvidts feloldst is:
NASA
Ezek a szemantikai HTML elemek (s a tbbi, amit itt nem tudtunk felsorolni) nagyban hozzjrulnak ahhoz, hogy a weboldalaink ne csak az emberi szem szmra szpen megjelen szvegek legyenek, hanem a szveg egyes rszeinek szerepe a feldolgoz programok szmra is egyrtelm legyen. Pldul a vakok s gyengnltk ltal hasznlt kpernyolvas programok szban jelzik, ha cmet, idzetet vagy rvidtst tallnak.
Tblzatok
A HTML nyelvben egy egsz sor elem szolgl arra, hogy tblzatokat tudjunk megjelenteni az oldalainkon. Egy hrom soros s kt oszlopos tblzatot gy kszthetnk el:
Hnap sszeg sszesen: 600
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 34
Janur 100 Februr 200 Mrcius 300
A tblzatot a elem jelzi, melyben az egyes sorokat (table row), azon bell az egyes cellkat pedig (table data) elemek definiljk. A bngsz itt is ad egy alaprtelmezett stlust az egyes elemeknek:
21. bra - Egyszer tblzat
Ha tbb cellt szeretnnk sszevonni vzszintesen vagy fgglegesen, akkor azt a elem colspan s rowspan attribtumaival tehetjk meg, ahol rtkknt azt kell megadnunk, hogy hny cellt kvnunk sszevonni:
els msodik sszevonva
A cellk kztt a (table header) elemekkel klnbztethetjk meg a fejlc cellkat. Ha preczen jellni szeretnnk, hogy sor vagy oszlop fejlcrl van sz, akkor a scope="col" vagy scope="column" attribtumot kell hasznlnunk.
-
Honlappts a XXI. szzadban 1. fejezet Balssy Gyrgy: Bevezets a web programozsba 35
Ha nagyobb tblzatrl van sz, akkor azon bell clszer jeleznnk a fejlcet, a lblcet s a tblzat trzst, ami pldul az oldal kinyomtatsakor lehet hasznos info