Notizie flash
Contatore visite Stampa
Valutazione attuale: / 1
ScarsoOttimo 
Scritto da Administrator   
Lunedì 25 Maggio 2009 23:12
Indice
Contatore visite
contatore visite - pagina 2
Tutte le pagine

Avendo usato joomla per realizzare il mio e un paio di altri siti, ho messo un contatore che faccia vedere le visite ricevute dal sito, e mi sono orientato verso vinaora visit counter

bello e funzionale, ma dopo un paio di giorni mi son reso conto di due problematiche:

 

1) il valore riportato in questo mese era sempre lo stesso, 1000 (nel mio caso) 

2) il contatore mi dava letteralmente i numeri, paragonato alle statistiche di google analytics i numeri erano nettamente differenti (google mi diceva 60 visite e vinaora 250)

 

ho analizzato un po' i sorgenti e ho riscontrato che :

 

1) avevo impostato nella parte di amministrazione un numero di record massimi di 1000 e quindi lui a 1001 tagliava!

innalzando tale limite ad un valore che il nostro sito non vedra' mai, tutto si risolve (io ho messo 10000)

 

2) il contatore oltre a contare le visite effettuate dalle varie persone, contabilizza anche tutte le visite effettuate dagli spider dei motori di ricerca, quindi ad esempio se googlebot (il crawler di google) ci viene a trovare 30 volte in una giornata, lui lo interpretera' come se venissero 30 persone, e quindi falsa la percezione delle visite ricevute. 

Quindi basta implementare nel contatore un controllo sugli agent che richiedono la pagina e solo nel caso non sia l' agent di un motore di ricerca, conteggiarlo come visita.

 

ho provveduto ad implementare  uno script che ho leggermente adattao allo scopo, quindi pasta aprire il file mod_vvisit_counter.php , cercare le righe contenenti

     $query             =    "SELECT COUNT(*) FROM #__vvisit_counter WHERE ip='$ip' AND (tm+'$locktime')>'$now'";
                        $database->setQuery($query);
    $items             =    $database->loadResult();

 

 ed inserire subito sotto

 



/* RICONOSCIMENTO USER AGENT DELL'UTENTE
        di Giovanni Marigi
      
*/


/* La funzione permette di verificare se il browser che ha richiesto la pagina
   e' presente nella lista di bot conosciuti
   In caso affermativo restituisce il valore 1
   In caso negativo restituisce il valore 0

   @ param $chiave --> indica la chiave di ricerca all'interno del vettore
   @ param $vettore --> il vettore con i browser noti
*/
function presenza_user($chiave,$vettore) {
    $contatore = 0;
    /* Restituzione di un array con le chiavi dell'originario array
           associativo
        */
    $temp = array_keys($vettore);
    $conteggio = count($temp);       
    while($contatore < $conteggio) {
                /* Confronto fra la chiave di ricerca e l'elemento corrente
                   del vettore delle chiavi
                */
        
        if (strstr($chiave, $temp[$contatore])) {
            // Ricerca a buon fine
       
            return 1;
           }       
        $contatore++;
       }
       // Browser non presente nella lista          

       return 0;

}

 


/* Array associativi per i browser.
   Puo' essere aggiornato con nuove corrispondenze se ne conoscete
*/
$u_agenti = array(
'TwengaBot/1.1' => 'motore di ricerca twenga',
'Yahoo!' => 'motore di ricerca Yahoo!',
'Googlebot' => 'motore di ricerca Google',
'msnbot' => 'motore di ricerca msnbot',
'Mediapartners-Google' => 'adsense',
'Yandex' => 'Yandex.ru',
'ScoutJet' => 'ScoutJet',
'altri motori di ricerca' => 'motore di ricerca '
);


        //recupera l' user agent dell' utente

        $agent = $_SERVER['HTTP_USER_AGENT'];


    if (empty($items))
    {
$esito = presenza_user($agent,$u_agenti);

if ($esito == 0 ) {

        $query = "INSERT INTO #__vvisit_counter (id, tm, ip,agent) VALUES ('', '$now', '$ip','$agent')";
        $database->setQuery($query);
        $database->query();
        $e = $database->getErrorMsg();

           }
    }

 

avendo cura di sovrascrivere anche la parte di codice relativa all' aggiornamento della tabella nel database mysql, il codice riprendera' ad essere originale dalle righe

 

    $n                 =     $all_visitors;
    $div = 100000;
    while ($n > $div) {
        $div *= 10;
    }
 

 

 

a questo punto vi chiederete perche' non pubblicare il nuovo modulo aggiornato e rivisto, be' credo che questo compito spetti all' autore originale che sto contattando, se lui non e' piu' interessato, allora lo faro' io, nel frattempo se qualcuno vuole il modulo gia' pronto da installare e non ha voglia di effettuare le modifiche manualmente non ha che da scrivermi e  gli inviero una mail con il file zippato in allegato.

Ultimo aggiornamento Mercoledì 05 Agosto 2009 12:34
 
Make Text Bigger Make Text Smaller Reset Text Size
Home Informatica Joomla Contatore visite

JoomlaWatch Visitors



Nazione di provenienza

88.8%ITALY ITALY
2.7%UNITED STATES UNITED STATES
1.4%GERMANY GERMANY
1%JAPAN JAPAN
0.8%UNITED KINGDOM UNITED KINGDOM

Numero di visitatori

Oggi: 8
Ieri: 27
Scorsa settimana: 239
Questo mese: 159
Scorso mese: 915
Totale: 3930


JoomlaWatch Stats 1.2.9 by Matej Koval
mod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_countermod_vvisit_counter
mod_vvisit_counteroggi15
mod_vvisit_counterieri45
mod_vvisit_counterquesta settimana359
mod_vvisit_counterQuesto mese217
mod_vvisit_counterdal 08/08/200913752
Visitors Counter 1.0.3
davidea.it