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/