Hallo,

Ik heb het onderhoud van een website overgenomen omdat die persoon er mee stopte. Nu gebruikt de website een constructie waarbij dit script wordt gebruikt. In het linker / rechter gedeelte wordt een menu opgeroepen met include en in het midden wordt het script hieronder gebruikt.
Het werkt prima, maar het heeft 1 nadeel, je moet alle mappen en pagina's aangeven, anders laad hij ze niet. Op zich een prima beveiliging, maar ik vroeg me af of er niet iets is die het zelfde werkt maar dan zelf kijkt welke pagina's er op de server mappen (en submappen) aanwezig zijn.
Mijn kennis van PHP is op dit moment nog niet goed genoeg om het zelf op te lossen dus ik hoop dat iemand mij hiermee wil helpen.

Alvast bedankt.

<?php

// directories waarin gezocht moet worden
// voor de zelfde directory als waarin dit bestand staat: ./
// voor een directory hoger: ../
// gebruik '/' ipv '\'
$dirs = array(
'./',
'xxxxx',
'xxxxx',


);

// default page
$default_page = 'welkom';

// error page
$error_page = 'error404';

// paginas die mogen worden opgevraagd
$pages = array(

'xxxxx',
'xxxxx',
'xxxxx',

);


/*
* HIERONDER NIETS VERANDEREN!
*/

$load = isset($_GET['load'])
? $_GET['load'] // als $_GET['load'] wel gedefinieerd is
: $default_page; // als $_GET['load'] niet gedefinieerd is

if($load == $default_page) {
if(is_file($default_page . '.php')) {
include($default_page . '.php');
} else die('ERROR: default_page does not exsist!');
} else{
$included = false;

// als het bestand mag worden geladen
if(in_array($load, $pages)) {

// kijk voor elke directory of het bestand daarin zit
foreach($dirs as $dir) {
if(! ends_with($dir, '/')) $dir .= '/';

if (is_dir($dir) && is_file($dir . $load . '.php')) {
include($dir . $load . '.php');

$included = true;
break;
}
}
}

// als het bestand niet gevonden is (included == FALSE), errorpagina laden
if(! $included) {
if(is_file($error_page . '.php') ) {
include($error_page . '.php');
}
else die('ERROR: error_page does not exist!');
}
}

/*
* checks if a string ends with a given end_string
* @param string $string the string to check
* @param string $end the string which $string has to end with
*/
function ends_with($string, $end) {
$len = strlen($end);
return ( substr($string, -$len, $len) == $end );
}
?>
</div>

Reageren