[ Index ] |
|
Code source de e107 0.7.8 |
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 ?>
titre
Description
Corps
titre
Description
Corps
titre
Description
Corps
titre
Corps
Généré le : Sun Apr 1 01:23:32 2007 | par Balluche grâce à PHPXref 0.7 |