Underc0de

Programación Web => Back-end => Mensaje iniciado por: Xt3mP en Julio 23, 2010, 03:42:39 AM

Título: Contador de visitas [Unicas y Generales]
Publicado por: Xt3mP en Julio 23, 2010, 03:42:39 AM
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.

Código (php) [Seleccionar]

<?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)
)