Foros del Web » Programando para Internet » PHP »

Descargar múltiples archivos a partir de un solo php

Estas en el tema de Descargar múltiples archivos a partir de un solo php en el foro de PHP en Foros del Web. Hola soy nuevo en el foro y me da mucho gusto formar parte del equipo. Ayudaré en lo más que pueda y espero poder ser ...
  #1 (permalink)  
Antiguo 29/12/2009, 04:33
 
Fecha de Ingreso: diciembre-2009
Ubicación: Guadalajara, Jalisco
Mensajes: 300
Antigüedad: 14 años, 4 meses
Puntos: 13
Descargar múltiples archivos a partir de un solo php

Hola soy nuevo en el foro y me da mucho gusto formar parte del equipo. Ayudaré en lo más que pueda y espero poder ser retroalimentado de la misma manera.

Quisiera saber cual seria el codigo para descargar múltiples archivos a apartir de un solo archivo PHP es decir que el usuario elija el link que se comunique con el php y lo descargue.

Utilicé este humilde código que al parecer no funcionó:

<?php
$archivo = array("imagen.jpg", "logo.png", "flash.swf");
$f = $_GET["f"];
if(strpos($f,"/")!==false){
die("Acceso denegado");
}
if(!in_array($f,$archivos)){
die("<b>ERROR!</b> HTTP 404 no encontrado");
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$f\"\n");
$fp=fopen("$f", "r");
fpassthru($fp);
?>


...y en el HTML puse el siguiente código:

<a href="my_php.php?archivo=imagen.jpg">bajar imagen.jpg</a>
<a href="my_php.php?archivo=logo.png">bajar logo.png</a>
<a href="my_php.php?archivo=flash.swf">bajar flash.swf</a>


Como verais el archivo php es el mismo para todos los hipervínculos; pero el archivo que va a descargar es diferente de acuerdo al link de descarga.

Por favor decirme cómo le hago para que funcione.

Saludos y muchas gracias.
  #2 (permalink)  
Antiguo 29/12/2009, 04:40
 
Fecha de Ingreso: agosto-2009
Mensajes: 29
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Descargar múltiples archivos a partir de un solo php

Hola, en vez de $_GET["f"] prueba con $_GET["archivo"].
Dentro de los paréntesis tienes que poner el nombre que le has dado a la variable en el HTML.
  #3 (permalink)  
Antiguo 29/12/2009, 04:46
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Descargar múltiples archivos a partir de un solo php

Ante todo bienvenido al foro liepzingsystem,
cuál es el problema que tenes?

links.php
Código PHP:
<a href="my_php.php?f=imagen.jpg">bajar imagen.jpg</a>
<
a href="my_php.php?f=logo.png">bajar logo.png</a>
<
a href="my_php.php?f=flash.swf">bajar flash.swf</a
-----------------------------------------

my_php.php
Código PHP:
   $f $_GET["f"];
    
header("Content-type: application/octet-stream");
    
header("Content-Disposition: attachment; filename=\"$f\"\n");
    
$fp=fopen("$f""r");
    
fpassthru($fp); 
tendría que funcionarte, cualquier problema me comentas,

Saludos.
  #4 (permalink)  
Antiguo 29/12/2009, 04:51
 
Fecha de Ingreso: diciembre-2009
Ubicación: Guadalajara, Jalisco
Mensajes: 300
Antigüedad: 14 años, 4 meses
Puntos: 13
Exclamación Respuesta: Descargar múltiples archivos a partir de un solo php

Entonces, jordii, puedo suponer que he de cambiar todos los "f" por "archivo"; es decir, mi código sería algo así:

<?php
$archivo = array("imagen.jpg", "logo.png", "flash.swf");
$f = $_GET["archivo"];
if(strpos($archivo,"/")!==false){
die("Acceso denegado");
}
if(!in_array($f,$archivos)){
die("<b>ERROR!</b> HTTP 404 no encontrado");
}
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=\"$f\"\n");
$fp=fopen("$f", "r");
fpassthru($fp);
?>


¿Te referías a los paréntesis del array? Porque ésos tienen el mismo nombre de variable que en el HTML. ¿O a qué paréntesis te referías?

...pero, ¿el HTML se quedaría igual?
  #5 (permalink)  
Antiguo 29/12/2009, 04:59
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Descargar múltiples archivos a partir de un solo php

Exacto,

Código PHP:
$f $_GET["VAL"];


// TIENE QUE SER IGUAL

<a href="my_php.php?VAL=flash.swf">bajar flash.swf</a
para poder recoger el archivo que quieres descargar y luego descargarlo, valga la redundancia

acoto, primero proba con el script directamente sin condiciones ni nada, como te lo deje yo antes.. luego si todo funciona le puedes agregar seguridad.
  #6 (permalink)  
Antiguo 29/12/2009, 05:25
 
Fecha de Ingreso: agosto-2009
Mensajes: 29
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Descargar múltiples archivos a partir de un solo php

Cita:
Iniciado por liepzingsystem Ver Mensaje

¿Te referías a los paréntesis del array? Porque ésos tienen el mismo nombre de variable que en el HTML. ¿O a qué paréntesis te referías?

...pero, ¿el HTML se quedaría igual?
Me referia a los paréntesis de "$_GET[]", lo que hay justo despues del GET (es que no se como se llaman los parentesis cuadrados). La cuestion es que lo que hay dentro del GET tiene que ser lo mismo que el nombre de la variable.

Ejemplo:

HTML: <a href="my_php.php?archivo=imagen.jpg">
PHP: $_GET["archivo"];

Y si no quieres cambiar el PHP, cambia el HTML:

HTML: <a href="my_php.php?f=imagen.jpg">
PHP: $_GET["f"];
  #7 (permalink)  
Antiguo 29/12/2009, 05:28
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Descargar múltiples archivos a partir de un solo php

corchetes se llaman jajaja
  #8 (permalink)  
Antiguo 29/12/2009, 05:31
 
Fecha de Ingreso: diciembre-2009
Ubicación: Guadalajara, Jalisco
Mensajes: 300
Antigüedad: 14 años, 4 meses
Puntos: 13
De acuerdo Respuesta: Descargar múltiples archivos a partir de un solo php

Excelente, amigo. Muchas gracias. Ya funciona perfectamente.

Sólo una última petición y eso si no es mucha molestia: ya veis que el hipervínculo es el siguiente:

<a href="my_php.php?archivo=imagen.jpg">bajar imagen.jpg</a>

Bien. ¿Creéis que exista alguna manera de que, ya sea igualando variables en el PHP o qué sé yo, pudiéramos hacer que el hipervínculo tuviese un nombre más confuso? Digamos algo así:

<a href="my_php.php?archivo=a3de5f8">bajar imagen</a>...y sin tener que explicitar en ningún momento la extensión del archivo, es decir, que no quede algo así:

<a href="my_php.php?archivo=a3de5f8.jpg">bajar imagen</a>

Muchas gracias por tu apoyo.

Saludos.
  #9 (permalink)  
Antiguo 29/12/2009, 05:32
 
Fecha de Ingreso: agosto-2009
Mensajes: 29
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Descargar múltiples archivos a partir de un solo php

Cita:
Iniciado por McBlink Ver Mensaje
corchetes se llaman jajaja
Madre mía que cabeza la mía... Golpe encajado, jeje
  #10 (permalink)  
Antiguo 29/12/2009, 05:34
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Descargar múltiples archivos a partir de un solo php

si lo puedes hacer, pero primero..
si no le pones la extencion es porque se tendria que suponer que todos los archivos tendrian la misma..

mirate éstos enlaces..

http://www.forosdelweb.com/f91/ocult...do-get-645942/
http://www.forosdelweb.com/f18/codif...os-get-563814/

Suerte
  #11 (permalink)  
Antiguo 29/12/2009, 05:39
 
Fecha de Ingreso: agosto-2009
Mensajes: 29
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Descargar múltiples archivos a partir de un solo php

Cita:
Iniciado por liepzingsystem Ver Mensaje
Excelente, amigo. Muchas gracias. Ya funciona perfectamente.

Sólo una última petición y eso si no es mucha molestia: ya veis que el hipervínculo es el siguiente:

<a href="my_php.php?archivo=imagen.jpg">bajar imagen.jpg</a>

Bien. ¿Creéis que exista alguna manera de que, ya sea igualando variables en el PHP o qué sé yo, pudiéramos hacer que el hipervínculo tuviese un nombre más confuso? Digamos algo así:

<a href="my_php.php?archivo=a3de5f8">bajar imagen</a>...y sin tener que explicitar en ningún momento la extensión del archivo, es decir, que no quede algo así:

<a href="my_php.php?archivo=a3de5f8.jpg">bajar imagen</a>

Muchas gracias por tu apoyo.

Saludos.
De nada hombre, para eso estamos. Sobre la nueva duda podrías montar una tabla de mysql con 2 columnas, ID y Nombre de archivo.

Por ejemplo, si tu tabla es:

ID Nombre
1 imagen.jpg
2 logo.png
3 flash.swf

Tu HTML quedaría:
<a href="my_php.php?archivo=1">

y tu PHP
$query ("select * from tabla where id=".$_GET['archivo'].")";
$result = mysql_query($query);
$datos = mysql_fetch_array($result);

$nombre_de_archivo=$datos["Nombre"];
  #12 (permalink)  
Antiguo 29/12/2009, 05:59
Avatar de TKZeXe  
Fecha de Ingreso: diciembre-2009
Ubicación: Flowers
Mensajes: 166
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Descargar múltiples archivos a partir de un solo php

Cita:
Iniciado por McBlink Ver Mensaje
Ante todo bienvenido al foro liepzingsystem,
cuál es el problema que tenes?

links.php
Código PHP:
<a href="my_php.php?f=imagen.jpg">bajar imagen.jpg</a>
<
a href="my_php.php?f=logo.png">bajar logo.png</a>
<
a href="my_php.php?f=flash.swf">bajar flash.swf</a
-----------------------------------------

my_php.php
Código PHP:
   $f $_GET["f"];
    
header("Content-type: application/octet-stream");
    
header("Content-Disposition: attachment; filename=\"$f\"\n");
    
$fp=fopen("$f""r");
    
fpassthru($fp); 
tendría que funcionarte, cualquier problema me comentas,

Saludos.
que sucede si en la url pongo esto.

my_php.php?archivo=./././WINDOWS/php.ini
my_php.php?archivo=HTTP://MIIP/RFI.php

o algo similar __FILE__

?_?
  #13 (permalink)  
Antiguo 29/12/2009, 06:02
Avatar de McBlink  
Fecha de Ingreso: noviembre-2006
Ubicación: $ARG->LaPampa()
Mensajes: 1.694
Antigüedad: 17 años, 5 meses
Puntos: 23
Respuesta: Descargar múltiples archivos a partir de un solo php

y si la ruta esta correcta te descargará el archivo, por eso tienes que hacer verificaciones antes..
  #14 (permalink)  
Antiguo 29/12/2009, 06:51
 
Fecha de Ingreso: diciembre-2009
Ubicación: Guadalajara, Jalisco
Mensajes: 300
Antigüedad: 14 años, 4 meses
Puntos: 13
Respuesta: Descargar múltiples archivos a partir de un solo php

Bien, hace unos momentos me estaba haciendo bolas tratando de crear una base de datos (porque francamente nunca había hecho ninguna) y quise replicar los códigos que me proporcionaron en los post anteriores. No pude. Pero no importa de todas formas, no tengo que dirigir un banco

El método de acceso que manejo es con un archivo .swf de usuario y contraseña; el cual ya es bastante seguro manejando private classes. Éste se comunicará con el archivo PHP para la descarga y no dará suficiente tiempo para que el usuario vea la dirección en la barra de estado.

En su defecto, lo que puedo hacer es crear una url larga y confusa con un nombre de archivo barbaro para que al menos en el lapso de comunicación y descarga, el usuario no tenga suficiente tiempo para saber la URL. Y como dije. No dirijo un banco. En tal caso, mejor contrato SSL

Me retiro agradecido por sus aportaciones. Buenos días acá en mi país y hasta pronto.

Saludos
  #15 (permalink)  
Antiguo 29/12/2009, 06:59
Avatar de TKZeXe  
Fecha de Ingreso: diciembre-2009
Ubicación: Flowers
Mensajes: 166
Antigüedad: 14 años, 4 meses
Puntos: 6
Respuesta: Descargar múltiples archivos a partir de un solo php

Cita:
Iniciado por liepzingsystem Ver Mensaje
Bien, hace unos momentos me estaba haciendo bolas tratando de crear una base de datos (porque francamente nunca había hecho ninguna) y quise replicar los códigos que me proporcionaron en los post anteriores. No pude. Pero no importa de todas formas, no tengo que dirigir un banco

El método de acceso que manejo es con un archivo .swf de usuario y contraseña; el cual ya es bastante seguro manejando private classes. Éste se comunicará con el archivo PHP para la descarga y no
dará suficiente tiempo para que el usuario vea la dirección en la barra de estado.

Nada es lo suficientemente seguro, solo se intenta ofuscar.
y lo del tiempo es totalmente manejable hasta firefox tiene herramientas para ir modificando cabeceras y peticiones


En su defecto, lo que puedo hacer es crear una url larga y confusa con un nombre de archivo barbaro para que al menos en el lapso de comunicación y descarga, el usuario no tenga suficiente tiempo para saber la URL.

eso no es problema para algiien que ya tiene un algoritmo para ir testeando tus url por ejemplo mandandote cabeceras y datos en PERL y guardando las respuestas del servidor.

Y como dije. No dirijo un banco. En tal caso, mejor contrato SSL
ssl es muy caro xd

Me retiro agradecido por sus aportaciones. Buenos días acá en mi país y hasta pronto.

Saludos
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.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:29.