Ver Mensaje Individual
  #8 (permalink)  
Antiguo 06/06/2004, 11:10
Avatar de xcorpion
xcorpion
 
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 20 años, 6 meses
Puntos: 4
mira sir_logan, para que ya no te la compliques aqui te mando un script sensillisimo de como se pueden limitar las descargas espero que lo entiendas:
esto supone que el nombre del archivo se pasa como parametro por el metodo get con la variable $_GET["archivo"], que el usuario acepta cualquier tipo de cookies, que la variable con la que manejas el id de usuario en una sesion es $_SESSION["usuario"] y que las descargas son directas y no utilizas bases de datos, puedes cambiar las 3 primeras variables. error_limite_revazado.php es el archivo de error que se muestra cuando el limite de descargas se ha alcanzado. Ten en cuenta que es mas fiable usar descargas con archvos que se encuentran en bases de datos pero eso te limita el tamaño de los archivos. Para cualquier duda aqui estamos.
<?
/*programado por xcorpion para la comunidad de forosdelweb.com
Domingo 6 de Junio de 2004 12:10 PM(GTM -6) Hora de México */

$limite = 3; //limite de descargas para usuarios anonimos
$pathdownloads = "http://misitio.com/downloads/"; //carpeta donde se situan los archivos a descargar
$archivo = $_GET["archivo"]; //nombre del archivo a descargar


session_start();
//si hay una sesion activa con el usuario le damos pase automatico
if(isset($_SESSION["usuario"])){
$url = $pathdownloads . $archivo;
header("Location: $url");
//si no tiene session activa le contamos las descargas
}else{

//verifico el visitante
if(isset($_COOKIE["descargas"])){
//si ya llego al limite de descargas le mando un error
$ndescargas = $_COOKIE["descargas"];
if($ndescargas == $limite){
include("error_limite_revazado.php");
exit;
}else{
$ndescargas++;
//actualizo la cookie
setcookie("descargas",$ndescargas,time()+180000);
header("Location: $url");
}
}else{
/*si es su primera visita defino una
cookie en el cliente que expira en 50 días*/
setcookie("descargas","1",time()+180000);
}

}
?>