Foros del Web » Programando para Internet » PHP »

Contador de descargas.

Estas en el tema de Contador de descargas. en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 10/02/2006, 15:12
Avatar de jeanclon  
Fecha de Ingreso: mayo-2005
Mensajes: 258
Antigüedad: 12 años, 6 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.
  #2 (permalink)  
Antiguo 10/02/2006, 15:49
Avatar de jeanclon  
Fecha de Ingreso: mayo-2005
Mensajes: 258
Antigüedad: 12 años, 6 meses
Puntos: 2
Desacuerdo Errrorrrrr

Bueno señores, espero si es posible que un administrador cierre este post, si quieren claro eso solo lo deciden ustedes.

Lo que pasa es que me acabo de dar cuenta de la estupidez que estaba cometiendo, las rutas de acceso a los archivos de descargas estaban malas, en el envio por GET, puse la direccion completa:

Código HTML:
download_radio.php?id=http://www.pagina.com/archivo.mp3
cuando solo tenia que colocar el archivo:

Código HTML:
download_radio.php?id=archivo.mp3
Esta pena que paso, me toca por perder la paciencia tan rapido.
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 20:52.