Estaba aburrido y decidí "programar" algo muy básico, se trata de un contandor de visitas que hace:
· Muestra IP más la cantidad de veces que ha accedido esa IP.
· Muestra todas las visitas que ha tenido la página (No importa si es la misma IP, la cuenta como visita).
· Muestra las visitas únicas que ha tenido la página (En número).
El script es sumamente básico, no creo que se les dificulte entenderlo.
<?php
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
# Visits Counter v1.0 By Xt3mP (Public source) #
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
# Este script cuenta tanto visitas únicas como en total. #
# Para visualizar las estadísticas ir a ?mod=view. #
# #
# Autor: Xt3mP Contacto: [email protected] #
#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#
$connect = mysql_connect("SERVER", "USER", "PASS") or die('No se pudo conectar: ' . mysql_error());
mysql_select_db("DATABASE") or die("No se pudo seleccionar la base $base_de_datos: " . mysql_error());
$ip = $_SERVER[REMOTE_ADDR];
$count = 1;
$query = mysql_query("SELECT ip FROM unicas WHERE ip='" . $ip . "' ");
if ($checking_ip = mysql_fetch_array($query)){
$query_update = mysql_query("SELECT * FROM unicas WHERE ip='" . $ip . "' ");
while ($row = mysql_fetch_array($query_update)){
$times = $row['times'] + 1;
mysql_query("UPDATE unicas SET times='" . $times . "' WHERE id='" . $row['id'] . "' ");
}
//echo "Actualizado!";
}else{
//echo "IP no existe";
mysql_query("INSERT INTO unicas (ip,times) values ('" . $ip . "','" . $count . "') ");
}
$all = mysql_query("SELECT * FROM todas");
if ($als = mysql_fetch_array($all)){
$times_all = $als['times'] + 1;
mysql_query("UPDATE todas SET times='" . $times_all . "' WHERE id=1");
}else{
mysql_query("INSERT INTO todas (times) values ('" . $count . "') ") or die(mysql_error());
}
#Modulos
$visits = "<div align='center'>Click <a href='?mod=view'>aqui</a> para ver stats.</div>";
if ($_GET['mod']){
$mod = $_GET['mod'];
switch($mod){
case "view":
$uni = mysql_query("SELECT * FROM unicas");
$uni_ip = mysql_num_rows($uni);
$tod = mysql_fetch_array(mysql_query("SELECT * FROM todas"));
$visits = '<div align="center">';
$visits .= '<table align="center" width="100">';
$visits .= '<tr><td align="center">IP</td><td align="center">Hits</td></tr>';
while ($unicas = mysql_fetch_array($uni)){
$visits .= '<tr><td align="center">' . $unicas["ip"] . '</td><td align="center">' . $unicas["times"] . '</td></tr>';
}
$visits .= '</table></div>';
$visits .= '<br><br>';
$visits .= "<div align='center'>Total de visitas: " . $tod['times'] . "</div>";
$visits .= "<div align='center'>Total de visitas unicas: " . $uni_ip . "</div>";
break;
default:
$visits = "<div align='center'>No existe este modulo de visitas.</div>";
}
}
echo $visits;
mysql_close();
?>
Demo: http://xt3mp.webcindario.com/visits_count/
Saludos.
P.D: No le metí diseño, pero si tienen alguna duda de como hacerlo haganmelo saber.
Tablas:
create table unicas (
id int(11) NOT NULL auto_increment,
ip varchar(15) NOT NULL,
times int NOT NULL,
PRIMARY KEY (id)
)
create table todas (
id int(11) NOT NULL auto_increment,
times int NOT NULL,
PRIMARY KEY (id)
)