Gå til innhold

Php - inkludering av filer


Gjest anonym

Anbefalte innlegg

Hei igjen!

Alle sammen! :ler::ler:

Skal ta et par ting til, før vi faktisk begynner å lage noe som kan brukes...

En VELDIG nyttig ting med php og andre serverproduserte sider er at det er mulig å inkludere andre filer i hovedscriptet.

La oss si at du har en hovedside.

Denne er kalt for index.php, og er den siden som alle treffer når de havner på webben din (forsiden, med andre ord).

Den ser eksempelvis slik ut:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<head>

<title>Vår lille testside</title>

</head>

<body style="background-color: #666666">

<table width="760" border="0" cellpadding="0" cellspacing="0">

<tr>

<td style="background-color: #FFFFFF; border-left: #000000 1px solid; border-top: #000000 1px solid; border-right: #000000 1px solid; border-bottom: #000000 1px solid;">

<br>

Her skal innholdet komme

<br>

</td>

</tr>

</table>

</body>

</html>

Dette vil gi en enkel side med grå bakgrunn, og med en hvit firkant på denne grå bakgrunnen til å fylle innholdet i.

Vel og bra. Men hvis vi tenker oss at alle sidene du lager skal se slik ut, er det jo ingen grunn til å gjenta denne koden på hver eneste side?

En side som består av bare html-kode (ikke php eller noe annet) kalles gjerne en "flat" side. En annen betegnelse som brukes er "siden er hardkodet".

Det som menes med dette er at hvis du skal oppdatere siden må du inn i html-koden for å skrive/redigere tekst og bilder. Hvis du i tillegg skal f.eks. bytte bakgrunnsfarge eller andre ting, må du gjøre dette på hver eneste side.

Hardkodet html er både tungt og slitsomt, og hvis du først har begynt å scripte vil du synes det er helt forferdelig å lage slike sider (jeg synes, i alle fall).

Det vi skal se på nå, er et par enkle måter å effektivisere html'en på, slik at du slipper å skrive den samme koden igjen og igjen.

Dette gjør vi ved å bruke include()-funksjonen i php.

Denne brukes til mange ting, men det den gjør er å hente inn en annen php-fil der du skriver include("filnavn"), og kjøre den.

No comprende? :ler:

Vel, onkel dorian er ikke akkurat noe stort lærer-emne, men vi prøver allikevel :kul:

Hvis vi klipper opp html-koden ovenfor i to biter, legger den ene i en fil vi kaller top.php og den andre i en fil vi kaller bottom.php. Så lager vi hovedfilen som surferne skal lese, og kaller den f.eks. for index.php:

<?PHP

## Dette er top.php - og består av <head> start på <body> samt starten på tabellen ##

?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>

<head>

<title>Vår lille testside</title>

</head>

<body style="background-color: #666666">

<table width="760" border="0" cellpadding="0" cellspacing="0">

<tr>

<td style="background-color: #FFFFFF; border-left: #000000 1px solid; border-top: #000000 1px solid; border-right: #000000 1px solid; border-bottom: #000000 1px solid;">

Det var toppen, så var det bunnen:

<?PHP

## Dette er bottom.php, og inneholder avslutningen på tabellen, og avslutningen av siden ##

?>

</td>

</tr>

</table>

</body>

</html>

Når begge er ferdige kan man inkludere dem i hovedscriptet:

<?PHP

## Dette er hovedfilen (index.php) som inkluderer top.php og bottom.php med innholdet i midten ##

include("top.php");

?>

<br>

Her skal innholdet komme

<br>

<?PHP

include("bottom.php");

?>

Det er omtrent som header og footer i et word-dokument.

Includes begrenser seg jo ikke til topp og bunn, men kan brukes til å inkludere funksjoner (hvis det blir mange av dem), små script eller andre ting som det er hendig å slenge ut i en egen fil.

dorian

Lenke til kommentar
Del på andre sider

Fortsetter under...

Nå kan du lage så mange sider du vil med akkurat det samme utseendet, så lenge du har med include-setningene øverst og nederst på siden.

Fiffig? :briller:

Og hvis du må forandre på utseendet, henter du bare opp top.php, og redigerer der, så vil forandringen synes på alle sidene.

include() har en storebror som heter require(), og som gjør akkurat det samme som include()

Forskjellen på disse er at require() stopper all kjøring av hovedscriptet (index.php) hvis den ikke finner filen som skal require's, mens include nøyer seg med en feilmelding.

Så hvis du har en slags form for autentisering vil du gjerne bruke require() for å inkludere autentiserings-scriptet, slik at ingen kan prøve å kjøre kommandoer på siden allikevel.

zzzzrian :ler:

Lenke til kommentar
Del på andre sider

Me gjer merksam på at php er sjef på serveren, og kan inkludere filer som ligger UTENFOR webkatalogen din.

Det vil si at php har høyere rettigheter enn html, som bare kan finne (og vise frem) filer som ligger i eller i en katalog under webkatalogen.

Vi skal bruke dette senere, når vi skal lage nyhetspubliseringscript!

dorian - gleder vi oss? :ler:

Lenke til kommentar
Del på andre sider

Jeg har lagt ut begge versjonene av denne lille siden.

Her er html-versjonen, uten noen includes:

http://home.no.net/dorian/phpkurs/liten_include.html

og her er php-versjonen, der top og bottom inkluderes som egne filer:

http://home.no.net/dorian/phpkurs/liten_include.php

Som dere ser - liten forskjell utad (men som vi vet: stor praktisk forskjell... :kul: )

dorian

Lenke til kommentar
Del på andre sider

Uffamei, nå har jeg snart postet så mange innlegg at jeg ikke er nybegynner lenger... :roll:

dorian - bekymret for jomfru-statusen sin :ler:

Lenke til kommentar
Del på andre sider

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...