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.
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
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
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/"><-- Terug naar Scripts</a></p>
<h1>Include pagina's</h1>
<div id="info">
<p>PHP versie: >= 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>
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/"><-- Terug naar Scripts</a></p>
<h1>Include pagina's</h1>
<div id="info">
<p>PHP versie: >= 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>