Ver Mensaje Individual
  #1 (permalink)  
Antiguo 19/04/2007, 05:37
Avatar de estibaliz2006
estibaliz2006
 
Fecha de Ingreso: noviembre-2006
Mensajes: 439
Antigüedad: 18 años
Puntos: 1
subir nivel en subdirectorios casi solucionado

buenas. tengo casi solucionado el problema de subir de nivel en subdirectorios dentro de un directorio, pero me falta un empujoncillo. a ver: tengo un sistema por medio del cual cada vez que se registra un cliente, se crea en el servidor un directorio. este cliente puede acceder a su panel de control y desde él puede subir archivos, borrar archivos o crear subdirectorios dentro de este directorio específico suyo. bien.

la aplicación, en el panel principal de este cliente en cuestión (panel que no es más que SU directorio) muestra los archivos que tiene en ese directorio principal o raiz y también los subdirectorios que tiene creados en el mismo. el tema está en que en ese panel principal, tengo programado que aparezca el enlace "subir nivel", ideado en un principio para que cuando estuviera en un subdirectorio, al pinchar volviera al directorio que lo contiene. pero el problema es que este "subir nivel" me aparece tanto en los subdirectorios (que es donde debería aparecer) como en el directorio principal del cliente donde hí no tendría que aparecer, pues si aparece ahí y se hace click en él me lleva a la carpeta donde tengo alojado todos los archivos del sistema.
es decir, quiero esa utilidad pero que sólo aparezca cuando estamos dentro de un subdirectorio del directorio de ese cliente.

a ver, yo lo que tengo es esto:
recojo el nombre del directorio (que viene dado por el nombre que dio el usuario al registrarse. lo recojo a través de la variable $nombre y así digo que la variable $path=$nombre
Código PHP:
if(!isset($path))  
    {  
        
$path "$nombre";   
//donde la variable nombre recoge el nombre que el usuario da al registrarse y por lo tanto, el nombre del directorio principal//  
    

ahora detecto el directorio o subdirectorio en el que estoy:
Código PHP:
if ($handle opendir($path))   
    {  
//con esto me dice el directorio en el que estoy (directorio o subdirectorio, es decir, si pincho en un subdirectorio, me aparece el nombre del subdirectorio en el que estoy. si estoy en el directorio principal, me aparece el nombre del directorio principal  
        
$curDir substr($path, (strrpos(dirname($path."/."),"/")+0));  
        print 
"<br>Directorio Actual: <b>".$curDir."</b>&nbsp;&nbsp"
y por último, pongo el enlace "subir de nivel" que aparecerá en la web y me permitirá subir al directorio anterior:

Código PHP:
//con esto hago lo que os comentaba. lo que quiero es que sólo aparezca cuando estoy en subdirectorios.           
$up substr($path0, (strrpos(dirname($path."/."),"/")));  
        print 
"|&nbsp;&nbsp;<a href='index.php?mod=10&path=$up' class=textenlace3>Subir Nivel</a> 
qué es lo que hago para subir nivel? bueno, pues leo el número de caracteres de la variable $path mediante strlen:

Código PHP:
if (strlen($path)> 15)
        {
        
$curDir substr($path, (strrpos(dirname($path."/."),"/")+0));

        print 
"<br>Directorio Actual: <b>".$curDir."</b>&nbsp;&nbsp"

         

        
$up substr($path0, (strrpos(dirname($path."/."),"/")));

        print 
"|&nbsp;&nbsp;<a href='index.php?mod=10&path=$up' class=textenlace3>Subir Nivel</a><br><hr color=#EAEAEA>"; }
        else
        {
         
$curDir substr($path, (strrpos(dirname($path."/."),"/")+0));

        print 
"<br>Directorio Actual: <b>".$curDir."</b>&nbsp;&nbsp";} 
claro, si la variable path fuera un fijo, es decir, fuera $path=modulos/directorio, no habría problema: pondría

Código PHP:
if (strlen($path)> 18
donde 18 es el número de caracteres de la palabra directorio más módulos. pero aquí el problema es que la variable $path=modulos/$nombre, donde $nombre es el nombre que mete el usuario cuando se registra. con lo cual puede tener de longitud desde 3 letras (por ejemplo ana) hasta 7 u 8 (alejandro, por ejemplo). entonces, cómo hago el if porque seguro seguro tengo los 8 caracteres de modulos/ pero y después, cómo sé yo los caracteres que va a tener el nombre que venga en la variable $nombre?

buff, que jaleo...


[/PHP]