Expirar descargas en PHP

Iniciado por ka0s, 22 Septiembre 2010, 19:47 PM

0 Miembros y 1 Visitante están viendo este tema.

ka0s

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!

~ Yoya ~

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):

  • Mediante la IP
  • Creando usuarios

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



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...
Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

neopuerta360

Como se hace sin base de datos.

Kasi

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

neopuerta360

Como se hace sin base de datos.

~ Yoya ~

Mi madre me dijo que estoy destinado a ser pobre toda la vida.
Engineering is the art of balancing the benefits and drawbacks of any approach.

‭‭‭‭jackl007

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

neopuerta360

como voy a usar base de datos si no me funciona.