include / allow_url_fopen

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';
      ?>

eksempel
Google er din venn1

Filtrering av input

include bør bare brukes dersom man faktisk ønsker å kjøre PHP-kode i den inkluderte filen.
Bruk istedet file_get_contents(), readfile() el.