Autor
|
Tema: Expirar descargas en PHP (Leído 4,229 veces)
|
ka0s
Desconectado
Mensajes: 308
|
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!
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
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...
|
|
|
En línea
|
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
Desconectado
Mensajes: 240
La mejor comunidad de neopets
|
Como se hace sin base de datos.
|
|
|
En línea
|
|
|
|
Kasi
Desconectado
Mensajes: 76
|
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
|
|
|
En línea
|
|
|
|
neopuerta360
Desconectado
Mensajes: 240
La mejor comunidad de neopets
|
Como se hace sin base de datos.
|
|
|
En línea
|
|
|
|
~ Yoya ~
Wiki
Desconectado
Mensajes: 1.125
|
Como se hace sin base de datos.
usando la cabesa
|
|
|
En línea
|
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
Desconectado
Mensajes: 1.403
[UserRPL]
|
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-mysqlSi 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
|
|
|
En línea
|
|
|
|
neopuerta360
Desconectado
Mensajes: 240
La mejor comunidad de neopets
|
como voy a usar base de datos si no me funciona.
|
|
|
En línea
|
|
|
|
|
|