Hovedside

Informasjon
- Videointro
- Presentasjon
- Sagt om boka
- Nytt i 4.utgave
- Bruk av boka
- Innholdsfortegnelse
- Stikkordregister
- Prøvekapittel
- FAQ: spørsmål og svar
- Kjøp boka


Ressurser
- Installasjonshjelp
- Kodesnutter
- Løsninger
- Relevante kurs
- Trykkfeil
- Lenker
- Video


Diverse
- Tilbakemelding
- Diskusjonsforum
- Om forfatteren


 
 

Innholdsfortegnelse, Webprogrammering i PHP, 3. utgave

Du kan lese mye om innholdet i ei bok utfra innholdsfortegnelsen. Klikk på lenkene eller rull nedover siden. Du kan også bruke PDF-versjonen for finere utskrift.

Kapittel 1: Kom i gang med PHP
Kapittel 2: Grunnleggende programmering i PHP
Kapittel 3: Kontrollstrukturer
Kapittel 4: Assosiative matriser og skjemabehandling
Kapittel 5: Organisering av kode
Kapittel 6: Innebygde funksjoner for å behandle strenger, datoer og matriser
Kapittel 7: Tilstandsbevaring med skjulte elementer, URL, cookies og sessions
Kapittel 8: Filbehandling
Kapittel 9: Kom i gang med SQL og databaser
Kapittel 10: PHP og databaser
Kapittel 11: Sikkerhet og hacking
Kapittel 12: Alternative presentasjonsformer
Kapittel 13: Veien videre med PHP
Kapittel 14: Programmererens kokebok

Kapittel 1 - Kom i gang med PHP

1.1Hvorfor PHP?   17
1.2Hvordan fungerer PHP?   18
      1.2.1Overordnet om det å programmere i PHP   20
      1.2.2Installasjon   20
      1.2.3Forstå hvorfor PHP fungerer som det gjør   23
      1.2.4Test om alt virker   25
1.3Samspillet mellom klient og tjener   27
      1.3.1Klienten ber en tjener om å sende informasjon   27
      1.3.2Et enkelt PHP-script   28
      1.3.3Resultatet vises i nettleseren   29
      1.3.4Tjeneren sender HTML-kode til klienten   30
      1.3.5PHP og HTML kan blandes   31
      1.3.6Noen detaljer   33
      1.3.7Kommentarer i PHP   34
      1.3.8Viktig notis om XHTML   34
      1.3.9PHP versus JavaScript og Ajax   35
1.4Oppgaver og kontrollspørsmål   36
Til toppen

Kapittel 2 - Grunnleggende programmering i PHP

2.1Variabler   38
      2.1.1Hva er en variabel?   38
      2.1.2Eksempel på variabler og bruk av variabler i PHP   39
      2.1.3Mer fleksibilitet med variabler   40
      2.1.4Kritisk punkt - bli vant til dollartegnet   41
2.2Datatyper   42
      2.2.1Datatypen string og visning av spesialtegn   42
      2.2.2Numeriske datatyper   44
      2.2.3Andre datatyper   45
      2.2.4Lese eller endre datatypen   45
      2.2.5Eksisterer en variabel fra før av?   48
2.3Operatorer og uttrykk   48
      2.3.1Tilordningsoperatoren   48
      2.3.2Sammenslåingsoperatoren for tekststrenger   49
      2.3.3Aritmetiske operatorer   50
      2.3.4Sammenlikningsoperatorene   51
      2.3.5Logiske operatorer   52
      2.3.6Øke og redusere verdier   53
      2.3.7Operatorenes rekkefølge i evaluering av mer komplekse uttrykk   54
2.4Tips, triks og avanserte tema   54
      2.4.1Verdt å vite om tekststrenger i PHP   54
      2.4.2Hurtigere kode   56
      2.4.3Bruk HTML-kode i et PHP-script   56
      2.4.4Konstanter   57
2.5Oppgaver og kontrollspørsmål   57
Til toppen

Kapittel 3 - Kontrollstrukturer

3.1Introduksjon til kontrollstrukturer   60
3.2Beslutninger   61
      3.2.1Varianter av if   61
      3.2.2Switch-strukturen for ulike tilfeller   64
3.3Løkker   66
      3.3.1Å lage tabeller uten løkker   66
      3.3.2While - virkemåte og syntaks   68
      3.3.3While øker fleksibiliteten   68
      3.3.4Kjører løkken slik du ønsker?   69
      3.3.5En hendig variant i do while   70
      3.3.6For-løkker   70
      3.3.7Noen andre faremomenter   72
3.4Mer avansert bruk av kontrollstrukturer   73
      3.4.1Nøsting   73
      3.4.2Tvinge frem avslutning av en kontrollstruktur   75
      3.4.3Elegant bruk av switch   77
3.5Oppgaver og kontrollspørsmål   80
Til toppen

Kapittel 4 - Assosiative matriser og skjemabehandling

4.1Assosiative matriser (arrays) i PHP   82
      4.1.1En matrise har elementer med nøkler og verdier   82
      4.1.2Assosiativt, takk!   83
      4.1.3Løkker + matriser = sant   84
      4.1.4Kontrollstrukturen foreach   86
      4.1.5En kompleks matrise kan inneholde veldig mye informasjon   86
      4.1.6Forklaring til geometrimatrisen   88
4.2Skjema skaper interaktivitet   89
      4.2.1Et skjema for registrering av personlig informasjon   89
      4.2.2Spørrestrengen kan inneholde mye informasjon   91
      4.2.3PHP gir automagisk innhold til superglobale matriser   92
      4.2.4Bruk av metoden POST   95
      4.2.5Feilkilder og måter å aksessere innhold i matriser på   96
4.3Praktisk bruk av matriser og skjema   97
      4.3.1Passord bør maskeres   97
      4.3.2Velg mange ting samtidig med avkrysningsbokser   98
      4.3.3Enklere skjemabehandling med foreach 100
      4.3.4Et skjema kan vises og behandles i samme fil 101
      4.3.5Litt historikk om direktivet register_globals og sikkerhet 104
4.4Oppgaver og kontrollspørsmål 106
Til toppen

Kapittel 5 - Organisering av kode

5.1Inkludering av filer 110
      5.1.1Hvordan fungerer inkludering? 110
      5.1.2Relativ adressering i et hierarki 111
      5.1.3Hvorfor inkludering? 113
      5.1.4En intelligent presentasjon skreddersydd den enkelte 114
      5.1.5Problemer kan løses med noen smarte grep 118
      5.1.6Litt mer avansert 120
5.2Egendefinerte funksjoner 121
      5.2.1Hva er en funksjon? 122
      5.2.2Eksempel på en egendefinert funksjon 123
      5.2.3Funksjon som returnerer en verdi 124
      5.2.4Hvorfor funksjoner? 126
5.3Den gylne middelvei 127
      5.3.1Kombinasjon av inkludering og funksjoner 128
      5.3.2Mot egne funksjonsbiblioteker 129
      5.3.3Utvidelse av lagToppseksjon() 131
      5.3.4Hvilken strategi for organisering bør benyttes? 132
5.4Få en bedre forståelse av funksjoner, avanserte tema 133
      5.4.1Variablenes virkeområde og levetid 133
      5.4.2Kodeordene global og static 135
      5.4.3Valgfrie argumenter 135
      5.4.4Overføring av referanser 137
      5.4.5Dynamiske funksjonskall 138
5.5Oppgaver og kontrollspørsmål 138
Til toppen

Kapittel 6 - Innebygde funksjoner for å behandle strenger, datoer og matriser

6.1Innebygde funksjoner i PHP 142
      6.1.1Automatisk utsendelse av e-post 142
      6.1.2Hvorfor innebygde funksjoner? 144
      6.1.3Funksjonsbiblioteket er meget godt dokumentert 146
6.2Strengbehandling 148
      6.2.1Grunnleggende strengbehandling med funksjoner 148
      6.2.2Strengfunksjoner har en praktisk nytteverdi 150
      6.2.3XSS (Cross Site Scripting) kan unngås med en hendig funksjon 151
      6.2.4Lag din egen passordgenerator - md5() 152
      6.2.5Andre nyttige strengfunksjoner 154
6.3Matriser kan manipuleres med funksjoner 156
      6.3.1Sortering i PHP er lett som en lek 156
      6.3.2Funksjonene implode() og explode() 157
      6.3.3Andre matrisefunksjoner 158
6.4Dato og tidspunkt, bursdag- og bestillingssystem 160
      6.4.1Koder brukes for å finne riktig datoinformasjon 160
      6.4.2Noen datofunksjoner 161
      6.4.3På hvilken dag ble du født? 163
      6.4.4Bestillingssystemer må være brukervennlige 163
6.5Tips, triks og avanserte tema 166
      6.5.1Visualiser matriser og data med var_dump() eller print_r() 166
      6.5.2Triks for å variere antall parametrer i et funksjonskall 167
6.6Oppgaver og kontrollspørsmål 169
Til toppen

Kapittel 7 - Tilstandsbevaring med skjulte elementer, URL, cookies og sessions

7.1Problemet med tilstandsbevaring 174
7.2URL kan skjule mye informasjon 174
      7.2.1Passord 175
      7.2.2Skift farge 176
      7.2.3Bevare informasjon med hjelp av URL 176
      7.2.4Bruk av skjulte elementer - hidden 179
7.3Tilstandsbevaring på klienten - cookies 183
      7.3.1Hva er cookies? 183
      7.3.2Eksempler på problemstillinger som kan løses med cookies 184
      7.3.3Det er enkelt å lagre informasjon i cookies med PHP 185
      7.3.4Les innholdet i en cookie med PHP 187
      7.3.5Andre muligheter med cookies 189
      7.3.6Vedlikehold av cookies på klientmaskinen 190
7.4Tilstandsbevaring på tjeneren med sessions 192
      7.4.1Et enkelt teller-script illustrerer bruk av sessions 193
      7.4.2PHPSESSID er nøkkelen til suksess 194
      7.4.3Eksempel: Innlogging leder til interne sider 197
      7.4.4Med fokus på sikkerhet og robusthet over tid 199
7.5Oppgaver og kontrollspørsmål 202
Til toppen

Kapittel 8 - Filbehandling

8.1Informasjon kan lagres på filer over tid 206
8.2Kom i gang med filbehandling 207
      8.2.1Viktige begreper 207
      8.2.2Filoperasjoner utføres ved å kalle funksjoner 208
      8.2.3En teller for et nettsted i enkel og mer fancy utgave 211
      8.2.4Problem med flere samtidige brukere og mange oppdateringer 214
      8.2.5Funksjoner for å vise informasjon om filer 214
8.3Lag din egen gjestebok 215
      8.3.1Strategi for lagring 217
      8.3.2Presentasjon av innholdet i gjesteboka 219
      8.3.3Morsomt, men er det sikkert? 220
8.4Opplasting av filer for å lage et bildegalleri 221
      8.4.1Skjema for opplasting 222
      8.4.2Behandle mottatt fil 223
      8.4.3Sikkerhet og filopplasting - mulige XSS-angrep 227
8.5Oppgaver og kontrollspørsmål 227
Til toppen

Kapittel 9 - Kom i gang med SQL og databaser

9.1Litt nødvendig databaseteori 230
      9.1.1Hva er en database? 230
      9.1.2Et større eksempel gir en praktisk gjennomgang av teorien 231
      9.1.3Fra en til flere tabeller 232
      9.1.4Normalisering og relasjoner 234
9.2Kom i gang med MySQL 237
      9.2.1Hvorfor MySQL? 237
      9.2.2Noen ord om mysqli 238
      9.2.3Er det støtte for MySQL, og er det installert? 238
      9.2.4Klient og tjener - viktige prinsipper 239
      9.2.5Et smart verktøy for enkel databaseadministrasjon 240
      9.2.6Verdt å kjenne til om SQLite og PEAR 241
9.3Hva er spørringer? Lær deg SQL på 1-2-3! 242
      9.3.1Lag en tabell med phpMyAdmin 243
      9.3.2Behandle databaser med SQL 246
      9.3.3INSERT brukes for å legge inn nye rader 247
      9.3.4Enkel bruk av SELECT for å hente ut informasjon 248
      9.3.5Avgrensning av resultatet 250
      9.3.6Oppdatering, endring og sletting av informasjon 251
      9.3.7MySQL har et rikt utvalg av funksjoner 254
9.4Oppgaver og kontrollspørsmål 256
Til toppen

Kapittel 10 - PHP og databaser

10.1Grunnleggende databasefunksjoner i PHP 258
      10.1.1Presenter alle kontaktpersoner på web 258
      10.1.2Opprette en tabell med PHP 261
      10.1.3Skjema for å registrere nye prosjekter 262
      10.1.4PHP-script med dynamiske SQL-spørringer 264
      10.1.5Notis om feilhåndtering 267
10.2Et større eksempel - sidene til Nettverksuniversitetet 270
      10.2.1Grensesnittet for å opprette en ny nyhet 271
      10.2.2Databasetabellen nyheter er sentral 273
      10.2.3Ved opprettelse av en ny nyhet må inngangsdata sjekkes 274
      10.2.4Opplasting av bilde og innlegging av nyheten 277
      10.2.5Visning av forsiden 279
      10.2.6Vise all informasjon om én eller alle gamle nyheter 281
      10.2.7Grensesnittet for administrasjon av eksisterende nyheter 282
      10.2.8Koden for å endre eller slette en nyhet 284
      10.2.9Siste script - koden for å utføre endringene 288
10.3Oppgaver og kontrollspørsmål 289
Til toppen

Kapittel 11 - Sikkerhet og hacking

11.1Introduksjon til datasikkerhet 292
      11.1.1En restaurant som tilbyr nugatti i stedet for reker på loffen 292
      11.1.2Vårt fokus på sikkerhet så langt 294
11.2Sikkerhet ved bruk av databaser 296
      11.2.1Riktig brukernavn og passord må til for å logge inn, eller ...? 296
      11.2.2SQL-injection 298
      11.2.3Stor skade kan påføres med SQL-injection 300
      11.2.4Det er enkelt å unngå SQL-injection, så gjør det! 303
      11.2.5Privilegier i SQL 305
      11.2.6Lagre passord som hash, ikke i klartekst 307
11.3Validering av inngangsdata 310
      11.3.1Bruk av validering med JavaScript på klienten 311
      11.3.2Validering på tjenersiden 312
      11.3.3Hva er regulære uttrykk? 313
      11.3.4Regulære uttrykk kan brukes til validering av inngangsdata 315
      11.3.5Foreta avansert strengbehandling med regulære uttrykk 317
11.4Strategier for adgangskontroll 319
      11.4.1Hindre bakdører inn i systemet 320
      11.4.2Autentisering med HTTP 322
      11.4.3Tvinge frem 401-feil med kode for å få opp passordboksen 323
      11.4.4Aksesskontroll med Apache gjennom bruk av .htaccess 325
11.5Sikkerhet er mye mer enn sikker kode 328
      11.5.1Innstillinger i php.ini 328
      11.5.2Oppsett av Apache 328
      11.5.3Oppsett av databasetjener 329
      11.5.4Logging 329
11.6Oppgaver og kontrollspørsmål 331
Til toppen

Kapittel 12 - Alternative presentasjonsformer

12.1Lag grafikk og bilder med PHP 334
      12.1.1Er alt klart til å lage grafikk med PHP? 334
      12.1.2Hva er et bilde i Internett-sammenheng? 335
      12.1.3Funksjoner for å generere bilder 338
      12.1.4Geometriske figurer 339
12.2Mer dynamikk i din grafikk 342
      12.2.1Lag et bilde basert på brukerdata 342
      12.2.2Lage mange like menyknapper med varierende tekst 345
      12.2.3Grafikk basert på innholdet i en database 347
12.3Andre former for presentasjon 350
      12.3.1Vis informasjon i for eksempel et Excel-regneark 350
      12.3.2PDF 352
12.4Oppgaver og kontrollspørsmål 353
Til toppen

Kapittel 13 - Veien videre med PHP

13.1Objektorientering (OOP) i PHP 356
      13.1.1Hvorfor OOP? 356
      13.1.2Å lage en klasse 356
      13.1.3Å lage objekter basert på en klasse 358
13.2XML i PHP 360
      13.2.1Eksempel på et XML-dokument 360
      13.2.2Bruk av SimpleXML er enkelt - men kraftig 361
13.3Templates (maler) 362
      13.3.1Det handler om å skille innhold fra presentasjon 363
      13.3.2Et enkelt eksempel illustrerer konseptet 363
      13.3.3Fundamentale forskjeller mellom ulike Template-systemer 366
13.4Kom i gang med SQLite 368
      13.4.1Prosedural tilnærming til SQLite 368
      13.4.2Objektorientert tilnærming til SQLite 370
      13.4.3Fare for SQL-injection 370
      13.4.4Funksjoner i spørringer 371
      13.4.5Noen andre finesser i SQLite 372
13.5PEAR - PHP Extension and Application Repository 373
13.6Annet 373
13.7Oppgaver og kontrollspørsmål 374
Til toppen

Kapittel 14 - Programmererens kokebok

14.1Hvorfor kokebok her? 376
      14.1.1Hvordan er oppskriftene organisert og oppbygd? 376
14.2Diverse triks for å løse detaljer 377
      14.2.1Skriv ut på entalls- eller flertallsform 377
      14.2.2Skriv ut alle matriseelementer med komma mellom 377
      14.2.3Lag variabler av matriseelementer 378
      14.2.4Bytt om på innholdet i variabler 379
      14.2.5Lag en streng med tilfeldige tegn 379
      14.2.6Konverter eksisterende HTML-kode til PHP 380
14.3Kommunikasjon med brukere 380
      14.3.1Lag nedtrekkslister med forhåndsvalgt dagens dato 381
      14.3.2Velg flere verdier samtidig i avkrysningsbokser 381
      14.3.3Slett en cookie (informasjonskapsel) 381
      14.3.4Oversiktlig visning og behandling av skjema 382
      14.3.5Innloggingsfunksjonalitet på et nettsted 383
      14.3.6Innlogging og utlogging i praksis 383
      14.3.7Send uautentiserte personer til en innloggingsside 384
      14.3.8Lag grafikk dynamisk basert på data fra brukeren 385
14.4Håndtere og finne feil 386
      14.4.1Tilordning eller sammenlikning? 386
      14.4.2Er inngangsdata som forventet? 386
      14.4.3Rens alt som mottas fra brukeren 387
      14.4.4Fang opp feil når du programmerer med PHP 387
      14.4.5Rapporter feil som oppstår på et nettsted 388
14.5Data fra eksterne kilder - filer og databaser 389
      14.5.1Håndtere blanke linjer når informasjon lagres på fil 389
      14.5.2Hent og behandle innhold fra en kommaseparert fil 390
      14.5.3Unngå feil i spørringer 390
      14.5.4Strategi for å slette fra en database 391
      14.5.5Opplasting av filer fungerer ikke 391
14.6Mer komplekse problemstillinger 392
      14.6.1Kjenn dine besøkende 392
      14.6.2Send e-post i form av HTML 393
      14.6.3Lag en handlekurvløsning 393
      14.6.4Presenter informasjon fra en database ryddigst mulig 394
Til toppen

Stikkordregister på side 395 - 402