Ver Mensaje Individual
  #12 (permalink)  
Antiguo 06/06/2004, 13:02
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
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/