Lenguaje PHP

Contador de visitas Web con PHP y MYSQL

Contador de visitas Web con PHP y MYSQL. En este artículo vamos a explicar cómo añadir un contador de visitas y la base de datos como medio de almacenamiento con el objetivo de tener un control de las visitas diarias en tu sitio Web y en cualquier página que tengamos, ya sea estática o dinámica.

El contador de visitas será transparente y de fácil aplicación. Se tratará de insertar un código que nos permitirá tener un control de las visitas que recibimos en nuestra Web teniendo en cuenta el día y la dirección URL para evitar duplicaciones en el contador.

Sin embargo, necesitaremos añadir una nueva tabla en la base de datos, para guardar los registros de visitas. La puedes llamar tabla “visitas”.

Los campos utilizados en la tabla serán los siguientes:

  • Idvisitas
  • enlace
  • visitas

Contador de visitas Web con PHP y MYSQL

base-de-datos
Vista de los datos almacenados en la base de datos

base

Los Resultados del contador en la página web lo veremos ver como funciona. Si la página es única se incrementarán las visitas, y si visitan otra URL se guardarán en un nuevo campo como la imagen de arriba.

resultado-de-visitas

 

Ahora crear un archivo llamado visitas.php

En el cual se procesará las visitas todo esto en PHP, si el enlace existe se incrementará las visitas, utilizará cookies para no contabilizar impresiones.

 <?php
ob_start();
header("Content-type: text/javascript");

// Creamos la conexion con la base de datos
$con = @mysqli_connect('localhost', 'USUARIO_BD', 'PASSWORD_BD', 'NOMBRE_BD') or die("document.write('Error');");

// Obtenemos, y validamos enlace actual
$enlace = $_SERVER['HTTP_REFERER'];
if (!$enlace || $enlace == '') {
    die();
}

// Obtenemos los datos de la base de datos
$sql = "SELECT visitas FROM visitas WHERE enlace='$enlace'";
$query = mysqli_query($con, $sql);
$row = mysqli_fetch_assoc($query);

/*creamos los codigos querys verificando primero las cookies, para contar visitas y no impresiones web*/
if (isset($_COOKIE[md5($enlace)])) {
    // si existe la cookie solo le damos el valor a $visitas
    $visitas = $row['visitas'];
    echo "document.write($visitas);";
} elseif (!isset($_COOKIE[md5($enlace)])) {
    // Comprobamos si el enlace ya esta en la base de datos
    $rows = mysqli_num_rows($query);
    if ($rows > 0) {
        // Cuando exista lo enlace actualizamos
        $SQL = "UPDATE visitas SET visitas=visitas+1 WHERE enlace='$enlace'";
        if (mysqli_query($con, $SQL)) { // Si se inserta la visita
            $visitas = ($row['visitas']) + (1); // Le sumamos uno para mostrar la visita actual
            echo "document.write($visitas);";
            setcookie(md5($enlace), '_vStD', time() + 86400); // Y creamos la cookie de 1 dia
        } else { // Si no se inserta la visita
            $visitas = $row['visitas']; // Solo obtenemos las visitas
            echo "document.write($visitas);";
        }
    } elseif ($rows == 0) {
        // Cuando no existe el enlace en la base de datos la insertamos
        $SQL = "INSERT INTO visitas (enlace,visitas) VALUES ('$enlace',1)";
        if (mysqli_query($con,$SQL)) { // Si se inserta la nueva enlace
            echo "document.write(1);";
            setcookie(md5($enlace), '_vStD', time() + 86400); // Y creamos la cookie de 1 dia
        } else { // Si no se inserta mostramos
            echo "document.write(0);";
        }
    }
}

// Por ultimo cerramos la conexion, y cerramos el script
ob_end_flush();
mysqli_close($con);
die();
?>

Y los más principal como insertar en contador en todas nuestras aginas para que se registren las visitas de manera eficiente.

Visitas: <script src="http://localhost/base/conta/misvisitas.php"></script>

Espero que les haya servido, muchas gracias.

Contador de Visitas web
Contador de Visitas web

 

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

2 comentarios

  1. Tengo una duda, no entiendo el funcionamiento de la cookie, ya que refresco la pagina y me sigue mostrando el mismo numero de visitas. Cuando abro la página en otro navegador o creo una ventana privada del mismo me aumenta la primera vez pero si refresco en esa misma ventana ya no aumenta el valor de visitas, que deberia modificar para que me incrementase a cada refresco de la pagina?

  2. Hola! El contador va de 10, pero tengo un problema.
    En forma local con el xampp funciona la cookie y el settime pero cuando lo subo al servidor me cuenta las visitas pero la cookie no aparece, que puede ser?

    Si apreto F5 20 veces, hay 20 visitas una detras de la otra

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba