Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 07-05-2007
pampitasnowman pampitasnowman is offline
Miembro
 
Registrado: ago 2003
Ubicación: La Plata, Argentina
Posts: 41
Poder: 0
pampitasnowman Va por buen camino
Question Descargar archivos mediante un formulario

Hola a todos! Estoy empezando a programar en PHP, en una web personal. La idea que me surgió es la siguiente: tengo muchos archivos .pdf para descargar, estos archivos, los muestro con una imagen de cada uno en una pagina "seleccionar_pdf.htm". Cuando se clickea en una imagen, se descargaría el .pdf, pero lo que yo quiero antes de que el visitante descargue el archivo, que llene un formulario y después si, que se descargue el archivo (formulario_descarga.php). Lo que yo quiero es hacer una sola pagina de formulario, y no una para cada .pdf que tengo, osea, tendría que pasar como variable, el nombre del pdf a la pagina del formulario. Una vez que el usuario puso enviar, en la pagina del form, automáticamente se pone a bajar el archivo, y se redirecciona a una pagina de agradecimiento por haber llenado los datos. La verdad es que no me doy cuenta como encararlo, esa es mi inquietud. Estoy con PHP5, y uso un hosting de dattatec, si precisan algún dato mas, me avisan, muchas gracias desde ya! Un abrazo, Nacho.
__________________
Tome Pin y haga Pum!
Responder Con Cita
  #2  
Antiguo 08-05-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Como bien has dicho para saber que archivo quieres descargar tan solo tienes que pasar el nombre del archivo como parametro del formulario (GET o POST da lo mismo) una vez en el formulario lo guardas en un hidden.
Cuando el formulario este validado, ya sea en javascritp o en PHP redireccionas a una página de esas típicas que dice "pulse aqui si el archivo no se descarga en 5 segundos", para hacer que la descarga se realice automaticamente tienes que utilizar el meta:
Código:
<META HTTP-EQUIV="refresh" content="5,..">
no es tan complicado como lo pintas.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #3  
Antiguo 09-05-2007
pampitasnowman pampitasnowman is offline
Miembro
 
Registrado: ago 2003
Ubicación: La Plata, Argentina
Posts: 41
Poder: 0
pampitasnowman Va por buen camino
Thumbs up

Muchas gracias, con el nombre del archivo por variable y enviado a su vez, por un input hidden, lo pude solucionar. Gracias por tu tiempo!

De paso te dejo otra inquietud: ¿qué utilidad o ventaja tiene, que el archivo se descargue automáticamente, transcurrido cierto tiempo?

Muchas gracias, un abrazo, Nacho.
__________________
Tome Pin y haga Pum!
Responder Con Cita
  #4  
Antiguo 09-05-2007
Avatar de dec
dec dec is offline
Moderador
 
Registrado: dic 2004
Ubicación: Alcobendas, Madrid, España
Posts: 13.107
Poder: 34
dec Tiene un aura espectaculardec Tiene un aura espectacular
Hola,

Cita:
¿qué utilidad o ventaja tiene, que el archivo se descargue automáticamente, transcurrido cierto tiempo?
Ciñéndonos a este caso en concreto y otros similares, yo diría que se trata de no hacer pasar al usuario dos veces por lo mismo. Es decir, el usuario elige un archivo para descargar, pero tú le remites a un formulario... el usuario rellena el formulario y lo envía... ¿vas ahora a presentarle otro enlaze para descargar el archivo? Bueno. Puedes hacerlo, y de hecho será lo mejor (no confiar en la redirección automática), pero, no está demás que le ofrezcas el archivo al usuario de forma automática... sin que el usuario tenga que hacer nada más.

Yo creo que en este caso en concreto y en otros similares esa es la ventaja de la redirección automática. Al menos es lo que pienso, vamos.
__________________
David Esperalta
www.decsoftutils.com
Responder Con Cita
  #5  
Antiguo 09-05-2007
pampitasnowman pampitasnowman is offline
Miembro
 
Registrado: ago 2003
Ubicación: La Plata, Argentina
Posts: 41
Poder: 0
pampitasnowman Va por buen camino
Smile

Si, ahora me terminó de cerrar la idea, y lo voy a probar. Muchas gracias por el tiempo! Un abrazo!
__________________
Tome Pin y haga Pum!
Responder Con Cita
  #6  
Antiguo 09-05-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Esta claro que dec está más puesto que yo en usabilidad, yo simplemente he optado por la opción automática por las palabras usadas en la pregunta:
Cita:
Empezado por pampitasnowman
automáticamente se pone a bajar el archivo
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #7  
Antiguo 10-05-2007
semptrion semptrion is offline
Miembro
 
Registrado: abr 2007
Posts: 112
Poder: 18
semptrion Va por buen camino
Respecto de la descarga de documentos

Es imprescindible que los usuarios llenen el formulario para bajar los documentos?

La solución que planteas no genera obligatoriedad de llenar el formulario.

Un input hidden es un arma de doble filo.
Responder Con Cita
  #8  
Antiguo 11-05-2007
pampitasnowman pampitasnowman is offline
Miembro
 
Registrado: ago 2003
Ubicación: La Plata, Argentina
Posts: 41
Poder: 0
pampitasnowman Va por buen camino
Question

Hago una validación en javascript del llenado de los campos del form. Si los campos se llenan correctamente, se pone a bajar el archivo y se redirecciona a otra página.
Estoy leyendo el link que me pasó Kayetano, que habla sobre las des/ventajas de la validación del lado del cliente, como del lado del servidor.
No sé a que te referís con arma de doble filo (soy novato en la programación dinámica de sitios web).
Saludos, Nacho.
__________________
Tome Pin y haga Pum!
Responder Con Cita
  #9  
Antiguo 11-05-2007
semptrion semptrion is offline
Miembro
 
Registrado: abr 2007
Posts: 112
Poder: 18
semptrion Va por buen camino
Enviar información desde el cliente

Pues resulta que el hidden no será visto por el usuario y resulta útil ya que guarda información del documento pdf. Pero el que no sea visto en la representación de la página web no significa que no pueda ser visto en el código HTML de la página.

Si tú señalas el documento a descargar colocando el valor en un hidden, estará expuesto el valor o la dirección del documento. Un programador web que esté atento, verá que estás enviando el nombre del archivo pdf a descargar. La primera vez, llenará el formulario. Las siguientes, simplemente obviará el formulario y recurrirá a la dirección que llama el formulario y no parará hasta "vaciarte" los pdfs o las cosillas que tengas de valor sin pasar por el "molesto" formulario.

Resultado: usa hidden si lo que quieres es obstaculizar. Pero si quieres proteger... ese es otro asunto.

Saludos
Responder Con Cita
  #10  
Antiguo 11-05-2007
pampitasnowman pampitasnowman is offline
Miembro
 
Registrado: ago 2003
Ubicación: La Plata, Argentina
Posts: 41
Poder: 0
pampitasnowman Va por buen camino
Thumbs up

Si, entiendo el problema que planteas, voy a intentar pensar otra solución, para ver como puedo solucionar ese agujero en el código. Muchas gracias por el dato!
Un saludo, Nacho.
__________________
Tome Pin y haga Pum!
Responder Con Cita
  #11  
Antiguo 14-05-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Cita:
Empezado por semptrion
Resultado: usa hidden si lo que quieres es obstaculizar. Pero si quieres proteger... ese es otro asunto.
Creo que te equivocas, por dos razones:
1. Se puede indicar el nombre del archivo pero no su situación, por lo que se complica la descarga saltandose el formulario.
2. Como ya se ha comentado en otro hilo, se puede (mejor dicho SE DEBE) validar del lado del servidor, es decir, comprobar que el formulario se a cumplimentado correctamente del lado del servidor, sistema muy complicado de saltarse.
Además existe la opción de ofuscar o encriptar el nombre del archivo añadiendo algún tipo de código variable (fecha o hora) con lo que ya resultaría imposible la descarga directa.
En resumen que el uso de hiddens es muy normal y no es ningún tipo de arma de doble filo. Como bien indicas los buenos programadores pueden hacer cosas muy buenas.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #12  
Antiguo 14-05-2007
semptrion semptrion is offline
Miembro
 
Registrado: abr 2007
Posts: 112
Poder: 18
semptrion Va por buen camino
O yo no entiendo o tu no entiendes

Cita:
Empezado por kayetano
Hola
Creo que te equivocas, por dos razones:
1. Se puede indicar el nombre del archivo pero no su situación, por lo que se complica la descarga saltandose el formulario.
2. Como ya se ha comentado en otro hilo, se puede (mejor dicho SE DEBE) validar del lado del servidor, es decir, comprobar que el formulario se a cumplimentado correctamente del lado del servidor, sistema muy complicado de saltarse.
Además existe la opción de ofuscar o encriptar el nombre del archivo añadiendo algún tipo de código variable (fecha o hora) con lo que ya resultaría imposible la descarga directa.
En resumen que el uso de hiddens es muy normal y no es ningún tipo de arma de doble filo. Como bien indicas los buenos programadores pueden hacer cosas muy buenas.
La verdad es que si el formulario está pasando por el servidor para descargar el documento, lo que dije está demás.
Pero ese no es el caso. Lo que sucede es si la dirección (URI) del archivo está contenida en el hidden, entonces, conociéndola ya no es necesario llenar el formulario. Únicamente es necesario escribir el URI que está en el hidden y ya está hecho todo no crees?
Responder Con Cita
  #13  
Antiguo 14-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Si se pone toda la ubicación pues ciertamente nada impide descargar directamente el archivo. Pero creo que kayetano se refirió desde un principio al nombre del archivo.

En realidad, el nombre del archivo se pasa como podría pasarse cualquier otro identificador (un número por ejemplo), y es el servidor quien- con base en dicho identificador -escoge el archivo real y lo manda al cliente.

// Saludos
Responder Con Cita
  #14  
Antiguo 14-05-2007
semptrion semptrion is offline
Miembro
 
Registrado: abr 2007
Posts: 112
Poder: 18
semptrion Va por buen camino
No es necesario colocar todo el nombre

Como dije, si observas el lugar de descarga del documento, el nombre base es suficiente para descargar otros documentos de los que tienes el nombre base.

En cuanto a la segunda parte de tu última observación, es lo que debe hacerse. En realidad no se maneja el nombre del archivo a descargar, sino una representación de ese nombre. Y en ese caso, no importa que se use hidden o get, ya que debe existir un programa de transformación de la representación que necesariamente validará la data recibida.
Responder Con Cita
  #15  
Antiguo 14-05-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ya veo por donde va tu preocupación. pero tu estás suponiendo que si tengo el sitio www.acme.com y el nombre pepe_perico, entonces podré encontrar el archivo en www.acme.com/pepe_perico.pdf. Pero no tiene por qué ser así. Los archivos reales pueden estar en cualquier otra parte, incluso fuera del árbol de directorios web; el servidor anexará la ubicación real al nombre pero eso jamás lo verá el cliente.

// Saludos
Responder Con Cita
  #16  
Antiguo 14-05-2007
semptrion semptrion is offline
Miembro
 
Registrado: abr 2007
Posts: 112
Poder: 18
semptrion Va por buen camino
Bueno, hablando de peras y manzanas...

Cita:
Empezado por pampitasnowman
Muchas gracias, con el nombre del archivo por variable y enviado a su vez, por un input hidden, lo pude solucionar. Gracias por tu tiempo!
Bueno, para mayor aclaración, yo respondía a esa aseveración.
Sobre la metodología para proteger archivos al momento de descargarlos, bien podríamos abrir otro hilo.
Saludos
Responder Con Cita
  #17  
Antiguo 15-05-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Por poner un ejemplo de lo que comenta román, yo en alguna ocasión he guardado tanto fotos como documentos en la propia base de datos, con lo que no existe nungún tipo de ruta.

semptrion como puedes ver hay muchas alternativas y posibilidades a la hora de proteger la descarga de archivos, no hay que cerrarse a una sola idea.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #18  
Antiguo 15-05-2007
semptrion semptrion is offline
Miembro
 
Registrado: abr 2007
Posts: 112
Poder: 18
semptrion Va por buen camino
Fotos en la base de datos?

Y podríamos hablar mucho del asunto, pero en este caso, les repito, el tema es que nuestro amigo pampitasnowman señalaba que "con el nombre del archivo por variable y enviado a su vez, por un input hidden, lo pude solucionar..." con lo que me pareció se generaba un hueco de seguridad. De ahí que todas las reflexiones vienen medio que añadiendo contenido a algo que no se ha planteado .

Pero aquí salta un tema más polémico y que siempre ha llamado mi atención: se deben colocar fotos en una base de datos?

Pero para que discutamos sobre ello, decidí abrir un nuevo tema de conversación http://www.clubdelphi.com/foros/showthread.php?t=43578

Así que, saludos y que estén bien.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Descargar Archivos Deiv HTML, Javascript y otros 6 25-12-2007 08:52:55
Descargar archivos de directorio protegido mediante apache chux PHP 0 25-09-2006 12:59:43
Problema para descargar archivos con la funcion GetInetFile Moises22 Internet 1 05-12-2005 14:15:35
Descargar archivos adjuntos con NMPOP3 gaska OOP 0 30-11-2005 18:09:54
Descargar Formulario monicasierrar OOP 8 29-09-2005 18:25:25


La franja horaria es GMT +2. Ahora son las 08:58:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi