[ Index ]
 

Code source de e107 0.7.8

Accédez au Source d'autres logiciels libresSoutenez Angelica Josefina !

title

Body

[fermer]

/e107_plugins/log/ -> loginfo.php (source)

   1  <?php
   2  /*
   3  + ----------------------------------------------------------------------------+
   4  |     e107 website system
   5  |
   6  |     ?Steve Dunstan 2001-2002
   7  |     http://e107.org
   8  |     jalist@e107.org
   9  |
  10  |     Released under the terms and conditions of the
  11  |     GNU General Public License (http://gnu.org).
  12  |
  13  |     $Source: /cvsroot/e107/e107_0.7/e107_plugins/log/loginfo.php,v $
  14  |     $Revision: 1.17 $
  15  |     $Date: 2007/02/10 15:54:31 $
  16  |     $Author: e107steved $
  17  |
  18  | File locking added
  19  |
  20  +----------------------------------------------------------------------------+
  21  */
  22  
  23  if (!defined('log_INIT')) { exit; }
  24  
  25  $logIfile = "logs/logi_{$date}.php";
  26  $i_handle = fopen($logIfile, 'r+');
  27  if($i_handle && flock( $i_handle, LOCK_EX ) ) 
  28  {
  29    $log_file_contents = '';
  30    while (!feof($i_handle))
  31    {  // Assemble a string of data
  32      $log_file_contents.= fgets($i_handle,1000);
  33    }
  34    $log_file_contents = str_replace(array('<'.'?php','?'.'>'),'',$log_file_contents);
  35    if (eval($log_file_contents) === FALSE) echo "error in log file contents<br /><br /><br /><br />";
  36  }
  37  else
  38  {
  39    echo "Couldn't log data<br /><br /><br /><br />";
  40    exit;
  41  }
  42  
  43  $browser = getBrowser($agent);
  44  $os = getOs($agent);
  45  
  46  if($screenstats && $screenstats != "@") 
  47  {
  48    if(array_key_exists($screenstats, $screenInfo)) 
  49    {
  50      $screenInfo[$screenstats] ++;
  51    } 
  52    else 
  53    {
  54      $screenInfo[$screenstats] = 1;
  55    }
  56  }
  57  
  58  if(array_key_exists($browser, $browserInfo)) {
  59      $browserInfo[$browser] ++;
  60  } else {
  61      $browserInfo[$browser] = 1;
  62  }
  63  
  64  if(array_key_exists($os, $osInfo)) {
  65      $osInfo[$os] ++;
  66  } else {
  67      $osInfo[$os] =1;
  68  }
  69  
  70  /* referer data ... */
  71  if($ref && !strstr($ref, $_SERVER['HTTP_HOST'])) {
  72      if(preg_match("#http://(.*?)($|/)#is", $ref, $match)) {
  73          $refdom = $match[0];
  74          if(array_key_exists($refdom, $refInfo)) {
  75              $refInfo[$refdom]['ttl'] ++;
  76          } else {
  77              $refInfo[$refdom] = array('url' => $ref, 'ttl' => 1);
  78          }
  79      }
  80  }
  81  
  82  /* is the referal from Google? If so get search string ... */
  83  if(preg_match("#q=(.*?)($|&)#is", $oldref, $match)) {
  84      $schstr = trim($match[1]);
  85      $schstr = htmlentities(urldecode($schstr));
  86      if(array_key_exists($schstr, $searchInfo) && $schstr) {
  87          $searchInfo[$schstr] ++;
  88      } else {
  89          $searchInfo[$schstr] = 1;
  90      }
  91  }
  92  
  93  if ($tmp = gethostbyaddr(getenv('REMOTE_ADDR'))) {
  94      $host = trim(strtolower(substr($tmp, strrpos($tmp, ".")+1)));
  95      if(!is_numeric($host) && !strstr($host, "calhost")) {
  96          if(array_key_exists($host, $domainInfo)) {
  97              $domainInfo[$host] ++;
  98          } else {
  99              $domainInfo[$host] =1;
 100          }
 101      }
 102  }
 103  
 104  /* last 20 visitors */
 105  if(count($visitInfo) >= 20) {
 106      $length = 20;
 107      $offset = count($visitInfo)-$length;
 108      $visitInfo = array_slice($visitInfo, $offset, $length);
 109  }
 110  
 111  $visitInfo[$tmp] = array(
 112      'host'    => trim($tmp),
 113      'date'    => time(),
 114      'os'      => trim($os),
 115      'browser' => trim($browser),
 116      'screen'  => trim($screenstats),
 117      'referer' => substr(trim($ref), 0, 255),
 118  );
 119  
 120  $data = "<?php
 121  
 122  /* e107 website system: Log info file: ".date("z:Y", time())." */
 123  
 124  ";
 125  $data .= '$domainInfo = '.var_export($domainInfo, true).";\n\n";
 126  $data .= '$screenInfo = '.var_export($screenInfo, true).";\n\n";
 127  $data .= '$browserInfo = '.var_export($browserInfo, true).";\n\n";
 128  $data .= '$osInfo = '.var_export($osInfo, true).";\n\n";
 129  $data .= '$refInfo = '.var_export($refInfo, true).";\n\n";
 130  $data .= '$searchInfo = '.var_export($searchInfo, true).";\n\n";
 131  $data .= '$visitInfo = '.var_export($visitInfo, true).";\n\n";
 132  $data .= '?>';
 133  
 134  
 135  if ($i_handle)
 136  {
 137    ftruncate($i_handle, 0);
 138    fseek( $i_handle, 0 );
 139    fwrite($i_handle, $data);
 140    fclose($i_handle);
 141  }
 142  
 143  
 144  function getBrowser($agent) {
 145      //
 146      // All "root" browsers must come at the end of the list, unfortunately.
 147      // Otherwise, browsers based on them will never be seen.
 148      //(But #1997)
 149      //
 150      $browsers = array(
 151          "netcaptor"    => array('name' => 'Netcaptor',         'rule' => 'netcaptor[ /]([0-9.]{1,10})'),
 152          "opera"        => array('name' => 'Opera',             'rule' => 'opera[ /]([0-9.]{1,10})'),
 153          "aol"          => array('name' => 'AOL',               'rule' => 'aol[ /\-]([0-9.]{1,10})'),
 154          "aol2"         => array('name' => 'AOL',               'rule' => 'aol[ /\-]?browser'),
 155          "mosaic"       => array('name' => 'Mosaic',            'rule' => 'mosaic[ /]([0-9.]{1,10})'),
 156          "k-meleon"     => array('name' => 'K-Meleon',          'rule' => 'K-Meleon[ /]([0-9.]{1,10})'),
 157          "konqueror"    => array('name' => 'Konqueror',         'rule' => 'konqueror/([0-9.]{1,10})'),
 158          "avantbrowser" => array('name' => 'Avant Browser',     'rule' => 'Avant[ ]?Browser'),
 159          "avantgo"      => array('name' => 'AvantGo',           'rule' => 'AvantGo[ /]([0-9.]{1,10})'),
 160          "proxomitron"  => array('name' => 'Proxomitron',       'rule' => 'Space[ ]?Bison/[0-9.]{1,10}'),
 161          "safari"       => array('name' => 'Safari',            'rule' => 'safari/([0-9.]{1,10})'),
 162          "lynx"         => array('name' => 'Lynx',              'rule' => 'lynx/([0-9a-z.]{1,10})'),
 163          "links"        => array('name' => 'Links',             'rule' => 'Links[ /]\(([0-9.]{1,10})'),
 164          "galeon"       => array('name' => 'Galeon',            'rule' => 'galeon/([0-9.]{1,10})'),
 165          "abrowse"      => array('name' => 'ABrowse',           'rule' => 'abrowse/([0-9.]{1,10})'),
 166          "amaya"        => array('name' => 'Amaya',             'rule' => 'amaya/([0-9.]{1,10})'),
 167          "ant"          => array('name' => 'ANTFresco',         'rule' => 'ANTFresco[ /]([0-9.]{1,10})'),
 168          "aweb"         => array('name' => 'Aweb',              'rule' => 'Aweb[/ ]([0-9.]{1,10})'),
 169          "beonex"       => array('name' => 'Beonex',            'rule' => 'beonex/([0-9.]{1,10})'),
 170          "blazer"       => array('name' => 'Blazer',            'rule' => 'Blazer[/ ]([0-9.]{1,10})'),
 171          "camino"       => array('name' => 'Camino',            'rule' => 'camino/([0-9.+]{1,10})'),
 172          "chimera"      => array('name' => 'Chimera',           'rule' => 'chimera/([0-9.+]{1,10})'),
 173          "columbus"     => array('name' => 'Columbus',          'rule' => 'columbus[ /]([0-9.]{1,10})'),
 174          "crazybrowser" => array('name' => 'Crazy Browser',     'rule' => 'Crazy Browser[ /]([0-9.]{1,10})'),
 175          "curl"         => array('name' => 'Curl',              'rule' => 'curl[ /]([0-9.]{1,10})'),
 176          "deepnet"      => array('name' => 'Deepnet Explorer',  'rule' => 'Deepnet Explorer[/ ]([0-9.]{1,10})'),
 177          "dillo"        => array('name' => 'Dillo',             'rule' => 'dillo/([0-9.]{1,10})'),
 178          "doris"        => array('name' => 'Doris',             'rule' => 'Doris/([0-9.]{1,10})'),
 179          "elinks"       => array('name' => 'ELinks',            'rule' => 'ELinks[ /][(]*([0-9.]{1,10})'),
 180          "epiphany"     => array('name' => 'Epiphany',          'rule' => 'Epiphany/([0-9.]{1,10})'),
 181          "ibrowse"      => array('name' => 'IBrowse',           'rule' => 'ibrowse[ /]([0-9.]{1,10})'),
 182          "icab"         => array('name' => 'iCab',              'rule' => 'icab[/ ]([0-9.]{1,10})'),
 183          "ice"          => array('name' => 'ICEbrowser',        'rule' => 'ICEbrowser/v?([0-9._]{1,10})'),
 184          "isilox"       => array('name' => 'iSiloX',            'rule' => 'iSilox/([0-9.]{1,10})'),
 185          "lotus"        => array('name' => 'Lotus Notes',       'rule' => 'Lotus[ -]?Notes[ /]([0-9.]{1,10})'),
 186          "lunascape"    => array('name' => 'Lunascape',         'rule' => 'Lunascape[ /]([0-9.]{1,10})'),
 187          "maxthon"      => array('name' => 'Maxthon',           'rule' => ' Maxthon[);]'),
 188          "mbrowser"     => array('name' => 'mBrowser',          'rule' => 'mBrowser[ /]([0-9.]{1,10})'),
 189          "multibrowser" => array('name' => 'Multi-Browser',     'rule' => 'Multi-Browser[ /]([0-9.]{1,10})'),
 190          "nautilus"     => array('name' => 'Nautilus',          'rule' => '(gnome[ -]?vfs|nautilus)/([0-9.]{1,10})'),
 191          "netfront"     => array('name' => 'NetFront',          'rule' => 'NetFront[ /]([0-9.]{1,10})$'),
 192          "netpositive"  => array('name' => 'NetPositive',       'rule' => 'netpositive[ /]([0-9.]{1,10})'),
 193          "omniweb"      => array('name' => 'OmniWeb',           'rule' => 'omniweb/[ a-z]?([0-9.]{1,10})$'),
 194          "oregano"      => array('name' => 'Oregano',           'rule' => 'Oregano[0-9]?[ /]([0-9.]{1,10})$'),
 195          "phaseout"     => array('name' => 'PhaseOut',          'rule' => 'www.phaseout.net'),
 196          "plink"        => array('name' => 'PLink',             'rule' => 'PLink[ /]([0-9a-z.]{1,10})'),
 197          "phoenix"      => array('name' => 'Phoenix',           'rule' => 'Phoenix/([0-9.+]{1,10})'),
 198          "proxomitron"  => array('name' => 'Proxomitron',       'rule' => 'Space[ ]?Bison/[0-9.]{1,10}'),
 199          "shiira"       => array('name' => 'Shiira',            'rule' => 'Shiira/([0-9.]{1,10})'),
 200          "sleipnir"     => array('name' => 'Sleipnir',          'rule' => 'Sleipnir( Version)?[ /]([0-9.]{1,10})'),
 201          "slimbrowser"  => array('name' => 'SlimBrowser',       'rule' => 'Slimbrowser'),
 202          "staroffice"   => array('name' => 'StarOffice',        'rule' => 'staroffice[ /]([0-9.]{1,10})'),
 203          "sunrise"      => array('name' => 'Sunrise',           'rule' => 'SunriseBrowser[ /]([0-9.]{1,10})'),
 204          "voyager"      => array('name' => 'Voyager',           'rule' => 'voyager[ /]([0-9.]{1,10})'),
 205          "w3m"          => array('name' => 'w3m',               'rule' => 'w3m/([0-9.]{1,10})'),
 206          "webtv"        => array('name' => 'Webtv',             'rule' => 'webtv[ /]([0-9.]{1,10})'),
 207          "xiino"        => array('name' => 'Xiino',             'rule' => '^Xiino[ /]([0-9a-z.]{1,10})'),
 208          "explorer"     => array('name' => 'Internet Explorer', 'rule' => '\(compatible; MSIE[ /]([0-9.]{1,10})'),
 209          "firefox"      => array('name' => 'Firefox',           'rule' => 'Firefox/([0-9.+]{1,10})'),
 210          "netscape"     => array('name' => 'Netscape',          'rule' => 'netscape[0-9]?/([0-9.]{1,10})'),
 211          "netscape2"    => array('name' => 'Netscape',          'rule' => '^mozilla/([0-4]\.[0-9.]{1,10})'),
 212          "mozilla"      => array('name' => 'Mozilla',           'rule' => '^mozilla/[5-9]\.[0-9.]{1,10}.+rv:([0-9a-z.+]{1,10})'),
 213          "mozilla2"     => array('name' => 'Mozilla',           'rule' => '^mozilla/([5-9]\.[0-9a-z.]{1,10})'),
 214          "firebird"     => array('name' => 'Firebird',          'rule' => 'Firebird/([0-9.+]{1,10})'),
 215      );
 216      $browser = "";
 217      foreach($browsers as $info) {
 218          if (preg_match("#".$info['rule']."#i", $agent, $results)) {
 219              return ($info['name']." v".$results[1]);
 220          }
 221      }
 222      return ("Unknown");
 223  }
 224  
 225  function getOs($agent) {
 226      $os = array(
 227          "windowsvista" => array('name' => 'Windows Vista', 'rule' => 'wi(n|ndows)[ \-]?nt[ /]?6\.0'),
 228          "windows2003" => array('name' => 'Windows 2003', 'rule' => 'wi(n|ndows)[ \-]?(2003|nt[ /]?5\.2)'),
 229          "windowsxp"   => array('name' => 'Windows XP',   'rule' => 'Windows XP'),
 230          "windowsxp2"  => array('name' => 'Windows XP',   'rule' => 'wi(n|ndows)[ \-]?nt[ /]?5\.1'),
 231          "windows2k"   => array('name' => 'Windows 2000', 'rule' => 'wi(n|ndows)[ \-]?(2000|nt[ /]?5\.0)'),
 232          "windows95"   => array('name' => 'Windows 95',   'rule' => 'wi(n|ndows)[ \-]?95'),
 233          "windowsce"   => array('name' => 'Windows CE',   'rule' => 'wi(n|ndows)[ \-]?ce'),
 234          "windowsme"   => array('name' => 'Windows ME',   'rule' => 'win 9x 4\.90'),
 235          "windowsme2"  => array('name' => 'Windows ME',   'rule' => 'wi(n|ndows)[ \-]?me'),
 236          "windowsnt"   => array('name' => 'Windows NT',   'rule' => 'wi(n|ndows)[ \-]?nt[ /]?([0-4][0-9.]{1,10})'),
 237          "windowsnt2"  => array('name' => 'Windows NT',   'rule' => 'wi(n|ndows)[ \-]?nt'),
 238          "windows98"   => array('name' => 'Windows 98',   'rule' => 'wi(n|ndows)[ \-]?98'),
 239          "windows"     => array('name' => 'Windows',      'rule' => 'wi(n|n32|ndows)'),
 240          "linux"       => array('name' => 'Linux',        'rule' => 'mdk for ([0-9.]{1,10})'),
 241          "linux2"      => array('name' => 'Linux',        'rule' => 'linux[ /\-]([a-z0-9.]{1,10})'),
 242          "linux3"      => array('name' => 'Linux',        'rule' => 'linux'),
 243          "macosx"      => array('name' => 'MacOS X',      'rule' => 'Mac[ ]?OS[ ]?X'),
 244          "macppc"      => array('name' => 'MacOS PPC',    'rule' => 'Mac(_Power|intosh.+P)PC'),
 245          "mac"         => array('name' => 'MacOS',        'rule' => 'mac[^hk]'),
 246          "amiga"       => array('name' => 'Amiga',        'rule' => 'Amiga[ ]?OS[ /]([0-9.]{1,10})'),
 247          "beos"        => array('name' => 'BeOS',         'rule' => 'beos[ a-z]*([0-9.]{1,10})'),
 248          "freebsd"     => array('name' => 'FreeBSD',      'rule' => 'free[ \-]?bsd[ /]([a-z0-9.]{1,10})'),
 249          "freebsd2"    => array('name' => 'FreeBSD',      'rule' => 'free[ \-]?bsd'),
 250          "irix"        => array('name' => 'Irix',         'rule' => 'irix[0-9]*[ /]([0-9.]{1,10})'),
 251          "netbsd"      => array('name' => 'NetBSD',       'rule' => 'net[ \-]?bsd[ /]([a-z0-9.]{1,10})'),
 252          "netbsd2"     => array('name' => 'NetBSD',       'rule' => 'net[ \-]?bsd'),
 253          "os2"         => array('name' => 'OS/2 Warp',    'rule' => 'warp[ /]?([0-9.]{1,10})'),
 254          "os22"        => array('name' => 'OS/2 Warp',    'rule' => 'os[ /]?2'),
 255          "openbsd"     => array('name' => 'OpenBSD',      'rule' => 'open[ \-]?bsd[ /]([a-z0-9.]{1,10})'),
 256          "openbsd2"    => array('name' => 'OpenBSD',      'rule' => 'open[ \-]?bsd'),
 257          "palm"        => array('name' => 'PalmOS',       'rule' => 'Palm[ \-]?(Source|OS)[ /]?([0-9.]{1,10})'),
 258          "palm2"       => array('name' => 'PalmOS',       'rule' => 'Palm[ \-]?(Source|OS)')
 259      );
 260      foreach($os as $key => $info) {
 261          if (preg_match("#".$info['rule']."#i", $agent, $results)) {
 262              if(strstr($key, "win")) {
 263                  return ($info['name']);
 264              } else {
 265                  return ($info['name']." ".$results[1]);
 266              }
 267          }
 268      }
 269      return ("Unspecified");
 270  }
 271  
 272  ?>


Généré le : Sun Apr 1 01:23:32 2007 par Balluche grâce à PHPXref 0.7