- Home
- Categorie
- Coding e Sistemistica
- PHP
- [Tutorial] Esplorare le cartelle
-
[Tutorial] Esplorare le cartelle
Brevissimo tutorial, su come navigare all'interno di cartelle e sottocartelle, la base di un vero e proprio filemanager.
La visualizzazione delle cartelle è sopra i file.
Spero possa essere utile a qualcunomanager.php
[php]
<?
// Prendo dalla variabile get la cartella che voglio esplorare
$c = (isset($_GET['c'])) ? $_GET['c'] : '';// Nome della cartella
$car = 'cartella/'.$c.'/';function GetFile($car)
{
global $c;
// Se non è un cartella esco
if(!is_dir($car))
return 0;// Opendir è la funzione per aprire la cartella
$handle = opendir($car);// Ciclo la cartella
while (false !== ($files = readdir($handle)))
{
// Stampo i file
if ($files != '.' && $files != '..')
{
if(is_dir($car.$files))
$vc[] = $files;
else
$vf[] = $files;
}}
// Se sono in una cartella mostro il pulsante per andare alla cartella principale
if($c != '')
echo '<a href="manager.php">Pagina Principale</a><br>';// Stampo le cartelle e i file echo 'Catelle:<br>'; for($i=0; $i<count($vc); $i++) echo '<a href="manager.php?c='.$c.'/'.$vc*.'">'.$vc*.'</a><br>'; echo 'File:<br>'; for($i=0; $i<count($vf); $i++) echo $vf*.'<br>';
}
// Richiamo La funzione
GetFile($car);
?>
[/php]Con sti tutorial sto diventando noioso
-
Assolutamente no
Continua continua che io appunto tutto
-
TheDarkIta, ti posso dire una cosa?
Ad ogni funzione di php devi mettere perforza return() altrimenti leggi l'errore che ti dà, se non sai che mettere a return() metti true
-
Che errore da?
-
Ciao a tutti
ho provato il codice e funziona egregiamente...
Ho inserito la funzione per rendere il file cliccabile ma non mi si apre correttamente e poi vorrei visualizzare solo file con estensione .txt.
Vi posto il codice modificato:
[php]<?
// Prendo dalla variabile get la cartella che voglio esplorare
$c = (isset($_GET['c'])) ? $_GET['c'] : '';// Nome della cartella
$car = './'.$c.'/';function GetFile($car)
{
global $c;
// Se non è un cartella esco
if(!is_dir($car))
return 0;// Opendir è la funzione per aprire la cartella
$handle = opendir($car);// Ciclo la cartella
while (false !== ($files = readdir($handle)))
{
// Stampo i fileif ($files != '.' && $files != '..')
{
if(is_dir($car.$files))
$vc[] = $files;
else
$vf[] = $files;}
}
// Se sono in una cartella mostro il pulsante per andare alla cartella principale
if($c != '')
echo '<a href="testhome.php">Pagina Principale</a><br>';// Stampo le cartelle e i file echo 'Catelle:<br>'; for($i=0; $i<count($vc); $i++) echo '<a href="testhome.php?c='.$c.'/'.$vc*.'">'.$vc*.'</a><br>'; echo '<br>'; for($i=0; $i<count($vf); $i++) echo '<a href="testhome.php?c='.$c.'/'.$vc*.'/'.$vf*.'">'.$vf*.'</a><br>';//ho modificato questa sezione
}
// Richiamo La funzione
GetFile($car);
?> [/php]
Grazie per l'aiuto.Manuel.
-
Per rendere i file txt cliccabili dovresti fare cosi:
[php]
<?php
// Prendo dalla variabile get la cartella che voglio esplorare
$c = (isset($_GET['c'])) ? $_GET['c'] : '';// Nome della cartella
$car = 'cartella/'.$c.'/';function GetFile($car)
{
global $c;
// Se non è un cartella esco
if(!is_dir($car))
return 0;// Opendir è la funzione per aprire la cartella
$handle = opendir($car);// Ciclo la cartella
while (false !== ($files = readdir($handle)))
{
// Stampo i file
if ($files != '.' && $files != '..')
{
if(is_dir($car.$files))
$vc[] = $files;
else
$vf[] = $files;
}}
// Se sono in una cartella mostro il pulsante per andare alla cartella principale
if($c != '')
echo '<a href="manager.php">Pagina Principale</a><br>';// Stampo le cartelle e i file echo 'Catelle:<br>'; for($i=0; $i<count($vc); $i++) echo '<a href="manager.php?c='.$c.'/'.$vc*.'">'.$vc*.'</a><br>'; echo 'File:<br>'; for($i=0; $i<count($vf); $i++)
if(substr($vf*, -3, 3) == 'txt')
echo '<a href="'.$car.$vf*.'">'.$vf*.'</a><br>';
}// Richiamo La funzione
GetFile($car);
?>
[/php]
Non ho testato, facci sapere se funziona correttamente.
-
Grazie Trackback
funziona alla grandissima.
Pensa che non ci ho dormito per notti per risolvere questo problema con un codice scritto da me.
Sai cosa?, stavo spulciando il manuale php
perchè per quello che serve a me...
mi servirebbe togliere l'estensione txt e vedere il solo titolo del file.
In ogni caso il file funziona perfettamente
e mi hai dato una grossa mano
a buon rendere.
-
Prova cosi:
[php]
<?php
// Prendo dalla variabile get la cartella che voglio esplorare
$c = (isset($_GET['c'])) ? $_GET['c'] : '';// Nome della cartella
$car = 'cartella/'.$c.'/';function GetFile($car)
{
global $c;
// Se non è un cartella esco
if(!is_dir($car))
return 0;// Opendir è la funzione per aprire la cartella
$handle = opendir($car);// Ciclo la cartella
while (false !== ($files = readdir($handle)))
{
// Stampo i file
if ($files != '.' && $files != '..')
{
if(is_dir($car.$files))
$vc[] = $files;
else
$vf[] = $files;
}}
// Se sono in una cartella mostro il pulsante per andare alla cartella principale
if($c != '')
echo '<a href="manager.php">Pagina Principale</a><br>';// Stampo le cartelle e i file echo 'Catelle:<br>'; for($i=0; $i<count($vc); $i++) echo '<a href="manager.php?c='.$c.'/'.$vc*.'">'.$vc*.'</a><br>'; echo 'File:<br>'; for($i=0; $i<count($vf); $i++)
if(substr($vf*, -3, 3) == 'txt')
echo '<a href="'.$car.$vf*.'">'.substr($vf*,0,strlen($vf*)-4).'</a><br>';
}// Richiamo La funzione
GetFile($car);
?>
[/php]
-
Ti ringrazio davvero molto
Funziona perfettamente
Grazie Thedarkita davvero
Sto cercando di imparare il php
Ma non essendo il mio primo lavoro...
Non ho tantissimo tempo..
Ci sentiamo continuo i miei test
Ciao grazie ancora
-
Ciao Thedarkita
Stavo stavo testando il codice, che va alla grande come ti dicevo,
ma mi sono accorto che i file non sono in ordine alfabetico...
Stavo scervellandomi per ordinarlo
o in ordine alfabetico oppure per uultima modifica
mi puoi dare un ultima mano?
Se puoi ti ringrazio molto.
Buona giornata.
-
Prova così:
[PHP] <?php
// Prendo dalla variabile get la cartella che voglio esplorare
$c = (isset($_GET['c'])) ? $_GET['c'] : '';// Nome della cartella
$car = 'cartella/'.$c.'/';function GetFile($car)
{
global $c;
// Se non è un cartella esco
if(!is_dir($car))
return 0;// Opendir è la funzione per aprire la cartella
$handle = opendir($car);// Ciclo la cartella
while (false !== ($files = readdir($handle)))
{
// Stampo i file
if ($files != '.' && $files != '..')
{
if(is_dir($car.$files))
$vc[] = $files;
else
$vf[] = $files;
}}
// imposto l'ordinamento alfabetico ai contenuti degli array
sort($vc);
sort($vf);// Se sono in una cartella mostro il pulsante per andare alla cartella principale if($c != '') echo '<a href="manager.php">Pagina Principale</a><br>'; // Stampo le cartelle e i file echo 'Catelle:<br>'; for($i=0; $i<count($vc); $i++) echo '<a href="manager.php?c='.$c.'/'.$vc*.'">'.$vc*.'</a><br>'; echo 'File:<br>'; for($i=0; $i<count($vf); $i++)
if(substr($vf*, -3, 3) == 'txt')
echo '<a href="'.$car.$vf*.'">'.substr($vf*,0,strlen($vf*)-4).'</a><br>';
}// Richiamo La funzione
GetFile($car);
?> [/PHP]In sostanza ho adoperato la funzione sort() per ordinare gli array che accumulano i nomi delle cartelle e dei files presenti nella directory specificata.
-
Ciao grazie molte.
Si va tutto ok tranne una cosa:
alla fine quando ti trovi nell'ultima directory
e c'è la lista dei file,
spunta l'errore:
Warning: sort() expects parameter 1 to be array, null given in
perchè lui non trova più directory essendoci solo file...
Sto cercando di rimediare
Grazie comunque.
-
Puoi ovviare un paio modi:
- Definisci i due array all'inizio della funzione ( es: $vc = array(); )
- Fai un bel controllo per entrambi del tipo: if (is_array($vc)) sort($vc);
Prova e fammi sapere
-
Grazie si adesso è davvero tutto ok.
Scusami ma sto imparando il php di sana pianta,
visto che tutti i miei siti li ho creati con buoni script per carità
e vanno bene
però ho l'esigenza di imparare il php il più possibile....
Adesso ero curioso su come ordinarli
per data di modifica o di upload...
quindi stavo cercando di imparare il comando filemtime
combinato con il sort
Comunque grazie ancora ...
-
Ciao scusate ma avrei bisogno di un ulteriore aiuto.
È tutto il giorno che ci sbatto la testa ma
non riesco ad ottenere un' altra funzione.
Sto cercando di crearmi un un file.php che legga, come il precedente,
i file in tutte le cartelle e sottocartelle
,
ma che mi visualizzi gli ultimi 10 file uploadati da me,o comunque modificati da poco.
Sto studiando i vari comandi sort e filemdate
ma per ora pochi risultati...
Se mi date ancora qualche dritta
mi fate un grosso piacere.
In questi anni ho fatto solo il grafico,
ed è da poco che mi cimento con il php.
Grazie ciao.
(credo che la punteggiatura sia ok ora, chiedo scusa per il precedente messaggio)
-
Ciao a tutti.
Il sistema funziona perfettamente. L'unica cosa che non riesco a fare è realizzare un link alla cartella di livello superiore.
Se, ad esempio, nella root ho cartella 1, al cui interno si trova cartella 2, ed entro in quest'ultima, come faccio a tornare a cartella 1? Il tutorial prevede un link per tornare alla pagina principale ma non per "uscire" dall'ultima cartella in cui si è entrati.
Grazie.
-
Ciao Thedarkita;
Mi servirebbe un tuo aiuto a risolvere un grosso problema. So che il post è vecchio ma spero che mi risponderai ugualmente. Ho provato il tuo codice, di elenco cartelle e file. Solo che mi servono due modifich e sono le seguenti:
-
Elencare directory tutte con tutre le estensioni;
-
Elencare le sottocartelle con tutti i file all'interno delle cartellle e sottocartelle
-
Debbo inserire il risultato della ricerca in un db.
Mi puoi aiutare per favore ???? Sono disperato sono mesi che sto cercando inutilmente soluzioni a destra e a manca. Grazie in anticipo
Il codice è il seguente:
[PHP]
<?php
// Prendo dalla variabile get la cartella che voglio esplorare
$c = (isset($_GET['c'])) ? $_GET['c'] : '';// Nome della cartella
$car = 'c://'.$c.'/';function GetFile($car)
{
global $c;
// Se non è un cartella esco
if(!is_dir($car))
return 0;// Opendir è la funzione per aprire la cartella
$handle = opendir($car);// Ciclo la cartella
while (false !== ($files = readdir($handle)))
{
// Stampo i file
if ($files != '.' && $files != '..')
{
if(is_dir($car.$files))
$vc[] = $files;
else
$vf[] = $files;
}}
// Se sono in una cartella mostro il pulsante per andare alla cartella principale
if($c != '')
echo '<a href="manager.php">Pagina Principale</a><br>';// Stampo le cartelle e i file echo 'Catelle:<br>'; for($i=0; $i<count($vc); $i++) echo '<a href="manager.php?c='.$c.'/'.$vc*.'">'.$vc*.'</a><br>'; echo 'File:<br>'; for($i=0; $i<count($vf); $i++) echo $vf*.'<br>';
}
// Richiamo La funzione
GetFile($car);
?>
</body>
</html>[/PHP]
Ah, un ultima cosa. La sottoglineatura non mi servirebbe in quanto devo leggere i file all'interno di ogni cartella. Spero di essermi spiegato al meglio.
-