Sitios web

Un sencillo contador para tu web – Scripts en PHP

Un sencillo contador para tu web – Scripts en PHP

En este segundo capítulo vamos a mostrar los códigos de los dos scripts en PHP que gestionan el contador. El primero se ocupa de recoger los datos de acceso a la base de datos que contiene las tres tablas que sirven para almacenar la información necesaria para el perfecto funcionamiento del contador. El segundo recoge los accesos de los visitantes y las páginas vistas y guarda todo en la base de datos.

Acceso a la base de datos

Llamaremos inc_counter.php al archivo que contiene toda la información necesaria para acceder a la base de datos que alberga las tres tablas necesarias para el funcionamiento del contador. Podemos crear una carpeta o directorio llamado contador en el que incluiremos este archivo.

<?php
$server = 'nombre_servidor';
$user = 'nombre_usuario';
$pass = 'contraseña_usuario';
$db2 = 'nombre_base_datos';
?>

Archivo destinado a recabar datos

<?php
/** Inclusión del archivo de acceso a la base de datos **/

include ("inc_counter.php");

/** Detección de robots. Devuelve el nombre del robot o, si no lo es, devuelve false **/

function crawlerDetect($USER_AGENT) {
$crawlers = array(
array('Google', 'Google'),
array('msnbot', 'MSN'),
array('Rambler', 'Rambler'),
array('Yahoo', 'Yahoo'),
array('AbachoBOT', 'AbachoBOT'),
array('accoona', 'Accoona'),
array('AcoiRobot', 'AcoiRobot'),
array('ASPSeek', 'ASPSeek'),
array('CrocCrawler', 'CrocCrawler'),
array('Dumbot', 'Dumbot'),
array('FAST-WebCrawler', 'FAST-WebCrawler'),
array('GeonaBot', 'GeonaBot'),
array('Gigabot', 'Gigabot'),
array('Lycos', 'Lycos spider'),
array('MSRBOT', 'MSRBOT'),
array('Scooter', 'Altavista robot'),
array('AltaVista', 'Altavista robot'),
array('IDBot', 'ID-Search Bot'),
array('eStyle', 'eStyle Bot'),
array('Scrubby', 'Scrubby robot')
);

foreach ($crawlers as $c) {
if (stristr($USER_AGENT, $c[0])) {
return($c[1]);
}
}

return false;
}

/** Acceso a la base de datos **/

$db = mysqli_connect("$server", "$user", "$pass") or die("No hay conexión.");
if(!$db)
die("no db");
if(!mysqli_select_db("$db2",$db))
die("No se seleccionó la base de datos.");

/** Lectura y detección de fecha y hora así como de la IP del visitante **/

$server_time=date("U");
$client_ip=$_SERVER['REMOTE_ADDR'];
$arr = getdate();
$dia_actual = $arr["mday"];
$hora_actual = $arr["hours"];
$minuto_actual = $arr["minutes"];
$crawler = crawlerDetect($_SERVER['HTTP_USER_AGENT']);
$visitorType &nbsp;&nbsp; &nbsp;= '';
if ($crawler){
$visitorType = 'bot';
}

/** Lectura y actualización de datos en la tabla visitas **/

$visita = mysqli_query("SELECT * FROM visitas");
while($row = mysqli_fetch_array($visita)) {
extract($row);
$dia = $row["dia"];
$totales = $row["totales"];
$hoy = $row["hoy"];
$vistotales = $row["vistotales"];
$vishoy = $row["vishoy"];
if ($dia_actual != $dia) {
$hoy = 1;
$vishoy = 1;
}else{
$hoy++;
}
$totales++;
}
if ($visitorType =='') {
$actualiza="UPDATE visitas SET dia='$dia_actual', totales='$totales', hoy='$hoy', vishoy='$vishoy'";
mysqli_query($actualiza);
}

/** Lectura y actualización de datos en la tabla current_users (usuarios online) **/

$p4 = mysqli_query("SELECT * FROM current_users WHERE ip='$client_ip'");
$pa4 = mysqli_fetch_array($p4);
if($pa4) {
$update="UPDATE current_users set time='$server_time' where ip='$pa4[ip]'";
mysqli_query($update) or die("No es posible actualizar: " . mysqli_error());
} else {
$query=("INSERT INTO `current_users` (`ip`, `time`, `visitorType`) VALUES ('$client_ip', '$server_time', '$visitorType')");
$result = mysqli_query($query) or die("No se puede insertar: " . mysqli_error());
$vishoy++;
$vistotales++;
if ($visitorType =='') {
$actualiza1="UPDATE visitas SET vistotales='$vistotales', vishoy='$vishoy'";
mysqli_query($actualiza1);
}
}
$queryA = mysqli_query("SELECT ip FROM current_users WHERE visitorType = 'bot'");
$num_bot = mysqli_num_rows($queryA);

$result6 = mysqli_query("SELECT ip FROM current_users" );
$current_visitors = mysqli_num_rows($result6);
$num_no_bot = $current_visitors - $num_bot;

/** Lectura y actualización de la tabla max_users (máximo número de usuarios) **/

$max_user = mysqli_query("SELECT * FROM max_users");
while($row = mysqli_fetch_array($max_user)) {
extract($row);
$total = $row["total"];

if ($total < $num_no_bot) {
$total = $num_no_bot;
$actualiza2="UPDATE max_users SET total='$total', hora='$server_time'";
mysqli_query($actualiza2);
}
}

/** Gestión del tiempo que controla la vigencia de los usuarios online. Por defecto 3 minutos **/

$time2=$server_time-180;
$remove="DELETE from current_users WHERE time<'$time2'";
mysqli_query($remove) or die("No se puede borrar: " . mysqli_error());

?>

El archivo anterior, al que llamaremos counter.php, lo colocamos también en la carpeta contador. En dicho archivo se explican con diferentes etiquetas las sucesivas secciones del mismo.

Relacionado:  Para webmasters: Como funcionan los foros

Los capítulos de Un sencillo contador para tu web, además del actual, son los siguientes:

Etiquetas

fabriciano

Amante de la informática y de Internet entre otras muchas pasiones. Leo, descifro, interpreto, combino y escribo. Lo hago para seguir viviendo y disfrutando. Trato de dominar el tiempo para que no me esclavice.
Botón volver arriba