elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Cuenta descarga
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Cuenta descarga  (Leído 6,674 veces)
Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Cuenta descarga
« 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.


En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Cuenta descarga
« Respuesta #1 en: 27 Septiembre 2008, 03:34 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 !!



En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Cuenta descarga
« Respuesta #2 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
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. <title>Documento sin t&iacute;tulo</title>
  3. </head>
  4.  
  5. Descargar Winpic800 PDF XPS
  6. </body>
  7. </html>
En línea

Diabliyo


Desconectado Desconectado

Mensajes: 1.441


shell# _


Ver Perfil WWW
Re: Cuenta descarga
« Respuesta #3 en: 27 Septiembre 2008, 20:49 pm »

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
  1. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  2. <title>Documento sin t&iacute;tulo</title>
  3. </head>
  4.  
  5. Descargar Winpic800 PDF XPS
  6. </body>
  7. </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
  1. <?php
  2. //"file_id" es el numero de la descarga
  3. $fp= fopen( "micontador.txt", "r" );
  4. $i=0; //contador de ID's
  5. $big_buffer=""; //buffer gigante donde almacenamos todo el archivo
  6.  
  7. while( !feof($fp) )
  8.     {
  9.     $buf= fgets($fp);
  10.     if( $i==$_GET["file_id"] ) //si estamos leyendo el ID a descargar
  11.          {
  12.          $x= explode( "|", $buf ); //explotamos/partimos buffer por el delimitador
  13.          $big_buffer .= $x[0]; //concatenamos archivo
  14.          $big_buffer .= "|"; //concatenamos delimitador
  15.          $big_buffer .= ($x[1]+1); //concatenamos aumento +1 del contador
  16.  
  17.          echo file_get_contents( $x[0] ); //proporcionamos descarga
  18.  
  19.          unset($x);
  20.          }
  21.     else
  22.          $big_buffer .= $buf; //concatenamos buffer directo
  23.     unset($buf); //limpiamos buffer
  24.     $i++; //incrementamos
  25.     }
  26. fclose($fp); //cerramos archivo
  27. unset($fp); //limpiamos fp
  28.  
  29. $fp_out= fopen( "micontador.txt", "w" ); //abrimos archivo eliminando todo su contenido
  30. fwrite($fp_out, $big_buffer); //escribimos el buffer gigante
  31. fclose($fp_out);
  32. unset($fp_out); //limipiamos fp
  33. unset($big_buffer); //limpiamos buffer
  34. ?>

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:

Código:
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
En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Cuenta descarga
« Respuesta #4 en: 28 Septiembre 2008, 20:49 pm »

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.
« Última modificación: 28 Septiembre 2008, 20:51 pm por WHK » En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Cuenta descarga
« Respuesta #5 en: 29 Septiembre 2008, 15:00 pm »

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.
« Última modificación: 29 Septiembre 2008, 16:10 pm por Meta » En línea

WHK
Moderador Global
***
Desconectado Desconectado

Mensajes: 6.605


Sin conocimiento no hay espíritu


Ver Perfil WWW
Re: Cuenta descarga
« Respuesta #6 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
  1. $sql = "UPDATE contador SET descargas = descargas + 1
  2. 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.
En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Cuenta descarga
« Respuesta #7 en: 3 Octubre 2008, 22:30 pm »

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
  1. $sql = "UPDATE contador SET descargas = descargas + 1
  2. 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
En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Cuenta descarga
« Respuesta #8 en: 6 Octubre 2008, 05:43 am »

Hola de nuevo:

He puesto esto aquí abajo.


Código
  1. <head>
  2. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  3. <title>Cuenta descargas</title>
  4. </head>
  5. <body>
  6. <p>Download Winpic800 <a href="manual/minicom.pdf">PDF</a> <a href="manual/minicom.xps">XPS</a></p>
  7. <p>
  8.  <?php
  9. // http://www.forosdelweb.com/f18/cuenta-descarga-628781/#post2598064
  10. $myconn = @mysql_connect("localhost","electronicapic",""); // No utiliza contraseña
  11.  
  12. if (! $myconn){
  13. echo "Error al intentar conectarse con el servidor MySQL";
  14. exit();
  15. }
  16.  
  17. if (! @mysql_select_db("electronicapic_es_db",$myconn)){
  18. echo "No se pudo conectar correctamente con la Base de datos";
  19. exit();
  20. }
  21.  
  22. $sql = "UPDATE contador SET descargas = descargas + 1
  23. WHERE id = '".mysql_real_escape_string($GET[id])."';";
  24. $result = mysql_query($sql);
  25.  
  26. if (! $result){
  27. echo "La consulta SQL contiene errores.";
  28. exit();
  29. }
  30.  
  31. //while ($row = mysql_flech_array($result)){
  32. //echo "<P>",$row["nombre"]," - ",$row["apellido"],"</P>";
  33. //}
  34. ?>
  35. </body>
  36. </html>
  37.  


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.
« Última modificación: 6 Octubre 2008, 07:55 am por Meta » En línea

Meta


Desconectado Desconectado

Mensajes: 3.501



Ver Perfil WWW
Re: Cuenta descarga
« Respuesta #9 en: 7 Octubre 2008, 14:04 pm »

Hola:

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

Código
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5. <title>Documento sin t&iacute;tulo</title>
  6. <style type="text/css">
  7. <!--
  8. .Estilo1 {color: #FFFFFF}
  9. -->
  10. </style>
  11. </head>
  12.  
  13. <body>
  14. <p class="Estilo1">.</p>
  15. <p class="Estilo1">.</p>
  16. <p class="Estilo1">.</p>
  17. <p class="Estilo1">.</p>
  18. <table width="520" border="10" align="center" cellpadding="1" cellspacing="1">
  19.  <tr>
  20.    <td colspan="4"><h1 align="center">Electrónica Pic</h1></td>
  21.  </tr>
  22.  <tr>
  23.    <td>Manual</td>
  24.    <td colspan="3"><div align="center">Formatos</div></td>
  25.  </tr>
  26.  <tr>
  27.    <td width="161"><div align="left">Minicom</div></td>
  28.    <td width="112"><div align="center"><a href="manual/minicom.pdf" target="_blank">PDF</a></div></td>
  29.    <td width="112"><div align="center"><a href="manual/minicom.xps" target="_blank">XPS</a></div></td>
  30.    <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>
  31.  </tr>
  32.  <tr>
  33.    <td><div align="left">WinPic800</div></td>
  34.    <td><div align="center">PDF</div></td>
  35.    <td><div align="center">XPS</div></td>
  36.    <td><div align="center"><a href="http://www.pic16f84a.org/component/docman/doc_download/41-winpic800-v11.html">ZIP</a>(pdf)</div></td>
  37.  </tr>
  38. </table>
  39. <p>
  40.  <?php
  41. //"file_id" es el numero de la descarga
  42. $fp= fopen( "micontador.txt", "r" );
  43. $i=0; //contador de ID's
  44. $big_buffer=""; //buffer gigante donde almacenamos todo el archivo
  45.  
  46. while( !feof($fp) )
  47.     {
  48.     $buf= fgets($fp);
  49.     if( $i==$_GET["file_id"] ) //si estamos leyendo el ID a descargar
  50.          {
  51.          $x= explode( "|", $buf ); //explotamos/partimos buffer por el delimitador
  52.          $big_buffer .= $x[0]; //concatenamos archivo
  53.          $big_buffer .= "|"; //concatenamos delimitador
  54.          $big_buffer .= ($x[1]+1); //concatenamos aumento +1 del contador
  55.  
  56.          echo file_get_contents( $x[0] ); //proporcionamos descarga
  57.  
  58.          unset($x);
  59.          }
  60.     else
  61.          $big_buffer .= $buf; //concatenamos buffer directo
  62.     unset($buf); //limpiamos buffer
  63.     $i++; //incrementamos
  64.     }
  65. fclose($fp); //cerramos archivo
  66. unset($fp); //limpiamos fp
  67.  
  68. $fp_out= fopen( "micontador.txt", "w" ); //abrimos archivo eliminando todo su contenido
  69. fwrite($fp_out, $big_buffer); //escribimos el buffer gigante
  70. fclose($fp_out);
  71. unset($fp_out); //limipiamos fp
  72. unset($big_buffer); //limpiamos buffer
  73. ?>
  74. </p>
  75. </body>
  76. </html>
  77.  

La web de prueba es esta:
http://usuarios.lycos.es/electronicapic/index.php
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines