FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
|
#1
|
||||
|
||||
Que significa este codigo?
Código PHP:
Lo que me piden es hacer una web que permita realizar algunas descargas unicamente si el usuario ha introducido una clave que se le envia por correo, pero al llegar a este punto me encuentro con que cualquier usuario puede ver de donde pueden descargar el archivo desde el cuadro que aparece en cualquiera de los exploradores al iniciar una descarga. La verdad no entiendo para nada este codigo, lo que dice la explicacion de ello es: Cita:
Saludos y gracias por sus respuestas. |
#2
|
||||
|
||||
Para mi que estaría más correcto así:
Código PHP:
$filename es el nombre que deseas que le aparezca al usuario, puede ser cualqiera que se te ocurra. Los header le indican al navegador del usuario que lo que el servidor manda tiene por nombre $filename y le indica el tamaño de forma que el navegador pueda poner la barra de progreso de descarga. readfile simplemente lee el archivo (el real) y lo escupe hacia el navegador. El primer header entonces, indica alnavegador (creo) que es una archivo a descargar y no algo que presentar en la ventana. El script donde colocarías este código tendría primero que revisar si se ha introducido la clave. El usuario únicamente verá que se está descargando un archivo de nombre 'otro_nombre_de_archivo.txt' pero no podrá saber que el archivo original en realidad se llama 'archivo.txt' y- más importante -no sabrá su ubicación real. // Saludos |
#3
|
||||
|
||||
Hoye Roman, mejor explicado, ni con tutor privado.
Muchas gracias. Saludos desde Guatemala. |
#4
|
||||
|
||||
Seguro que se puede ocultar el lugar de la descarga?
con el administrador de descargas de Mozilla se puede ver desde donde se descarga aunque tenga el "archivo.php?id=1" haciendo click derecho y propiedades en el archivo. Y me parece que con otros también, con el DAP por ejemplo. Creo que hay que encararlo desde el punto de vista de los permisos y tiempos de acceso al lugar donde se descarga (creo ) Saludos
__________________
And I'd like an hour on the holodeck with Seven of Nine. |
#5
|
||||
|
||||
En todos los navegadores si le das a un link a un archivo de texto, por defecto te lo mostrará sin presentarte opción a descargarlo, asi que debes tu seleccionarlo y copiarlo o un guardar como.
Enviando los headers al navegador, se puede hacer que el navegador no "interprete" y que haga lo que le dice el host. En este caso una web, asi seria la única forma de poder presentarle al que esta mirando la web un fichero para descargar, que simplente es un TXT. Pero bue... el readfile esta de más en esas lineas, si lo que estas buscando es hacer un anti-leech (que el usuario final no vea de donde descarga)... Si esta bien hecho no lo ve ni Dios... ni con mozilla ni nada. Este me ha sido útil durante mucho tiempo, y aun nadie ha logrado pasarlo. Código PHP:
Ya me diras si te sirve ! Saludetes.
__________________
El diseño dira si tiene futuro... Última edición por dec fecha: 08-01-2006 a las 15:00:29. |
#6
|
|||
|
|||
Hola
Como bien dice Xianto este código lo único que hace es obligar al navegador a abrir la ventana de descarga. Si lo que quieres es que no puedan localizar tus archivos puedes hacerlo de dos formas muy fáciles: Primera opción: 1. Identificar al usuario. 2. Cargar en memoria el archivo, con fopen y fread por ejemplo. 3. Mandar las cabeceras ya citadas. 4. Enviar el contenido del archivo que tenemos cargado en memoria Código PHP:
Segunda opción: 1. Identificar al usuario. 2. Copiar el archivo que se va a descargar en una carpeta temporal. Te aconsejo que utilices la funcion tmpfile() para generar un archivo con nombre único para no sobre escribir el que este descargando otro usuario. 3. Mandas las cabeceras. 4. Envias el archivo desde el directorio temporal. 5. Borras el archivo del directorio temporal, con lo que ya no es accesible para nadie. |
#7
|
||||
|
||||
Muchas gracias Xianto por tu ayuda, tendre que revisarlo con un poco de tiempo, porque no son muy bueno en esto, cualquier duda que tenga con respecto a tu codigo te la pongo luego.
Saludos y mil gracias. |
|
|
|