PHP - ayuda navegador archivos php

   
Vista:

ayuda navegador archivos php

Publicado por pepo (1 intervención) el 05/05/2008 10:31:39
Mirad, tengo un problema que me tiene loco, cogi un navegador de archivos en php ya echo, y estoy añadiendo funcionalidades, la de subir nivel e ir a inicio van bien, el problema son con las de "adelante" y "atras" que intento almacenar contenidos en una matriz para luego recorrerlos y mostrarlos, e intentado usar variables globales pero no hay forma, me da error o simplemente no va, el codigo es el siguiente, a ver si podéis ayudarme, muchas gracias por adelantado:

<?
$default_dir="carpeta"; //indicamos el directorio donde inicia el explorador

echo "EXPLORADOR DE ARCHIVOS<br>";
if(!file_exists($default_dir)) //verificamos que existe el directorio
{
echo "<br>Error... El directorio no existe. Configura bien tu variable "default_dir" ...";
}
else
{
//TRAMO DE VALIDACION
if($_GET['dir']=='') //valor pasado por la URL, si esta vació, asignamos el directorio por default
{
$dir=$default_dir;
}
else
{
if(!file_exists($_GET['dir'])) //si nos pasaron un valor checamos si existe, si no existe ponemos el default
{
$dir=$default_dir;
}
else
{
$dir=$_GET['dir']; //si existe, lo asignamos...
}
}
$dp=opendir($dir); //abrimos el directorio
while($file=readdir($dp)) //hacemos un ciclo para guardar los nombres de los directorios y archivos que se tienen en el directorio actual
{
$filenames[]=$file;
}
sort($filenames); //ordenamos los directorios alfabéticamente
for($i=0;$i<count($filenames);$i++) //hacemos un ciclo para ir mostrando el contenido del directorio
{
$file=$filenames[$i];
//checamos si la variable dir es igual al directorio por defecto y ademas PHP al abrir un directorio pone los puntos (./ y ../ que sirve para ir al directorio raíz o uno mas abajo) pero como comparamos que la variable dir sea igual al default entonces no hay ni directorio raís (porque no encontramos en él) ni subdirectorios entonces mandamos continue que se regresaría al ciclo del for
if($dir==$default_dir && ($file=="."||$file==".."))
//echo $dir;

continue;
//$
//echo "<a href="$_SELF?dir=$dir">$dir/</a>"; //en modificacion
//echo "<a href="$_SELF?dir=$file">$file/</a>"; //en modificacion

//cuando checamos que la variable dir no es el default pero recordamos que php manda el ./ lo vamos a omitir, por lo que con el continue regresamos al ciclo del for
if(is_dir("$dir/$file")&&$file==".")

continue;
$prueba = $dir;
$prueba2 = $current_dir;
$prueba3 = $parent_dir;
$mover = 0;

if(is_dir("$dir/$file")) //checamos si es un directorio, si lo es, tenemos dos casos que sea el ../ que sería para bajar un nivel o es un directorio fisico
{
if($file=="..") // si son ../ regresamos un nivel
{
$current_dir=basename($dir);
$parent_dir=ereg_replace("/$current_dir$","",$dir);

//echo "$dir"; //mostrar ruta directorio actual <modificado>

//echo "<a href="$_SELF?dir=$default_dir$file">$default_dir/</a>"; //<en modificacion>
//echo "<a href="$_SELF?dir=$dir">$dir/</a>";
//echo "<a href="$_SELF?dir=$current_dir/$file">$parent_dir/</a>"; //en modificacion

// echo $dir;
$cadena = strlen($dir);
// echo $cadena;
//$x=0;
$separador = "";

$n = 0;
while ($n<=$cadena):
//print $n;
if(substr($dir, $n, 1)=="/")
{
// echo $cadena;
// echo "hola";
$separador = substr($dir, 0, $n);

echo "<a href="$_SELF?dir=$separador">".substr($separador, strrpos($separador, "/"))."</a>";
}
$n++;

endwhile;


// echo "<a href="$_SELF?dir=$parent_dir$file">$dir/</a>"; // en modificacion
//echo "<a href="$_SELF?dir=$file">$file/</a>"; //<en modificacion>
// echo "<a href="$_SELF?dir=$filenames$file">$file/</a>"; //<modificado> volver a carpeta raiz
echo "</br> ";
echo "<a href="$_SELF?dir=$filenames$file">$file/Inicio</a>"; //ir inicio

//echo "<a href="$_SELF?dir=$dir/$file">$file/</a>"; //<en modificacion>
//echo "<a href="$_SELF?dir=$dir">$dir/</a>";
//$atras = "Atras";

// echo "<a href="$_SELF?dir=$parent_dir">$file/</a><br>"; //<el de abajo>

if ($dir!=$default_dir){
$matriz = explode("/", $dir);
// $matriz[$mover] = $prueba;
// $mover+1;
}
foreach ($matriz as $key => $value) {
if ($key > 0) $matriz[$key] = $matriz[$key - 1]."/".$matriz[$key];
if ($matriz[$key] == $dir) $posicion = $key;
}
// echo $posicion; mostrar posicion

echo "<a href="$_SELF?dir=".$matriz[$posicion - 1]."">$Atras/Subir</a> </br>"; //ir atras

// $total = $dir;
//echo $total; echo = $dir
//$print_r($matriz

// print_r($matriz);
//echo $matriz;


//**********pruebas
// global $mover; //declarar funcion global
// global $prueba;
// echo $prueba;

// if ($dir !=$default_dir){
// $matriz[$mover] = $prueba;
// print_r($matriz);
// $mover+1;
// }

// echo "<a href="$_SELF?dir=".$prueba[5]."">/Atras</a> </br>";

// ********* fin pruebas
//************************************************ pruebas funcion adelante
global $matriz[0] = "";
global $adelante;
global $atras;
global $pos;
print_r($matriz);

if ($matriz[0] == ""){

$matriz[0] = $parent_dir;

while ($matriz[0] != ""){
$matriz[$pos] = $adelante;
$pos++;
}


foreach ($matriz as $adelante => $value) {
if ($adelante > 0) $matriz[$key] = $matriz[$adelante + 1]."/".$matriz[$adelante];
if ($matriz[$adelante] == $dir) $posicion = $adelante;
}

$adelante = $parent_dir."/".$current_dir;

//adelante
echo "<a href="$_SELF?dir=$total">/Adelante</a> </br>"; //ir adelante
// echo "<a href="$_SELF?dir=$filenames$file">$file/Inicio</a>";
//*******************fin pruebas funcion adelante //}
}
else //de lo contrario mostramos el nombre del directorio y agregamos su url
{
echo "<a href="$_SELF?dir=$dir/$file">$file/</a><br>";
}
}
else //si no es un directorio, es un archivo, lo mostramos con su url
{
echo "<a href="./$dir/$file">$file </a><br>";
}
} // llavel del for
} //llave del else
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder