Foros del Web » Programando para Internet » PHP »

contador descargas PHP

Estas en el tema de contador descargas PHP en el foro de PHP en Foros del Web. Buenos dias a todo el foro. Estoy haciendo un contador de descargas para archivos mp3. para ello he creado un enlace: <a href="can/can-completes/descargas.php?archivo=<?php echo "$id"; ...
  #1 (permalink)  
Antiguo 03/09/2011, 06:08
 
Fecha de Ingreso: abril-2010
Mensajes: 52
Antigüedad: 14 años
Puntos: 0
contador descargas PHP

Buenos dias a todo el foro.
Estoy haciendo un contador de descargas para archivos mp3.
para ello he creado un enlace:
<a href="can/can-completes/descargas.php?archivo=<?php echo "$id"; ?>">descargar</a> en la página inicial de descargas
que me lleva a la pagina descargas.php donde tengo un contador hecho con archivos .txt y además el código para forzar la descarga. Todo ello funciona perfectamente:
<?php
$archivo = $_GET['archivo'];
if (file_exists("$archivo")) {
header('Pragma: public');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Cache-Control: private',false);
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=".$_GET['archivo'].".mp3");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($archivo));
readfile($archivo);
header("location: $archivo");
$file = fopen("$archivo.txt","r"); // archivo contador de descargas
$count = fread($file, 100);
$countplus = ($count + 1);
fclose($file);
$fileb = fopen("$archivo.txt","w");
fwrite($fileb, $countplus, 100);
fclose($fileb);
}
else { echo "El archivo <b>$archivo</b> no existe. Notifíquelo al webmaster. Gracias"; }
?>


El caso es que quisiera hacer el contador sin archivos .txt y usar la base de datos mysql.
NO LO CONSIGO, si en la página de descargas hago un UPDATE a la base de datos y envio +1 a un campo que he creado en la BD mysql tengo problemas con los HEADERS.
Como puedo hacer para sustituir el contador con archivos .txt para hacer un contador sin archivos .txt sinó enviando un +1 a un campo de la BD ?
  #2 (permalink)  
Antiguo 03/09/2011, 09:25
Avatar de jcarrascal  
Fecha de Ingreso: enero-2008
Mensajes: 87
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: contador descargas PHP

El problema con las cabeceras que estás experimentando probablemente se debe a que MySQL te está avisando de un error de sintaxis.

Pero otro problema que veo en el script que estás usando es que permite descargar cualquier archivo de tu sitio (incluyendo el código fuente de tu sitio).

Lo mejor en estos casos es restringir las descargas a una sola carpeta. Te muestro cómo lo haría yo: http://pastebin.com/mPAJNTeW

No olvides que para usar el script que te paso deberás 1) crear la tabla, 2) configurar la carpeta de descargas 3) configurar la conexión a la base de datos.

Saludos
  #3 (permalink)  
Antiguo 03/09/2011, 11:59
 
Fecha de Ingreso: abril-2010
Mensajes: 52
Antigüedad: 14 años
Puntos: 0
Respuesta: contador descargas PHP

Gracias mil por tu tiempo!
Por mas que reviso las rutas a las carpetas y archivos que todo es Ok pero no me encuentra los archivos.
Salta el error:
echo "El archivo <b>$archivo</b> no existe. Notifíquelo al webmaster. Gracias";
???
  #4 (permalink)  
Antiguo 03/09/2011, 12:41
Avatar de jcarrascal  
Fecha de Ingreso: enero-2008
Mensajes: 87
Antigüedad: 16 años, 3 meses
Puntos: 6
Respuesta: contador descargas PHP

¿Pusiste un / al final de la ruta de la carpeta?

Código PHP:
Ver original
  1. $carpeta = '/ruta/a/las/descargas/';

Debe terminar con un /

Otra cosa que puedes hacer es poner un echo para ver cuál archivo está tratando de abrir:

Código PHP:
Ver original
  1. $ruta = $carpeta . $archivo;
  2. echo $ruta;
  3. if (file_exists($ruta)) {

Si te sigue dando problemas me avisas y nos contactamos por chat.
  #5 (permalink)  
Antiguo 03/09/2011, 13:22
 
Fecha de Ingreso: abril-2010
Mensajes: 52
Antigüedad: 14 años
Puntos: 0
Respuesta: contador descargas PHP

Al final lo he podido solucionar.
Muchas gracias por la ayuda !!!

Última edición por matajazz; 12/09/2011 a las 11:40 Razón: solucionado

Etiquetas: contador, descargas, mysql
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:03.