Nueva pregunta

Pregunta:

Fecha: 02-03-2020 13:19:21 (En Español)

Contador de visitas en php suma más visitas de lo normal[Resuelta]

Buenas amigos hoy me encontré con un problema que me tiene un poco pensativo. Resulta que he creado una manera simple de capturar el referer y de contar cuantas veces esa url a visitado la página.

Ésta es la función:

function datosreferer(){
  if(isset($_SERVER['HTTP_REFERER']) && $_SERVER['HTTP_REFERER'] !== null){
    $re = $_SERVER['HTTP_REFERER'] ;
    $Z = md5($re);
    $A = substr($Z,0,2); 
    $B = substr($Z,16,1); 
    $C = substr($Z,30,1); 
    $D = substr($Z,23,1); 
    $shortcut = $A.$B.$C.$D;
    $contents= false;
    $refer = "./Data/$shortcut";
    if(file_exists($refer) == true){
      $row = file($refer,FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES);
      $referer = $row['0'];
      $count = $row['1'];
      $count++;
      $contents .= $referer."\r\n";
      $contents .= $count;
      file_put_contents($refer,$contents);
    }else{
      $count = 0;
      $contents .= $re."\r\n";
      $contents .= $count;
      file_put_contents($refer,$contents);
    }
    return true;
  }else{
    return false;
  }
}  

Como pueden ver la manera es muy básica ya que crea un archivo que contiene la url del referer si existe y un número que va aumentando si es la misma url, hasta ahí todo bien.

Ésta es la manera en que llamo a la función desde la página donde llegan las visitas:

if (isset($_GET['id'])) {
  @$id = isset($_GET['id']) ? $_GET['id'] : '';
  datosreferer();
}else{
  header('Location:'.$conf['redirect'].'');
} 

Si el id existe en la url se ejecuta la función .

El problema está en que por cada visita la función suma más de un número sin que se repitan las visita. Espero me den alguna idea de dónde está el problema.
Etiquetas: PHP - Web Scraping Votos: 0 - Respuestas: 4 - Vistas: 8 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 08-03-2020 17:24:02 Dos cosas: tienes código redundante pues luego de comprobar que existe la variable $_GET['id'], vuelves a comprobarlo para asignar un valor a $id. Puedes hacer simplemente
    if (isset($_GET['id'])) {
      @$id = $_GET['id'];
      datosreferer();
    } else {
      header("Location: $conf['redirect']");
    }
    Además de eso, un efecto secundario indeseado de tu código es que por cada vez que el usuario recargue la página, se llamará a tu función (pues existe $_GET['id']) y eso incrementará el contador.
    Ten en cuenta también que, según el manual, en referencia a HTTP_REFERER: "No todos los agentes de usuarios lo definen y algunos permiten modificar HTTP_REFERER como parte de su funcionalidad. En resumen, es un valor del que no se puede confiar realmente." (https://www.php.net/manual/es/reserved.variables.server.php)
      Votos: 1 - Link respuesta
     
  • Fecha: 09-03-2020 07:50:58 gracias por la explicación tiene toda la razón en su punto de vista tratare de modificar el código y usar la Api de google analytics .   Votos: 0 - Link respuesta
     
  • Fecha: 09-03-2020 17:35:23 Otra plataforma que puedes usar es statcounter.com. Ellos tienen un plan gratis y mantienen hasta 500MB de logs. Por supuesto que (en mi opinión) Google Analytics es mucho mejor pero solo para que sepas que hay otras opciones.   Votos: 0 - Link respuesta
     
  • Fecha: 09-03-2020 18:22:43 Gracias por el dato lo tender presente   Votos: 0 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión
 
frjcbbae garagebible.com