eso de los usuarios podria ser esto
http://phpcluster.host.sk/scripts/autentificator/
y sobre lo de retringir descargas.,,. pues bueno... puedes usar una session o una cookie, o ambas cosas... o mejor aun, almacenar el nº id de la descarga realizada en una tabla, y hasta que no pase un tiempo limite no se puede descargar... se implementaria un script automatico/dinamico que se encargaria de borrar todo lo que este pasado de fecha... asi la tabla siempre estaria limpia, dicho script funcionaria cada vez que alguien descarga o intenta descargar cualquier cosa, con lo cual siempre estaria limpia como ya digo...
otra de las cosas a tener encuenta cuando se trabaja con tablas que se añaden registros y se borran o actualizan continuamente, es la OPTIMIZACION, tanto con las demas tablas como con esta.
osea, no duplicar datos innecesarios... y optimizar automaticamente la tabla periodicamente, ya que el ingreso y borrado genera suciedad en la base de datos,un optimize a la semana no esta demas!