KU Leuven
Campus De Nayer
Industrieel ingenieur Opleiding Elektronica-ICT 3e academisch bachelorjaar
WEB TECHNOLOGIE
Academiejaar 2014-15
Lesgever: J. Vennekens Cursustekst ism. H. Crauwels
Inhoudsopgave 1 Overzicht: xhtml, css 1.1 Extensible hypertext markup language . . . . . . . . . . . . . . . . . . . . . . . . . 1.2 Cascading style sheets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1.3 PHP: include . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1 1 2 3
2 De server 2.1 Apache server . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2.2 Het HTTP-protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
5 5 5
3 Dynamische webpagina’s met Python 3.1 Tekst-manipulaties met Python . . . . . . . . . 3.1.1 Nuttige string functies . . . . . . . . . . 3.1.2 Reguliere expressies . . . . . . . . . . . 3.2 Toepassing: verwerking van form gegevens . . . 3.2.1 Overzicht van CGI omgevingsvariabelen 3.2.2 INPUT elementen . . . . . . . . . . . . 3.2.3 SELECT element . . . . . . . . . . . . . 3.2.4 TEXTAREA element . . . . . . . . . . 3.3 Opmerkingen . . . . . . . . . . . . . . . . . . . 3.3.1 Testen van een CGI script . . . . . . . . 3.3.2 Veiligheid . . . . . . . . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
10 10 10 10 13 13 14 16 17 17 17 18
4 PHP: Hypertext Preprocessor 4.1 Inleiding . . . . . . . . . . . . . . 4.2 Basis syntax . . . . . . . . . . . . 4.3 Een eenvoudige form . . . . . . . 4.4 Een form bestaande uit meerdere 4.5 Datums en tijden . . . . . . . . . 4.6 Werken met bestanden . . . . . . 4.7 Cookies . . . . . . . . . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
. . . . . . .
19 19 19 22 25 26 29 33
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
35 35 35 36 37 38 40 40 41 42 43 47 47 47 54
6 ADOdb bibliotheek voor PHP 6.1 Intikken en uitvoeren van een query . . . 6.2 Database abstraction library . . . . . . . . 6.3 Voorbeeld met specifieke mysql connectie . 6.4 Met gebruik van de abstractielaag ADODB
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .
55 55 56 57 58
. . . . . . . . . . . . . . . . . . pagina’s. . . . . . . . . . . . . . . . . . .
5 JavaScript 5.1 Ontstaan . . . . . . . . . . . . . . 5.2 De objecthi¨erarchie . . . . . . . . . 5.3 Variabelen, operatoren en functies 5.4 De controlestructuren . . . . . . . 5.5 Zelf gemaakte objecten . . . . . . . 5.6 Events . . . . . . . . . . . . . . . . 5.6.1 Types . . . . . . . . . . . . 5.6.2 Eventhandlers . . . . . . . . 5.6.3 Events emuleren . . . . . . 5.7 Het window object . . . . . . . . . 5.8 Het document object . . . . . . . . 5.8.1 Properties . . . . . . . . . . 5.8.2 Methods . . . . . . . . . . . 5.9 Opmerkingen . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
I
. . . . . . . . . . . . . .
6.5 6.6 6.7 6.8 6.9 6.10 6.11 6.12 6.13 6.14
Verwerken van de resultaten set . . . . . Resultset in een twee-dimensionale array Functies: recordcount en fieldcount . . . Data manipulatie: insert en delete . . . Selectie vam beperkt aantal rijen . . . . Voorbereiden van een SQL statement . . Transacties . . . . . . . . . . . . . . . . Cached queries . . . . . . . . . . . . . . Genereren van html . . . . . . . . . . . Omvorming naar specifieke formaten . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
60 62 63 64 65 66 67 68 70 71
7 AJAX: Asynchronous Javascript And XML 7.1 Werking . . . . . . . . . . . . . . . . . . . . . 7.2 Voorbeeld . . . . . . . . . . . . . . . . . . . . 7.3 Het XMLHttpRequest object . . . . . . . . . 7.4 Voorbeeld: master-detail select boxen . . . . 7.5 Andere mogelijkheden . . . . . . . . . . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
74 74 76 79 80 82
8 Beveiliging voor HTTP
83
9 XML: eXtensible Markup Language 9.1 Definitie . . . . . . . . . . . . . . . . 9.1.1 Inleiding . . . . . . . . . . . . 9.1.2 Eigenschappen . . . . . . . . 9.1.3 XML versus HTML . . . . . 9.2 XML syntax . . . . . . . . . . . . . . 9.2.1 Elementen . . . . . . . . . . . 9.2.2 Namespaces . . . . . . . . . . 9.2.3 Parsing . . . . . . . . . . . . 9.3 Document Type Definition . . . . . . 9.4 Verwerking . . . . . . . . . . . . . . 9.4.1 DOM . . . . . . . . . . . . . 9.4.2 SAX . . . . . . . . . . . . . . 9.5 XML presentatie . . . . . . . . . . . 9.5.1 CSS . . . . . . . . . . . . . . 9.5.2 XSLT en XSL:FO . . . . . . 9.5.3 Client of server . . . . . . . . 9.6 Toepassingen van XML . . . . . . . 9.7 Referenties . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . .
86 86 86 87 88 88 88 90 90 90 93 94 94 95 96 96 96 97 98
10 XML Schema 10.1 Verantwoording . . . . . . . . 10.2 Schema definitie . . . . . . . 10.3 Terminologie . . . . . . . . . 10.4 Enkelvoudige types . . . . . . 10.5 Samengestelde types . . . . . 10.5.1 Lege inhoud . . . . . . 10.5.2 Enkelvoudige inhoud . 10.5.3 Samengestelde inhoud 10.5.4 Gemengde inhoud . . 10.6 Attributen . . . . . . . . . . . 10.7 Groepen . . . . . . . . . . . . 10.8 Uitbreidbare schema’s . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
100 100 101 102 102 104 105 105 105 108 108 109 110
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
. . . . . . . . . . . .
II
11 XPath 11.1 XPath 11.2 XPath 11.3 XPath 11.4 XPath 11.5 XPath
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
. . . . .
111 111 111 112 114 115
12 XQuery 12.1 Introduction . . . . . . . . . . . . . . . . . . . . . 12.1.1 XQuery Example . . . . . . . . . . . . . . 12.2 XQuery FLWOR Expressions . . . . . . . . . . . 12.2.1 XQuery FLWOR + HTML . . . . . . . . 12.2.2 XQuery Terms . . . . . . . . . . . . . . . 12.3 XQuery Syntax . . . . . . . . . . . . . . . . . . . 12.3.1 XQuery Adding Elements and Attributes 12.4 XQuery Selecting and Filtering . . . . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
116 116 116 117 118 119 119 120 121
13 XSL: EXtensible Stylesheet Language 13.1 Overview . . . . . . . . . . . . . . . . . . . . . 13.2 Introduction to XSLT . . . . . . . . . . . . . . 13.2.1 Example study: How to transform XML 13.2.2 Template Element . . . . . . . . . . . . 13.2.3 Value-of Element . . . . . . . . . . . . . 13.2.4 For-each Element . . . . . . . . . . . . . 13.2.5 Sort Element . . . . . . . . . . . . . . . 13.2.6 If Element . . . . . . . . . . . . . . . . . 13.2.7 Choose Element . . . . . . . . . . . . . 13.2.8 Apply-templates Element . . . . . . . . 13.2.9 XSLT Elements Reference . . . . . . . . 13.2.10 XSLT Functions . . . . . . . . . . . . . 13.3 Voorbeeld . . . . . . . . . . . . . . . . . . . . . 13.4 Introduction to XSL-FO . . . . . . . . . . . . . 13.4.1 XSL-FO Documents . . . . . . . . . . . 13.4.2 XSL-FO Areas . . . . . . . . . . . . . . 13.4.3 XSL-FO Output . . . . . . . . . . . . . 13.4.4 XSL-FO Flow . . . . . . . . . . . . . . . 13.4.5 XSL-FO Pages . . . . . . . . . . . . . . 13.4.6 XSL-FO Lists . . . . . . . . . . . . . . . 13.4.7 XSL-FO Tables . . . . . . . . . . . . . . 13.4.8 XSL-FO and XSLT . . . . . . . . . . . . 13.4.9 XSL-FO Software . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . into XHTML using XSLT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . . . . .
123 123 123 123 124 125 126 126 127 127 128 129 129 131 133 133 134 134 136 136 137 138 139 140
14 Toepassingen van XML 14.1 XTM . . . . . . . . . . 14.2 SOAP . . . . . . . . . 14.3 XFORMS . . . . . . . 14.4 SMIL . . . . . . . . . 14.5 RDF . . . . . . . . . . 14.6 CML . . . . . . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
141 141 141 143 144 146 148
Introduction Nodes . . . . Syntax . . . . Axes . . . . . Operators . .
. . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
. . . . . .
A HTML 4 Block & Level Elements en Inline Elements
149
B XML opgaven
150
III
1 1.1
Overzicht: xhtml, css Extensible hypertext markup language
XHTML is een beschrijvende set van codes voor het indelen en de structuur van een webdocument. Een webpagina moet als een structurele verzameling van gegevens gezien worden. De belangrijkste structuurelementen van een pagina zijn: kopteksten, alineateksten, lijsten, afbeeldingen, hyperlinks en logische secties. De taak van XHTML is om de gegevens op een pagina logisch te structureren: bijvoorbeeld welke tekst is een koptekst, welke tekst een alinea en waar een afbeelding moet komen. Er zijn verschillende subtypes van XHTML, maar in deze cursus zal met de strengste vorm gewerkt worden: XHTML 1.0 Strict: webdocumenten die geen verouderde elementen bevatten en vrij zijn van alle opmaakkenmerken. In het XHTML bestand moet door middel van DOCTYPE het type aangegeven worden: Omdat XHTML gebaseerd is op XML syntax, moet op de eerste lijn van een XHTML bestand een XML declaratie gegeven worden. Deze lijn bevat de XML versie en de character-encoding. In het voorbeeld wordt aangegeven dat het document conform de 1.0 specificatie van XML is en dat de ISO-8859-1 (Latin-1/West European) character set gebruikt wordt. De codes voor een koptekst bijvoorbeeld zijn
...
. Hoe deze koptekst in de browser weergegeven wordt, wordt bepaald door de basisinstellingen van de browser. Het is mogelijk om zelf, als ontwerper van de pagina, ook de weergave van de structuurelementen te bepalen. Maar dit gebeurt niet met XHTML. Hiervoor moet een aanvullende techniek gebruikt worden: CSS (Cascading Style Sheets) dient voor het opmaken van gegevens. Kenmerken van XHTML-documenten. Een XHTML-document is een kaal tekstbestand en bestaat uit pure ASCII-tekst. Het bevat geen codes voor bijvoorbeeld paginanummering, regelafstand of andere formatteringsaspecten. Daardoor is een webpagina platformonafhankelijk. Een XHTML-bestand bestaat uit tekst en tags: • de tekst is de inhoud van de webpagina: datgene wat je via het web wil communiceren naar andere internetgebruikers; • een tag is de code die u als ontwerper aanbrengt om de tekst te structureren (of vorm te geven); tags worden aangegeven door punthaken (‘<’ en ‘>’):
; de tagnaam wordt in kleine letters geschreven. Om een structuurelement aan te geven worden telkens twee tags gebruikt: een openingstag en een sluittag (gelijk aan de begintag, voorafgegaan door een slash, /). Bij veel tags kan een aantal extra elementen opgegeven worden waarmee de functionaliteit van een tag vergroot wordt: • Zo’n attribuut bestaat altijd uit een naam en een waarde, van elkaar gescheiden door een = teken. • Een attribuut wordt altijd in de openingstag opgenomen.
• Een tag kan meerdere attributen hebben; deze attributen en de tagnaam worden van elkaar gescheiden door middel van een spatie. • Tussen naam en waarde staan geen spaties; de naam wordt in kleine letters geschreven, de waarde tussen dubbele aanhalingstekens. Tussen begin- en eindtag staat normaal tekst die moet weergegeven worden. Er bestaan ook tags waarachter geen tekst volgt. De tag dient om een afbeelding op een webpagina te plaatsen. Er is echter geen bijhorende tekst en de begintag zou dus direct moeten gevolgd worden door de
1
sluittag . Men spreekt hier van een leeg element. Hiervoor bestaat een verkorte notatie: op het einde van de begintag wordt direct een slash geplaatst, gevolgd door de punthaak ( />). Er zijn twee soorten structuurelementen: block-level en inline (zie ook appendix A): • basistags: html, head, body, h1, h2, h3, h4, h5, h6, p, pre, blockquote, hr, br; • linking: a met href en name attributen; • prentjes: img en imagemap;
• lijsten: ul, ol, li, dl, dd, dt; • tabellen: table, caption, th, tr, td, attributen rowspan en colspan;
• formulieren: form met attributen method, action en enctype; • tekstvelden: input met types text, checkbox, radio, file, hidden, submit, reset, button; • andere formulierelementen: select met option; textarea; fieldset met legend.
Validatie. Om na te gaan of een pagina aan alle regels voldoet, kan zo’n pagina gevalideerd worden. Het W3C heeft een valideringsservice op validator.w3.org. De Validation Markup Service controleert HTML- en XHTML-documenten op correctheid. Fouten worden gemeld en toegelicht. Specifieke CSS validering kan gebeuren op jigsaw.w3.org/css-validator. Een lokale valideringsservice (zowel XHTML als CSS) is te vinden op http://validator.denayer.wenk.be
1.2
Cascading style sheets
Een style sheet is een verzameling stijlregels, die bepalen hoe elementen in een document door de browser weergegeven moeten worden. De stijlregels kunnen bijvoorbeeld betrekking hebben op het lettertype, de lettergrootte, de kleur van de tekst, de achtergrondkleur en de uitlijning, maar ook op het inspringen en de plaats in het browservenster. Style sheets kunnen op verschillende manieren aan de elementen in een HTML-document gekoppeld worden: een inline stijl, een stijlblok en een extern stijlblad. Hiervoor kunnen onder meer de volgende elementen gebruikt worden: style, meta en link. Elke CSS-regel bestaat uit twee hoofdonderdelen: selector : bepaalt op welk element de regel van toepassing is: een HTML-element of een zelfbenoemd gebied van een pagina (bijvoorbeeld met of <span>); declaratie : de instelling voor de opmaak van het element bestaat uit een eigenschap (keyword) en de waarde (value) van die eigenschap. Een selector kan uit ´e´en of meer declaraties bestaan; elke declaratie wordt afgesloten met een puntkomma (;). Eigenschap en waarde binnen een declaratie worden van elkaar gescheiden met een dubbelpunt (:). Een voorbeeld voor specificatie van het HTML-element body: body { background-color: silver; color: white; font-family: verdana, arial; } Enkele stijleigenschappen :
2
de box de margin de border
breedte en hoogte
margin-top, margin-right, margin-bottom, margin-left en margin border-style, border-color, border-top-width, border-right-width, border-bottom-width, border-left-width, border-width, border-top, border-right, border-bottom, border-left en border padding-top, padding-right, padding-bottom, padding-left en padding width, height
plaatsing van elementen regelhoogte indeling zwevende elementen positioneren
line-height en vertical-align display en white-space float en clear position, top, right, bottom, left, z-index, clip, overflow en visibility
lettertypen
font-family, font-variant, font-style, font-weight, font-size en font
kleur en achtergrond
color, background-color, background-image, background-repeat, background-attachment, background-position en background
tekst
word-spacing, letter-spacing, text-decoration, text-transform, textalign en text-indent
lijsten
list-style-type, list-style-image, list-style-position en list-style
de padding
Plaatsbepaling . Normaal wordt de inhoud van een HTML-document van boven naar beneden in de browser weergegeven. De volgorde waarin de elementen in de code staan, bepaalt de weergave op het beeldscherm. Bijvoorbeeld, twee tekstkolommen naast elkaar of aan de zijkanten geplaatste navigatiebalken is in pure XHTML onmogelijk. Een complexe weblay-out realiseren met tabellen is tegen de geest van het gescheiden houden van structuur (inhoud) en lay-out (opmaak), want een tabel is een structuurelement. Een deel van CSS is gericht op de plaatsing van inhoud (CSS-P) en kan bij voldoende doorzettingsvermogen aangewend worden om de gewenste layout te realiseren. Het visual formatting model bepaalt hoe elementen zich gedragen of met andere woorden de weergave: elk element maakt nul of meer blokken en elk type blok heeft zijn eigen weergave kenmerken. Koppen en alinea’s worden normaal onder elkaar geplaatst terwijl hyperlinks en afbeeldingen naast elkaar gezet worden. Noteer dat het boxmodel (zie hoger) alleen de afmetingen van elementen behandelt. Het positioneringsschema bepaalt hoe de inhoud op het scherm wordt geplaatst: normaal, zwevend of absoluut. Daarnaast kan gebruik gemaakt worden van lagen (layer) waarbij tekst over een afbeelding kan gelegd worden zonder daarbij de hele afbeelding af te dekken. Een indexwaarde bepaalt in welke volgorde de inhoud op elkaar gelegd wordt.
1.3
PHP: include
PHP is een server-side scripting taal (zie verder). Als alternatief voor server-side-include wordt in dit overzichtshoofdstuk toch al ´e´en PHP constructie vermeld. Je kan de inhoud van een bestand aan een PHP bestand toevoegen voordat deze op de server gestart wordt met de include of de require functie. Hiermee kan je headers, footers of andere elementen (bijv. menu’s) gemakkelijk toevoegen aan verschillende pagina’s. Het updaten van je site wordt een stuk gemakkelijker. Je kunt gedeelten die telkens worden weergegeven op je pagina’s opslaan in een extern bestand en de inhoud van dit bestand laten inlezen in de betreffende pagina. Je kunt hier bijvoorbeeld denken aan een menu. Dit menu is hetzelfde voor iedere pagina. Als je iets wilt veranderen aan het menu, dan moet je alle HTML pagina’s van je site wijzigen. Dat kost je een heleboel tijd natuurlijk, zeker als je site uit tientallen of zelfs honderden pagina’s bestaat.
3
In plaats daarvan kan het menu opgeslagen worden in een extern bestand en geinclude worden in de pagina. Wil je iets veranderen aan het menu? Dan hoef je nu alleen dit ene externe bestand waar het menu in staat te wijzigen. De veranderingen zie je daarna op alle pagina’s van je site. Je bespaart hierdoor dus een hoop tijd. Verder wordt ook de totale schijfruimte die je site nodig heeft kleiner, doordat je sommige codes opslaat in ´e´en bestand en je ze niet meer in iedere pagina hoeft op te nemen. De include() functie neemt alle inhoud van een bepaald bestand en neemt dit op in de pagina waarin de include functie staat. Voorbeeld: