Newsgroup: it.comp.www.php
Titolo: Contatore e statistiche

Sto cercando di realizzare un script che produca delle statistiche sui
visitatori del sito come il sistema operativo usto ed il browser.
Ho quindi pensato di procedere come segu per il browser:
if (ereg('MSIE ([0-9].[0-9]{1,2})', $_SERVER['HTTP_USER_AGENT'],
$log_version)) $agent = $log_version[0];
elseif (ereg('Opera ([0-9].[0-9]{1,2})',
$_SERVER['HTTP_USER_AGENT'],$log_version)) $agent = $log_version[0];
elseif(ereg('Mozilla/([0-9].[0-9]{1,2})',
$_SERVER['HTTP_USER_AGENT'],$log_version)) $agent = $log_version[0];
else $agent='Unknown';
Mentre per il sistema operativo:
if (strstr($_SERVER['HTTP_USER_AGENT'],'Win')) $os='Windows';
elseif (strstr($_SERVER['HTTP_USER_AGENT'],'Mac')) $os='MacOS';
elseif (strstr($_SERVER['HTTP_USER_AGENT'],'Linux')) $os='Linux';
elseif (strstr($_SERVER['HTTP_USER_AGENT'],'Unix')) $os='Unix';
elseif (strstr($_SERVER['HTTP_USER_AGENT'],'Solaris')) $os='Solaris';
else $os='Other';
A questo punto vorrei aggiungere altri criteri per rilevare
correttamente altri browser o SO. In particolare mi interesserebbe il
formato di HTTP_USER_AGENT negli altri casi possibili.
bye, insane79
That is not dead which can eternal lie, 
And with strange aeons even death may die
---- Abdul Alhazred, Al Azif 700 d.C. --

Oggi mi sento particolarmente buono... e ti dono... direttamente dal codice
del 
www.kmcount.net
 uno stralcio di codice che ti farą impazzire.
Passandogli lo HTTP_USER_AGENT la funzione ti torna un array contenente:
- nome del browser
- versione
- piattaforma
- sistema operativo
- versione JavaScript
Non č il + completo... ma nn funziona male.
Almeno un Thx ed un link al mio sito....
function sniffer($agent){
        $UA =  "";
        $NAME       =  "";
        $VERSION =  0;
        $MAJORVER   =  0;
        $MINORVER   =  0;
        $AOL        =  false;
        $WEBTV      =  false;
        $JS         =  0.0;
        $PLATFORM   =  "Unknown";
        $OS         =  "Unknown";
        $UA = $agent;
      if ( eregi( 'MSIE ([0-9].[0-9a-zA-Z]{1,4})',$UA,$info) ||
           eregi( 'Microsoft Internet Explorer
([0-9].[0-9a-zA-Z]{1,4})',$UA,$info) )
      {  $VERSION = $info[1];
         $NAME = 'IE';
      }
      elseif ( eregi( 'Opera ([0-9].[0-9a-zA-Z]{1,4})',$UA,$info) ||
               eregi( 'Opera/([0-9].[0-9a-zA-Z]{1,4})',$UA,$info) )
      {  $VERSION = $info[1];
         $NAME = 'Opera';
      }
      elseif ( eregi( 'iCab ([0-9].[0-9a-zA-Z]{1,4})',$UA,$info) ||
               eregi( 'iCab/([0-9].[0-9a-zA-Z]{1,4})',$UA,$info) )
      {  $VERSION = $info[1];
         $NAME = 'iCab';
      }
      elseif ( eregi( 'Netscape6/([0-9].[0-9a-zA-Z]{1,4})',$UA,$info) )
      {  $VERSION = $info[1];
         $NAME = 'Netscape';
      }
      elseif ( eregi( 'Mozilla/([0-9].[0-9a-zA-Z]{1,4})',$UA,$info) )
      {  $VERSION = $info[1];
         $NAME = 'Netscape';
      }
      else
      {  $VERSION = 0;
         $NAME = 'Unknown';
      }
      if( eregi( 'aol',$UA,$info))
      { $AOL = true;
                $NAME = "AOL";
      }
      elseif( eregi( 'webtv',$UA,$info))
      { $WEBTV = true;
                $NAME = "WebTV";
      }
      if($VERSION > 0)
      {  $pos = strpos($VERSION,".");
         if ($pos > 0)
         {  $MAJORVER = substr($VERSION,0,$pos);
            $MINORVER = substr($VERSION,$pos,strlen($VERSION));
         }
         else $MAJORVER = $VERSION;
      }
      if( eregi('Win16',$UA)           ||
          eregi('windows 3.1',$UA)     ||
          eregi('windows 16-bit',$UA)  ||
          eregi('16bit',$UA))
      {  $PLATFORM = "Win16";
         $OS = "Win31";
      }
      if(eregi('Win95',$UA) || eregi('windows 95',$UA))
      {  $PLATFORM = "Win32";
         $OS = "Win95";
      }
      elseif(eregi('Win98',$UA) || eregi('windows 98',$UA))
      {  $PLATFORM = "Win32";
         $OS = "Win98";
      }
      elseif(eregi('WinNT',$UA) || eregi('windows NT',$UA))
      {  $PLATFORM = "Win32";
         $OS = "WinNT";
      }
      else
      {  $PLATFORM = "Win32";
         $OS = "Win9xNT";
      }
      if( eregi('os/2',$UA)            ||
          eregi('ibm-webexplorer',$UA))
      {  $PLATFORM = "OS2";
         $OS = "OS2";
      }
      if( eregi('68k',$UA)             ||
          eregi('68000',$UA))
      {  $PLATFORM = "Mac";
         $OS = "Mac68k";
      }
      if( eregi('ppc',$UA)             ||
          eregi('powerpc',$UA))
      {  $PLATFORM = "Mac";
         $OS = "MacPPC";
      }
      if(eregi('sunos',$UA))
      {  $PLATFORM = "Unix";
         $OS = "sun";
      }
      if(eregi('sunos 4',$UA))
      {  $PLATFORM = "Unix";
         $OS = "sun4";
      }
      elseif(eregi('sunos 5',$UA))
      {  $PLATFORM = "Unix";
         $OS = "sun5";
      }
      elseif(eregi('i86',$UA))
      {  $PLATFORM = "Unix";
         $OS = "suni86";
      }
      if(eregi('irix',$UA))
      {  $PLATFORM = "Unix";
         $OS = "irix";
      }
      if(eregi('irix 6',$UA))
      {  $PLATFORM = "Unix";
         $OS = "irix6";
      }
      elseif(eregi('irix 5',$UA))
      {  $PLATFORM = "Unix";
         $OS = "irix5";
      }
      if(eregi('hp-ux',$UA))
      {  $PLATFORM = "Unix";
         $OS = "hpux";
      }
      if(eregi('hp-ux',$UA) && ereg('10.',$UA))
      {  $PLATFORM = "Unix";
         $OS = "hpux10";
      }
      elseif(eregi('hp-ux',$UA) && ereg('09.',$UA))
      {  $PLATFORM = "Unix";
         $OS = "hpux9";
      }
      if(eregi('aix',$UA))
      {  $PLATFORM = "Unix";
         $OS = "aix";
      }
      if(eregi('aix1',$UA))
      {  $PLATFORM = "Unix";
         $OS = "aix1";
      }
      elseif(eregi('aix2',$UA))
      {  $PLATFORM = "Unix";
         $OS = "aix2";
      }
      elseif(eregi('aix3',$UA))
      {  $PLATFORM = "Unix";
         $OS = "aix3";
      }
      elseif(eregi('aix4',$UA))
      {  $PLATFORM = "Unix";
         $OS = "aix4";
      }
      if(eregi('inux',$UA))
      {  $PLATFORM = "Unix";
         $OS = "linux";
      }
      if(eregi('unix_system_v',$UA))
      {  $PLATFORM = "Unix";
         $OS = "unixware";
      }
      if(eregi('ncr',$UA))
      {  $PLATFORM = "Unix";
         $OS = "mpras";
      }
      if(eregi('reliantunix',$UA))
      {  $PLATFORM = "Unix";
         $OS = "reliant";
      }
      if(eregi('dec',$UA)           ||
         eregi('osfl',$UA)          ||
         eregi('alphaserver',$UA)   ||
         eregi('ultrix',$UA)        ||
         eregi('alphastation',$UA))
      {  $PLATFORM = "Unix";
         $OS = "dec";
      }
      if(eregi('sinix',$UA))
      {  $PLATFORM = "Unix";
         $OS = "sinix";
      }
      if(eregi('freebsd',$UA))
      {  $PLATFORM = "Unix";
         $OS = "freebsd";
      }
      if(eregi('bsd',$UA))
      {  $PLATFORM = "Unix";
         $OS = "bsd";
      }
      // VMS
      if(eregi('vax',$UA) || eregi('openvms',$UA))
      {  $PLATFORM = "Unix";
         $OS = "vms";
      }
      // SCO
      if(eregi('sco',$UA) || eregi('unix_sv',$UA))
      {  $PLATFORM = "Unix";
         $OS = "sco";
      }
      // Assume JavaScript Version
      // make the code a bit easier to read
      $ie  = eregi("ie",$NAME);
      $ie5 = ( eregi("ie",$NAME) && ($MAJORVER >= 5) );
      $ie4 = ( eregi("ie",$NAME) && ($MAJORVER >= 4) );
      $ie3 = ( eregi("ie",$NAME) && ($MAJORVER >= 3) );
      $nav  = eregi("netscape",$NAME);
      $nav5 = ( eregi("netscape",$NAME) && ($MAJORVER >= 5) );
      $nav4 = ( eregi("netscape",$NAME) && ($MAJORVER >= 4) );
      $nav3 = ( eregi("netscape",$NAME) && ($MAJORVER >= 3) );
      $nav2 = ( eregi("netscape",$NAME) && ($MAJORVER >= 2) );
      $opera = eregi("opera",$NAME);
      // do the assumption
      // update as new versions are released
      // Provide upward compatibilty
      if($nav && ($MAJORVER > 5)) $JS = 1.4;
      elseif($ie && ($MAJORVER > 5)) $JS = 1.3;
      // check existing versions
      elseif($nav5) $JS = 1.4;
      elseif(($nav4 && ($VERSION > 4.05)) || $ie4) $JS = 1.3;
      elseif(($nav4 && ($VERSION <= 4.05)) || $ie4) $JS = 1.2;
      elseif($nav3 || $opera) $JS = 1.1;
      elseif(($nav && ($MAJORVER >= 2)) || ($ie && ($MAJORVER >=3))) $JS =
1.0;
      //no idea
      else $JS = 0.0;
      return array ( $NAME, $VERSION, $PLATFORM, $OS, $JS );
}
BYE BYE
Luca Camillo - alias Kamy
http://www.kmcount.net
http://www.tutorials.it

Non è il + completo... ma nn funziona male.
Per il mio utilizzo e' piu' che sufficiente :)


         $MINORVER   =  0;
[SNIP]
questo codice non è di tua proprietà, benché l'autore non ha
specificato licenze o restrizioni simili, non mi sembra bello ne
tantomeno professionale da parte tua spacciare tale codice come tuo.
Almeno è questo quello che si evince da ciò che dici...
Questi sono i dati del vero autore dello script..
io ho una versione un po' vecchia.. ma cmq è lui.
Se volete posto tutto lo script.
** Description   : PHPClientSniffer
** Version       : 1.2.4
** File Name     : PHPClientSniffer.php3
** Author        : Roger Raymond for PHyX8 studios
** Author Email  : 
roger....@asphyxia.com
** Created       : Wednesday, August 23, 2000
** Last Modified : Thursday, December 14mmmm, 2000
** Modified By   : Roger Raymond
*'
   INFO:
   Returns client information based on HTTP_USER_AGENT
   BASED ON WORKS AND IDEAS BY:
   Tim Perdue of PHPBuilder.com
 
http://www.phpbuilder.com/columns/tim20000821.php3
   The Ultimate JavaScript Client Sniffer by Netscape.
 
http://developer.netscape.com/docs/examples/javascript/browser_type.html
=====================================
senza rancore, ma solo per chiarezza,trasparenza, e rispetto per chi
ha fatto il lavoro!
Cordialmente
Tommaso D'Argenio
obe...@webstatis.com
raj...@ziobudda.net