Cuenta descarga

Iniciado por Meta, 27 Septiembre 2008, 01:42 AM

0 Miembros y 1 Visitante están viendo este tema.

Meta

Hola:

En una web html sencillo, cambiando la extensión a .php. Quiero incluir esta frase: Descargar Manual WinPic800 PDF XPS.

En la palabra PDF que tenga un enlace a un archivo llamado Winpic800.pdf guardado en un directorio llamado manuales. Con el formato XPS lo mismo. La extensiones también podrían ser .zip si me interesa que se lo descarguen comprimido.

Subo estos archivos al servidor de Lycos y funciona. Lo que no se hacer es un cuenta click de descarga con PHP y MySQL.

Bueno, en un lado del texto "Descargar Manual WinPic800 PDF XPS" debe aparecer el número de descargas tanto en el enlace de PDF como en XPS ya que los datos descargados o que en cada click se guarda en la base de datos. Lo mismo que cuando visitamos un foro, al hacer click en un tema, se cuenta el números de visitas.

Me bajé el manual de php aquí, pero no se nada ni buscar en él.

Eso si, incluye el phpmyadmin para crear tablas  de MySQL que es donde se va a guardar los datos descargados.

Un cordial saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Diabliyo

Cita de: Meta en 27 Septiembre 2008, 01:42 AM
Hola:

En una web html sencillo, cambiando la extensión a .php. Quiero incluir esta frase: Descargar Manual WinPic800 PDF XPS.

En la palabra PDF que tenga un enlace a un archivo llamado Winpic800.pdf guardado en un directorio llamado manuales. Con el formato XPS lo mismo. La extensiones también podrían ser .zip si me interesa que se lo descarguen comprimido.

Subo estos archivos al servidor de Lycos y funciona. Lo que no se hacer es un cuenta click de descarga con PHP y MySQL.

Bueno, en un lado del texto "Descargar Manual WinPic800 PDF XPS" debe aparecer el número de descargas tanto en el enlace de PDF como en XPS ya que los datos descargados o que en cada click se guarda en la base de datos. Lo mismo que cuando visitamos un foro, al hacer click en un tema, se cuenta el números de visitas.

Me bajé el manual de php aquí, pero no se nada ni buscar en él.

Eso si, incluye el phpmyadmin para crear tablas  de MySQL que es donde se va a guardar los datos descargados.

Un cordial saludos.

No se te entiende nada :S, creo que ni tu mismo sabes lo que quieres !!...

1- No te explicas bien.
2- Tienes un contador de descargas ??.

que quieres hacer ?? :S !!...

explicate mejor !!


Meta

En este código quiero hacer un contador de descarga. Que al descargar el archivo cuente esa descarga en MySQL y se muestre las cantidad de descargas al lado donde pone PDF.


Código (html4strict) [Seleccionar]

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
Descargar Winpic800 PDF XPS
</body>
</html>
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Diabliyo

Cita de: Meta en 27 Septiembre 2008, 05:52 AM
En este código quiero hacer un contador de descarga. Que al descargar el archivo cuente esa descarga en MySQL y se muestre las cantidad de descargas al lado donde pone PDF.


Código (html4strict) [Seleccionar]

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>
Descargar Winpic800 PDF XPS
</body>
</html>


Vaya, alfin esta mas clara tu duda jejeje...

Mira, para que puedas llevar un conteo de las descargas de cada archivo lo puedes manejar de dos maneras, pero en ambas manera es necesario que programes en PHP un poco (bueno, en realidad si es bastantito :D), asi que de antemano debes leerte algun buen manual de php(te recomiendo: www.desarrolloweb.com), y tambien debes tener en cuenta que para crear un conteo de descargas debes utilizar una forma de almacenar el contador, esto puede ser por medio de archivos o por medio de bases de datos (mysql).

Las formas son asi:

FORMA 1 - Usando archivos
Primeramente debes crear una archivo PHP con el cual invocarias la descarga seria algo asi: descargar.php?file=10, el archivo descargar.php realizaria la apertura del contador, que seria micontador.txt, este contador poseera una cadena delimitada por algun simbolo, por ejemplo:

/carpeta/archivo.pdf|1

En donde:

/carpeta/archivo.pdf es el nombre del archivo a proporcionar para su descarga.
| es el delimitador.
1 es el numero de descargas hasta el momento.

Despues solo proporcionar el archivo utilizando:

Código (php) [Seleccionar]
<?php
//"file_id" es el numero de la descarga
$fpfopen"micontador.txt""r" );
$i=0//contador de ID's
$big_buffer=""//buffer gigante donde almacenamos todo el archivo

while( !feof($fp) )
     {
     
$buffgets($fp);
     if( 
$i==$_GET["file_id"] ) //si estamos leyendo el ID a descargar
          
{
          
$xexplode"|"$buf ); //explotamos/partimos buffer por el delimitador
          
$big_buffer .= $x[0]; //concatenamos archivo
          
$big_buffer .= "|"//concatenamos delimitador
          
$big_buffer .= ($x[1]+1); //concatenamos aumento +1 del contador

          
echo file_get_contents$x[0] ); //proporcionamos descarga

          
unset($x);
          }
     else
          
$big_buffer .= $buf//concatenamos buffer directo
     
unset($buf); //limpiamos buffer
     
$i++; //incrementamos
     
}
fclose($fp); //cerramos archivo
unset($fp); //limpiamos fp

$fp_outfopen"micontador.txt""w" ); //abrimos archivo eliminando todo su contenido
fwrite($fp_out$big_buffer); //escribimos el buffer gigante
fclose($fp_out);
unset(
$fp_out); //limipiamos fp
unset($big_buffer); //limpiamos buffer
?>


Ese script te ayudara para proporcionar la descarga e incrementar el contador :D, bueno, es algo rustico y pesado, pero es una buena idea para que vayas entendiendo como se maneja eso :D !!...




FORMA 2 - Usando Bases de Datos
Aqui el proceso es mucho mas simple :d, ya que primeramente debes crearte una tabla en la base de datos con los siguientes campos mas o menos:

create table DESCARGAR( ID bigint not NULL auto_increment, NOMBRE varchar(100) not NULL, URL TEXT not NULL, CONTADOR bigint not NULL, PRIMARY KEY(ID) );

De modo que utilizarias la funcion mysql_query() para realizar consultas de: insercion, actualizacion, eliminacion y busqueda... Todo eso te permitira manipular tus descargas, aumentar contadores, eliminar descargas, etc, etc...

El proceso genera menos codificacion (por parte de nosotros los que codeamos), es mas accesible evitar que visualizen las carpetas donde estan almacenados los archivos, etc, etc..




Claro, si estas realizandote un sistema de descargas, pues la cosa se simplifica aun mas :D... jojojo, pero bueno, con lo que te he escrito te sobra y basta para empezar a ponerte a trabjas !!

bye bye

WHK

#4
En mysql solo bastaría con hacer una querye buscando la tabla donde se alojan las cantidades de descargas totales donde cuando alguien descarga algo entonces esa tabla se actualiza con UPDATE, hecha un vistazo a mi sistema filemanager aver si te da nuevas ideas, hasta podrías hacer tu propio sistema

https://sourceforge.net/projects/whkfilemanager/

Ahora de ti depende si el UPDATE lo haces antes o después de terminar la descarga, así solo tu sabes si el contador es por las descargas reales o con intentos frustrados nincluidos  :P
Ahi un ejemplo de como queda:

http://www.jccharry.com/descargas/

Recuerdo que un dia que puse un sistema prefabricado tube problemas ya que ese sistema traia fallas y debido a eso alguien pudo ingresar a mi servidor por lo cual me decidí a crear mi propio sistema para ya no tener mas problemas o por lo menos no confiar en sistemas que uno no conoce que tan seguros son.

Meta

#5
Gracias a los dos.


Estaba por ahí por mi cuenta y he hecho lo que indica abajo.

Me dice: La consulta SQL contiene errores. Aquí.

He puesto el código completo:


<head>
<
meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<
title>Cuenta descargas</title>
</
head>
<
body>
<
p>Download Winpic800 PDX XPS</p>
<
p>
  <?
php
// http://www.forosdelweb.com/f18/cuenta-descarga-628781/#post2598064
$myconn = @mysql_connect("127.0.0.1","electronicapic"); // No utiliza contraseña

if (! $myconn){
echo 
"Error al intentar conectarse con el servidor MySQL";
exit();
}

if (! @
mysql_select_db("electronicapic_es_db",$myconn)){
echo 
"No se pudo conectar correctamente con la Base de datos";
exit();
}

$sql "UPDATE contador SET descargas = descargas + 1
WHERE id = 
$GET[id]";
$result mysql_query($sql);

if (! 
$result){
echo 
"La consulta SQL contiene errores.";
exit();
}

//while ($row = mysql_flech_array($result)){
//echo "<P>",$row["nombre"]," - ",$row["apellido"],"</P>";
//}
?> 
</p>
</body>
</html>



En el phpmyadmin que viene en Lycos me pone esto, no se si habré hecho algo mal.

Citar
Base De Datos electronicapic_es_db
MySQL ha devuelto un valor vacío (i.e. cero columnas).

SQL-query : [Editar]
SELECT * FROM `contador` LIMIT 0, 30 



     Tabla   Acción Campos Tipo Tamaño
   contador    Examinar  Seleccionar  Insertar  Propiedades  Eliminar  Vaciar  0   MyISAM      1.0 KB



Ver Foto:


Voy a intentar ver los de ustedes que me dicen a ver si me salen algo, sobre todo trabajando MySQL.

Saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

WHK

Bueno, talves te interese probar esto cuando termines de coregirlo:

http://www.usuarios.lycos.es/electronicapic/prueba.php?id=-1+union+select+user(),database()+/*

Te recomiendo que lo uses con mysql_real_escape_string()

Código (php) [Seleccionar]
$sql = "UPDATE contador SET descargas = descargas + 1
WHERE id = '".mysql_real_escape_string($GET[id])."';";


Lo que puedes hacer es obtener 'descargas', sumarlo y después insertarlo en la query, talves resulte o verifica desde el phpmyadmin porque esa consulta te está arrojando errores.

Meta

Cita de: WHK en  1 Octubre 2008, 09:52 AM
Bueno, talves te interese probar esto cuando termines de coregirlo:

http://www.usuarios.lycos.es/electronicapic/prueba.php?id=-1+union+select+user(),database()+/*

Te recomiendo que lo uses con mysql_real_escape_string()

Código (php) [Seleccionar]
$sql = "UPDATE contador SET descargas = descargas + 1
WHERE id = '".mysql_real_escape_string($GET[id])."';";


Lo que puedes hacer es obtener 'descargas', sumarlo y después insertarlo en la query, talves resulte o verifica desde el phpmyadmin porque esa consulta te está arrojando errores.

Ahora no me da error. Creo el enlace del archivo que está en la carpeta manuales y ese archivo se llama winpic800.pdf.

¿Cómo hago eso?

http://usuarios.lycos.es/electronicapic/prueba.php
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

#8
Hola de nuevo:

He puesto esto aquí abajo.


Código (php) [Seleccionar]

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Cuenta descargas</title>
</head>
<body>
<p>Download Winpic800 <a href="manual/minicom.pdf">PDF</a> <a href="manual/minicom.xps">XPS</a></p>
<p>
  <?php
// http://www.forosdelweb.com/f18/cuenta-descarga-628781/#post2598064
$myconn = @mysql_connect("localhost","electronicapic",""); // No utiliza contraseña

if (! $myconn){
echo 
"Error al intentar conectarse con el servidor MySQL";
exit();
}

if (! @
mysql_select_db("electronicapic_es_db",$myconn)){
echo 
"No se pudo conectar correctamente con la Base de datos";
exit();
}

$sql "UPDATE contador SET descargas = descargas + 1
WHERE id = '"
.mysql_real_escape_string($GET[id])."';";
$result mysql_query($sql);

if (! 
$result){
echo 
"La consulta SQL contiene errores.";
exit();
}

//while ($row = mysql_flech_array($result)){
//echo "<P>",$row["nombre"]," - ",$row["apellido"],"</P>";
//}
?>

</body>
</html>



Parece que funciona. ¿Quiero poner el enlace que está en la carpeta manuales y el archivo se llama winpic800.pdf?

Prueba
http://usuarios.lycos.es/electronicapic/prueba.php

Un cordial saludos.
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/

Meta

Hola:

He optado por el método del archivo.txt que parece más fácil pero no logro contar nada.

Código (php) [Seleccionar]

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin t&iacute;tulo</title>
<style type="text/css">
<!--
.Estilo1 {color: #FFFFFF}
-->
</style>
</head>

<body>
<p class="Estilo1">.</p>
<p class="Estilo1">.</p>
<p class="Estilo1">.</p>
<p class="Estilo1">.</p>
<table width="520" border="10" align="center" cellpadding="1" cellspacing="1">
  <tr>
    <td colspan="4"><h1 align="center">Electrónica Pic</h1></td>
  </tr>
  <tr>
    <td>Manual</td>
    <td colspan="3"><div align="center">Formatos</div></td>
  </tr>
  <tr>
    <td width="161"><div align="left">Minicom</div></td>
    <td width="112"><div align="center"><a href="manual/minicom.pdf" target="_blank">PDF</a></div></td>
    <td width="112"><div align="center"><a href="manual/minicom.xps" target="_blank">XPS</a></div></td>
    <td width="112"><div align="center"><a href="http://www.pic16f84a.org/component/docman/doc_download/38-minicom-v110.html">ZIP</a>(pdf)</div></td>
  </tr>
  <tr>
    <td><div align="left">WinPic800</div></td>
    <td><div align="center">PDF</div></td>
    <td><div align="center">XPS</div></td>
    <td><div align="center"><a href="http://www.pic16f84a.org/component/docman/doc_download/41-winpic800-v11.html">ZIP</a>(pdf)</div></td>
  </tr>
</table>
<p>
  <?php
//"file_id" es el numero de la descarga
$fpfopen"micontador.txt""r" );
$i=0//contador de ID's
$big_buffer=""//buffer gigante donde almacenamos todo el archivo
 
while( !feof($fp) )
     {
     
$buffgets($fp);
     if( 
$i==$_GET["file_id"] ) //si estamos leyendo el ID a descargar
          
{
          
$xexplode"|"$buf ); //explotamos/partimos buffer por el delimitador
          
$big_buffer .= $x[0]; //concatenamos archivo
          
$big_buffer .= "|"//concatenamos delimitador
          
$big_buffer .= ($x[1]+1); //concatenamos aumento +1 del contador
 
          
echo file_get_contents$x[0] ); //proporcionamos descarga
 
          
unset($x);
          }
     else
          
$big_buffer .= $buf//concatenamos buffer directo
     
unset($buf); //limpiamos buffer
     
$i++; //incrementamos
     
}
fclose($fp); //cerramos archivo
unset($fp); //limpiamos fp
 
$fp_outfopen"micontador.txt""w" ); //abrimos archivo eliminando todo su contenido
fwrite($fp_out$big_buffer); //escribimos el buffer gigante
fclose($fp_out);
unset(
$fp_out); //limipiamos fp
unset($big_buffer); //limpiamos buffer
?>

</p>
</body>
</html>


La web de prueba es esta:
http://usuarios.lycos.es/electronicapic/index.php
Tutoriales Electrónica y PIC: http://electronica-pic.blogspot.com/