Login   Register  
PHP Classes
elePHPant
Icontem

File: user_info.php

Recommend this page to a friend!
Stumble It! Stumble It! Bookmark in del.icio.us Bookmark in del.icio.us
  Classes of Fabrizio Parrella  >  User Info  >  user_info.php  >  Download  
File: user_info.php
Role: Class source
Content type: text/plain
Description: main Class
Class: User Info
Retrieve information of the user browser
Author: By
Last change: fixed some warning messages as well as added more bots
Date: 4 years ago
Size: 41,156 bytes
 

Contents

Class file image Download
<?php
/*
 This class will grab all the possible information about the user/browser/OS
 Using as many info that the browser send to the user
 and Matching them against a list of possible values
 the function get() it will return the whole list of information

 a sample on how to use this class is at the bottom of this clas

 1.0.00: First release
 1.0.01: better way to discover browser
 1.1.00: more browsers added to the list, and modified the function to return if the browser is a crawler or not faster
         added a new beta function that will try to see if the user is on a i386 or amd64 platform
 1.1.01: fixed some warning messages

 TO-DO:
  - add more possible OS and browser: look at this class:
    - http://www.phpclasses.org/browse/file/6481.html
  - allow plugins
*/
class user_info {
	private $info = array();

	public function __construct(){
	}

	public function get(){
		if($this->info == array()){

			$return['request_uri']		= $this->request_page();
			$return['request_method']	= $this->request_method();
			$return['url']				= $this->url();

			$return['user_agent']		= $this->user_agent();
			$return['browser']			= $this->broser('all');
			$return['os']				= $this->os('all');
			$return['bits']				= $this->bits();		//beta
			$return['language']			= $this->language();
			$return['accept']			= $this->accept();
			$return['encoding']			= $this->encoding();
			$return['charset']			= $this->charset();
			$return['IP']				= $this->IP();
			$return['security']			= $this->security();
			$return['is_crawler']		= $this->is_crawler();
			$return['search_phrase']	= $this->search_phrase();
			$return['referer_domain']	= $this->referer_domain();
			//return the Country
//			$return['country'] = phpAds_geoip_getGeo($IP, dirname(__FILE__).'/files_includes/geoip/GeoIP-106_20040501.dat');
			//check if it is crawler
			$this->info = $return;
		}
		return $this->info;
	}
	public function request_page(){
		//return the REQUEST_URI
		return $_SERVER['REQUEST_URI'];
	}
	public function request_method(){
		//return the request method (get,post ...)
		return $_SERVER['REQUEST_METHOD'];
	}
	public function url(){
		//return the actual url(SCRIPT_NAME,QUERY_STRING)
		if(isset($_SERVER['HTTPS'])){
			$return = 'ssl://';
		} else {
			switch($_SERVER['SERVER_PORT']){
				case 80:
				default:
					$return = 'http://';
			}
		}
		$return .= $_SERVER['HTTP_HOST'];
		$return .= $_SERVER['SCRIPT_NAME'];
		if($_SERVER['QUERY_STRING']!=''){
			$return .= '?'.$_SERVER['QUERY_STRING'];
		}
		return $return;
	}
	public function bits(){
		//this is beta
		$return = '';
		$ua = strtolower($this->user_agent());
		if(($pos = strpos($ua,'a64')) !== false || ($pos = strpos($ua,'amd64')) !== false) {
			$return = 'amd64';
		}elseif(($pos = strpos($ua,'i386')) !== false) {
			$return = 'i386';
		}elseif(($pos = strpos($ua,'i486')) !== false) {
			$return = 'i486';
		}elseif(($pos = strpos($ua,'i586')) !== false) {
			$return = 'i586';
		}elseif(($pos = strpos($ua,'i686')) !== false) {
			$return = 'i686';
		}else{
			//is this the right assumption?
			$return = 'i386';
		}
		return $return;
	}
	public function user_agent(){
		//return the user agent
		return isset($_SERVER['HTTP_USER_AGENT'])?$_SERVER['HTTP_USER_AGENT']:'';
	}
	public function security(){
		$return = 'unknown';
		$ua = $this->user_agent();
		if(($pos = strpos($ua,' N;')) !== false) {
			$return = 'no';
		}elseif(($pos = strpos($ua,' U;')) !== false) {
			$return = 'strong';
		}elseif(($pos = strpos($ua,' I;')) !== false) {
			$return = 'weak';
		}
		return $return;
	}
	public function browser($what=''){
		//return the Browser
		$ua				= strtolower($this->user_agent());
		$browser		= 'Not Detected';
		$version		= '';
		$is_crawler		= false;

		$browsers['alexa']				= array('name'=>'Alexa (IA Archive)','is_crawler'=>true, 'get_version'=>true);
		$browsers['ia_archiver']		= array('name'=>'Alexa (IA Archive)','is_crawler'=>true, 'get_version'=>true);
		$browsers['acorn Browse']		= array('name'=>'Acorn Browse','is_crawler'=>false, 'get_version'=>true);
		$browsers['amaya']				= array('name'=>'Amaya','is_crawler'=>false, 'get_version'=>true);
		$browsers['almaden']			= array('name'=>'IBM Almaden Crawler','is_crawler'=>true, 'get_version'=>true);
		$browsers['amigavoyager']		= array('name'=>'Amiga Voyager','is_crawler'=>false, 'get_version'=>true);
		$browsers['amigaweb']			= array('name'=>'aweb','is_crawler'=>false, 'get_version'=>true);
		$browsers['archive']			= array('name'=>'generic (archive)','is_crawler'=>true, 'get_version'=>true);
		$browsers['askjeeves']			= array('name'=>'Ask Jeeves','is_crawler'=>true, 'get_version'=>true);
		$browsers['avant browser']		= array('name'=>'Avant Browser','is_crawler'=>false, 'get_version'=>true);
		$browsers['aweb']				= array('name'=>'aweb','is_crawler'=>false, 'get_version'=>true);

		$browsers['beonex']				= array('name'=>'Beonex','is_crawler'=>false, 'get_version'=>true);
		$browsers['becomebot']			= array('name'=>'BecomeBot','is_crawler'=>true, 'get_version'=>true);
		$browsers['bluefish']			= array('name'=>'Bluefish','is_crawler'=>false, 'get_version'=>true);
		$browsers['bot']				= array('name'=>'generic (bot)','is_crawler'=>true, 'get_version'=>false);
		$browsers['browsex']			= array('name'=>'BrowseX','is_crawler'=>false, 'get_version'=>true);

		$browsers['camino']				= array('name'=>'Camino','is_crawler'=>false, 'get_version'=>true);
		$browsers['charon']				= array('name'=>'Charon','is_crawler'=>false, 'get_version'=>true);
		$browsers['check&get']			= array('name'=>'Check&Get','is_crawler'=>true, 'get_version'=>true);
		$browsers['chimera']			= array('name'=>'Chimera','is_crawler'=>false, 'get_version'=>true);
		$browsers['chrome']				= array('name'=>'Chrome','is_crawler'=>false, 'get_version'=>true);
		$browsers['converacrawler']		= array('name'=>'ConveraCrawler','is_crawler'=>true, 'get_version'=>true);
		$browsers['contiki']			= array('name'=>'Contiki','is_crawler'=>true, 'get_version'=>true);
		$browsers['crawl']				= array('name'=>'generic (crawl)','is_crawler'=>true, 'get_version'=>false);
		$browsers['curl']				= array('name'=>'cURL','is_crawler'=>false, 'get_version'=>true);
		$browsers['cyberdog']			= array('name'=>'CyberDog','is_crawler'=>false, 'get_version'=>true);

		$browsers['democracy']			= array('name'=>'Democracy','is_crawler'=>false, 'get_version'=>true);
		$browsers['desktop/1x']			= array('name'=>'Lycoris Desktop/LX','is_crawler'=>false, 'get_version'=>true);
		$browsers['dillo']				= array('name'=>'Dillo','is_crawler'=>false, 'get_version'=>true);
		$browsers['doczilla']			= array('name'=>'DocZilla','is_crawler'=>false, 'get_version'=>true);
		$browsers['doris']				= array('name'=>'Doris','is_crawler'=>false, 'get_version'=>true);

		$browsers['echo!']				= array('name'=>'Echo!','is_crawler'=>true, 'get_version'=>false);
		$browsers['edbrowse']			= array('name'=>'edbrowse','is_crawler'=>true, 'get_version'=>true);
		$browsers['edintorni']			= array('name'=>'EDintorni','is_crawler'=>true, 'get_version'=>true);
		$browsers['elinks']				= array('name'=>'ELinks','is_crawler'=>false, 'get_version'=>true);
		$browsers['emacs']				= array('name'=>'EMacs','is_crawler'=>false, 'get_version'=>true);
		$browsers['epiphany']			= array('name'=>'Epiphany','is_crawler'=>false, 'get_version'=>true);

		$browsers['fast webcrawler']	= array('name'=>'Fast Webcrawler','is_crawler'=>true, 'get_version'=>true);
		$browsers['feedfetcher']		= array('name'=>'Feedfetcher-Google','is_crawler'=>true, 'get_version'=>true);
		$browsers['fetch']				= array('name'=>'generic (fetch)','is_crawler'=>true, 'get_version'=>false);
		$browsers['firebird']			= array('name'=>'Mozilla Firebird','is_crawler'=>false, 'get_version'=>true);
		$browsers['findLinks']			= array('name'=>'FindLinks','is_crawler'=>true, 'get_version'=>true);
		$browsers['flock']				= array('name'=>'Flock','is_crawler'=>false, 'get_version'=>true);
		$browsers['frontpage']			= array('name'=>'Microsoft Frontpage','is_crawler'=>false, 'get_version'=>true);

		$browsers['galeon']				= array('name'=>'Galeon','is_crawler'=>false, 'get_version'=>true);
		$browsers['gaisbot']			= array('name'=>'GaisBot','is_crawler'=>true, 'get_version'=>true);
		$browsers['gigabot']			= array('name'=>'GigaBot','is_crawler'=>true, 'get_version'=>true);
		$browsers['girafaBot']			= array('name'=>'GirafaBot','is_crawler'=>true, 'get_version'=>true);
		$browsers['gnuzilla']			= array('name'=>'Gnuzilla','is_crawler'=>false, 'get_version'=>true);
		$browsers['googlebot-image']	= array('name'=>'Google Image','is_crawler'=>true, 'get_version'=>true);
		$browsers['googlebot']			= array('name'=>'Google','is_crawler'=>true, 'get_version'=>true);
		$browsers['grab']				= array('name'=>'generic (grab)','is_crawler'=>true, 'get_version'=>false);
		$browsers['greenbrowser']		= array('name'=>'GreenBrowser','is_crawler'=>false, 'get_version'=>true);
		$browsers['grub-client']		= array('name'=>'Grub Client','is_crawler'=>true, 'get_version'=>true);

		$browsers['htmlparser']			= array('name'=>'HTMLParser','is_crawler'=>true, 'get_version'=>true);
		$browsers['holmes']				= array('name'=>'Holmes','is_crawler'=>true, 'get_version'=>true);
		$browsers['hotjava']			= array('name'=>'HotJava','is_crawler'=>false, 'get_version'=>true);
		$browsers['hp web printsmart']	= array('name'=>'HP Web PrintSmart','is_crawler'=>false, 'get_version'=>true);
		$browsers['httpclient']			= array('name'=>'HTTPClient','is_crawler'=>false, 'get_version'=>true);

		$browsers['ibm web browser']	= array('name'=>'IBM Web Browser','is_crawler'=>false, 'get_version'=>true);
		$browsers['ibrowse']			= array('name'=>'IBrowse','is_crawler'=>false, 'get_version'=>true);
		$browsers['icab']				= array('name'=>'ICab','is_crawler'=>false, 'get_version'=>true);
		$browsers['ice']				= array('name'=>'ICE','is_crawler'=>false, 'get_version'=>true);
		$browsers['iconsurf']			= array('name'=>'IconSurf','is_crawler'=>true, 'get_version'=>true);
		$browsers['ichiro']				= array('name'=>'Ichiro','is_crawler'=>true, 'get_version'=>true);
		$browsers['innerprisebot']		= array('name'=>'Innerprise','is_crawler'=>true, 'get_version'=>true);
		$browsers['ipd']				= array('name'=>'AlertSite','is_crawler'=>true, 'get_version'=>false);

		$browsers['kazehakase']			= array('name'=>'Kazehakase','is_crawler'=>false, 'get_version'=>true);
		$browsers['kkman']				= array('name'=>'Kkman','is_crawler'=>false, 'get_version'=>true);
		$browsers['k-meleon']			= array('name'=>'K-Meleon','is_crawler'=>false, 'get_version'=>true);
		$browsers['konqueror']			= array('name'=>'Konqueror','is_crawler'=>false, 'get_version'=>true);

		$browsers['liberate']			= array('name'=>'Liberate','is_crawler'=>false, 'get_version'=>true);
		$browsers['links']				= array('name'=>'Links','is_crawler'=>false, 'get_version'=>true);
		$browsers['link-checker-pro']	= array('name'=>'Link Checker Pro','is_crawler'=>true, 'get_version'=>true);
		$browsers['link checker pro']	= array('name'=>'Link Checker Pro','is_crawler'=>true, 'get_version'=>true);
		$browsers['linkwalker']			= array('name'=>'LinkWalker','is_crawler'=>true, 'get_version'=>true);
		$browsers['lobo']				= array('name'=>'Lobo','is_crawler'=>false, 'get_version'=>true);
		$browsers['lynx']				= array('name'=>'Lynx','is_crawler'=>false, 'get_version'=>true);

		$browsers['maxthon']			= array('name'=>'Maxthon','is_crawler'=>false, 'get_version'=>true);
		$browsers['mediapartner']		= array('name'=>'MediaPartner','is_crawler'=>true, 'get_version'=>true);
		$browsers['midori']				= array('name'=>'Midori','is_crawler'=>false, 'get_version'=>true);
		$browsers['mirago']				= array('name'=>'Mirago','is_crawler'=>true, 'get_version'=>true);
		$browsers['moget']				= array('name'=>'Moget','is_crawler'=>true, 'get_version'=>true);
		$browsers['mosaic']				= array('name'=>'Mosaic','is_crawler'=>false, 'get_version'=>true);
		$browsers['mothra']				= array('name'=>'Mothra','is_crawler'=>false, 'get_version'=>true);
		$browsers['msnbot']				= array('name'=>'MSNBot','is_crawler'=>true, 'get_version'=>true);
		$browsers['mj12bot']			= array('name'=>'MJ12Bot','is_crawler'=>true, 'get_version'=>true);

		$browsers['naverbot']			= array('name'=>'NaverBot','is_crawler'=>true, 'get_version'=>true);
		$browsers['netbox']				= array('name'=>'NetBox','is_crawler'=>false, 'get_version'=>true);
		$browsers['netcaptor']			= array('name'=>'NetCaptor','is_crawler'=>false, 'get_version'=>true);
		$browsers['netcraft']			= array('name'=>'NetCraft','is_crawler'=>true, 'get_version'=>true);
		$browsers['netpliance']			= array('name'=>'Netpliance','is_crawler'=>false, 'get_version'=>true);
		$browsers['netpositive']		= array('name'=>'NetPositice','is_crawler'=>false, 'get_version'=>true);
		$browsers['netsurf']			= array('name'=>'Netsurf','is_crawler'=>false, 'get_version'=>true);
		$browsers['newsgator']			= array('name'=>'NewsGator','is_crawler'=>true, 'get_version'=>true);
		$browsers['nomad']				= array('name'=>'Nomad','is_crawler'=>true, 'get_version'=>true);
		$browsers['ng']					= array('name'=>'Exabot NG','is_crawler'=>true, 'get_version'=>false);
		$browsers['nextgensearchbot']	= array('name'=>'NextGenSearchBot','is_crawler'=>true, 'get_version'=>true);

		$browsers['offbyone']			= array('name'=>'OffByOne','is_crawler'=>false, 'get_version'=>true);
		$browsers['omniweb']			= array('name'=>'omniweb','is_crawler'=>false, 'get_version'=>true);
		$browsers['opera']				= array('name'=>'Opera','is_crawler'=>false, 'get_version'=>true);
		$browsers['oracle']				= array('name'=>'Oracle PowerBrowser','is_crawler'=>false, 'get_version'=>true);
		$browsers['oregano']			= array('name'=>'Oregano','is_crawler'=>false, 'get_version'=>true);
		$browsers['oxygen']				= array('name'=>'Oxygen','is_crawler'=>false, 'get_version'=>true);

		$browsers['poodle predictor']	= array('name'=>'Poodle Predictor','is_crawler'=>true, 'get_version'=>true);
		$browsers['phoenix']			= array('name'=>'Phoenix','is_crawler'=>false, 'get_version'=>true);
		$browsers['planetweb']			= array('name'=>'PlanetWeb','is_crawler'=>false, 'get_version'=>true);
		$browsers['prodigy']			= array('name'=>'Prodigy','is_crawler'=>false, 'get_version'=>true);
		$browsers['powertv']			= array('name'=>'PowerTV','is_crawler'=>false, 'get_version'=>true);
		$browsers['psbot']				= array('name'=>'PSBot','is_crawler'=>true, 'get_version'=>true);

		$browsers['quicktime']			= array('name'=>'QuickTime','is_crawler'=>false, 'get_version'=>true);
		$browsers['qtver']				= array('name'=>'QuickTime','is_crawler'=>false, 'get_version'=>true);

		$browsers['retawq']				= array('name'=>'Retawq','is_crawler'=>false, 'get_version'=>true);
		$browsers['robot']				= array('name'=>'generic (robot)','is_crawler'=>true, 'get_version'=>false);

		$browsers['science traveller international 1x']				= array('name'=>'Science Traveller International 1X','is_crawler'=>false, 'get_version'=>false);
		$browsers['sbider']				= array('name'=>'SiteSell','is_crawler'=>true, 'get_version'=>true);
		$browsers['scooter']			= array('name'=>'Scooter','is_crawler'=>true, 'get_version'=>true);
		$browsers['seekbot']			= array('name'=>'generic (seekbot)','is_crawler'=>true, 'get_version'=>false);
		$browsers['seamonkey']			= array('name'=>'SeaMonkey','is_crawler'=>false, 'get_version'=>true);
		$browsers['seeker']				= array('name'=>'generic (seeker)','is_crawler'=>true, 'get_version'=>false);
		$browsers['sextatnt']			= array('name'=>'Tango','is_crawler'=>false, 'get_version'=>true);
		$browsers['sharpReader']		= array('name'=>'SharpReader','is_crawler'=>false, 'get_version'=>true);
		$browsers['shiira']				= array('name'=>'Shiira','is_crawler'=>false, 'get_version'=>true);
		$browsers['sis']				= array('name'=>'Spectrum Internet Suite','is_crawler'=>false, 'get_version'=>false);
		$browsers['slurp']				= array('name'=>'Yahoo! Slurp','is_crawler'=>true, 'get_version'=>true);
		$browsers['songbird']			= array('name'=>'Songbird','is_crawler'=>false, 'get_version'=>true);
		$browsers['spider']				= array('name'=>'generic (spider)','is_crawler'=>true, 'get_version'=>false);
		$browsers['survey']				= array('name'=>'generic (survey)','is_crawler'=>true, 'get_version'=>false);
		$browsers['sylera']				= array('name'=>'Sylera','is_crawler'=>false, 'get_version'=>true);
		$browsers['sqworm']				= array('name'=>'SqWorm','is_crawler'=>true, 'get_version'=>true);

		$browsers['surveyBot']			= array('name'=>'SurveyBot - Whois Source','is_crawler'=>true, 'get_version'=>true);

		$browsers['topicspy']			= array('name'=>'Topicspy Checkbot','is_crawler'=>true, 'get_version'=>true);
		$browsers['tutorgigbot']		= array('name'=>'TutorGigBot','is_crawler'=>true, 'get_version'=>true);
		$browsers['turnitinbot']		= array('name'=>'TurnitinBot','is_crawler'=>true, 'get_version'=>true);
		$browsers['t-h-u-n-d-e-r-s-t-o-n-e']		= array('name'=>'T-H-U-N-D-E-R-S-T-O-N-E','is_crawler'=>true, 'get_version'=>false);

		$browsers['up.browser']			= array('name'=>'UP Browser','is_crawler'=>false, 'get_version'=>true);

		$browsers['validator']			= array('name'=>'generic (validator)','is_crawler'=>true, 'get_version'=>false);
		$browsers['voyager']			= array('name'=>'Voyager','is_crawler'=>false, 'get_version'=>true);

		$browsers['w3c-checklink']		= array('name'=>'W3C Checklink','is_crawler'=>true, 'get_version'=>true);
		$browsers['w3c_validator']		= array('name'=>'W3C Validator','is_crawler'=>true, 'get_version'=>true);
		$browsers['w3clinemode']		= array('name'=>'W3C Line Mode','is_crawler'=>false, 'get_version'=>true);
		$browsers['w3m']				= array('name'=>'W3M','is_crawler'=>false, 'get_version'=>true);
		$browsers['walhello']			= array('name'=>'WalHello','is_crawler'=>true, 'get_version'=>true);
		$browsers['webcapture']			= array('name'=>'WebCapture','is_crawler'=>false, 'get_version'=>true);
		$browsers['webexplorer']		= array('name'=>'WebExplorer','is_crawler'=>false, 'get_version'=>true);
		$browsers['webtv']				= array('name'=>'WebTV','is_crawler'=>false, 'get_version'=>true);
		$browsers['wget']				= array('name'=>'WGet','is_crawler'=>false, 'get_version'=>true);

		$browsers['xenu link sleuth']	= array('name'=>'Xenu\'s Link Analyser','is_crawler'=>true, 'get_version'=>true);
		$browsers['xchaos_arachne']		= array('name'=>'Arachne','is_crawler'=>true, 'get_version'=>true);

		$browsers['yandex']				= array('name'=>'Yandex','is_crawler'=>true, 'get_version'=>true);

		$browsers['zyborg']				= array('name'=>'ZyBorg','is_crawler'=>true, 'get_version'=>true);
		$browsers['zoe indexer']		= array('name'=>'Zoe Indexer','is_crawler'=>true, 'get_version'=>true);

		//those needs to be at the end, as many browser are based on those and they would be recognisex wrongly
		$browsers['aol']				= array('name'=>'AOL','is_crawler'=>false, 'get_version'=>true);
		$browsers['bison']				= array('name'=>'Bison','is_crawler'=>false, 'get_version'=>true);
		$browsers['firefox']			= array('name'=>'Mozilla Firefox','is_crawler'=>false, 'get_version'=>true);
		$browsers['iexplorer']			= array('name'=>'Internet Explorer','is_crawler'=>false, 'get_version'=>true);
		$browsers['mozilla']			= array('name'=>'Mozilla','is_crawler'=>false, 'get_version'=>true);
		$browsers['msie']				= array('name'=>'Internet Explorer','is_crawler'=>false, 'get_version'=>true);
		$browsers['netscape']			= array('name'=>'Netscape Navigator','is_crawler'=>false, 'get_version'=>true);
		$browsers['safari']				= array('name'=>'safari','is_crawler'=>false, 'get_version'=>true);

		foreach($browsers as $k=>$v){
			$k = strtolower($k);
			if(($pos = strpos($ua,$k)) !== false) {
				$browser	= $v['name'];
				$is_crawler	= $v['is_crawler'];
				$pos		+= strlen($k)+1;
				$endPos		= @strpos($ua,' ',$pos);
				$endPos		= ($endPos===false) ? strlen($ua) : $endPos-$pos;
				$version	= substr($ua,$pos,$endPos);
				break;
			}
		}

		switch($what){
			case 'all':
				$return['browser']		= $browser.' v.'.$version;
				$return['name']			= $browser;
				$return['version']		= $version;
				$return['is_crawler']	= $is_crawler;
				break;
			case 'name':
				$return					= $browser;
				break;
			case 'is_crawler':
				$return					= $is_crawler;
				break;
			case 'version':
				$return					= $version;
				break;
			default:
				$return					= $browser.' v.'.$version;
				break;
		}
		return $return;
	}

	public function os($what=''){
		//return the OS
		$os = array();
		//amiga
		$os['amiga'] 		= array('name'=>'amiga','version'=>'');
		//commodore
		$os['Commodore 64'] 		= array('name'=>'Commodore','version'=>'64');
		$os['Commodore 128'] 		= array('name'=>'Commodore','version'=>'128');
		//dreamcast
		$os['dreamcast']	= array('name'=>'sega dreamcast','version'=>'');
		//googlebot
		$os['googlebot']	= array('name'=>'googlebot','version'=>'');
		//freebsd
		$os['freebsd']		= array('name'=>'freebsd','version'=>'');
		$os['freebsd amd64']= array('name'=>'freebsd','version'=>'amd64');
		$os['freebsd a64']	= array('name'=>'freebsd','version'=>'amd64');
		$os['freebsd i686']	= array('name'=>'freebsd','version'=>'i686');
		$os['freebsd i586']	= array('name'=>'freebsd','version'=>'i586');
		$os['freebsd i486']	= array('name'=>'freebsd','version'=>'i486');
		$os['freebsd i386']	= array('name'=>'freebsd','version'=>'i386');
		$os['freebsd 5']	= array('name'=>'freebsd','version'=>'5.x');
		$os['freebsd 6']	= array('name'=>'freebsd','version'=>'6.x');
		$os['freebsd 7']	= array('name'=>'freebsd','version'=>'7.x');
		//hp-ux
		$os['hp-ux']		= array('name'=>'hp-ux','version'=>'');
		$os['hpux']			= array('name'=>'hp-ux','version'=>'');
		//htmlparser
		$os['htmlparser']	= array('name'=>'htmlparser','version'=>'');
		//irix
		$os['irix'] 		= array('name'=>'irix','version'=>'');
		//liberate
		$os['liberate']		= array('name'=>'liberate','version'=>'');
		//lindows
		$os['lindows']		= array('name'=>'lindows os','version'=>'');
		//linux
		$os['linux']		= array('name'=>'linux','version'=>'');
		$os['linux i686']	= array('name'=>'linux','version'=>'i686');
		$os['linux i586']	= array('name'=>'linux','version'=>'i586');
		$os['linux i486']	= array('name'=>'linux','version'=>'i486');
		$os['linux i386']	= array('name'=>'linux','version'=>'i386');
		$os['linux ppc']	= array('name'=>'linux','version'=>'ppc');
		//mac
		$os['mac']			= array('name'=>'macintosh','version'=>'');
		$os['Mac OS X']		= array('name'=>'macintosh','version'=>'OS X');
		$os['Mac OS X 10_4']		= array('name'=>'macintosh','version'=>'OS X 10.4.x (Tiger)');
		$os['Mac OS X 10_5']		= array('name'=>'macintosh','version'=>'OS X 10.5.x (Leopard)');
		$os['Mac OS X 10_5_2']		= array('name'=>'macintosh','version'=>'OS X 10.5.2 (Leopard)');
		$os['Mac OS X 10_5_3']		= array('name'=>'macintosh','version'=>'OS X 10.5.3 (Leopard)');
		$os['Mac 10']		= array('name'=>'macintosh','version'=>'OS X');
		$os['PowerPC']		= array('name'=>'macintosh','version'=>'PPC');
		$os['PPC']			= array('name'=>'macintosh','version'=>'PPC');
		$os['68000']		= array('name'=>'macintosh','version'=>'68K');
		$os['68k']			= array('name'=>'macintosh','version'=>'68K');
		//netbsd
		$os['netbsd']		= array('name'=>'netbsd','version'=>'');
		$os['netbsd amd64']	= array('name'=>'netbsd','version'=>'amd64');
		$os['netbsd a64']	= array('name'=>'netbsd','version'=>'amd64');
		$os['netbsd i686']	= array('name'=>'netbsd','version'=>'i686');
		$os['netbsd i586']	= array('name'=>'netbsd','version'=>'i586');
		$os['netbsd i486']	= array('name'=>'netbsd','version'=>'i486');
		$os['netbsd i386']	= array('name'=>'netbsd','version'=>'i386');
		//netcraft
		$os['netcraft']		= array('name'=>'netcraft','version'=>'');
		//os/2
		$os['os/2']			= array('name'=>'os/2','version'=>'');
		$os['os2']			= array('name'=>'os/2','version'=>'');
		$os['Warp 4']		= array('name'=>'os/2','version'=>'Warp 4');
		$os['Warp 4.5']		= array('name'=>'os/2','version'=>'Warp 4.5');
		//osf1
		$os['osf1']			= array('name'=>'osf1','version'=>'');
		//openbsd
		$os['openbsd']		= array('name'=>'openbsd','version'=>'');
		$os['openbsd amd64']= array('name'=>'openbsd','version'=>'amd64');
		$os['openbsd a64']	= array('name'=>'openbsd','version'=>'amd64');
		$os['openbsd i686']	= array('name'=>'openbsd','version'=>'i686');
		$os['openbsd i586']	= array('name'=>'openbsd','version'=>'i586');
		$os['openbsd i486']	= array('name'=>'openbsd','version'=>'i486');
		$os['openbsd i386']	= array('name'=>'openbsd','version'=>'i386');
		//palm
		$os['palm']			= array('name'=>'palm','version'=>'');
		//PC-BSD
		$os['pcbsd 7']		= array('name'=>'pcbsd','version'=>'7');
		//power tv
		$os['powertv']		= array('name'=>'powertv','version'=>'');
		//prodigy
		$os['prodigy']		= array('name'=>'prodigy','version'=>'');
		//qnx
		$os['qnx']			= array('name'=>'qnx','version'=>'');
		$os['photon']		= array('name'=>'qnx','version'=>'photon');
		//siemens
		$os['sie-cx35']		= array('name'=>'Siemens CX35','version'=>'');
		//symbian
		$os['symbian']		= array('name'=>'symbian','version'=>'');
		$os['symbian/6.1']	= array('name'=>'symbian','version'=>'6.1');
		//sunos
		$os['sunos']		= array('name'=>'sunos','version'=>'');
		//Whois Source
		$os['surveybot']	= array('name'=>'Whois Source','version'=>'');
		//unix
		$os['unix']			= array('name'=>'unix','version'=>'');
		//Yahoo! Slurp
		$os['yahoo']		= array('name'=>'yahoo','version'=>'');
		$os['yahoo! slurp']	= array('name'=>'yahoo slurp','version'=>'');
		//web tv
		$os['web tv']		= array('name'=>'web tv','version'=>'');
		$os['webtv']		= array('name'=>'web tv','version'=>'');
		//windows
		$os['win'] 				= array('name'=>'windows','version'=>'');
		$os['windows nt']		= array('name'=>'windows','version'=>'nt');
		$os['winnt']			= array('name'=>'windows','version'=>'nt');
		$os['win3.11']			= array('name'=>'windows','version'=>'3.11');
		$os['win3.1']			= array('name'=>'windows','version'=>'3.1');
		$os['windows 95']		= array('name'=>'windows','version'=>'95');
		$os['win95']			= array('name'=>'windows','version'=>'95');
		$os['windows 98']		= array('name'=>'windows','version'=>'98');
		$os['win98']			= array('name'=>'windows','version'=>'98');
		$os['windows me']		= array('name'=>'windows','version'=>'me');
		$os['win 9x 4.90']		= array('name'=>'windows','version'=>'me');
		$os['windows nt 5.0']	= array('name'=>'windows','version'=>'2000');
		$os['winnt5.0'] 		= array('name'=>'windows','version'=>'2000');
		$os['windows 2000']		= array('name'=>'windows','version'=>'2000');
		$os['win2000']			= array('name'=>'windows','version'=>'2000');
		$os['windows nt 5.1']	= array('name'=>'windows','version'=>'xp');
		$os['winnt5.1']			= array('name'=>'windows','version'=>'xp');
		$os['windows xp']		= array('name'=>'windows','version'=>'xp');
		$os['winxp']			= array('name'=>'windows','version'=>'xp');
		$os['windows nt 5.2']	= array('name'=>'windows','version'=>'.net 2003');
		$os['winnt5.2']			= array('name'=>'windows','version'=>'.net 2003');
		$os['windows nt 6']		= array('name'=>'windows','version'=>'Codename: Longhorn');
		$os['winnt6']			= array('name'=>'windows','version'=>'Codename: Longhorn');
		$os['windows ce']		= array('name'=>'windows','version'=>'ce');


		$ua = strtolower($this->user_agent());
		$name = 'Not Detected';
		$version = '';
		if($ua!=''){
			foreach($os as $k=>$v){
				$k = strtolower($k);
				if(eregi($k, $ua)!==false){
					$name = $v['name'];
					$version = $v['version'];
					break;
				}
			}
		}
		switch($what){
			case 'all':
				$return['os'] = $name.' v.'.$version;
				$return['name'] = $name;
				$return['version'] = $version;
				break;
			case 'name':
				$return		= $name;
				break;
			case 'version':
				$return	= $version;
				break;
			default:
				$return	= $name.' '.$version;
				break;
		}
		return $return;
	}

	public function language(){
		//return the Accepted Languages
		if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE']) && !empty($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
			$lArr=explode(',',$_SERVER['HTTP_ACCEPT_LANGUAGE']);
			foreach($lArr as $k => $v) {
				$vArr=explode(';',$v);
				$vArr[1]=(!empty($vArr[1])) ? str_replace('q=','',$vArr[1]) : '1.0';
				$tmplCArr[$vArr[0]]=$vArr[1];
			}
			foreach($tmplCArr as $lC=>$qV) {
				$lC = strtolower(trim($lC));
				$langArr[]=array('code'=>$lC,'name'=>$this->_lang_details($lC),'QValue'=>$qV);
			}
		} else {
			$langArr[]=array('code'=>'*','name'=>'all languages are equally acceptable','QValue'=>'1.0');
		}
		return $langArr;
	}

	public function accept(){
		//return the Accepted Charset
		if(isset($_SERVER['HTTP_ACCEPT']) && !empty($_SERVER['HTTP_ACCEPT'])) {
			$cArr=explode(',',$_SERVER['HTTP_ACCEPT']);
			foreach($cArr as $k => $v) {
				$vArr=explode(';',$v);
				$vArr[1]=(!empty($vArr[1])) ? str_replace('q=','',$vArr[1]) : 1.0;
				$Arr[]=array('code'=>$vArr[0],'QValue'=>$vArr[1]);
			}
		} else {
			$Arr[]=array('code'=>'','QValue'=>1.0);
		}
		return $Arr;
	}
	public function encoding(){
		//return the Accepted Encoding
		if(isset($_SERVER['HTTP_ACCEPT_ENCODING']) && !empty($_SERVER['HTTP_ACCEPT_ENCODING'])) {
			$eArr=explode(',',$_SERVER['HTTP_ACCEPT_ENCODING']);
			foreach($eArr as $k => $v) {
				$vArr=explode(';',$v);
				$vArr[1]=(!empty($vArr[1])) ? str_replace('q=','',$vArr[1]) : 1.0;
				$Arr[]=array('code'=>$vArr[0],'QValue'=>$vArr[1]);
			}
		} else {
			$Arr[]=array('code'=>'','QValue'=>1.0);
		}
		return $Arr;
	}
	public function charset(){
		//return the Accepted Charset
		if(isset($_SERVER['HTTP_ACCEPT_CHARSET']) && !empty($_SERVER['HTTP_ACCEPT_CHARSET'])) {
			$cArr=explode(',',$_SERVER['HTTP_ACCEPT_CHARSET']);
			foreach($cArr as $k => $v) {
				$vArr=explode(';',$v);
				$vArr[1]=(!empty($vArr[1])) ? str_replace('q=','',$vArr[1]) : 1.0;
				$Arr[]=array('code'=>$vArr[0],'QValue'=>$vArr[1]);
			}
		} else {
			$Arr[]=array('code'=>'','QValue'=>1.0);
		}
		return $Arr;
	}
	public function IP(){
		$tmp = array();
		if  (isset($_SERVER['HTTP_X_FORWARDED_FOR']) && strpos($_SERVER['HTTP_X_FORWARDED_FOR'],',')) {
		   $tmp += explode(',',$_SERVER['HTTP_X_FORWARDED_FOR']);
		} elseif (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
		   $tmp[] = trim($_SERVER['HTTP_X_FORWARDED_FOR']);
		}elseif(isset($_SERVER['HTTP_CLIENT_IP'])) {
		   $tmp[] = trim($_SERVER['HTTP_CLIENT_IP']);
		}
		$tmp[] = trim($_SERVER['REMOTE_ADDR']);
		return trim(str_replace('unknown','',strtolower(implode("\n",$tmp))));
	}
	private function _lang_details($lang){
		$langCode['af']		= 'Afrikaans';
		$langCode['sq']		= 'Albanian';
		$langCode['ar']		= 'Arabic';
		$langCode['ar-ar']	= 'Arabic (Standard)';
		$langCode['ar-dz']	= 'Arabic (Algeria)';
		$langCode['ar-bh']	= 'Arabic (Bahrain)';
		$langCode['ar-eg']	= 'Arabic (Egypt)';
		$langCode['ar-iq']	= 'Arabic (Iraq)';
		$langCode['ar-jo']	= 'Arabic (Jordan)';
		$langCode['ar-kw']	= 'Arabic (Kuwait)';
		$langCode['ar-lb']	= 'Arabic (Lebanon)';
		$langCode['ar-ly']	= 'Arabic (Libya)';
		$langCode['ar-ma']	= 'Arabic (Morocco)';
		$langCode['ar-om']	= 'Arabic (Oman)';
		$langCode['ar-qa']	= 'Arabic (Qatar)';
		$langCode['ar-sa']	= 'Arabic (Saudi Arabia)';
		$langCode['ar-sy']	= 'Arabic (Syria)';
		$langCode['ar-tn']	= 'Arabic (Tunisia)';
		$langCode['ar-ae']	= 'Arabic (U.A.E.)';
		$langCode['ar-ye']	= 'Arabic (Yemen)';
		$langCode['eu']		= 'Basque';
		$langCode['be']		= 'Belarusian';
		$langCode['bg']		= 'Bulgarian';
		$langCode['ca']		= 'Catalan';
		$langCode['zh-hk']	= 'Chinese (Hong Kong SAR)';
		$langCode['zh-cn']	= 'Chinese (PRC)';
		$langCode['zh-sg']	= 'Chinese (Singapore)';
		$langCode['zh-tw']	= 'Chinese (Taiwan)';
		$langCode['zh-mo']	= 'Chinese (Macao)';
		$langCode['hr']		= 'Croatian';
		$langCode['cs']		= 'Czech';
		$langCode['da']		= 'Danish';
		$langCode['da-dk']	= 'Danish';
		$langCode['nl']		= 'Dutch (Standard)';
		$langCode['nl-nl']	= 'Dutch';
		$langCode['nl-be']	= 'Dutch (Belgium)';
		$langCode['en']		= 'English';
		$langCode['en-au']	= 'English (Australia)';
		$langCode['en-bz']	= 'English (Belize)';
		$langCode['en-ca']	= 'English (Canada)';
		$langCode['en']		= 'English (Caribbean)';
		$langCode['en-ie']	= 'English (Ireland)';
		$langCode['en-jm']	= 'English (Jamaica)';
		$langCode['en-nz']	= 'English (New Zealand)';
		$langCode['en-za']	= 'English (South Africa)';
		$langCode['en-tt']	= 'English (Trinidad)';
		$langCode['en-gb']	= 'English (United Kingdom)';
		$langCode['en-us']	= 'English (United States)';
		$langCode['et']		= 'Estonian';
		$langCode['fo']		= 'Faeroese';
		$langCode['fa']		= 'Farsi';
		$langCode['fi']		= 'Finnish';
		$langCode['fi-fi']	= 'Finnish (Finland)';
		$langCode['fr-be']	= 'French (Belgium)';
		$langCode['fr-ca']	= 'French (Canada)';
		$langCode['fr-lu']	= 'French (Luxembourg)';
		$langCode['fr']		= 'French (Standard)';
		$langCode['fr-fr']	= 'French (France)';
		$langCode['fr-ch']	= 'French (Switzerland)';
		$langCode['mk']		= 'FYRO Macedonian';
		$langCode['gd-ie']	= 'Gaelic (Ireland)';
		$langCode['gd']		= 'Gaelic (Scotland)';
		$langCode['de']		= 'German (Standard)';
		$langCode['de-de']	= 'German (Standard)';
		$langCode['de-at']	= 'German (Austria)';
		$langCode['de-li']	= 'German (Liechtenstein)';
		$langCode['de-lu']	= 'German (Luxembourg)';
		$langCode['de-ch']	= 'German (Switzerland)';
		$langCode['el']		= 'Greek';
		$langCode['he']		= 'Hebrew';
		$langCode['hi']		= 'Hindi';
		$langCode['hu']		= 'Hungarian';
		$langCode['hu-hu']	= 'Hungarian (Standard)';
		$langCode['is']		= 'Icelandic';
		$langCode['id']		= 'Indonesian';
		$langCode['it']		= 'Italian';
		$langCode['it-it']	= 'Italian (Standard)';
		$langCode['it-ch']	= 'Italian (Switzerland)';
		$langCode['ja']		= 'Japanese';
		$langCode['ja-jp']	= 'Japanese (Japan)';
		$langCode['ko']		= 'Korean';
		$langCode['ko-kr']	= 'Korean (Korea)';
		$langCode['ko']		= 'Korean (Johab)';
		$langCode['lv']		= 'Latvian';
		$langCode['lt']		= 'Lithuanian';
		$langCode['ms']		= 'Malaysian';
		$langCode['mt']		= 'Maltese';
		$langCode['no']		= 'Norwegian (Bokmal)';
		$langCode['no-no']	= 'Norwegian (Bokmal)';
		$langCode['nb']		= 'Norwegian (Bokmal)';
		$langCode['nn']		= 'Norwegian (Nynorsk)';
		$langCode['pl']		= 'Polish';
		$langCode['pt-br']	= 'Portuguese (Brazil)';
		$langCode['pt-pt']	= 'Portuguese (Portugal)';
		$langCode['pt']		= 'Portuguese (Standard)';
		$langCode['rm']		= 'Rhaeto-Romanic';
		$langCode['ro']		= 'Romanian';
		$langCode['ro-mo']	= 'Romanian (Moldavia)';
		$langCode['ru']		= 'Russian';
		$langCode['ru-ru']	= 'Russian (Standard)';
		$langCode['ru-mo']	= 'Russian (Moldavia)';
		$langCode['sz']		= 'Sami (Lappish)';
		$langCode['sr']		= 'Serbian (Cyrillic)';
		$langCode['sr']		= 'Serbian (Latin)';
		$langCode['sk']		= 'Slovak';
		$langCode['sl']		= 'Slovenian';
		$langCode['sb']		= 'Sorbian';
		$langCode['es-ar']	= 'Spanish (Argentina)';
		$langCode['es-bo']	= 'Spanish (Bolivia)';
		$langCode['es-cl']	= 'Spanish (Chile)';
		$langCode['es-co']	= 'Spanish (Colombia)';
		$langCode['es-cr']	= 'Spanish (Costa Rica)';
		$langCode['es-do']	= 'Spanish (Dominican Republic)';
		$langCode['es-ec']	= 'Spanish (Ecuador)';
		$langCode['es-sv']	= 'Spanish (El Salvador)';
		$langCode['es-es']	= 'Spanish (Spain)';
		$langCode['es-gt']	= 'Spanish (Guatemala)';
		$langCode['es-hn']	= 'Spanish (Honduras)';
		$langCode['es-mx']	= 'Spanish (Mexico)';
		$langCode['es-ni']	= 'Spanish (Nicaragua)';
		$langCode['es-pa']	= 'Spanish (Panama)';
		$langCode['es-py']	= 'Spanish (Paraguay)';
		$langCode['es-pe']	= 'Spanish (Peru)';
		$langCode['es-pr']	= 'Spanish (Puerto Rico)';
		$langCode['es']		= 'Spanish (Spain Modern)';
		$langCode['es']		= 'Spanish (Spain Traditional)';
		$langCode['es-uy']	= 'Spanish (Uruguay)';
		$langCode['es-us']	= 'Spanish (United States)';
		$langCode['es-ve']	= 'Spanish (Venezuela)';
		$langCode['sx']		= 'Sutu';
		$langCode['sv']		= 'Swedish';
		$langCode['sv-se']	= 'Swedish';
		$langCode['sv-fi']	= 'Swedish (Finland)';
		$langCode['th']		= 'Thai';
		$langCode['ts']		= 'Tsonga';
		$langCode['tn']		= 'Tswana';
		$langCode['tr']		= 'Turkish';
		$langCode['uk']		= 'Ukrainian';
		$langCode['ur']		= 'Urdu';
		$langCode['us']		= 'English (United States)';
		$langCode['ve']		= 'Venda';
		$langCode['vi']		= 'Vietnamese';
		$langCode['xh']		= 'Xhosa';
		$langCode['ji']		= 'Yiddish';
		$langCode['zh']		= 'Chinese Simplified';
		$langCode['zh-Hans']= 'Chinese Simplified';
		$langCode['zh-Hant']= 'Chinese Simplified';
		$langCode['zh-tw']	= 'Chinese Traditional';
		$langCode['zu']		= 'Zulu';
		$langCode['*']		= 'all languages are equally acceptable';

		//EXTRAS
		$langCode['ie-ee']	= 'Internet Explorer - Easter Egg';
		$lang = strtolower($lang);
		if(isset($langCode[$lang])){
			return $langCode[$lang];
		}elseif(isset($langCode[str_replace('-','_',$lang)])){
			return $langCode[str_replace('_','-',$lang)];
		} else {
			return '';
		}
	}
	public function is_crawler(){
		return $this->browser('is_crawler');
	}

	public function referer_domain(){
		$domain = '';
		if(isset($_SERVER['HTTP_REFERER']) && trim($_SERVER['HTTP_REFERER'])!=''){
			$url_pieces	= @parse_url($_SERVER['HTTP_REFERER']);
			if(is_array($url_pieces) && isset($url_pieces['host'])){
				$pattern	= '/[a-z0-9\-]*(\.co|\.ac|\.org|\.com|[a-z0-9\-]*)\.[a-z]*$/';
				preg_match($pattern,$url_pieces['host'],$domain);
				$domain		= (is_array($domain) && isset($domain[0]))?$domain[0]:'';
			}
		}
		return $domain;
	}
	public function search_phrase(){
		$phrase = '';
		if(isset($_SERVER['HTTP_REFERER']) && trim($_SERVER['HTTP_REFERER'])!=''){
			$url_pieces	= @parse_url($_SERVER['HTTP_REFERER']);
			if(is_array($url_pieces) && isset($url_pieces['query'])){
				$domain		= $this->referer_domain();
				$engines	= array(
								'altavista.com'		=> 'q',
								'aol.com'			=> 'query',
								'bing.com'			=> 'q',
								'google.co.uk'		=> 'q',
								'google.dk'			=> 'q',
								'google.com'		=> 'q',
								'google.ca'			=> 'q',
								'google.com.au'		=> 'q',
								'google.co.za'		=> 'q',
								'google.co.in'		=> 'q',
								'google.co.in'		=> 'q',
								'google.co.nz'		=> 'q',
								'google.it'			=> 'q',
								'eniro.dk'			=> 'q',
								'myway.com'			=> 'searchfor',
								'msn.com'			=> 'q',
								'msn.co.uk'			=> 'q',
								'tdconline.dk'		=> 'q',
								'search.msn.dk'		=> 'q',
								'yahoo.com'			=> 'p',
								'yahoo.co.uk'		=> 'p',
								'jubii.dk'			=> 'query',
								);
				if(isset($engines[$domain]) && $engines[$domain]!='' && isset($url_pieces['query']) && $url_pieces['query']!=''){
					$getVar			= $engines[$domain];
					$query_array	= array();
					parse_str($url_pieces['query'],$query_array);
					$phrase = isset($query_array[$getVar])?$query_array[$getVar]:'';
				}
			}
		}
		return $phrase;
	}
}
/*
sample on how to use this class:
<?php
//sample on how o use user_info
require_once dirname(__FILE__).'/user_info.php';
$uinfo = new user_info();
?>Hello!<br />
Here a few info about you
<ul>
<li>IP: <?=$uinfo->IP();?></li>
<li>OS: <?=$uinfo->os();?>
	<ul>
		<li>name: <?=$uinfo->os('name');?></li>
		<li>version: <?=$uinfo->os('version');?></li>
	</ul>
</li>
<li>Are you a spider/robot: <?=$uinfo->is_crawler()?'Yes':'No'?></li>
<li>Browser: <?=$uinfo->browser();?>
	<ul>
		<li>name: <?=$uinfo->browser('name');?></li>
		<li>version: <?=$uinfo->browser('version');?></li>
		<li>Is Crawler: <?=$uinfo->browser('is_crawler')?'Yes':'No'?></li>
	</ul>
</li>
<li>Bits: <?=$uinfo->bits();?></li>
<li>Security: <?=$uinfo->security();?></li>
<li>Languages:
	<ul><?php
	$tmps = $uinfo->language();
	foreach($tmps as $k=>$v){
		?><li>code: <?=$v['code']?></li>
		<li>name: <?=$v['name']?></li>
		<li>QValue: <?=$v['QValue']?></li><?php
	}
	?></ul>
</li>
<li>Accept:
	<ul><?php
	$tmps = $uinfo->accept();
	foreach($tmps as $k=>$v){
		?><li>code: <?=$v['code']?></li>
		<li>QValue: <?=$v['QValue']?></li><?php
	}
	?></ul>
</li>
<li>Encodings:
	<ul><?php
	$tmps = $uinfo->encoding();
	foreach($tmps as $k=>$v){
		?><li>code: <?=$v['code']?></li>
		<li>QValue: <?=$v['QValue']?></li><?php
	}
	?></ul>
</li>
<li>Charsets:
	<ul><?php
	$tmps = $uinfo->charset();
	foreach($tmps as $k=>$v){
		?><li>code: <?=$v['code']?></li>
		<li>QValue: <?=$v['QValue']?></li><?php
	}
	?></ul>
</li>
<li>Your User Agent: <?=$uinfo->user_agent()?></li>
<li>Requested Page: <?=$uinfo->request_page()?></li>
<li>Request Method: <?=$uinfo->request_method()?></li>
<li>This URL: <?=$uinfo->url()?></li>
</ul>


*/
?>