Goedenmiddag,

Ik wil graag het inmiddels uitgefaceerde ereg vervangen door preg_match

<?php
///######## CONTROLEREN OF HET BESTAND NIET DIRECT AANGEROEPEN WORDT
if(!ereg("index.php", $_SERVER['SCRIPT_FILENAME'])){
//Geef een foutmelding,
echo "toegang gewijgerd";
//Uitvoer van andere code stoppen
exit();
}
?>

Nu gaat het mij erom dat de bestanden alleen door index.php aangeroepen kunnen worden.

En blokkeerd zodra door een ander bestand aangeroepen wordt.

Ik heb nu de volgende code :

<?php
///######## CONTROLEREN OF HET BESTAND NIET DIRECT AANGEROEPEN WORDT
if(!preg_match("/^index.php/", $_SERVER['SCRIPT_FILENAME'])){
//Geef een foutmelding,
echo "toegang gewijgerd";
//Uitvoer van andere code stoppen
exit();
}
?>

Maar dat werkt niet.
En echt mijn fout kan ik ook niet ontdekken.
Ik dacht dat ik het zo goed gedaan had. Maar blijkbaar niet.

Ziet hier iemand mijn fout misschien?
geef hem is voor de zekerheid een match mee,

<?php
if(!preg_match("/^index.php/", $_SERVER['SCRIPT_FILENAME'], $url)) {
}
?>

wat krijg je als error? heb je dit bovenaan je pagina staan?

<?php
/*
* Error reportin 1 is aan 0 is uit
*/
ini_set('display_errors', 1);
error_reporting(E_ALL | E_STRICT);
?>
Alex, dat klopt. "/^index.php/" betekent dat de string moet beginnen met "index.php". (^ betekent begin van regel.)
$_SERVER['SCRIPT_FILENAME'] is op mijn server: "/var/www/test/index.php" dus dat begint niet met index.php. Conclusie: haal het dakje (^) weg.
Goedemorgen!! Dank jullie wel voor de reacties!!
De oplossing was het volgende :
<?php
///######## CONTROLEREN OF HET BESTAND NIET DIRECT AANGEROEPEN WORDT
if(!preg_match("/index.php/", $_SERVER['SCRIPT_FILENAME'])){
//Geef een foutmelding,
echo "toegang gewijgerd";
//Uitvoer van andere code stoppen
exit();
}
?>

Dus wat Ivo zei klopt!! Super bedankt!!!!

Reageren