Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: securedigital en 26 Abril 2007, 18:29 pm



Título: contador visitas interno MySQL
Publicado por: securedigital en 26 Abril 2007, 18:29 pm
Hola a todos.

Saben de algun script que haga la funcion de un contador de visitas ( como los que hay en cualquier sitio de recursos web ) PERO que los usuarios no vean ese contador, de forma que pense en que cada vez que alguien entre al web se agrege en una BD mysql un numero , como si se tratara de un autoincrement asi sabiendo las visitas totales del site.

Alguna idea de como hacerlo o si ya esta el script hecho?

Saludos


Título: Re: contador visitas interno MySQL
Publicado por: deya en 26 Abril 2007, 23:24 pm
Pues sencillo: modifica tu código de tal forma que a la hora de contar las visitas las guarde en tu base de datos y elimina el echo del código para que no se muestre el número de visitas en el navegador.

Salu2  ;)


Título: Re: contador visitas interno MySQL
Publicado por: securedigital en 28 Abril 2007, 18:41 pm
Hola

Cogi un codigo y lo modifique un poquito, pero no me funciona, puede decirme que hay mal¿



Código:
<?
$host="localhost";
$user="XXXXXXXXXXXX"; //usuari de la base de dades
$pass="XXXXXXXXXXXX"; //password de la base de dades
$db="estadisticas"; //nom de la base de dades

$conexion = mysql_connect($host,$user,$pass);
mysql_select_db($db,$conexion);
// $con es el identificador de la conexion con la base de datos
function visitas($con) {
// Tiempo que se guardará la cookie (Por defecto 10 minutos)
$minutos = 10;
// ------------------
$laFecha = getdate();
$mesActual = $laFecha["mon"];
$anioActual = $laFecha["year"];
$resultadoSQL = mysql_query("SELECT * from estadisticas WHERE mes=$mesActual AND año=$anioActual",$con);
if(mysql_num_rows($resultadoSQL) == 0) {
$actualizacion = mysql_query("INSERT INTO estadisticas (mes, año, visitas) VALUES ($mesActual, $anioActual, 0)",$con);
}
$resultadoSQL = mysql_query("SELECT SUM(visitas) from estadisticas",$con);
$datosStats = mysql_fetch_row($resultadoSQL);
$total = $datosStats[0];
$resultadoSQL = mysql_query("SELECT * from estadisticas",$con);
$datosMensual = mysql_fetch_row($resultadoSQL);
$elMes = $datosMensual[0];
$elAnio = $datosMensual[1];
$visitasDelMes = $datosMensual[2];
$visitante = $_COOKIE['misVisitas'];
if(!isset($visitante)) {
  setcookie("misVisitas","visitante",time()+(60*$minutos),"/");
  if($mesActual!=$elMes) {
  $delMes=0;
  }
  $total++;
  $visitasDelMes++;
  $actualización = mysql_query("UPDATE estadisticas set visitas=$visitasDelMes WHERE mes=$mesActual AND año=$anioActual",$con);
}
$resultadoVisitas[0] = $total; //Total de visitas en la página
$resultadoVisitas[1] = $visitasDelMes; //Visitas totales del Mes actual
return $resultadoVisitas;
}

?>


Título: Re: contador visitas interno MySQL
Publicado por: securedigital en 4 Mayo 2007, 17:52 pm
Si el codigo esta tremendamente mal y no se puede arreglar " no lo he manipulado tanto...." habria algun otro que vosotros conozcais que cuente las visitas de la web en mysql¿



Saludoos


Título: Re: contador visitas interno MySQL
Publicado por: SirLanceCC en 5 Mayo 2007, 03:52 am
Puedes hacer algo asi en el code de tu pagina

Código:
bla bla bla
bienvenidos a mi pagina
<?php
$ahora = time();
mysql_connect('localhost', 'user', 'pass');
mysql_db_select('database'); //No estoy seguro si es así o select_db
mysql_query("INSERT INTO tabla VALUES ($ahora) ");
?>

Bueno algo así, se me hace lo más sencillo, se registrará la hora y dia en que se visito. Obviamente debes crear una tabla con un campo que sea un int(40) (de 40 bytes porque time devuelve unos enteros muy grandes).

Luego puedes recuperar las visitas totales con
Código:
mysql_query("SELECT count(*) FROM tabla");
creo que sería algo así.

Espero sea de ayuda


Título: Re: contador visitas interno MySQL
Publicado por: securedigital en 6 Mayo 2007, 19:20 pm
Hola

Perfecto, ya lo tengo todo montado, incluso con nº de identificacion para usuarios con auto_increment , registro de las ip\\\'s y la hora.

Gracias


Ahora me surge un pequeño problema, esta tabla con el tiempo ira creciendo y se puede hacer enormeeee, por eso desde MySQL estaria bien limita la tabla a un maximo de registros, por ejemplo 1000 y que una vez llegue al nº 1001, en vez de crear mas registros, sustituya el registro nº 1 que se hizo hace muucho tiempo y así sucesiavamente, despues que sustituya al registro nº 2 , ....etc

La verdad es que no se como hacer esto con MySQL, o alguna cosa parecida para que la tabla no me llegue a ocupar decenas de MB, alguna idea?


Saludos