Ah bene grazie, mi hai chiarito le idee ^^ Riguardo alla costante DIRECTORY_SEPARATOR, lo terrò presente, però è un esercizio a scopo didattico e so già che lo script dovrà girare su windows :P
Comunque mi servirebbe ancora un aiuto. In pratica quello che ho scritto era la base, ma l'esercizio vuole che ci siano due sezioni. In pratica anzichè avere una cella (come nel caso precedente) in cui si visualizza l'elenco di file e directory, le celle sono due. Entrambe le sezioni, inizialmente visualizzano il contenuto della cartella "Contenuti", però poi si potrà navigare all'interno delle cartelle in maniera separata, nel senso che io nella prima sezione posso muovermi magari in Contenuti/Dir1/Dir2, mentre nella seconda sezione magari decido di fermarmi a Contenuti/Dir1. Metto un'immagine che magari rende meglio l'idea: . Io dovrei poter navigare nelle directory in una sezione, lasciando l'altra inalterata e viceversa.
Ora, io ho modificato lo script precedente, ma il risultato non è quello sperato, infatti talvolta le sezioni si invertono. Questo lo script:
Codice:
<?php
define("ROOT","Contenuti");
function listadir($dir1=ROOT,$dir2=ROOT){
$h=opendir($dir1);
while(($f=readdir($h))!==FALSE)
{
//se è una directory, la trasformo in link clickabile
if(is_dir("{$dir1}/{$f}")&&($f!='.')){
//se è la directory superiore ".." e non siamo nella directory base
if(($f=='..') && ($dir1!=ROOT)){
$percorso=dirname($dir1);
echo "<a href=\"{$_SERVER['PHP_SELF']}?dir1={$percorso}&dir2={$dir2}\">{$f}</a><BR>";
}
//altrimenti è una directory qualsiasi
elseif($f!='..'){
$percorso="{$dir1}/{$f}";
echo "<a href=\"{$_SERVER['PHP_SELF']}?dir1={$percorso}&dir2={$dir2}\">{$f}</a><BR>";
}
}//fine if is_dir
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">
<!-- SEZIONE 1 -->
<tr>
<td>
<?php
if(isset($_GET['dir1'],$_GET['dir2']) && $_GET['dir1']!='' && $_GET['dir2']!='')
listadir($_GET['dir1'],$_GET['dir2']);
else
listadir();
?>
</td>
<!-- SEZIONE 2 -->
<td>
<?php
if(isset($_GET['dir1'],$_GET['dir2']) && $_GET['dir1']!='' && $_GET['dir2']!='')
listadir($_GET['dir2'],$_GET['dir1']);
else
listadir();
?>
</td>
</tr>
</table>
</BODY>
Pensavo di poter passare i parametri a listadir() in base alla sezione, infatti ho listadir($_GET['dir1'],$_GET['dir2']); oppure listadir($_GET['dir2'],$_GET['dir1']); a seconda della sezione, ma la logica è evidentemente sbagliata. Se qualcuno, potesse indicarmi la via su come procedere... credo che cmq avrò per forza bisogno di una terza variabile per gestire la cosa.