Foros del Web » Programando para Internet » PHP »

Controlar qué usuario descarga un archivo

Estas en el tema de Controlar qué usuario descarga un archivo en el foro de PHP en Foros del Web. Buenas, Tengo una zona restringida en la que utilizo el Autentificator de Cluster para dar acceso a los usuarios. La zona restringida es una zona ...
  #1 (permalink)  
Antiguo 17/01/2006, 05:56
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
Controlar qué usuario descarga un archivo

Buenas,

Tengo una zona restringida en la que utilizo el Autentificator de Cluster para dar acceso a los usuarios.

La zona restringida es una zona de descargas, en la que el administrador, a través de un formulario sube archivos al servidor, y los usuarios pueden descargar los archivos.

El funcionamiento del formulario es el siguiente:

- Sube el archivo con ftp_put()
- Crea un registro mysql con la ruta del archivo

Luego en la página de descargas hago una consulta que me crea un listado de los archivos con su enlace.

Bien, hasta aquí todo perfecto. Lo que necesito hacer es controlar las descargas. Cuántas veces se ha bajado el archivo, y de cada una de las veces que se ha bajado: qué usuario se la ha bajado.

He estado viendo por el foro, pero no se habla de controlar qué usuario realiza la descarga (o por lo menos no lo he encontrado)

¿Alguna idea?
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
  #2 (permalink)  
Antiguo 18/01/2006, 02:51
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
¿A nadie se le ocurre nada?
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
  #3 (permalink)  
Antiguo 23/01/2006, 11:41
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Si tienes alguna forma para forzar la descarga no seria difícil. La idea es la siguiente, no poner el link con la ruta directa al archivo a bajar, tendría que para por una pagina intermedia en la cual por GET se pasaría el id del archivo a bajar, y por medio de sesiones ubicarías al usuario, si el usuario es correcto bla bla bla, en esa pagina intermedia sumas uno al contador de descargas de ese archivo y guardas (no sé donde, porque no aclaras mucho) el usuario que lo descargo.

Espero que te sirva de ayuda mi post, y si algo no quedo claro solamente pregunta.

Saludos.
  #4 (permalink)  
Antiguo 24/01/2006, 12:06
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
Gracias por tu respuesta DarioDario. Creo que capto la idea que me propones. Voy a retomar el tema y cuando lo consiga, o necesite más ayuda :) , lo postearé aquí.

Saludos.
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
  #5 (permalink)  
Antiguo 24/01/2006, 12:17
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
ese problema

Ese problema llevo un rato que lo estoy masticando, yo también tengo algo así por resolver.

La solución de DarioDario es buena, sin embargo, realmente no indica que alguien se ha descargado el archivo, sino que hicieron click en el enlace, que no es lo mismo.

Parece lo mismo, pero no es así, verán:

Supongan que venden un ebook y que le dicen al usuario que se lo descargue. Ya controlan la sesión y toda la cosa, pero supongan que el usuario tiene conexión lenta y que decide descargárselo otro día.

Al día siguiente, lo intenta, pero el server tiene algún problema y como que se alenta la descarga, ni modo, otro día lo intentará el cliente.

Al fin sucede, se va a un café y se acuerda del archivo que quería descargarse, así que se lo descarga y lo puede ver, qué bien, al fin lo vio, pero todavía no lo tiene en su disco duro, pero no importa, un día en su casa lo descargará.

¿Qué está pasando? Que según nuestras cuentas, el usuario se ha bajado el archivo 4 o 5 veces. Seguro que debe haber una solución, pues el servidor deja de enviar información y debe haber forma de saber esto mediante PHP.
  #6 (permalink)  
Antiguo 24/01/2006, 21:10
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
Bueno uamistad, a ver si esta opción te convence .

En primera instancia comento porque se me ocurrió, por algún lado del foro (lo buscando durante media hora, no lo voy a seguir buscando) vi un script que controlaba la "entrega" del archivo, osea forzaba la descargar y si este tenia una buena conección le enviaba de acuerdo a esta, esto lo logro con un bucle y un poco de ingenio. Ahora yo propongo lo siguiente, en vez de tener un código parecido a este.
Código PHP:
// No importa como se sabe el usuario, cookies, sessiones, elijan

algunaDB_query("A descargado el archivo!!!");

header"Content-Type: application/octet-stream");
header"Content-Length: ".filesize($ElFichero));
header"Content-Disposition: attachment; filename=".$TheFile."");
readfile($ElFichero); 
Porque no probamos haciendo lo siguiente.
Código PHP:
header"Content-Type: application/octet-stream");
header"Content-Length: ".filesize($ElFichero));
header"Content-Disposition: attachment; filename=".$TheFile."");
readfile($ElFichero);

algunaDB_query("A descargado el archivo!!!"); 
Bueno es solo cuestión de probarlo y ver que pasa. Yo no lo he probado solo se me ha ocurrido, que alguien que lo pruebe por favor avise como le fue y si sirve, se lo agradecería mucho.

Saludos y suerte.
  #7 (permalink)  
Antiguo 25/01/2006, 00:23
Avatar de uamistad  
Fecha de Ingreso: diciembre-2004
Ubicación: Cd. de México
Mensajes: 1.395
Antigüedad: 19 años, 4 meses
Puntos: 1
De acuerdo eres un genio, hermano !!

Pues te cuento que yo vendía Ebooks, man. Le daba a la gente una contraseña y se los podía descargar.

Pero me pasó que luego esa persona compartía la contraseña con otras personas, gastando mi ancho de banda con ello y pensé en hacer un contador de descargas para darle permiso únicamente de descargar el archivo unas 2 o 3 veces, pero no funcionó por lo que comenté en el otro post, lo que yo estaba haciendo era contar los clicks que daba el usuario, no la descarga.

Probé tu solución, qué bárbaro, tan cerca que estuve de llegar al tesoro !!

Por comodidad, en lugar del query, usé mail() para las pruebas.

Código PHP:
$fichero="pruebas.pdf";
$email="uamistad@(correo de Google)";
$subject="Sí jaló !!";
$message="Este mensaje ha llegado, la descarga fue satisfactoria.";

header"Content-Type: application/octet-stream");
header"Content-Length: ".filesize($fichero));
header"Content-Disposition: attachment; filename=".$fichero."");
if(
readfile($fichero))
    
mail($email,$subject,$message); 
Gracias, k'
  #8 (permalink)  
Antiguo 25/01/2006, 07:10
 
Fecha de Ingreso: junio-2005
Mensajes: 981
Antigüedad: 18 años, 10 meses
Puntos: 2
De nada. Yo no recuerdo haber leído algo como esto en las FAQ's, despues me voy a fijar bien y si no está lo agrego.

Saludos y gracias por avisar que anda.
  #9 (permalink)  
Antiguo 25/01/2006, 11:11
Avatar de franquero  
Fecha de Ingreso: julio-2005
Mensajes: 179
Antigüedad: 18 años, 9 meses
Puntos: 1
De acuerdo Genial

Wow, parece mentira lo que un iniciado en php como yo puede llegar a hacer con vuestra ayuda.

Muchas gracias, DarioDario y uamistad, y a todos los que con vuestras respuestas y aportaciones contribuís a que los que estamos perdidos encontremos el camino y sigamos progresando.
__________________
Es una suerte que la sociedad libre sea más productiva, porque de no haberlo sido jamás se habría tolerado.
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 02:22.