Foros del Web » Programando para Internet » PHP »

Contador de clicks (similar "me gusta")

Estas en el tema de Contador de clicks (similar "me gusta") en el foro de PHP en Foros del Web. Que tal, se que hay mucho parecido a esto en el foro, pero revise todos los temas y no pude encontrar como hacer lo que ...
  #1 (permalink)  
Antiguo 06/08/2012, 05:10
 
Fecha de Ingreso: noviembre-2010
Ubicación: Buenos Aires
Mensajes: 22
Antigüedad: 13 años, 5 meses
Puntos: 0
Contador de clicks (similar "me gusta")

Que tal, se que hay mucho parecido a esto en el foro, pero revise todos los temas y no pude encontrar como hacer lo que quiero hacer yo especificamente, por lo menos no ninguna forma que funcionara.
Necesito un boton en mi web, que una persona pueda clickear al entrar a mi web, que al clickearlo suba un numero, una especie de contador de visitas. Si hay una forma sencilla de hacer que el usuario solo pueda clickearlo una vez, seria genial, pero sino no hay problema. Ah, por ultimo necesito que sea utilizando un txt, no puede estar hecho con mysql ni nada por el estilo.

Lo mas cercano que pude lograr fue el siguiente código:
Código PHP:
Ver original
  1. <?php
  2. $archivo = 'contador.txt';
  3. if ((isset($_POST) == true) ){
  4. $count_my_page = ("contador.txt");
  5. $hits = file($count_my_page);
  6. $hits[0] ++;
  7. $fp = fopen($count_my_page , "w");
  8. fputs($fp , "$hits[0]");
  9. fclose($fp);
  10. echo $hits[0];
  11.     }
  12. ?>


y en el body puse este boton

Código HTML:
Ver original
  1. <form id="cont" name="cont" method="post" action="">
  2.     <input type="image" src="imagenes/like-button.jpg" alt="submit" name="submit" />
  3. </form>

esto hace lo que yo necesito, pero también le suma 1 al archivo contador.txt cada vez que entro a la página o que cambio de sección, y yo necesito que simplemente aumente uno cuando clickeo el boton

Desde ya muchas gracias
  #2 (permalink)  
Antiguo 06/08/2012, 05:30
 
Fecha de Ingreso: septiembre-2011
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 19
Respuesta: Contador de clicks (similar "me gusta")

tendrías que guarda la ip de cada persona, así sabes si ya lo clickearon o no. Yo haría esto guardando los datos en una base de datos mysql, porque de esta forma solo complicas las cosas.

Saludos...
  #3 (permalink)  
Antiguo 06/08/2012, 05:40
 
Fecha de Ingreso: noviembre-2010
Ubicación: Buenos Aires
Mensajes: 22
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Contador de clicks (similar "me gusta")

Cita:
Iniciado por ILuzbel Ver Mensaje
tendrías que guarda la ip de cada persona, así sabes si ya lo clickearon o no. Yo haría esto guardando los datos en una base de datos mysql, porque de esta forma solo complicas las cosas.

Saludos...
se que es una mala forma, es que es para un trabajo de la facultad y me exigen que no sea con sql. estoy consciente de que es una mala manera, pero no me queda otra :/
si se complica mucho lo de hacer que solamente se pueda clickear una vez, no hay problema, pero realmente necesito que funcione el boton en si :o
  #4 (permalink)  
Antiguo 06/08/2012, 06:01
 
Fecha de Ingreso: septiembre-2011
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 19
Respuesta: Contador de clicks (similar "me gusta")

Cita:
Iniciado por maFX Ver Mensaje
se que es una mala forma, es que es para un trabajo de la facultad y me exigen que no sea con sql. estoy consciente de que es una mala manera, pero no me queda otra :/
si se complica mucho lo de hacer que solamente se pueda clickear una vez, no hay problema, pero realmente necesito que funcione el boton en si :o
ok te voy a ayudar, espera que todavía tengo que terminarlo.
  #5 (permalink)  
Antiguo 06/08/2012, 06:32
 
Fecha de Ingreso: septiembre-2011
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 19
Respuesta: Contador de clicks (similar "me gusta")

Bueno ya hice que verifique si la persona ya clickeo el botón, para que funcione crea los archivos ips.txt y contador.txt, apenas lo uses te mostrara un error, recargas y ya no te lo mostrara (sucede porque el archivo al inicio esta vació).

Código PHP:
Ver original
  1. function stts($string,$term){
  2.             return(strstr($string,$term)? true : false);
  3.         }
  4.         //primero buscamos la ip en el archivo
  5.         $file = 'ips.txt';
  6.         $ip = $_SERVER['REMOTE_ADDR'];
  7.         $handle = fopen($file, 'r');
  8.         $dato = fread($handle, filesize($file));
  9.         fclose($handle);
  10.         $res = stts($dato,$ip);
  11.         //si no se encuentra la ip insertamos
  12.         if($res == false){
  13.             $handle = fopen($file,"a") or die("Imposible abrir el archivo\n");
  14.             $ip = $ip."\r\n";
  15.             fwrite($handle,$ip);
  16.             fclose($handle);
  17.             //aqui sumas en otro archivo los clicks
  18.             $file = 'contador.txt';
  19.             $hits = file($file);
  20.             $hits[0] ++;
  21.             $fp = fopen($file , "w");
  22.             fputs($fp , $hits[0]);
  23.             fclose($fp);
  24.         }
  25.         //de esta forma imprimes el resultado
  26.         $file = 'contador.txt';
  27.         $handle = fopen($file,'r');
  28.         $read = fread($handle, filesize($file));
  29.         fclose($handle);
  30.         echo $read;

..::EDITADO::..

mmm envés de usar otro txt se podría contar las filas que hay en el archivo ips.txt, bueno si quieres dejalo así XD

Saludos...

Última edición por ILuzbel; 06/08/2012 a las 06:49
  #6 (permalink)  
Antiguo 06/08/2012, 10:51
 
Fecha de Ingreso: noviembre-2010
Ubicación: Buenos Aires
Mensajes: 22
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Contador de clicks (similar "me gusta")

muchisimas gracias, muy buena la ayuda y muchas gracias por tomarte el tiempo para hacerlo :D
lo único con lo que me quedan dudas es como hacer que eso se ejecute cuando yo clickeo el boton. es decir, yo tengo el boton creado de esta forma:

Código HTML:
Ver original
  1. <form id="cont" name="cont" method="post" action="">
  2. * * <input type="image" src="imagenes/like-button.jpg" alt="submit" name="submit" />
  3. </form>

seria la forma correcta de hacerlo? no entiendo como linkear especificamente el botón al código (perdon, me cuesta bastante todo el tema :( )

perdon por seguir molestando pero realmente lo necesito :/
  #7 (permalink)  
Antiguo 06/08/2012, 12:52
 
Fecha de Ingreso: septiembre-2011
Mensajes: 106
Antigüedad: 12 años, 7 meses
Puntos: 19
Respuesta: Contador de clicks (similar "me gusta")

bien te ayudare en esto mas

primero el form esta bien, solo que le falta el action, en el atributo action tienes que poner la ruta del archivo php que va a recibir los datos
ejemplo:
Código HTML:
Ver original
  1. <form id="cont" name="cont" method="post" action="like-button.php">
  2.     * * <input type="image" src="imagenes/like-button.jpg" alt="submit" name="submit" />
  3.     </form>

en el archivo php tendrías que poner

Código PHP:
Ver original
  1. <?php
  2. function stts($string,$term){
  3.     return(strstr($string,$term)? true : false);
  4. }
  5. //si se enviaron los datos
  6. if($_POST){
  7.         //primero buscamos la ip en el archivo
  8.         $file = 'ips.txt';
  9.         $ip = $_SERVER['REMOTE_ADDR'];
  10.         $handle = fopen($file, 'r');
  11.         $dato = fread($handle, filesize($file));
  12.         fclose($handle);
  13.         $res = stts($dato,$ip);
  14.         //si no se encuentra la ip insertamos
  15.         if($res == false){
  16.             $handle = fopen($file,"a");
  17.             $ip = $ip."\r\n";
  18.             fwrite($handle,$ip);
  19.             fclose($handle);
  20.             //aqui sumas en otro archivo los clicks
  21.             $file = 'contador.txt';
  22.             $hits = file($file);
  23.             $hits[0] ++;
  24.             $fp = fopen($file , "w");
  25.             fputs($fp , $hits[0]);
  26.             fclose($fp);
  27.         }
  28. }
  29. ?>

luego para mostrar el resultado, pegas este código donde quieras

Código PHP:
Ver original
  1. //obtenemos el valor
  2.         $file = 'contador.txt';
  3.         $handle = fopen($file,'r');
  4.         $read = fread($handle, filesize($file));
  5.         fclose($handle);
  6.         //imprimimos
  7.         echo $read;

Saludos...
  #8 (permalink)  
Antiguo 06/08/2012, 13:39
 
Fecha de Ingreso: noviembre-2010
Ubicación: Buenos Aires
Mensajes: 22
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Contador de clicks (similar "me gusta")

Muy amable, muchisimas gracias, me faltaba mas que nada la parte del action.
  #9 (permalink)  
Antiguo 06/08/2012, 18:17
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: Contador de clicks (similar "me gusta")

Cita:
Iniciado por ILuzbel Ver Mensaje
tendrías que guarda la ip de cada persona, así sabes si ya lo clickearon o no.
No es muy buena esa idea, la mayoría de los usuarios tiene ip dinámica, cada 12 horas cambia, o la podes cambiar manual, asi que si yo reinicio el modem ahi no vas a saber si yo di en "Me gusta" o no.
Tenes que guardar el id asociado a la persona que dio "Me gusta" es la unica forma.
Y usa bases de datos, no archivos de texto.
  #10 (permalink)  
Antiguo 07/08/2012, 03:41
 
Fecha de Ingreso: noviembre-2010
Ubicación: Buenos Aires
Mensajes: 22
Antigüedad: 13 años, 5 meses
Puntos: 0
Respuesta: Contador de clicks (similar "me gusta")

estuve probando el código y funciona pero no como yo necesitaba, yo necesitaba que el boton aparezca, y al lado del boton la cantidad de clicks digamos, pero esto lo que hace es llevarme a otra pagina donde esta el contador de visitas :O

yo necesitaria que al clickear el boton cambie el valor del texto sin ir a otra pagina :O+

EDITADO: Ya lo solucione, me estaba faltando esto

if( isset( $_POST['submit'] ) && ( $_POST['submit'] == "submit" ) ) {

para que solamente se active con el boton.

Ya me anda perfecto, muchas gracias por la ayuda :)

Última edición por maFX; 07/08/2012 a las 05:39

Etiquetas: clicks, contador, mysql, similar, usuarios
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 04:05.