Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/02/2006, 15:12
Avatar de jeanclon
jeanclon
 
Fecha de Ingreso: mayo-2005
Mensajes: 258
Antigüedad: 18 años, 10 meses
Puntos: 2
Contador de descargas.

Saludos, mi problema es el siguiente:

Tengo una pagina donde se pueden descargar archivos, y estoy contabilizando cuantas descargas han realizado, he seguido los consejos de otros post con respecto a esto, cree una base de datos con un campo para la direccion de los archivos, y otro para el contador, y envio la variable.

Hago la llamada a la pagina de descarga de la siguiente forma:
Código HTML:
<a href="download_radio.php?id=http://www.pagina.com/archivo.mp3">Programa de Radio</a> 

y luego en la pagina de descargas, obtengo la variable por get, hago el select en la base de datos para incrementar el contador, actualizo la tabla y luego utilizo el codigo que esta en los comentarios de la pagina de php en la parte de headers para redireccionar a la descarga.

en $ruta esta la direccion que obtuve por GET, la coloco en $file por que en el codigo de direccionamiento utilizaban $file, en fin:
Este es ese codigo:

Código PHP:
$file=$ruta;



   
//Primero se verifica si la ruta existe. Problema aca, siempre dice que no existe, por eso lo quito.
   //if (!is_file($file)) { die("<b>404 File not found!</b>"); }

   //Separando y obteniendo informacion
   
$len filesize($file);
   
$filename basename($file);
   
$file_extension strtolower(substr(strrchr($filename,"."),1));
echo 
$filename;
   
//Se define el contenido-tipo mas apropiado para cada caso
   
switch( $file_extension ) {
         case 
"pdf"$ctype="application/pdf"; break;
     case 
"exe"$ctype="application/octet-stream"; break;
     case 
"zip"$ctype="application/zip"; break;
     case 
"doc"$ctype="application/msword"; break;
     case 
"xls"$ctype="application/vnd.ms-excel"; break;
     case 
"ppt"$ctype="application/vnd.ms-powerpoint"; break;
     case 
"gif"$ctype="image/gif"; break;
     case 
"png"$ctype="image/png"; break;
     case 
"jpeg":
     case 
"jpg"$ctype="image/jpg"; break;
     case 
"mp3"$ctype="audio/mpeg"; break;
     case 
"wav"$ctype="audio/x-wav"; break;
     case 
"mpeg":
     case 
"mpg":
     case 
"mpe"$ctype="video/mpeg"; break;
     case 
"mov"$ctype="video/quicktime"; break;
     case 
"avi"$ctype="video/x-msvideo"; break;

     
//Archivos que no son descargables (sensitive stuff, like php files)
     
case "php":
     case 
"htm":
     case 
"html":
     case 
"txt": die("<b>Cannot be used for "$file_extension ." files!</b>"); break;

     default: 
$ctype="application/force-download";
   }

   
//Excribiendo cabeceras
   
header("Pragma: public");
   
header("Expires: 0");
   
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
   
header("Cache-Control: public"); 
   
header("Content-Description: File Transfer");
   
   
//Se define el Content-Type generado en el select - case
   
header("Content-Type: $ctype");

   
//Para forzar que sea una descarga y no un reconocimiento de archivo...
   
$header="Content-Disposition: attachment; filename=".$filename.";";
   
header($header);
   
header("Content-Transfer-Encoding: binary");
   
header("Content-Length: ".$len);
   @
readfile($file); 
Ahora bien todo lo hace bien, el contador y todo, el problema esta en que si le doy a descargar a un archivo, y luego de ese enseguida intento descargar otro, y en vez de hacerlo bien, me abre la pagina de descarga mostrandome un monton de caracteres sin sentido a lo largo de toda la pagina y si lo dejo la pagina se va llenando poco a poco de puras cosas raras.

En resumen es como si no me dejara realizar dos descargas seguidas por que aparece el error de la pagina llena de caracteres.

Por que puede estar pasando esto??, cual podria ser la solucion, sera que no puedo hacer dos GET seguidos a la misma variable, no se, no entiendo por que sucede eso.
Por otro lado he visto que si descargo un archivo y le doy a actualizar pagina (donde estan los link a descargar) y luego intento descargar otro si me lo deja hacer.

He intentado poner un direccionamiento desde la pagina de descarga que me devuelva a la pagina donde estan los link pero si lo hago no lanza el cuadro de dialogo de descarga.