Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: ka0s en 22 Septiembre 2010, 19:47 PM

Título: Expirar descargas en PHP
Publicado por: ka0s en 22 Septiembre 2010, 19:47 PM
Buenas gente, tengo la siguiente consulta:
Quiero hacer en PHP que un usuario pueda bajar un archivo una sola vez y después se destruya el LINK o que pueda bajarlo durante X tiempo.

Googleé y no encontré nada. Probé con todo, poniendo "expirar descargas PHP", etc...
Si alguien me puede dar una mano o un ejemplo de como se hace.

O como buscarlo precisamente en Google me haría un gran favor.

Muchas gracias!
Título: Re: Expirar descargas en PHP
Publicado por: ~ Yoya ~ en 22 Septiembre 2010, 20:14 PM
Buenas, puedes hacerlo de de dos manera...

El problema principal radicaría en identificar cada usuario, a mi se me ocurren dos maneras (Las dos usando DB):

Bueno en la primera opción es mediante la IP, puedes crear una columna para dejar hay todas las ip que han descargado, comparas la ip del usuario con la de la Base de datos, si son iguales no se podrá descargar, si son distinta se podrá descargar.

Leer:X-Forwarded-For (http://en.wikipedia.org/wiki/X-Forwarded-For)



La otra opción es creando usuarios y verifica si el usuario ah descargado el archivo y si lo ah descargado, le deniegas el acceso luego...
Título: Re: Expirar descargas en PHP
Publicado por: neopuerta360 en 22 Septiembre 2010, 22:09 PM
Como se hace sin base de datos.
Título: Re: Expirar descargas en PHP
Publicado por: Kasi en 23 Septiembre 2010, 16:48 PM
A mi se me ocurre otra cosa:

- Lo que puedes hacer es que cuando se descargue el archivo, se ejecute un script, que almacene en la BD que fichero se ha descargado y quede como "marcado" entonces con otro script que se ejecute periodicamente ( cada X tiempo, definido por ti ) obtenga la ruta del fichero, y lo renombre con un token aleatorio, es decir, seria el mismo fichero, pero renombrado con un código aleatorio para que el link nunca sea el mismo), por ejemplo:

El usuario descarga el fichero X.zip una vez.

Al descargalo guardamos en una tabla que el fichero X.zip ha sido descargado.

Cuando el script programado se ejecute buscará en la tabla los ficheros que debe actualizar.

Cuando encuentre el fichero X.zip, lo cojera y generará un random, y el fichero pasará a llamarse por ejemplo : Xaoidw4tnn.zip (Notese que acabo de aporrear el teclado para sacar ese churro de letras sin sentido xDD ), una vez hecho, borramos de la tabla a X.zip que ya no existe, dejando a Xaoidw4tnn.zip listo para poder descargarse nuevamente).

Basicamente la idea es esa, aunque luego habria que tener en cuenta mas criterios, por ejemplo cada cuanto tiempo actualizar, si se restringe la descarga si el fichero esta marcado como descargado o no, etc...

Espero que te sirva la idea, un saludo
Título: Re: Expirar descargas en PHP
Publicado por: neopuerta360 en 23 Septiembre 2010, 17:50 PM
Como se hace sin base de datos.
Título: Re: Expirar descargas en PHP
Publicado por: ~ Yoya ~ en 23 Septiembre 2010, 20:18 PM
Cita de: neopuerta360 en 23 Septiembre 2010, 17:50 PM
Como se hace sin base de datos.

usando la cabesa
Título: Re: Expirar descargas en PHP
Publicado por: ‭‭‭‭jackl007 en 23 Septiembre 2010, 20:57 PM
usa BD sino  mueres, si tienes 1000 visitas diarias y no usas BD, estas muerto.

cuando el usuario descarga el fichero (usando un link redireccionador), entonces guardas su IP, hora del usuario, y luego cuando se ejecute ese script verificas que si su IP es la misma, y borras los registros que ya vencieron (x dias).

Busca un manual de visitantes online que tiene la misma logica, revisa este enlace:
http://www.baluart.net/articulo/usuarios-online-con-php-mysql

Si siges terco y dices: sin bd, entonces no es lo tuyo la programacion y dedicate a otra cosa (en serio). Te animo a que aprendas a usar la BD, y tendras muy muy buen provecho despues tambien
Título: Re: Expirar descargas en PHP
Publicado por: neopuerta360 en 23 Septiembre 2010, 21:21 PM
como voy a usar base de datos si no me funciona.