• Contatto
  • Note Legali
  • Privacy
  • FAQs
  • Downloads
  • Collabora
  • Supporta
  • Monitorare un link con php

    Scritto da Erriko in Php il 19 maggio 2009

    Intendiamo controllare un link presente sul nostro sito o il collegamento ad un file da scaricare? Vogliamo sapere chi e quando lo ha cliccato?
    Vogliamo capire se un sito funziona, se i contenuti sono interessanti o vedere se e quanti utenti abbiamo portato ad un servizio con il nostro link?

    Con php è possibile, e vi spiego come:

    Ipotizziamo di voler controllare quanti utenti cliccano sul link di questo tipo:

    <a href="http://www.sitochevogliamo.com">Entra nel sito per saperne di più</a>

    oppure

    <a href="http://www.tuosito.it/guida_pdf.zip">Scarica la mia guida completa e illustrata</a>

    Bene, per riuscire in questo intento dovremo realizzare:

    1. una tabella nel database MySQL registrare i risultati.
    2. un file active_link.php adatto a catturare le informazioni.

    Definiamo la tabella

    Nella tabella andremo a memorizzare le carateristiche dell’utente che richiede il documento.

    Eseguiamo il seguente codice con l’ausilio del gestore del database (generalmente, trattandosi di mysql,  phpmyadmin).

    CREATE TABLE `site_trace` (
      `id` int(11) NOT NULL auto_increment,
      `nome` varchar(32) NOT NULL default '',
      `ip` varchar(50) NOT NULL default '',
      `tempo` datetime NOT NULL default '0000-00-00 00:00:00',
      `description` varchar(120) NOT NULL default '',
      PRIMARY KEY  (`id`)
    ) ;

    All’interno avremo, oltre alla chiave primaria:

    1. nome della pagina o del documento richiesto.
    2. l’indirizzo IP dell’utente (così da capire se lo stesso utente ha preso più documenti).
    3. quanto tempo l’utente è rimasto nella pagina e il momento della visita.
    4. altre caratteristiche che intendiamo tracciare.

    Realizziamo il file utile a catturare i dati

    Creiamo un file con il nome active_link con estensione php, che sarà in grado di catturare le informazioni dell’utente che ha fatto richiesta del documento.

    Il codice da inserire in tale file è:

    
    // interazione con il database
    
    $conn = mysql_connect('tuo_host','tuo_nome','tuo_password') or die("Errore nella connessione MySQL: " . mysql_error());
    mysql_select_db('tuo_database',$conn) or die("Errore nella selezione del database: " . mysql_error());
    
    $oggi=date("Y-m-d H:i:s");
    
    $query = "INSERT INTO site_trace VALUES(0,";
    $query.= "'".$_REQUEST['link']."',";
    $query.= "'".$_SERVER['REMOTE_ADDR']."',";
    $query.= "'".$oggi."',";
    $query.= "'".$_SERVER['HTTP_USER_AGENT']."')";
    mysql_query($query,$conn) or die("Errore nella query:" . mysql_error());
    
    // dopo aver memorizzato i dati nella tabella invio una e-mail di avviso
    
    $oggetto="Link attivato per ".$_REQUEST['link'].": ".$oggi;
    $contenuto.= "Il sito/documento ".$_REQUEST['link']."  è stato visitato.<br>";
    $contenuto.= "Indirizzo IP: ".$_SERVER['REMOTE_ADDR']."<br>";
    $contenuto.= "User Agent: ".$_SERVER['HTTP_USER_AGENT']."<br>";
    $contenuto.= "Data/orario: ".$oggi."<br>";
    
    $mailheader .= "From: indirizzo_posta_sito";
    $mailheader .= "Bcc: indirizzo_posta2";
    $mailheader .= "Content-Type: text/html; charset="iso-8859-1" ";
    $resultmail = @mail("indirizzo_posta_sito",$oggetto,$contenuto,$mailheader);
    
    // carico la pagina richiesta dall'utente
    
    header("location: http://".$_REQUEST['link']);
    exit;
    
    }
    

    Ovviamente questo codice va inserito tra <?php e ?> altrimenti non verrà riconosciuto come codice php e quindi non sarà eseguito.

    Trasformare i link in link “monitorati”

    Facendo sempre riferimento ai link d’esempio mensionati all’inizio dovremo modificare il link contenuto tra le virgolette dell’href in questo modo:

    <a href="active_link.php?link=www.sitochevogliamo.com">Entra nel sito per saperne di più</a>

    oppure

    <a href="active_link.php?link=www.tuosito.it/guida_pdf.zip">Scarica la mia guida completa e illustrata</a>

    Come si può notare in questa maniera l’utente, prima di andare alla destinazione del link, passera per active_link.php che catturerà le informazioni desiderate.

    Nel nostro esempio cattureremo solamente:

    • $_SERVER['REMOTE_ADDR'] contiene l’indirizzo IP di un utente.
    • $_SERVER['HTTP_USER_AGENT'] contiene le informazioni dell’utente.

    Ma ovviamente è possibile modificare il codice in maniera tale da catturare più informazioni. A questo proposito può tornare utile questa mia precedente guida.

    Articoli Correlati

    La variabile globale php $ SERVER
    Esportare una tabella da un database MySql in CSV utilizzando PHP
    Il tasto “condividi via email” anche sul tuo sito!!
    Date e orari con Php

    3 commenti a “Monitorare un link con php”

    Commenta