Ver Mensaje Individual
  #8 (permalink)  
Antiguo 18/02/2004, 10:15
jcorba
Invitado
 
Mensajes: n/a
Puntos:
Bueno pues creo que ya tengo una solucion, a ver que os parece??
Lo que quiero es http://miserver/imprimir.php?ARG=El_fichero_a_imprimir

Y este es el codigo

$cfg_rootWeb=$_SERVER['DOCUMENT_ROOT'];
// Compruebo si la pagina ha sido cargada con argumento o no
if (array_key_exists("ARG", $HTTP_GET_VARS))
{
// Tratamos la cadena
$fichero=$cfg_rootWeb ."/" . $HTTP_GET_VARS["ARG"];

//Una posible solucion con expresion regular (no debe contener "../")
//if ( file_exists($fichero) ) AND !preg_match("#^\.\./#",$fichero) ) include($fichero);

// Otra forma con realpath(): Obtengo la ruta del fichero absoluta, es decir desde la raiz
// y sin cosas como "../"
$fichero=realpath($fichero);

//Ahora comprobamos que la ruta del fichero esta dentro de espacio que queremos
//Obtenemos la ruta
$rutaFichero=dirname($fichero);
// Y comprobamos que dicha ruta pertenece al document root
if (strncmp ( realpath($cfg_rootWeb), $fichero, strlen(realpath($cfg_rootWeb)))== 0)
{ //Ahora debemos comprobar que el fichero realmente exista
if (file_exists($fichero)) include ($fichero);
else echo "Fichero no encontrado";
}
else //No tiene la ruta del document root
{
echo "No hagas cosas feas!!! <br>";
}

}