Includen van pagina's (verouderd)

Toelichting

Opmerking: dit script is verouderd, een nieuwe versie is via onderstaande link te vinden. Je wordt aangeraden om deze versie te gebruiken: Includen van paginas (nieuw)

Veel mensen werken met een systeem waarbij ze pagina's met informatie includen in een bepaalde hoofdpagina. De te includen pagina's worden dan vaak in de url meegegeven. Dit echter kan een potentieel risico opleveren als zo'n systeem niet goed beveiligd is. Ik zou bijvoorbeeld niet willen dat iemand met website aanroep met index.php?pagina=www.foutesite.com/vervelendscript.php en dat vervolgens vervelendscript.php op mijn server gedraaid wordt.

In dit script zitten verschillende elementen ingebouwd waardoor bovenstaande niet kan voorkomen. Je bent er dus van verzekerd dat alleen de door jou geselecteerde pagina's geinclude worden.

Voorbeeld

Klik hier voor een voorbeeld

Script

Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
ini_set
('display_errors'1);
error_reporting(E_ALL);

function 
include_page($page)
{
    
// $dir: locatie van de te includen paginas.
    // $ext: extensie van de te includen paginas.
    // $allowed: array met namen van paginas die geinclude mogen worden.
    
$dir 'inc/'
    
$extensies = array('.php'); 
    
$allowed = array('voorbeeld''pagina''pagina2'); 
    
    
// Controleer of er een pagina opgegeven is.
    
if(isset($_GET['page']))
    {
        
$page strtolower($_GET['page']);
        
        
// Controleer of pagina wel geinclude mag worden.
        
if(in_array($page$allowed))
        {
            foreach(
$extensies as $ext)
            {
                
// Controleer of de pagina daadwerkelijk bestaat.
                
if(file_exists($dir.$page.$ext))
                {
                    include(
$dir.$page.$ext);
                    return 
true;
                }
                else
                {
                    
$errors[] = '<p><i>De pagina '.$dir.$page.$ext.' bestaat niet (meer).</i></p>';
                }
            }
        }
        else
        {
            
$errors[] = '<p><i>Het is niet toegestaan om deze pagina te includen.</i></p>';
        }
    }
    
    return 
$errors;
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>

<head>

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <title>Jorendewit.nl - PHP Scripts - Include pagina's</title>
    
    <link rel="stylesheet" href="../styles/default.css" type="text/css" media="screen" />
    
    <style type="text/css">
        #include {
            padding: 10px;
            border: 2px solid #EEF7D4;
        }
    </style>    
</head>

<body>

    <div id="wrap">
        <p class="none small align-right"><a href="/view/17/">&lt;-- Terug naar Scripts</a></p>
        <h1>Include pagina's</h1>
        
        <div id="info">
            <p>PHP versie: &gt;= 4.1.0</p>
        </div>
        
        <p>Gebruik onderstaande links om een pagina te kiezen of probeer zelf een pagina te openen door ?page=jouw_pagina achter de URL te zetten.</p>
        
        <p>
            <a href="?page=voorbeeld">Voorbeeld.php</a><br />
            <a href="?page=pagina">Pagina.php</a><br />
            <a href="?page=pagina2">Pagina2.php</a><br />
            <a href="?page=overig">Overig.php</a>
        </p>
        
        <div id="include">    
            <?php
            
// Includen van pagina
            
if(isset($_GET['page']))
            {
                
$result include_page($_GET['page']);
            }
            
            
// Weergeven van meldingen uit het phpscript.
            
if(isset($result) && is_array($result))
            {
                echo 
'<ul>';
                foreach(
$result as $line);
                {
                    echo 
'<li>'.$line.'</li>';
                }
                echo 
'</ul>';
            }
            
?>
        </div>        
    </div>
    
</body>
</html>

Reacties