Autor Tema: Contador de visitas unicas sin BD  (Leído 2806 veces)

Desconectado marco811

  • PHPero Avanzado
  • ****
  • Mensajes: 306
  • Karma: 16
  • Sexo: Masculino
  • ¡¡Hola mundo!!
    • Ver Perfil
    • Personalidad Web
Contador de visitas unicas sin BD
« en: 09 de Abril de 2010, 13:54:16 pm »
Buenas, os voy a enseñar como hacer un contador de visitas unicas en pocas lineas de codigo, utilizando las funciones file_get_contents  , file_put_contents  y in_array.

Para que el contador funcione perfectamente, necesitamos un archivo txt donde guardar las direcciones IP (ips.txt). Ese archivo tambien va a contener la fecha de cuando fue reseteado por ultima vez el contador, ya que el contador se resetea cada cierto tiempo. Se puede cambiar ese intervalo cambiado la variable reset.

He aqui el codigo:

$ips 
explode(';', file_get_contents("ips.txt"));
$visitas count($ips)-2;
$reset 3600;
if(!
in_array($_SERVER['REMOTE_ADDR'], $ips)) file_put_contents("ips.txt", $_SERVER['REMOTE_ADDR'].';', FILE_APPEND);
if((time()-reset($ips))>$resetfile_put_contents("ips.txt"time().';');
settype($visitas, 'string');
echo $visitas;


En la primera linea extraemos todas las IPs del archivo ips.txt que estan separadas por punto y coma (;)
En la segunda linea contamos la cantidad total de IPs que estan en el archivo ips.txt
En la tercera linea comprobamos si la direccion IP del visitante ya existe en el archivo ips.txt, si no existe se añade la IP en el archivo.
En la cuarta linea se comprueba si se ha superado el tiempo para resetear el contador, si es asi se elimina todo de ips.txt y se escribe la fecha actual y punto y coma (;).
En la quinta linea convierte la variable $visitas de int a string.
En la ultima linea se muestra la cantidad de visitados, contando el numero de ips que han visitado nuestra pagina. Si quieremos que nos lo muestre con imagenes podemos colocar el siguiente codigo:


for($i=0;$i<=strlen($visitas)-1;$i++) echo &#39;<img src="http://www.personalidad-web.net/ejemplos/contador/numeros/&#39;.$i.&#39;.gif" alt="" />&#39;;


Bueno, por ultimo que no se te olvide dar permisos chmod al archivo ips.txt
Tambien modifica el valor de la variable $reset, por ejemplo si quieres que el contador se ponga a 0 cada dia, tendras que poner 86400 (segundos que tiene un dia).

Ver ejemplo
Esto es todo, un saludo!

Comunidad PHPeros

Contador de visitas unicas sin BD
« en: 09 de Abril de 2010, 13:54:16 pm »

Desconectado Warlox

  • Moderadores PHP
  • PHPero Master
  • ****
  • Mensajes: 1.278
  • Karma: 77
  • Sexo: Masculino
  • A veces hay que aprender a correr antes de caminar
    • Ver Perfil
    • Página personal
Re:Contador de visitas unicas sin BD
« Respuesta #1 en: 09 de Abril de 2010, 16:40:05 pm »
Me gusta, k+.
- Moderador de PHP


Desconectado Focux

  • PHPero Master
  • ******
  • Mensajes: 1.010
  • Karma: 22
    • Ver Perfil
Re:Contador de visitas unicas sin BD
« Respuesta #2 en: 10 de Abril de 2010, 16:08:35 pm »
Muy útil el tutorial, aunque ya sabía hacerloEsta parte no funcionaría ya que si la cantidad de ips es 50 la imagen mostraría 2, ya que strlen cuenta los carácteres de una variable.
Citar
for($i=0;$i<=strlen($visitas)-1;$i++) echo &#39;<img src="http://www.personalidad-web.net/ejemplos/contador/numeros/&#39;.$i.&#39;.gif" alt="" />&#39;;


Otra cosa, cuando yo voy a mostrar un valor interger nunca lo convierto a string, cuál es la diferencia de convertirlo o no convertirlo?
« Última modificación: 10 de Abril de 2010, 16:25:57 pm por Focux »
Mixtiqueros.net

<?PHP
define
(_miNombre, &#39;Focux&#39;);
if(_miNombre == &#39;Focux&#39;): printf(&#39;%s es un programador avanzado&#39;, _miNombre); else: printf(&#39;Tu no eres %s&#39;, _miNombre); endif;
?>

Desconectado Farresito

  • PHPero Avanzado
  • ****
  • Mensajes: 385
  • Karma: 5
  • Sexo: Masculino
  • PimPamTomaC++
    • Ver Perfil
    • Farresito
Re:Contador de visitas unicas sin BD
« Respuesta #3 en: 10 de Abril de 2010, 18:26:11 pm »
Sin animos de ofender, Marco, está totalmente copiado de otra web:

http://www.personalidad-web.net/2010/03/contador-de-visitas-unicas-muy-simple/

Lástima, porque te daría karma, pero prefiero material hecho por uno solo ;)

Saludos! Y re*****, no es una ofensa :)
“Lo mejor de los booleanos es que si te equivocas estás a un sólo bit de la solución correcta.”

-- Anónimo

"No temo a los ordenadores; lo que temo es quedarme sin ellos"

-- Isaac Asimov

Desconectado marco811

  • PHPero Avanzado
  • ****
  • Mensajes: 306
  • Karma: 16
  • Sexo: Masculino
  • ¡¡Hola mundo!!
    • Ver Perfil
    • Personalidad Web
Re:Contador de visitas unicas sin BD
« Respuesta #4 en: 10 de Abril de 2010, 18:34:28 pm »
Farresito, para tu informacion ese blog es mio  ;)

Muy útil el tutorial, aunque ya sabía hacerlo. Esta parte no funcionaría ya que si la cantidad de ips es 50 la imagen mostraría 2, ya que strlen cuenta los carácteres de una variable. 
?? No entendi lo ultimo  ???
Otra cosa, cuando yo voy a mostrar un valor interger nunca lo convierto a string, cuál es la diferencia de convertirlo o no convertirlo?
Esto ya lo he explicado en otro post: http://www.phperos.net/foro/index.php/topic,5583.0.html
« Última modificación: 10 de Abril de 2010, 18:41:35 pm por marco811 »

Desconectado westwest

  • PHPero Master
  • ******
  • Mensajes: 2.837
  • Karma: 104
  • Sexo: Masculino
    • Ver Perfil
Re:Contador de visitas unicas sin BD
« Respuesta #5 en: 10 de Abril de 2010, 23:13:21 pm »
Sin animos de ofender, Marco, está totalmente copiado de otra web:

http://www.personalidad-web.net/2010/03/contador-de-visitas-unicas-muy-simple/

Lástima, porque te daría karma, pero prefiero material hecho por uno solo ;)

Saludos! Y re*****, no es una ofensa :)
Esa es SU web xD

Desconectado Farresito

  • PHPero Avanzado
  • ****
  • Mensajes: 385
  • Karma: 5
  • Sexo: Masculino
  • PimPamTomaC++
    • Ver Perfil
    • Farresito
Re:Contador de visitas unicas sin BD
« Respuesta #6 en: 11 de Abril de 2010, 00:14:04 am »
Lo siento!

Mil disculpas!!!

De verdad...!

Karma+ ;)

Mil saludos!
« Última modificación: 11 de Abril de 2010, 00:15:36 am por Farresito »
“Lo mejor de los booleanos es que si te equivocas estás a un sólo bit de la solución correcta.”

-- Anónimo

"No temo a los ordenadores; lo que temo es quedarme sin ellos"

-- Isaac Asimov