%PDF- %PDF-
Direktori : /www/varak.net/paste.varak.net.old/libs/ |
Current File : /www/varak.net/paste.varak.net.old/libs/agent.class.php |
<?php /* * @author Diego Saint Esteben <http://www.taringa.net/perfil/dii3g0> * @file agent.class.php * @version 1.0.0 */ class Agent { /** * Useragent */ private $__user_agent; /** * private property */ private $_isbrowser = FALSE; private $_ismobile = FALSE; private $_isrobot = FALSE; /** * public property */ public $platform = 'Unknown'; public $browser = 'Unknown'; public $mobile = 'Unknown'; public $robot = 'Unknown'; public $version = '0.0.0'; public $user_IP = '0.0.0.0'; /** * array of useragents */ private $_useragents = array('platforms' => array( 'windows nt 4.0' => 'Windows NT 4.0', 'windows nt 5.0' => 'Windows 2000', 'windows nt 5.1' => 'Windows XP', 'windows nt 5.2' => 'Windows 2003', 'windows nt 6.0' => 'Windows Vista/Longhorn', 'windows nt 6.1' => 'Windows 7', 'winnt4.0' => 'Windows NT 4.0', 'winnt 4.0' => 'Windows NT', 'winnt' => 'Windows NT', 'windows 98' => 'Windows 98', 'win98' => 'Windows 98', 'windows 95' => 'Windows 95', 'win95' => 'Windows 95', 'windows' => 'Unknown Windows OS', 'os x' => 'Mac OS X', 'ppc mac' => 'Power PC Mac', 'freebsd' => 'FreeBSD', 'ppc' => 'Macintosh', 'linux' => 'Linux', 'debian' => 'Debian', 'sunos' => 'Sun Solaris', 'beos' => 'BeOS', 'apachebench' => 'ApacheBench', 'aix' => 'AIX', 'irix' => 'Irix', 'osf' => 'DEC OSF', 'hp-ux' => 'HP-UX', 'netbsd' => 'NetBSD', 'bsdi' => 'BSDi', 'openbsd' => 'OpenBSD', 'gnu' => 'GNU/Linux', 'unix' => 'Unknown Unix OS' ), 'browsers' => array( 'opera' => 'Opera', 'msie' => 'Internet Explorer', 'internet explorer' => 'Internet Explorer', 'chrome' => 'Google Chrome', 'firefox' => 'Firefox', 'shiira' => 'Shiira', 'chimera' => 'Chimera', 'phoenix' => 'Phoenix', 'firebird' => 'Firebird', 'camino' => 'Camino', 'netscape' => 'Netscape', 'omniWeb' => 'OmniWeb', 'safari' => 'Safari', 'mozilla' => 'Mozilla', 'konqueror' => 'Konqueror', 'icab' => 'iCab', 'lynx' => 'Lynx', 'links' => 'Links', 'hotjava' => 'HotJava', 'amaya' => 'Amaya', 'ibrowse' => 'IBrowse' ), 'mobiles' => array( 'mobileexplorer' => 'Mobile Explorer', 'openwave' => 'Open Wave', 'opera mini' => 'Opera Mini', 'operamini' => 'Opera Mini', 'elaine' => 'Palm', 'palmsource' => 'Palm', 'digital paths' => 'Palm', 'avantgo' => 'Avantgo', 'xiino' => 'Xiino', 'palmscape' => 'Palmscape', 'motorola' => 'Motorola', 'nokia' => 'Nokia', 'palm' => 'Palm', 'iphone' => 'Apple iPhone', 'ipod' => 'Apple iPod Touch', 'sony' => 'Sony Ericsson', 'ericsson' => 'Sony Ericsson', 'blackberry' => 'BlackBerry', 'cocoon' => 'O2 Cocoon', 'blazer' => 'Treo', 'lg' => 'LG', 'amoi' => 'Amoi', 'xda' => 'XDA', 'mda' => 'MDA', 'vario' => 'Vario', 'htc' => 'HTC', 'samsung' => 'Samsung', 'sharp' => 'Sharp', 'sie-' => 'Siemens', 'alcatel' => 'Alcatel', 'benq' => 'BenQ', 'ipaq' => 'HP iPaq', 'mot-' => 'Motorola', 'playstation portable' => 'PlayStation Portable', 'hiptop' => 'Danger Hiptop', 'nec-' => 'NEC', 'panasonic' => 'Panasonic', 'philips' => 'Philips', 'sagem' => 'Sagem', 'sanyo' => 'Sanyo', 'spv' => 'SPV', 'zte' => 'ZTE', 'sendo' => 'Sendo', 'symbian' => 'Symbian', 'symbianos' => 'SymbianOS', 'elaine' => 'Palm', 'palm' => 'Palm', 'series60' => 'Symbian S60', 'windows ce' => 'Windows CE', 'obigo' => 'Obigo', 'netfront' => 'Netfront Browser', 'openwave' => 'Openwave Browser', 'mobilexplorer' => 'Mobile Explorer', 'operamini' => 'Opera Mini', 'opera mini' => 'Opera Mini', 'digital paths' => 'Digital Paths', 'avantgo' => 'AvantGo', 'xiino' => 'Xiino', 'novarra' => 'Novarra Transcoder', 'vodafone' => 'Vodafone', 'docomo' => 'NTT DoCoMo', 'o2' => 'O2', 'mobile' => 'Generic Mobile', 'wireless' => 'Generic Mobile', 'j2me' => 'Generic Mobile', 'midp' => 'Generic Mobile', 'cldc' => 'Generic Mobile', 'up.link' => 'Generic Mobile', 'up.browser' => 'Generic Mobile', 'smartphone' => 'Generic Mobile', 'cellphone' => 'Generic Mobile' ), 'robots' => array( 'msnbot' => 'MSN Bot', 'googlebot' => 'Google Bot', 'mediapartners-google' => 'Google Adsense', 'inktomi' => 'Yahoo Inktomi Bot', 'slurp' => 'Yahoo Slurp Bot', 'yahoo' => 'Yahoo', 'askjeeves' => 'AskJeeves', 'fastcrawler' => 'FastCrawler', 'infoseek' => 'InfoSeek ; 1.0', 'lycos' => 'Lycos', 'baiduspider' => 'baiduspider bot', 'job crawler' => 'baiduspiderbot', 'analyzer' => 'job crawler bot', 'arachnofilia' => 'arachnofilia bot', 'aspseek' => 'aspseek bot', 'bot' => 'bot', 'check' => 'check bot', 'crawl' => 'crawl bot', 'infoseek' => 'infoseek bot', 'netoskop' => 'netoskop bot', 'netsprint' => 'NetSprint bot', 'openfind' => 'openfind bot', 'roamer' => 'roamer bot', 'rover' => 'rover bot', 'scooter' => 'scooter bot', 'search' => 'search bot', 'siphon' => 'siphon bot', 'spider' => 'spider bot', 'sweep' => 'sweep bot', 'walker' => 'walker bot', 'webstripper' => 'WebStripper bot', 'wisenutbot' => 'wisenutbot bot', 'gulliver' => 'gulliver bot', 'validator' => 'validator bot', 'yandex' => 'yandex bot', 'ask jeeves' => 'ask jeeves bot', 'moget@' => 'moget@ bot', 'teomaagent' => 'teomaagent bot', 'infoNavibot' => 'infoNavibot bot', 'pphpdig' => 'PPhpDig bot', 'gigabaz' => 'gigabaz bot', 'webclipping.com' => 'Webclipping.com bot', 'netmechanic' => 'netmechanic bot', 'rrc' => 'RRC bot' ) ); /** * Contructor */ public function __construct() { $this->__user_agent = $_SERVER['HTTP_USER_AGENT']; foreach(array('_get_platform', '_get_browser', '_get_mobile', '_get_robot', '_get_ip') as $function) { $this->$function(); } } /** * Obtiene la plataforma desde donde se accede * * @access private * @return void */ private function _get_platform() { foreach ($this->_useragents['platforms'] as $key => $val) { if (strpos(strtolower($this->__user_agent), $key) !== FALSE) { $this->platform = $val; break; } } } /** * Obtiene informacion del navegador (Nombre, Version) * * @access private * @return void */ private function _get_browser() { $test = strtolower($this->__user_agent); foreach ($this->_useragents['browsers'] as $key => $val) { if (preg_match(sprintf('/%s.*?([0-9\.]+)/i', preg_quote($key, '/')), $test, $match)) { $this->_isbrowser = TRUE; $this->_isrobot = FALSE; $this->version = $match[1]; $this->browser = $val; break; } } if (empty($this->browser)) $this->browser = preg_replace('/^([\w\s]+(?=\W)).*?$/', '\\1', $test); if (empty($this->version)) { $regex = sprintf('/%s.*?([0-9\.]+)/i', preg_quote($this->browser, '/')); if(preg_match($regex, $test, $match)) $this->version = $match[1]; } } /** * Obtiene informacion del movil * * @access private * @return void */ private function _get_mobile() { foreach ($this->_useragents['mobiles'] as $key => $val) { if (strpos(strtolower($this->__user_agent), $key) !== FALSE) { $this->_ismobile = TRUE; $this->_isrobot = FALSE; $this->_isbrowser = FALSE; $this->mobile = $val; break; } } } /** * Obtiene informacion sobre el robot * * @access private * @return void */ private function _get_robot() { foreach ($this->_useragents['robots'] as $key => $val) { if (strpos(strtolower($this->__user_agent), $key) !== FALSE) { $this->_isbrowser = FALSE; $this->_ismobile = FALSE; $this->_isrobot = TRUE; $this->robot = $val; break; } } } private function _get_ip() { if ( ! empty($_SERVER['HTTP_CLIENT_IP']) ) { $ip = $_SERVER['HTTP_CLIENT_IP']; } elseif ( ! empty($_SERVER['HTTP_X_FORWARDED_FOR']) ) { $ip = $_SERVER['HTTP_X_FORWARDED_FOR']; } else { $ip = $_SERVER['REMOTE_ADDR']; } $this->user_IP = $ip; } /** * ¿Es un Navegador de escritorio? * * @access public * @return bool */ public function isBrowser() { return (bool) $this->_isbrowser; } /** * ¿Es un Movil? * * @access public * @return bool */ public function isMobile() { return (bool) $this->_ismobile; } /** * ¿Es un robot? * * @access public * @return bool */ public function isRobot() { return (bool) $this->_isrobot; } } ?>