elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Obtener la ruta completa... cual de estos es mejor?
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Obtener la ruta completa... cual de estos es mejor?  (Leído 6,730 veces)
Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Obtener la ruta completa... cual de estos es mejor?
« en: 13 Octubre 2007, 18:10 pm »

Buenas,
ya se han escrito temas similares pero no estan totalmente completos...
Supongamos que la ruta del public_html es /home/tuweb/public_html/ y vamos a centrarnos en que tenemos un archivo 2 subdirectorios mas abajo, y necesitamos saber la ruta del public_html para incluir un archivo que esta en la raiz. Descartamos cosas como ../../ y DOCUMENT_ROOT, pues el primero no funciona en cuanto incluyes el archivo desde otro lado, y el segundo casi nunca esta definido.

Recopile 3 metodos para conseguir dicha ruta, el primero lo saque de un tema de este foro, otro del codigo fuente de SMF y otro directamente de php.net
Código
  1. str_replace("subdir/subdir/miscript.php", "", __FILE__);
Código
  1. dirname(dirname(__FILE__));
Código
  1. realpath("../../");
Luego ya pondriamos un IF para saber si la variable de la ruta esta definida, sino la definiriamos con alguno de estos metodos (alguna idea mejor?).

Mi pregunta seria... cual de estos 3 seria el mas limpio/rapido/optimo ? hay que tener en cuenta que se usaria al principio de todos los scripts, y por eso cada nanosegundo cuenta  :rolleyes:

Si alguno/a tiene idea de alguna otra forma...

Ya se que con una web modulada no haria falta nada de esto, pues ya los llamo desde un solo archivo y listo, pero para proyectos mas grandes no puedes llamarlo todo desde un fichero.

Saludos y gracias

EDITO:
Cito un comentario de php.net:
Citar
This is silly:
dirname(dirname( dirname( dirname(dirname( dirname( dirname(__FILE__))))))); // This is rediculous
       
function recursiveDirName($file, $x){
    if($x > 0) return recursiveDirName( dirname($file), $x-1 );
    return $file;
}

This is much easier:
$file = recursiveDirName(__FILE__, 7);

Que opinan sobre esto? se refiere solo a comodidad o tiene algun otro sentido?


« Última modificación: 13 Octubre 2007, 18:22 pm por Roberto T. » En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Obtener la ruta completa... cual de estos es mejor?
« Respuesta #1 en: 14 Octubre 2007, 12:42 pm »

mm la primero no creo que sea eficiente pero para nada, la segunda menos ya que solo devuele el nombre del fichero en el que está el php y la tercera es la correcta.

Suerte


En línea

Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Re: Obtener la ruta completa... cual de estos es mejor?
« Respuesta #2 en: 14 Octubre 2007, 13:35 pm »

Gracias por responder.
Realmente la segunda da lo mismo que la tercera, ya probe los 3 metodos en localhost y dan lo mismo.

Entonces si la primera la descartamos, cual de las otras 2 seria mas optima? o seria practicamente igual?

Otra cuestion... supongamos que usamos uno de los metodos en todos los archivos, entonces al incluir uno al otro se definiria por doble, aunque como debe de dar lo mismo no habria conflictos... que seria mejor, dejar que se vuelva a definir la variable $ruta, o usar un IF de esta forma:
Código
  1. if (!isset($ruta) {
  2.   $ruta = METODO
  3. }
Cuando digo que seria mejor me refiero a lo mas optimo para la carga del script, pues ya se que darian el mismo valor hiciera lo que hiciera.

Y sobre la cita que puse de php.net que opinan? yo creo que debe ser por limpieza mas que nada, pero prefiero saberlo por que en el caso de que use el segundo metodo incluir esa funcion en todos los archivos podria ser mas sucio que colocar 7 veces dirname().

Saludos y gracias de nuevo.
En línea

дٳŦ٭
GNU/Linux Infrastructure Specialist
Ex-Staff
*
Desconectado Desconectado

Mensajes: 5.110


Ver Perfil WWW
Re: Obtener la ruta completa... cual de estos es mejor?
« Respuesta #3 en: 17 Octubre 2007, 02:15 am »

Miento  ;D ninguna te sirve, no había entendido la pregunta.

A ver, __FILE__ devuelve la ruta absoluta del archivo dentro del sistema, lo que necesitarías es cortar a partir del public_html/ no?, ps el document root es para eso y dificilmente se puede "no definir", de hecho me atrevería a decir que es imposible porque el apache no sabría en donde ponerte a la hora de hacer la llamada...

Pero ok, éste mundo es imperfecto así que hagamos algo:

Código
  1. <?php
  2. $ruta=__FILE__;
  3. $divisor="/public_html/";
  4. $ruta_final=explode($divisor, $ruta);
  5. echo $ruta_final[0].$divisor;
  6. ?>

Regresará /home/tuweb/public_html/  ;)

Suerte

EDIT

Como toy muy aburrido  :-X hasta la hago función  ;D

Código
  1. <?php
  2. function dame_ruta($ruta,$divisor){
  3. $ruta_final=explode($divisor, $ruta);
  4. return $ruta_final[0].$divisor;
  5. }
  6. echo dame_ruta(__FILE__,"/public_html/");
  7. ?>
  8.  
« Última modificación: 17 Octubre 2007, 02:21 am por Ing_Amc » En línea

Alex_bro


Desconectado Desconectado

Mensajes: 1.246



Ver Perfil
Re: Obtener la ruta completa... cual de estos es mejor?
« Respuesta #4 en: 20 Octubre 2007, 00:20 am »

Buenas,
realmente como dices DOCUMENT_ROOT no se puede dejar sin definir, pero la mayoria lo deja en / y eso no vale de nada...

Que diferencia habria entre utilizar esa funcion con explode y el primer metodo? no haria mas carga explode?

Saludos y muchas gracias.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Obtener ruta UNC de una unidad mapeada con un bat.
Scripting
xavial 0 4,589 Último mensaje 13 Diciembre 2010, 23:32 pm
por xavial
Obtener URL completa. Algo muy extraño sucede
Desarrollo Web
OssoH 4 4,438 Último mensaje 4 Julio 2011, 09:34 am
por OssoH
cual de estos dos disipadores es el mejor?
Hardware
robermgs 3 4,521 Último mensaje 4 Septiembre 2012, 14:55 pm
por Aprendiz-Oscuro
Descargar web completa sabiendo la ruta de los archivos
Desarrollo Web
rox4ever 0 1,562 Último mensaje 28 Noviembre 2012, 21:13 pm
por rox4ever
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines