Ik heb een functie geschreven waarmee je relatieve urls kunt includen met de volgende structuur:
/dir/file1.php
/file2.php
/file3.php
Bij het uitvoeren van file1.php wordt ../file2.php geinclude. Als je in file2.php file1.php include, zal hij nog steeds ../file2.php includen, maar vanuit het pad van file1.php, en niet dat van file2.php (anders zou het gaan flippen).
Nu werkt er iets nog niet. Ik voer in: "../file2.php", waarna $file wordt gevuld met /dir/../file2.php. Dit pakt hij echter niet bij de file_exists functie, en daar gaat het dur fout. Hoe kan ik er voor zorgen dat hij /dir/../file2.php als /file2.php gaat aanzien zonder dat het bestand werkelijk hoeft te bestaan?
/dir/file1.php
/file2.php
/file3.php
Bij het uitvoeren van file1.php wordt ../file2.php geinclude. Als je in file2.php file1.php include, zal hij nog steeds ../file2.php includen, maar vanuit het pad van file1.php, en niet dat van file2.php (anders zou het gaan flippen).
PHP:
<?php
function relativeInclude($file) {
$root = str_replace($_SERVER['DOCUMENT_ROOT'], '', __DIR__) . '/';
$file = $root . $file;
if(file_exists($file)) {
if(@include($file) == 'OK') {
return TRUE;
} else {
return FALSE;
}
} else {
return $file;
}
}
?>
Nu werkt er iets nog niet. Ik voer in: "../file2.php", waarna $file wordt gevuld met /dir/../file2.php. Dit pakt hij echter niet bij de file_exists functie, en daar gaat het dur fout. Hoe kan ik er voor zorgen dat hij /dir/../file2.php als /file2.php gaat aanzien zonder dat het bestand werkelijk hoeft te bestaan?