Ver Mensaje Individual
  #2 (permalink)  
Antiguo 01/10/2005, 18:34
Cluster
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
La "protección" que usas dejará en historiales de navegadores la ruta completa hacia tu archivo ya que haces una simple redirección al archivo vía cabeceras HTTP de "location" la que le dice al navegador "carga esta página" (en tu caso .. archivo).

En principio .. para hacer funcionar tu código .. primero debes averigüar y no quedarte mirando el código si las variables toman sus valores esperados. Desde tu "$REQUEST_URI" (que deberías usar $_SERVER['REQUEST_URI'] para evitar problemas con register_globals a OFF) hasta si tu archivo se lee bien .. (yo usaría un foreach() en lugar del while (each($fp)) ) .. Revisa que valor va tomando "$datos" y así compruebas que se lee tu archivo correctamente.


Código PHP:
<?php 
$archivo 
explode("?",$REQUEST_URI); 
$fp file ($archivo);

foreach(
$fp as $linea) {
    
$datos explode('-',$linea);
   if(
$datos[0] == $archivo[1]){
     
header("Location: $datos[1]");
     exit();
   }

}
?>
Cuando eso lo tengas claro .. revisa la documentación oficial de:

header()
www.php.net/header

Ahí veras ejemplos para "forzar" la descarga de un archivo con cabeceras HTTP (enviadas por esa función) .. así podrás tener tu archivo "seguro" fuera de tu "documentRoot" (fuera del alcance de una llamada directa por http://www.nose.com/archivos/archivo.tal) e incluso colocar el nombre que gustes que se ofrecerá para descarga.

En este caso .. el archivo se lee y entrega al buffer de salida de PHP vía:
readfile() (el arhivo a descargar) por ruta absoluta al archivo (NO: http://www.tal/archivos/archivo.tal .. sino /var/www/sitio.com/public_html/archivos/archivo.tal .. o donde esté físicamente en ese servidor el archivo ..)

Un saludo,