navigatore cartelle

sto cercando di modificare uno scriptino per navigare nelle directory solo che mi blocco al punto in cui devo cambiare directory il problema è :

so come si chiama la cartella in cui sono ora , ma non riesco a 'fissarla' in una variabile in modo che nella cartella successiva l'url sia nav.php?dir=home/prova/$cartella_precedente/cartella scelta

<?php $dir  = $_GET['dir'];
$open = $_GET['open'];
$root = 'annunci/';

if(!isset($dir) or $dir == '')
{
$dir = $root;
}

if ($handle = opendir($dir))
{
   while (false !== ($file = readdir($handle)))
   {
      if ($file != "." && $file != "..")
      {
        echo '<a href="?dir='.$root.$current.$file.'&current='.$file.'/">'.$file.'</a><br />';
    
     if(!is_dir($dir))
     {
           echo '<a href="'.$dir.$file.'">'.$file.'</a><br />'; 
     }
     } 
   }
   closedir($handle);?>

prima funziava bene il codice poi mi sono incasinato e ho iniziato a nn capire + nulla e a fare casini ... avevo pensato di usare un array per memorizzare le dir passate e usare array_pop per sapere qual'è stata l'ultima visitata ma boh nn so che fare  :-\

inviato 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

Ora il codice è così :

<?php
$dir  = $_GET['dir'];
$open = $_GET['open'];
$root = 'annunci';

$history = array();

$history['root']   = $root;
$history['name']   = $dir;
$history['parent'] = ;
$history['this']   = ;

echo '<pre>';
print_r($history);
echo '</pre>';
 
if(!isset($dir) or $dir == '')
{
$dir = $root;
}

if ($handle = opendir($history['this']))
{
   while (false !== ($file = readdir($handle)))
   {
      if ($file != "." && $file != "..")
      {
        echo '<a href="?dir='.$history['this'].$file.'">'.$file.'</a><br />';
     } 
   }
   closedir($handle);
}
?>

devo capire come ottenere la directory corrente e quella superiore e come fare questo:

ammettiamo di essere in annunci/1/2/3/4/5/6/foto

$root = annunci

$parent = '/6';

$history = array 1/2/3/4/5/ tutte le dir che sono passate

qualcosa del genere in modo da poter andare dove si vuole

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

dai un'occhiata a questo script, vedi se ti può servire:

http://codewalkers.com/seecode/563.html

 :bye:

risposto 10 anni fa
Gianni Tomasicchio
X 0 X

mah nn funziona correttamente ... le cartelle le vede quasi tutte come file e nn le rende navigabili :(

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

modificato un pezzo così :

while($f = readdir($dir_handle)){ //Create arrays of directories and files

if(ereg('[a-zA-Z0-9]\.[a-z]',$f)){ //If file being read is a directory then store in the directory array

$fs[] = $f; //Add the link to the directories array

}else{

$d[] = $f; //Else its a file

}

}

if(count($d) < 1){

}else{

sort($d); //Sort the directories array

}

ho aggiungo la mini espressione regolare ( LA PRIMA DELLA MIA VITAAA  ::) e FUNZIAAAAAAA ) per vedere se i file hanno un . e dire se sono file o no :) se non sono file apre come dir senno apre come file in un pop up :D

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X

modificato un pezzo così :

      <?

/*

Author: Andrew Walsh

Date: 23/07/2005

Cw-Username: Andrew

*/

//Config section

$base_path = "../annunci/"; //Set the base directory

$above_base = 0; //Can the user navigate above the base directory or not?

$directory_img = "admin/images/folder.png";

$file_img = "admin/images/run.png";

$allow_access = 1; //If false the script will not run...

if($allow_access == 1){

if(!isset($_GET['path'])){ //If no path set create a base path

$path = substr($base_path, 0, -1);

}else{

$path = $_GET['path']; //If path is set in url then use that path

}

//Is the user trying to navigate above the base directory?

if($above_base == 1){ //Is this option enabled?

$b = explode("/", $base_path); //Split up the base path

$c = count($b); //Count elements in the base path

$c--; //Subtract last section of base path

//Construct the path for the directory above the base directory/path for comparison later

for($i=0; $i<$c; $i++){

$r = $b[$i].'/';

}

//Is the request path above the base path? is the base_path not in the requested path?

if($path == $r || strstr($path, $base_path) === FALSE){ 

//If yes then stop the script and output error message

die("You are not allowed to navigate above the base path!"); //Output error

}else{

$dir_handle = opendir($path) or die("Unable to open $path"); //Open the path

} 

}else{

$dir_handle = opendir($path) or die("Unable to open $path"); //Open the path

}

//Generating the path to the directory above the current path....

$p = explode("/", $path); //Breakup the path into parts

$c = count($p); //Count parts in the path

$c--; //Subtract the ending section

//Generate the path

for($i=0; $i<$c; $i++){

$up_path .= $p[$i].'/';

}

$up_path = substr($up_path, 0, -1); //Trim off the ending /

//Display links to current path and directory above current directory

if (isset($path))

{

echo '<a href="?path='.$path.'"><b>.</b></a><br><a href="?path='.$up_path.'"><b>..</b></a><br>';

}

while($f = readdir($dir_handle)){ //Create arrays of directories and files

if(ereg('[a-zA-Z0-9]\.[a-z]',$f)){ //If file being read is a directory then store in the directory array

$fs[] = $f; //Add the link to the directories array

}else{

$d[] = $f; //Else its a file

}

}

if(count($d) < 1){

}else{

sort($d); //Sort the directories array

}

if(count($fs) < 1){

}else{

sort($fs); //Sort the file array

}

foreach($d as $dir){ //Loop through directory array

if($dir != "." && $dir != ".."){ //Remove the . and .. links as these are generated by the script

//Echo out the directories with the directory image next to them....

echo '<a href="?path='.$path.'/'.$dir.'"><img src="'.$directory_img.'" alt="" width="16" height="16" border="0" align="absmiddle" /> '.$dir.'</a><br>';

}

}

foreach($fs as $f){ //Loop through the files array

//Display the links to the files with the file image before....

    echo '<a href="'.$path.'/'.$f.'"><img src="'.$file_img.'" alt="" width="16" height="16" border="0" align="absmiddle" /> '.$f.'</a><br>';

}

closedir($dir_handle); //Close the current working directory....

}else{

die("You are not allowed to access this script!");

}

?>

 mi da sempre errore : Warning: Invalid argument supplied for foreach() in C:\Programmi\Apache Group\Apache2\htdocs\solemaresalento\user\files.php on line 186

e poi nn vorrei che andassero sopra la cartella principale ( annunci )

risposto 10 anni fa
Andrea Turso
Andrea Turso
86
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda

Domande simili