Navigazione tra file e cartelle, problema percorso
Salve a tutti, devo fare un esercizio, una specie di file manager semplificato, tuttavia mi sono bloccato abbastanza presto. Il codice che ho scritto sembra funzionare, in pratica ho una cartella di partenza (dalla quale in teoria non si potrebbe risalire, ma questo lo devo ancora implementare), e viene visualizzato il contenuto di quella cartella, se è un file viene scritto in maniera testuale, se è una cartella la faccio diventare un link. Se viene clikkato il link , viene visualizzato il contenuto di quella cartella, compresi i due punti "..", che permettono di risalire di livello. Ora, finchè mi addentro nelle cartelle tutto bene, il problema è quando risalgo di livello, a lungo andare mi ritrovo un percorso del tipo "Contenuti/Dir1/dir2/../../Dir1/../Dir1/../..", che non è molto bello, anche se sembra che venga interpretato correttamente. Ho provato ad usare la funzione realpath(), ma sembra peggiorare la situazione.
Il codice è questo:
Codice PHP:
<?php
define("ROOT","Contenuti");
function listadir($dir=ROOT){
$h=opendir($dir);
while(($f=readdir($h))!==FALSE)
{
//se è una directory, la trasformo in link clickabile
if(is_dir("{$dir}/{$f}")&&($f!='.')){
$percorso="{$dir}/{$f}";
echo "<a href=\"{$_SERVER['PHP_SELF']}?dir1={$percorso}\">{$f}</a><BR>";
}
elseif($f!='.' && $f!='..')
//se è un file, lo stampo come testo
echo "{$f}<BR>";
}
closedir($h);
}
?>
<HTML>
<HEAD>
<TITLE>FILE MANAGER</TITLE>
</HEAD>
<BODY>
<table border="1">
<tr>
<td>
<?php
if(isset($_GET['dir1'])&&$_GET['dir1']!='')
listadir($_GET['dir1']);
else
listadir();
?>
</td>
</tr>
</table>
</BODY>
</HTML>
Qualcuno sa come posso risolvere la questione del path? Qualche suggerimento su come procedere? Devo implementare ancora un po' di cose, e sono già bloccato :P