Foros del Web » Programando para Internet » PHP »

forazar descargas

Estas en el tema de forazar descargas en el foro de PHP en Foros del Web. Buenas tardes a todos. Actualmente estoy aprendiendo a forzar descargas en php y bueno tengo el siguiente código: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código PHP: Ver original <a ...
  #1 (permalink)  
Antiguo 27/07/2012, 15:18
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 12 años, 5 meses
Puntos: 8
forazar descargas

Buenas tardes a todos.
Actualmente estoy aprendiendo a forzar descargas en php y bueno tengo el siguiente código:

Código PHP:
Ver original
  1. <a href='a.php?imagen=mundo.jpg'><img src='./mundo.jpg' style='width:300px;' /></a>
  2. <?php
  3. if(isset($_REQUEST['imagen']))
  4. {
  5.     $name=$_REQUEST['imagen'];
  6.     header("content-disposition:attachment; filename=$name");
  7.     header("content-type:application/octet-stream");
  8.     readfile($name);
  9. }
  10. ?>

La idea es que al darle click a la imagen se force la descarga y lo hace el problema es que cuando trato de abrir la imagen simplemente no la abre es decir no descarga la imagen...

leí también otros métodos mas seguros para forzar las descargas ya que tengo entendido que con este método al solo modificar la url pueden descargar cualquier otro archivo del servidor...

pero no e probado otros métodos ya que aun no entiendo bien este...

a los que me puedan ayudar de ante mano gracias
  #2 (permalink)  
Antiguo 27/07/2012, 17:30
Avatar de semitasoft  
Fecha de Ingreso: noviembre-2011
Ubicación: Arequipa, Peru, Peru
Mensajes: 8
Antigüedad: 13 años
Puntos: 0
Respuesta: forazar descargas

Te falta agregar un header. que debe estar al inicio.

@header("Content-Type:image/el tipo de imagen");
@header("content-disposition:attachment; filename=$name");
@header("content-type:application/octet-stream");
@readfile($name);

Ten cuidado con este tipo de Códigos. Te pueden bajar todita tu web. Codigos php con tus claves de acceso etc.

La variable recibida a $_REQUEST deberás comprobarla totalmente.
$_REQUEST no es recomendable. usa otra forma de recibir datos.
  #3 (permalink)  
Antiguo 27/07/2012, 18:03
Avatar de Sotelio  
Fecha de Ingreso: mayo-2011
Ubicación: Santiago de Chile
Mensajes: 68
Antigüedad: 13 años, 6 meses
Puntos: 21
Respuesta: forazar descargas

Hola,

Si se toma el código que pegaste tal cual, está mal!

por un lado debes tener

Código HTML:
<a href='a.php?imagen=mundo.jpg'><img src='./mundo.jpg' style='width:300px;' /></a> 
Y en otro archivo, "a.php"
Código PHP:
if(isset($_REQUEST['imagen']))
{
    
$name=$_REQUEST['imagen'];
    
header("content-disposition:attachment; filename=$name");
    
header("content-type:application/octet-stream");
    
readfile($name);

Por otro lado, como dicen arriba no es bueno que leas directamente un archivo que viene por la url, sin evaluar lo que se envía, deberías hacer algo como esto:

Código PHP:
/* indicas los nombre de archivos posibles */
$posibles = array('imagen.jpg''otra.jpg''etc');

/* y luego evaluas */

if (isset($_REQUEST['imagen']) && in_array($_REQUEST['imagen'], $posibles)) { 
Así te aseguras que el archivo que viene por la url sea sólo archivos "posibles".

Suerte!
@sotelio
  #4 (permalink)  
Antiguo 27/07/2012, 18:29
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: forazar descargas

Gracias a todos por sus respuestas


Cita:
Iniciado por Sotelio

if (isset($_REQUEST['imagen']) && in_array($_REQUEST['imagen'], $posibles)) {

[/php]

Así te aseguras que el archivo que viene por la url sea sólo archivos "posibles".

Suerte!
@sotelio
una pregunta y disculpa mi ignorancia esta parte del codigo que significa?

Código PHP:
Ver original
  1. in_array($_REQUEST['imagen'], $posibles
entiendo que hiciste un array con extenciones de los posibles archivos a descargar, pero esa parte del codigo que hace? repito disculpa mi ignorancia
  #5 (permalink)  
Antiguo 27/07/2012, 19:11
 
Fecha de Ingreso: junio-2011
Mensajes: 13
Antigüedad: 13 años, 4 meses
Puntos: 2
Respuesta: forazar descargas

nbmbnme de error o dejarlo asi
  #6 (permalink)  
Antiguo 27/07/2012, 22:00
Avatar de oscard41  
Fecha de Ingreso: mayo-2012
Ubicación: Caracas
Mensajes: 288
Antigüedad: 12 años, 5 meses
Puntos: 8
Respuesta: forazar descargas

Cita:
Iniciado por Pipe2890 Ver Mensaje
nbmbnme de error o dejarlo asi
no lo puedo dejar asi por que me interesa saber que significa!!

las personas que me puedan ayudar con eso Gracias..

Etiquetas: descargas
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 22:43.