Foros del Web » Programando para Internet » PHP »

Ayuda!!! Sistema de Descargas en PHP

Estas en el tema de Ayuda!!! Sistema de Descargas en PHP en el foro de PHP en Foros del Web. Hola amigos, estoy desesperado porque no puedo hacer unfionar un codigo que he encontrado en la web, el codigo es para "proteger" mis descargas mediante ...
  #1 (permalink)  
Antiguo 30/09/2005, 20:08
Avatar de Ciberdanny  
Fecha de Ingreso: marzo-2005
Ubicación: Distrito Federal
Mensajes: 204
Antigüedad: 12 años, 8 meses
Puntos: 1
Exclamación Ayuda!!! Sistema de Descargas en PHP

Hola amigos, estoy desesperado porque no puedo hacer unfionar un codigo que he encontrado en la web, el codigo es para "proteger" mis descargas mediante un sistema de descargas en PHP, necesito algo sencillo y no se que me falta para hacer funcionar este, les dejo aqui los codigos:

Supuestamente es asi:

Crear Archivo "descargas.php" con este contenido:

<?php
$archivo = explode("?",$REQUEST_URI);
$fp = file ('descargas.txt');
$i = 0;
while (each($fp)) {
$datos = explode('-',$fp[$i]);
if($datos[0] == $archivo[1]){
header("Location: $datos[1]");
exit();
}
$i++;
}
?>

Luego un archivo de texto que contiene las direcciones de descarga de cada archivo:

descargas.txt

Archivo1-http://www.direccion.de/laweb/archivo1.zip
Archivo2-http://www.direccion.de/laweb/archivo2.zip

Y luego para llamar a la descarga desde una página seria asi:

http://www.tuweb.tal/descargas.php?Archivo1


El problema es que NO FUNCIONAAAAAAAAA

Los subi en una carpeta en mi servidor llamada "prueba" y al momento de darle click al vinculo me dice que si quiero descargar el "descargas.php", luego movi los archivos hacia el directorio raìz del servidor y al momento de darle click al vinculo se va en blanco NO HACE NADA y si subo el descargas.php al CGI-BIN sigue sin funcionar.

Por favor alguien que me diga que me falla o donde debo colocar estos archivos, el TXT no se si lleve alguna configuracion en especial o que onda.

Me acerco a los expertos ya que no conozco a nadie que sepa de esto.

Gracias por su valiosa atencion.

Saludos!!!
  #2 (permalink)  
Antiguo 01/10/2005, 19:34
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
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,
  #3 (permalink)  
Antiguo 02/10/2005, 18:43
Avatar de Ciberdanny  
Fecha de Ingreso: marzo-2005
Ubicación: Distrito Federal
Mensajes: 204
Antigüedad: 12 años, 8 meses
Puntos: 1
Gracias...



Gracias por la respuesta, la estoy analizando para ver como funciona ya que no soy un usuario avanzado de PHP, muy buena respuesta, la verdad la agradezco aunque en ciertas cosas no le entiendo la verdad no crei que fuera tan compleja la solución ya que en el ejemplo que puse al inicio no se ve tan complicado, yo pense que era algun error minimo de sustituir algo o meter el archivo en otra carpeta o que faltaba alguna comilla o que se yo...

Vere que puedo hacer para aplicar su solucion y pues aqui estamos... gracias de nuevo...



Saludos!!

Última edición por Ciberdanny; 02/10/2005 a las 18:49
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 15:06.