Denne tutorial vil vise, hvorledes du kan lave en dynamisk hjemmeside med PHP. Det vil blive gennemgået hvordan du lægger design i en fil, og inkluderer alt indhold i denne. På denne måde skal du kun ændre design et sted når du engang ønsker, at lave et nyt. For at kunne bruge denne tutorial skal din server understøtte PHP.
Koden
Du arbejder enten med tabeller eller divs som design element, det er underordnet, men fælles er at du hver gang du laver en ny side skal kopiere hele designet ind i den nye side. Dette vil vi lave om på. Vi tager udgangs punkt i en side som kunne se sådan her ud (smukt design, jeg ved det):
Fin side |
|
Menu |
Her er indhold |
Det første vi skal gøre er, at omdøbe index.html til index.php. Dette gør at det vil være muligt, at afvikle PHP kode i dokumentet. Dernæst skal vi se på hvordan linksne er opbygget. Som der ser ud nu har vi følgende:
<a href="side1.html">Side 1 </a>
<a href="side2.html">Side 2</a>
<a href="side3.html">Side 3</a>
Dette er som sagt ikke særligt dynamisk, og vi ønsker derfor, at gøre sådan, at disse links altid fører til index.php, som indeholder designet af websitet. Samtidig er det også nødvendigt, at viderebringe informationen om hvilken side index.php så skal vise. Dette gør vi vha såkaldte get variabler eller querystrings, som kan sendes med en URL. Vi ændre derfor vores links til følgende:
<a href="index.php?side=side1">Side 1 </a>
<a href="index.php?side=side2">Side 2</a>
<a href="index.php?side=side3">Side 3</a>
Her kan det ses, at ved hvert link sendes brugeren til index.php. Siden der skal loades bliver sendt videre via get variablen side, og det er denne variabel vi skal modtage på index.php og basere indholdet på.
Forberedelse af indholdet
For at gøre det hele nemmere, og også mere sikkert, anbefaler jeg, at du lægger alt dit indhold ind i en mappe som hedder indhold. Ligeledes (for nemhedens skyld) kalder du disse sider .php. I siderne skal der kun ligge indhold, og altså ingen
tags - men kun de html koder omkring indholdet, resten står index.php for.Index.php
I index.php finder vi stedet hvor vores indhold skal vises og indsætter følgende kode:
<?php
include('indhold/'.$_GET['side'].'.php');
?>
include() er [en af] PHPs metode til at inkludere filer med, og ser vi inde i funktionen, skal den gå ind i mappen indhold, og så skal den hente variablen side fra GET/QueryString, som vi jo sender videre fra vores links, og sidst skal den sætte .php på. Klikker man fx på link 1 vi der komme til at stå include("indhold/side1.php" ); helt automatisk.
Forside samt fejlside
Som koden er nu, vil man få en fejlbesked når man kommer ind på forsiden. Dette skyldes at variablen side ikke er sat fra starten af. Ligeledes hvis en bruger ændre sidevariablen vil man få en fejl fordi den ikke findes. Dette vil vi nu fixe. Først laver du en ny indholds side og kalder den 404.php og gemmer den i indholds mappen. Dernæst går du ind i index.php og helt op i toppen af denne indsætter du følgende kode:
<?php
if (empty($_GET['side'])) {
$_GET['side']='forside';
}
?>
Dette vil bevirke, at forside.php vil blive loadet som forside. Vi checker simpelthen med PHPs indbyggede funktion empty() om variablen side er sat, hvis den ikke er det, sætter vi den til forside. Så mangler vi bare fejlsiden. Mange ville lave denne nede i dokumentet ved at checke om den fil der skal inkluderes findes, og hvis ikke inkluderes en 404 fejlbesked. Denne procedure er ikke helt korrekt, da en 404 siden findes ikke fejl, også er nødt til, at have headeren for en 404 fejl side. Derfor laver vi følgende kode efter ovenstående check:
<?php
if (!is_file('indhold/'.$_GET['side'].'.php') || eregi('../',$_GET['side'])) {
$_GET['side']='404';
header('HTTP/1.0 404 Not Found');
}
?>
!is_file() checker om filen vi efterfølgende skal inkludere eksisterer. Hvis den ikke gør det sætter vi side til 404. Dernæst sendes den korrekte header() for en 404 fejl side til browseren. Dette er især vigtigt af hensyn til søgemaskiner, men også egen statistik. Ligeledes checker vi i ovenstående om .. findes i sidevariablen, da dette vil medføre, at forkerte sider kan inkluderes, her anvendes funktionen eregi(), som anvendes til at søge i tekststrenge.
Og vupti, du har nu lavet en dynamisk website, hvor du nemt og hurtigt kan ændre designet på hele siden
Videre med Include
Du kan naturligvis bruge include til, at indhente alle de sider du ønsker. Fx kan du i din index.php vælge, at inkludere din menu, således denne ligger i sin egen fil. Derved får du utrolig god overskuelighed, og det bliver igen endnu nemmere, at vedligeholde siden. Formatet er det samme, fx hvis du ønsker at inkludere menu.php skriver du:
<?php
include('menu.php');
?>
NY Tutorial der følger op på denne: Videre med PHP Include
Læs også: Dynamiske sider med PHP Include - Nu med metatags
Relaterede blogindlæg
- Dynamiske sider med PHP Include - Nu med metatags
- Videre med PHP Include
- Introduktion til Pæne URLs med mod_rewrite
