Styre hva som vises av innhold ved hjelp av parametre fra query-strengen:
http://www.foo.invalid/index.php?side=kontakt.html
<?php include 'header.php'; include $_GET['side']; include 'footer.php'; ?>
Dersom vi istedet bruker følgende URL (krever allow_url_fopen config-direktiv):
http://www.foo.invalid/index.php?side=http://www.google.no/index
http://www.foo.invalid/index.php?side=../../mappe/bar
Det er en vanlig feil at man bruker include, når man egentlig bare skal ha inn
statisk tekst.
Dersom man ønsker å sette sammen flere elementer av statisk HTML, så kan man heller
bruke file_get_contents(), readfile()
<?php include 'header.php'; readfile($_GET['side']); include 'footer.php'; ?>
Istedet kan man f.eks bare inludere filer man eksplisitt har inkludert.
<?php include 'header.php'; $foo = array('kontakt' => 'tmpl/kontakt.html', 'omoss' => 'tmpl/omoss.html', 'osvosv' => 'tmpl/osvosv.html'); $side = 'tmpl/index.html'; if (isset($foo[$_GET['side']])) { $side = $foo[$_GET['side']]; } include 'footer.php'; ?>
Eller
<?php $foo = array('kontakt' => 'tmpl/kontakt.html', 'omoss' => 'tmpl/omoss.html', 'osvosv' => 'tmpl/osvosv.html'); include 'header.php'; $side = 'tmpl/index.html'; if (isset($foo[$_GET['side']])) { $side = $foo[$_GET['side']]; } readfile($side); include 'footer.php'; ?>
include bør bare brukes dersom man faktisk ønsker å kjøre PHP-kode i den inkluderte filen.
Bruk istedet file_get_contents(), readfile() el.