counter
 
 

Lo que se va a explicar a continuación es para crear un contador de visitas que verifica la IP del usuario y compara en la base de datos si en la última hora hubo alguna entrada con la misma IP, así discriminar o aceptar la cuenta de la visita. puedes configurarlo para determinar el numero de horas.

 

En primer lugar debemos tener un archivo el cual llamaremos conexion.php el cual nos conecta a la base de datos.

 

conexion.php
<?php
$mysql_host = "localhost";
$mysql_database = "base_de_datos";
$mysql_user = "Usuario";
$mysql_password = "Password";
$con = mysql_connect($mysql_host, $mysql_user, $mysql_password);
mysql_select_db($mysql_database, $con);
?>

 

En este fichero creamos la conexión a la base de datos y la asignamos a una variable para después no estar repitiendo el código. donde localhost va el host donde esta hospedada la base de datos, si estas trabajando el php en el mismo servidor que la bdd entonces debes dejarlo como localhost, en el caso contrario deberías poner el host adecuado.

 

Donde user el usuario, contraseña se entiende u base de datos el nombre de la base de datos.

 

Después asignamos a la variable $con todos los datos para conectar y asignamos la base de datos.
Depues de tener listo el archivo de conexion vamos a crear la tabla donde se guardaran las ips en nuestra base de datos. debemos tener creada nuestra base de datos y un hosting que permita php reomendable version 5.*,

 

{source}

CREATE TABLE `contador` (
`id` int(11) NOT NULL auto_increment,
IP varchar(15) default NULL,
`hora` varchar(8) default NULL,
`fecha` varchar(20) default NULL,
`segundos` varchar(30) default NULL,
KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=8;

{/source}

 

La tabla la puedes crear fácilmente con el PHPAdmin.

 

Ahora vamos a lo que es en si el scrip que nos contara la visita y mostrara la consulta. primero el código y luego la explicación

 

contador.php 
<?
require('conexion.php')
//se requiere el archivo para validar los datos de usuario de bdd para conectar
$IP = getenv('REMOTE_ADDR')
$fecha = date("j \d\e\l n \d\e Y")
$hora = date("h:i:s")
$segundos = time()
$can = "3600"
$resta = $segundos-$can
//se asignan la variables
$sql = "SELECT segundos, IP "
$sql.= "FROM contador WHERE segundos >= $resta AND IP LIKE '$IP' "
$es = mysql_query($sql, $con) or die("Error al leer base de datos: ".mysql_error)
//se buscan los registros que num de seg mayor a num de seg hace una hora e IP
if(mysql_num_rows($es)>0)
{//no se cuenta la visita
}
else
{
$sql = "INSERT INTO contador (id, IP, fecha, hora, segundos) "
$sql.= "VALUES ('','$IP','$fecha','$hora','$segundos')"
$es = mysql_query($sql, $con) or die("Error al grabar un mensaje: ".mysql_error)
}
//creamos el condicionamiendo para loguearlo o no.
$sql = "SELECT * "
$sql.= "FROM contador WHERE id "
$es = mysql_query($sql, $con) or die("Error al leer base de datos: ".mysql_error)
$visitas = mysql_num_rows($es)
$men=$men .
"<table width='26%' border='0' height='20' >" . chr(10)
$men=$men . "<tr>" . chr(10)
$men=$men . "<td><font size=2 color=#FFFFFF>© $visitas </font></td>" . chr(10)
$men=$men
"</tr>" . chr(10)
$men=$men . "</table>" . chr(10)
?>

 

Pide archivo para conectar a la base de datos.

 

require('conexion.php');

 

Asigna las variables a introducir.

 

$IP = getenv('REMOTE_ADDR');
$fecha = date("j \d\e\l n \d\e Y");
$hora = date("h:i:s");
$segundos = time();
$can = "3600";
$resta = $segundos-$can;

 

Se genera la consulta a la base de datos, solicitando cualquier registro 3600 segundos anteriores a los segundos actuales (obtenemos todos los registros de una hora atrás).

 

$sql = "SELECT segundos, IP ";
$sql.= "FROM contador WHERE segundos >= $resta AND IP LIKE '$IP' ";
$es = mysql_query($sql, $con) or die("Error al leer base de datos: ".mysql_error

 

Creamos el condicionamiento de loguear o no la entrada, dependiendo si el numero de registros es o no mayor a cero.

 

if(mysql_num_rows($es)>0)
{//no se cuenta la visita
}
else
{
$sql = "INSERT INTO contador (id, IP, fecha, hora, segundos) ";
$sql.= "VALUES ('','$IP','$fecha','$hora','$segundos')";
$es = mysql_query($sql, $con) or die("Error al grabar un mensaje: ".mysql_error);
}

 

Si ha visitado la pagina en la ultima hora no se contara el registro ni se anadira, si no la a visitado se agrega y se cuenta

 

Contamos los registros que tenemos en la tabla y se los asignamos a la variable $visitas que es la que después visualizaremos en pantalla.

 

$sql = "SELECT * ";
$sql.= "FROM contador WHERE id ";
$es = mysql_query($sql, $con) or die("Error al leer base de datos: ".mysql_error);
$visitas = mysql_num_rows($es);

 

Creamos una tabla para mostrar el numero de visitas

 

$men=$men .
"<table width='26%' border='0' height='20' >" . chr(10);
$men=$men . "<tr>" . chr(10);
$men=$men . "<td><font size=2 color=#FFFFFF>© 2010 $visitas</font></td>" . chr(10);
$men=$men .
"</tr>" . chr(10);
$men=$men . "</table>" . chr(10);
?>

 

Depues cualquier pagina que querramos que nuestro contador tenga en cuenta le agregamos el siguiente codigo.

 

<?
require('contador.php');
echo $men;
?>

 

Observaciones:


Los dos archivos conexion.php y contador.php deben ir en la misma carpeta.

Cuando pide el require('contador.php'); el archivo debe estar en la misma carpeta de la pagina donde lo agregamos. en caso de no sr asi debemos organizar la ruta ejemplo require('./files/contador.php');

 

Si tienen algun problema me avisan y les ayudo en lo que sea saludos.

 

 

 
 

Comentarios  

0 #4 Acram 13-01-2015 16:08
Me ha sido muy util, muchas gracias!
Citar
0 #3 Maxi 06-11-2013 10:06
Cito a andrea:
hola, se que es tarde, pero por si de prooonto aun me puedes responder.....pero como hago para que el contador cuente apartir de 11.000?? Gracias


Quisiera creer que cuando vas a mostrar la variable $visitas tenes que hacer la suma de 11.000 más lo que dió $visitas. Ejemplo:

Si visitas devuelve 150 tendrías que hacer

$iniciaen = 11000;
$visitas = ($iniciaen+$vis itas);
Citar
0 #2 Ricardo 14-08-2013 21:20
buen sitio pero seria mejor si dejaras un link de descarga con ya todo hecho, algunos somos peresosos y lo ocupamos descargar sin crear archivos ni nada XD, Es solo un consejo péro buen sitio :DD!
Citar
0 #1 andrea 14-12-2012 13:22
hola, se que es tarde, pero por si de prooonto aun me puedes responder.....p ero como hago para que el contador cuente apartir de 11.000?? Gracias
Citar

Escribir un comentario

Nota: Los comentarios escritos en mayúsculas o tipo SMS serán eliminados, al igual que los comentarios ofensivos o sin educación contra los lectores y/o editores de este medio.

También pueden reportar los comentarios ofensivos para ser borrados.

Código de seguridad
Refescar

Ultimos Comentarios!

  • Inscripciones para “La Voz Kids 2017” del Canal Caracol

    alexis alexis Mie 22/nov/2017
    muy buenas noches entidad publicitaria de televisión, me gustaría saber sobre el tiempo limite de ...

    Leer más...

  • Lotería del Huila martes 21 de noviembre 2017

    olga bejarano olga bejarano Mie 22/nov/2017
    Buenas noches en mi fracion aparece un numero y dice gana fijo sin serie es un numero distinto al del ...

    Leer más...

  • Inscripciones abiertas para “La Voz Teens” del Canal Caracol

    Alvaro Stiven Alvaro Stiven Mie 22/nov/2017
    Cordial saludo mi nombre es alvato stiven rojas barreto tengo 11 años ami me gusta candar desde los 5 ...

    Leer más...

  • Chontico Noche viernes 10 de noviembre 2017

    CorinaSmall CorinaSmall Mie 22/nov/2017
    I have checked your website and i've found some duplicate content, that's why you don't rank high in ...

    Leer más...

  • Inscripciones abiertas para “La Voz Teens” del Canal Caracol

    silvia rosa silvia rosa Mie 22/nov/2017
    HOLA MI NOMBRE ES SILVIA ROSA FIGUEROA PALLARES TENGO 15 AÑOS Y MAYOR SUEÑO ES SER UNA DE LAS ...

    Leer más...