Foros del Web » Programando para Internet » PHP »

limitar las descargas a usuarios anonimos

Estas en el tema de limitar las descargas a usuarios anonimos en el foro de PHP en Foros del Web. hola alguien me puede decir cual es el codigo para limitar a los usuarios anonimos las descargas digamos que 3 descargas maximas como anonimo y ...
  #1 (permalink)  
Antiguo 02/06/2004, 20:47
 
Fecha de Ingreso: junio-2004
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
limitar las descargas a usuarios anonimos

hola alguien me puede decir cual es el codigo para limitar a los usuarios anonimos las descargas digamos que 3 descargas maximas como anonimo y ya registrado las que el quiera solo para que se registren mas usuarios a mi web asi como la opcion que en desarrolloweb tiene que tendrias que recargar las descargas si me pueden ayudar porfavor mi web esta basada en php si hay un script o codigo diganme porfavor se los agradeseria mucho atte

logan webmaster www.sailent.com
  #2 (permalink)  
Antiguo 02/06/2004, 20:58
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 14 años, 2 meses
Puntos: 4
lo que tienes que hacer es registrar todas las descargas y su origen, y verificar el halla una sesion activa para permitir las descargargas ilimitadas, en el caso de usuarios anonimos les contaras las descargas que ha hecho basado en su direccion IP. En php es pan comido. U otra, a los usuarios anonimos les mandas una cookie como contador de descargas asi cuando visiten de nuevo el sitio con diferente direccion IP podras denegarle la descarga hasta que se registre.
  #3 (permalink)  
Antiguo 03/06/2004, 23:54
 
Fecha de Ingreso: junio-2004
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
pero como se hace

soy nuevo en php notan novato pero el codigo php casi no lo comprendo si me podrias poner un ejemplo telo agradeseria
  #4 (permalink)  
Antiguo 04/06/2004, 00:00
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 14 años, 2 meses
Puntos: 4
nesesito saber en donde que es lo que se te dificulta, o que es lo que necesitas saber. Sabes registrar variables de sesiones?, sabes manejar bases de datos sql?. Dime donde estas para decirte donde ir.
  #5 (permalink)  
Antiguo 06/06/2004, 00:49
 
Fecha de Ingreso: junio-2004
Mensajes: 3
Antigüedad: 13 años, 6 meses
Puntos: 0
Sonrisa mira

en la pagina pricipal de desarrollo web cuando me ternime de descargar tres archivos me diacia que tenia que recargar con un ejemplo asi pero el usuario anonimo solotendra tres descargas y luego de esas tres descargas que salga un mensaje diciendo que ya no tiene mas descarasg disponibles que es necesario registrarse
no se mucho de sql soy novatos no entiendo de variavles solo yo canbio algunas cosas y si me podrias decir donde consigo un manualde sql y php que esplique bien y adecuadamente que significa cada cosa y para que es
o si con algun script se puede dime como somo lo pondria

Última edición por sir_logan; 06/06/2004 a las 00:50
  #6 (permalink)  
Antiguo 06/06/2004, 01:04
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 14 años, 2 meses
Puntos: 4
ok, no hay problema, php y mysql son muy simples, puedes empezar leyendo un poco de php, no es muy dificil hacer lo que estas proponiendo pero deves hacerlo por ti mismo, o tambien pudes optar por buscar un script en hotscripts.com que haga lo que quieres hacer, yo podria ponerte un ejemplo pero, no lo vas a entender y en el caso de que tubieras problemas va ha ser mas dificil soloucionarlos, te propongo que leas sobre sesiones de PHP, insersion, modificacion y seleccion de tablas en mysql. Es lo basico que necesitas saber para programar el modulo que quieres. Si tienes problemas avisame.

para sesiones leete:
http://www.desarrolloweb.com/articulos/235.php

para mysql leete:
http://www.desarrolloweb.com/manuales/9/
  #7 (permalink)  
Antiguo 06/06/2004, 03:19
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 14 años, 1 mes
Puntos: 1
mm bueno, no queda mucho que decir, excepto que como me comentaron antes, realmente la mejor fuente para documentarte es http://www.php.net

ahi vas a encontrar la información necesaria para hacer tus scripts. PHP es sencillo, tu manera de pensar e ingenio son lo que hacen de PHP un lenguaje poderoso..

un saludo
  #8 (permalink)  
Antiguo 06/06/2004, 12:10
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 14 años, 2 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);
}

}
?>
  #9 (permalink)  
Antiguo 06/06/2004, 12:13
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 14 años, 2 meses
Puntos: 4
nota: el script que te mande es el que procesa las descargas no tiene nada que ver con el inicio y finalizacion de session.
Un ejemplo
archivo en el servidor
http://misitio.com/downloads/emule.exe
link para descarga
http://misitio.com/script_download.p...hivo=emule.exe
  #10 (permalink)  
Antiguo 06/06/2004, 13:36
 
Fecha de Ingreso: noviembre-2003
Mensajes: 52
Antigüedad: 14 años, 1 mes
Puntos: 0
el tema es que con ese script cuando lo pones para bajar podes ver de donde baja, o sea, donde esta ubicado el archivo, y podes ir a buscarlo para bajarlo sin pasar por el script y bajarlo cuantas veces quieras sin el control del script

  #11 (permalink)  
Antiguo 06/06/2004, 13:40
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 14 años, 2 meses
Puntos: 4
es un script basico, les digo que pueden usar archivos incrustados en bases de datos pero eso limita el tamaño de los archivos, otra seria usar una tabla para los archivos y asignar un ID con atributo autoincremet para todos los archivos asi solo tendria que especificarse un id para el archivo a descargar, en ese caso abria que hacer una consulata a la bdd y estraer el nombre del archivo y hubicacion.
  #12 (permalink)  
Antiguo 06/06/2004, 14:02
Avatar de xcorpion  
Fecha de Ingreso: octubre-2003
Ubicación: m é x i c o
Mensajes: 676
Antigüedad: 14 años, 2 meses
Puntos: 4
aqui les dejo una modificacion del codigo, para esconder la carpeta y nombre de archivo del, avisenme si tiene errores , la neta ni lo prove, pero deberia funcionar bien, para esto debemos tener una tabla sql con los campos minimos: id, nombre, tamanio y tipo(MIME)
Código PHP:
<?
    
/*programado por xcorpion para la comunidad de forosdelweb.com
    Domingo 6 de Junio de 2004 12:10 PM(GTM -6) Hora de México
    Ultima modificación: Domingo 6 de Junio de 2004 1:58 PM(GTM -6)  */

require("conecta.php");
$limite 3;
$pathdownloads "http://misitio.com/downloads/";
$id $_GET["id"];

    
//funcion que busca el archivo y comienza la descarga
function download($id){
    
$query  "SELECT * FROM downloads_archivos WHERE id = $id LIMIT 1";
    
$sel mysql_query($query);
    if(
mysql_num_rows($sel)){
        
$datosarchivo mysql_fetch_array($sel);
        
mysql_free_result($sel);
        
$nomarchivo $datosarchivo["nombre"];
        
$tiparchivo $datosarchivo["tipo"];
        
$tamanio $datosarchivo["tamanio"];

        
$archivo $pathdownloads $nomarchivo;
        
$fp fopen($archivo"rb");
        
$contenido fread($fp$tamanio);
        
fclose($fp); 
        
header("Content-type: $tipo");
        
header("Content-Disposition: ; filename=\"$titulo\""); 
        print 
$contenido
    }else{
        die(
"Archivo inexistente en nuestra bdd.");
    }
}

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);
                
download($id);
            }
    }else{
            
/*si es su primera visita defino una 
            cookie en el cliente que expira en 50 días*/
        
setcookie("descargas","1",time()+180000);
    }

}


?>
si quieren usar archivos incrustados en bdds consulten http://www.programacion.com/php/articulo/datos_blob/
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:43.