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. |
#8
|
||||
|
||||
Saludos
Es tema me ha interesado y tengo una preg.: Y si el usuario final está detras de un Proxy? Citaré el "WinProxy", con éste me he dado cuenta qeu te da detalles de todo lo que descargas y de las rutas.
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#9
|
||||
|
||||
Gracias a ti tambien Kayetano por tu ayuda.
Ahora vengo con lo siguiente: En el host donde se pondra esta pagina, hay un directorio a donde solo se puede accesar mediante FTP, que es el directorio superior a la web. Dentro del servidor esta la carpeta "USUARIO" donde habra una carpeta por cada dominio o subdominio que adquiera, lo que se veria de esta forma: >>usuario >>>//dominio1.com >>>>>//carpeta_dentro_del_dominio1 //Lo que se veria en el navegador de la siguiente manera: http://www.dominio1.com/carpeta_dentro_del_dominio1/ >>>//dominio2.com >>>>>//Carpeta_dentro_del_dominio2 //Lo que se veria en el navegador de la siguiente manera: http://www.dominio2.com/carpeta_dentro_del_dominio2/ con lo que creo podria hacer lo siguiente: Código PHP:
Segun tengo entendido, en esta web si van a haber unos archivos algo grandes, por lo que no se si consumiria mucho tiempo el crear un archivo temporal como me lo dice Kayetano, pero como digo, agradeceria comentarios y sugerencias. Saludos ya mil gracias a todos. |
#10
|
||||
|
||||
Cita:
Actualmente lo que uso, pero que es complejo es el archivo .htaccess de apache. Basicamente los ficheros estan en un directorio, digamos /var/public_html/files/ y tengo un archivo de configuración del sitio que esta en / por lo que no se puede leer, ya que el sitio empieza en /var/public_html/ Con esta idea el fichero de configuración solo es accesible por PHP, asi que ahi pongo un usuario y su password, supognamos el usuario DESCARGA, el cual es el único que tiene acceso a /var/public_html/files/ asi que cuando alguien quiere descargar el anti-leech entra al directorio de descarga con el usuario y la pass correspondiente y envia el fichero al cliente, pero este no solo no puede ver de donde lo descarga, sino que no tiene forma de entrar, y como la pass en el fichero de configuracion esta cifrada, ni yo la se. Esta es la forma más limpia de hacer esto, sin caer en fallos como llenar el buffer de descarga o que la descarga se pueda ver mediante un proxy. Saludos.
__________________
El diseño dira si tiene futuro... |
#11
|
||||
|
||||
Cita:
ReadFile lee el archivo real y lo manda al navegador pero éste no sabe de dóde viene. Lo único que sabe es el nombre que se le asigna en el header y el tamaño. // Saludos |
#12
|
||||
|
||||
Nunca he dado permisos a PHP fuera del /var/html/ me parece un fallo de seguridad, en el que mucha gente esta de acuerdo.
Pero si lo haces o si el host que tienes te lo permite, pues seria correcto roman !
__________________
El diseño dira si tiene futuro... |
#13
|
||||
|
||||
¿En qué consistiría el fallo? Una cosa son los permisos que php tenga y otra los que apache tenga. El hecho de que php pueda acceder a un directorio fuera de htdocs no implica que apache pueda hacerlo. Claro que si el archivo que inicia las descargas no se protege haciendo las verificaciones adecuadas pues entonces sí es inseguro y da lo mismo donde pongamos los archivos.
EDITO: Sé que puedo equivocarme y estoy abierto a sus argumentos. // Saludos Última edición por roman fecha: 08-01-2006 a las 21:25:33. |
#14
|
||||
|
||||
De hecho tienes razon roman ya que apache es solo un modulo de PHP yo utilizo acceso a otros directorios fuera de /var/www/ por ejemplo /home/usuario/ por mi propia comodidad, la unica diferencia es que esa carpeta la tengo abierta a un VHOST que me lo direcciona a http://dominio/usuario/ apache no puede ír más alla de donde tengo indicado el link virtual asi tenga permisos en home solo me redirecciona la hasta /home/usuario
__________________
RyCk |
#15
|
|||
|
|||
Hola
Cita:
|
|
|
|