Ver Mensaje Individual
  #4 (permalink)  
Antiguo 05/01/2008, 15:42
Avatar de hgp147
hgp147
 
Fecha de Ingreso: diciembre-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 980
Antigüedad: 19 años, 8 meses
Puntos: 36
Re: Contador de visitas que muestre top x en páginas que yo quiera.

Hola, lo encontre:

ES UN CONTADOR DE VISITAS UNICAS. SOLO SE CONTARÁ UNA VISITA POR DÍA, TENIENDO EN CUENTA LA IP.

Son 3 archivos:

conexion.php --> Conecta con la base de datos (Recorda cambiar el usuario, el pass y la db por los tuyos)

Código PHP:
<?

function conectar()
{

//Conexion con la base
mysql_connect ("localhost", "usuario", "pass");

//selección de la base de datos con la que vamos a trabajar 
mysql_select_db("db");

}

function 
desconectar()
{
    
mysql_close();
}

?>

Pone el código de a continuación en las páginas en las que quieras contar las visitas:

Código PHP:
<?

$partes_ruta 
= pathinfo($_SERVER["PHP_SELF"]);

$pagina = $partes_ruta['filename'];

$ip = $_SERVER["REMOTE_ADDR"];

$fecha = date("Y-m-d");






if(
is_file("./" . $pagina . "_visitas/" . $fecha . "_" . $ip . ".txt")){

// No agrego ninguna visita, ya que el usuario ya ingreso antes.

}else{

// Creo archivo para guardar la ip con la fecha de ese día

$archivo = fopen("./" . $pagina . "_visitas/" . $fecha . "_" . $ip . ".txt" , "w");

if (
$archivo) {

fputs ($archivo, "");

}

fclose ($archivo);


// Actualizo la base de datos, agregando una visita mas


include("conexion.php");

conectar();

$result = mysql_query("SELECT * FROM tabla_visitas WHERE pagina='$pagina'");

$row = mysql_fetch_array($result);

$visitas = $row["visitas"];

$visitas1 = $visitas+1;



mysql_query("UPDATE tabla_visitas SET

visitas = '$visitas1'

WHERE pagina='$pagina'"
);

desconectar();


}


?>


Pone este otro código de abajo donde quieras que se muestre el "top 10"

Código PHP:
<?

include("conexion.php");

conectar();

$result = mysql_query("SELECT pagina, visitas FROM tabla_visitas ORDER BY visitas desc LIMIT 10");

desconectar();

while (
$fila = mysql_fetch_object($result)){

echo 
"-" . $fila->pagina . ": " . $fila->visitas . "<BR>"; 

}

?>

IMPORTANTE: Para que funcione necesitas tener una carpeta que tenga el nombre
del archivo sin extension más "_visitas" (Ejemplo: si tenes el archivo "juegos.htm", tenes que crear dentro del mismo directorio donde está el archivo una carpeta "juegos_visitas". Esta carpeta debe tener permisos CHMOD 0777.
Tambien debes crear la base de datos-->

CREATE TABLE `tabla_visitas` (
`pagina` varchar(30) NOT NULL,
`visitas` integer(6) NOT NULL default '0',
PRIMARY KEY (`pagina`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;


Y completarla la columna de `pagina` con los nombres de tus archivos sin extensión.


Si te quedan dudas, no dudes en preguntar.

Última edición por hgp147; 06/01/2008 a las 16:18 Razón: Corección de código