Hallo. Ik ben nieuw op dit forum en ook een beginner met PHP.
Ik ben op het moment een beetje aan het experimenteren met php en wou graag een scriptje maken dat ervoor zorgt dat bepaalde bestanden niet kunnen worden geopend met een browser.
Ik heb dit gemaakt en op elke pagina bovenaan gezet, onder het session_start stukje.
<?php
//Pad van huidig document opvragen
$path = pathinfo($_SERVER['PHP_SELF']);
$dirname = $path['dirname'];
//dirname scheiden met /
$floc = explode('/', $dirname);
//Als het bestand zich in een 2e map bevind
if(!empty($floc[2]))
{
include('../admin/allow.php');
}
else
{
include('admin/allow.php');
}
?>
en admin/allow.php is:
<?php
//Pad van huidig document opvragen
$path = pathinfo($_SERVER['PHP_SELF']);
//Pad dirname en basename samenvoegen
$totalpath = $path['dirname'].'/'.$path['basename'];
//Array aanmaken voor wanneer ingelogd
$logged = array('');
if(isset($_SESSION['login']) && !empty($_SESSION['login']))
{
$logged = array('/Home/uploader.php','/Home/login.php','/Home/admin_gastenboek.php');
}
//Pagina's toegestaan voor iedereen in array zetten
$allow = array('/Home/start.php','/Home/galerie.php','/Home/gastenboek.php','/Home/contact.php','/Home/regels.php','/Home/main_login.php');
//Kijken of het pad is toegestaan
if(!in_array($totalpath, $allow))
{
//Kijken of loggged pad is toegestaan
if(!in_array($totalpath, $logged))
{
//Als file location 2 (dus derde geopende map) niet leeg is
if(!empty($floc[2]))
{
//Locatie naar vorige map verwijzen
header("location: ../start.php");
}
else
{
header("location: start.php");
}
}
}
?>
Ik krijg in Firefox nu een melding dat de pagina niet op de juiste manier doorverwijst en in Internet Explorer een melding dat hij de pagina niet kan weergeven. Alleen in Chrome doet hij het perfect.
Wanneer ik allow.php leeg maak doet hij het wel, maar ik heb geen idee waarom hij verkeerd doorverwijst.
Misschien moet ik er nog bij zeggen dat ik de meeste php bestanden include in de html pagina waardoor hij een paar keer hetzelfde script doorloopt bijvoorbeeld in home/start.php word include('topmenu'); en include('test.php').
Alvast bedankt, Mike
10.261 views