Evidence [email protected]
Lo que voy a explicar a continuación es para crear un contador de visitas que verifica la ip del usuario y verifica 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.
No voy a explicar como se crea una base de datos ni nada relacionado si tienes alguna duda al respecto deberás leerte algún manual al respecto.
En primer lugar debemos de tener una base de datos en la cual introducir la tabla siguiente.
Código PHP:
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,
`horau` varchar(10) default NULL,
`diau` char(3) default NULL,
`aniou` varchar(4) default NULL,
KEY `id` (`id`)
) TYPE=MyISAM AUTO_INCREMENT=8;
La tabla bien puedes crearla trabes de phpmyadmin o importando el sql o en fin como te de la gana.
Una vez creada la tabla vamos al php, primero el código y luego vamos desglosando, si os parece.
Configuración.php
Código PHP:
<?php
$bd_host = "localhost";
$bd_usuario = "user";
$bd_password = "contraseña";
$bd_base = "base_de_datos";
$con = mysql_connect($bd_host, $bd_usuario, $bd_password);
mysql_select_db($bd_base, $con);
?>
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.
Ahora vamos a lo que es en si el script, igual que antes primero el código y luego desglosamos.
Countbdd.php
Código PHP:
<?
require('configuracion.php');
//se requiere el archivo para validar los datos de usuario de bdd para conectar
$ip = $REMOTE_ADDR;
$fecha = date("j \d\e\l n \d\e Y");
$hora = date("h:i:s");
$horau = date("h");
$diau = date("z");
$aniou = date("Y");
//se asignan la variables
$sql = "SELECT aniou, diau, horau, ip ";
$sql.= "FROM contador WHERE aniou LIKE '$aniou' AND diau LIKE '$diau' AND horau LIKE '$horau' AND ip LIKE '$ip' ";
$es = mysql_query($sql, $con) or die("Error al leer base de datos: ".mysql_error);
//se buscan los registros que coincidan con la hora,dia,año e ip
if(mysql_num_rows($es)>0)
{//no se cuenta la visita
}
else
{
$sql = "INSERT INTO contador (id, ip, fecha, hora, horau, diau, aniou) ";
$sql.= "VALUES ('','$ip','$fecha','$hora','$horau','$diau','$aniou')";
$es = mysql_query($sql, $con) or die("Error al grabar un mensaje: ".mysql_error);
}
//creamos el condicionamiendo para logearlo 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='9%' border='1' height='25' bgcolor='#333333'>" . chr(10);
$men=$men . "<tr>" . chr(10);
$men=$men . "<td><font color=#FFFFFF>Visitas:$visitas</font></td>" . chr(10);
$men=$men . "</tr>" . chr(10);
$men=$men . "</table>" . chr(10);
?>
require('configuracion.php');
Ahora vamos asignar las variables:
Código PHP:
$ip = $REMOTE_ADDR;
Código PHP:
$fecha = date("j \d\e\l n \d\e Y");
Código PHP:
$hora = date("h:i:s");
Código PHP:
$horau = date("h");
Código PHP:
$diau = date("z");
Código PHP:
$aniou = date("Y");
Os preguntareis por que he guardado distintos formatos de fecha y hora.
Pues simplemente he guardado unos $horau,$diau,$aniou para cercar la búsqueda en la base de datos y $fecha,$hora por si queremos hacer una visualización de los registros en unas estadísticas, seguimos con el código.
Código PHP:
$sql = "SELECT aniou, diau, horau, ip ";
$sql.= "FROM contador WHERE aniou LIKE '$aniou' AND diau LIKE '$diau' AND horau LIKE '$horau' AND ip LIKE '$ip' ";
$es = mysql_query($sql, $con) or die("Error al leer base de datos: ".mysql_error);
Y le decimos que nos avise de si se ocasiona un error en la lectura.
Código PHP:
if(mysql_num_rows($es)>0)
{//no se cuenta la visita
}
Código PHP:
else
{
$sql = "INSERT INTO contador (id, ip, fecha, hora, horau, diau, aniou) ";
$sql.= "VALUES ('','$ip','$fecha','$hora','$horau','$diau','$aniou')";
$es = mysql_query($sql, $con) or die("Error al grabar un mensaje: ".mysql_error);
}
En el caso contrario añadimos el registro de dicha ip a la base de datos.
Código PHP:
$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);
Código PHP:
$men=$men . "<table width='9%' border='1' height='25' bgcolor='#333333'>" . chr(10);
$men=$men . "<tr>" . chr(10);
$men=$men . "<td><font color=#FFFFFF>Visitas:$visitas</font></td>" . chr(10);
$men=$men . "</tr>" . chr(10);
$men=$men . "</table>" . chr(10);
Código PHP:
<?
require('countbdd.php');
echo $men;
?>
Bueno si quieres estadísticas ya sabes………..
Este script no esta echo para lo que es a propósito de utilizarlo, si no para que aquellos que les surja la duda que me surgió a mi en aquel momento tengan donde referirse.
Espero os haya sido de utilidad.